<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/28c87dc00e414ead84027885463a60e860258db2">https://github.com/macports/macports-ports/commit/28c87dc00e414ead84027885463a60e860258db2</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 28c87dc00e4 iwnet: update to 2024.01.27
</span>28c87dc00e4 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 28c87dc00e414ead84027885463a60e860258db2
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Sun Feb 4 15:18:11 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> iwnet: update to 2024.01.27
</span>---
net/iwnet/Portfile | 23 +++--
...poller_poll_in_thread-now-waits-poller-th.patch | 101 +++++++++++++++++++++
2 files changed, 117 insertions(+), 7 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/iwnet/Portfile b/net/iwnet/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 88efaa519e0..c08d345cd2c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/iwnet/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/iwnet/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -8,21 +8,30 @@ PortGroup legacysupport 1.1
</span> # strndup, clock_gettime
legacysupport.newest_darwin_requires_legacy 15
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup Softmotions iwnet 45e534d9104bb09617aaad37d5944fd79b45c689
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-version 2023.10.26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup Softmotions iwnet 81b6ad3d69ff3654bdad04478666edbf4d3f5d3f
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 2024.01.27
</span> revision 0
categories net devel
license MIT
maintainers {@barracuda156 gmail.com:vital.had} openmaintainer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-description Pure C asynchronous HTTP framework providing websockets client/server, SSL, reverse proxy and routing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description Pure C asynchronous HTTP framework
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description {*}${description} providing websockets client/server, SSL, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reverse proxy and routing.
</span> # Due to: https://github.com/Softmotions/iwnet/issues/5
platforms {darwin > 9}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 89f55b0f4f7e75d790c15ee000c0ae5147146333 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 f1f514a4f6157fdd86b6aa55f2a46e78031bccda33293cf22c66aefae3d87eb9 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 823431
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 c4c0ce4688fad27a03135c597eb42f5a9d7068d7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 418bf8c2de707559fd21ddb6474c989377de9793eed3bb993bd66b429ad0c94d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 824035
</span> github.tarball_from archive
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Temporary fix reverting a breaking commit:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Softmotions/iwnet/commit/414ce1adc6484c6518ac8587107ff2905328f8de
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# FIXME: add an implementation for pthread_barrier. See also:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/ademakov/DarwinPthreadBarrier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/envy/knx2influx/issues/20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/pmwkaa/ioarena/issues/10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> depends_lib-append port:iowow
compiler.c_standard 2011
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/iwnet/files/0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch b/net/iwnet/files/0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3eb3da8b091
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/iwnet/files/0001-Revert-iwn_poller_poll_in_thread-now-waits-poller-th.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,101 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ca10b1e678e651f62afe67c6abd9c1d9f44daf9f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Feb 2024 15:06:38 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Revert "* iwn_poller_poll_in_thread() now waits poller thread
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ starts"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit 414ce1adc6484c6518ac8587107ff2905328f8de.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/poller/iwn_poller.c | 31 +++++++++----------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+), 22 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/poller/iwn_poller.c src/poller/iwn_poller.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a8f4627..5cf268c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/poller/iwn_poller.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/poller/iwn_poller.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,10 +56,8 @@ struct iwn_poller {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ IWHMAP *slots;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *thread_name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_mutex_t mtx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_barrier_t _barrier_poll; ///< Poll-in-thread barrier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_barrier_t *barrier_poll;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t flags; ///< Poller mode flags. See iwn_poller_flags_set()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pthread_mutex_t mtx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t flags; ///< Poller mode flags. See iwn_poller_flags_set()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ volatile bool stop;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ volatile bool housekeeping; ///< CAS barrier for timeout cleaner
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -129,7 +127,7 @@ IW_INLINE void _rw_fd_unsubscribe(struct poller_slot *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!(s->flags & SLOT_UNSUBSCRIBED)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ s->flags |= SLOT_UNSUBSCRIBED;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct kevent ev[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { s->fd, EVFILT_READ, EV_DELETE },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ { s->fd, EVFILT_READ, EV_DELETE },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ { s->fd, EVFILT_WRITE, EV_DELETE },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kevent(s->poller->fd, ev, sizeof(ev) / sizeof(ev[0]), 0, 0, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -376,11 +374,11 @@ static void _timer_ready_impl(struct iwn_poller *p) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(IWN_KQUEUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct kevent ev = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- .ident = p->fd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ .ident = p->fd,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .filter = EVFILT_TIMER,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- .flags = EV_ADD | EV_ENABLE | EV_CLEAR | EV_ONESHOT,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ .flags = EV_ADD | EV_ENABLE | EV_CLEAR | EV_ONESHOT,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .fflags = NOTE_SECONDS,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- .data = timeout_next - ctime,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ .data = timeout_next - ctime,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (kevent(p->fd, &ev, 1, 0, 0, 0) == -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ iwrc rc = iwrc_set_errno(IW_ERROR_ERRNO, errno);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -520,7 +518,7 @@ static iwrc _poller_timeout_add(struct poller_slot *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (timerfd_settime(s->fd, 0, &(struct itimerspec) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .it_value = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- .tv_sec = s->timeout / 1000,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ .tv_sec = s->timeout / 1000,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .tv_nsec = (int64_t) (s->timeout % 1000) * 1000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }, 0) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -683,9 +681,9 @@ void iwn_poller_poke(struct iwn_poller *p) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct kevent ev[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ { p->fd, EVFILT_USER, EV_ADD | EV_ONESHOT },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(NOTE_TRIGGER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { p->fd, EVFILT_USER, 0, NOTE_TRIGGER }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ { p->fd, EVFILT_USER, 0, NOTE_TRIGGER }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(EV_TRIGGER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { p->fd, EVFILT_USER, EV_TRIGGER, 0 }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ { p->fd, EVFILT_USER, EV_TRIGGER, 0 }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #error "Either NOTE_TRIGGER or EV_TRIGGER is required."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -958,16 +956,9 @@ iwrc iwn_poller_poll_in_thread(struct iwn_poller *p, const char *thr_name, pthre
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (thr_name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ p->thread_name = strdup(thr_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- RCN(finish, pthread_barrier_init(&p->_barrier_poll, 0, 2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- p->barrier_poll = &p->_barrier_poll;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RCN(finish, pthread_create(out_thr, 0, _poll_worker, p));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_barrier_wait(p->barrier_poll);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ finish:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (p->barrier_poll) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_barrier_destroy(p->barrier_poll);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- p->barrier_poll = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -998,10 +989,6 @@ void iwn_poller_poll(struct iwn_poller *p) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ p->stop = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (p->barrier_poll) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pthread_barrier_wait(p->barrier_poll);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while (!p->stop) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(IWN_KQUEUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int nfds = kevent(p->fd, 0, 0, event, max_events, 0);
</span></pre><pre style='margin:0'>
</pre>