isc__networker_t *worker;
isc_mutex_t lock;
- isc_barrier_t barrier;
+ isc_barrier_t listen_barrier;
+ isc_barrier_t stop_barrier;
/*% Parent socket for multithreaded listeners */
isc_nmsocket_t *parent;
atomic_int_fast32_t active_child_connections;
- bool barrier_initialised;
+ bool barriers_initialised;
bool manual_read_timer;
#ifdef NETMGR_TRACE
void *backtrace[TRACE_SIZE];
#endif
isc__nm_streamdns_cleanup_data(sock);
- if (sock->barrier_initialised) {
- isc_barrier_destroy(&sock->barrier);
+ if (sock->barriers_initialised) {
+ isc_barrier_destroy(&sock->listen_barrier);
+ isc_barrier_destroy(&sock->stop_barrier);
}
sock->magic = 0;
void
isc__nmsocket_barrier_init(isc_nmsocket_t *listener) {
REQUIRE(listener->nchildren > 0);
- isc_barrier_init(&listener->barrier, listener->nchildren);
- listener->barrier_initialised = true;
+ isc_barrier_init(&listener->listen_barrier, listener->nchildren);
+ isc_barrier_init(&listener->stop_barrier, listener->nchildren);
+ listener->barriers_initialised = true;
}
void
UNUSED(worker);
(void)atomic_fetch_sub(&listener->rchildren, 1);
- isc_barrier_wait(&listener->barrier);
+ isc_barrier_wait(&listener->stop_barrier);
}
void
UNLOCK(&sock->parent->lock);
REQUIRE(!worker->loop->paused);
- isc_barrier_wait(&sock->parent->barrier);
+ isc_barrier_wait(&sock->parent->listen_barrier);
}
static void
(void)atomic_fetch_sub(&sock->parent->rchildren, 1);
REQUIRE(!worker->loop->paused);
- isc_barrier_wait(&sock->parent->barrier);
+ isc_barrier_wait(&sock->parent->stop_barrier);
}
void
UNLOCK(&sock->parent->lock);
REQUIRE(!worker->loop->paused);
- isc_barrier_wait(&sock->parent->barrier);
+ isc_barrier_wait(&sock->parent->listen_barrier);
}
static void
(void)atomic_fetch_sub(&sock->parent->rchildren, 1);
REQUIRE(!worker->loop->paused);
- isc_barrier_wait(&sock->parent->barrier);
+ isc_barrier_wait(&sock->parent->stop_barrier);
}
/*