* milliseconds so they can be used directly with the libuv timer,
* but they are configured in tenths of seconds.
*/
- uint32_t init;
- uint32_t idle;
- uint32_t keepalive;
- uint32_t advertised;
+ atomic_uint_fast32_t init;
+ atomic_uint_fast32_t idle;
+ atomic_uint_fast32_t keepalive;
+ atomic_uint_fast32_t advertised;
#ifdef NETMGR_TRACE
ISC_LIST(isc_nmsocket_t) active_sockets;
* Default TCP timeout values.
* May be updated by isc_nm_tcptimeouts().
*/
- mgr->init = 30000;
- mgr->idle = 30000;
- mgr->keepalive = 30000;
- mgr->advertised = 30000;
+ atomic_init(&mgr->init, 30000);
+ atomic_init(&mgr->idle, 30000);
+ atomic_init(&mgr->keepalive, 30000);
+ atomic_init(&mgr->advertised, 30000);
isc_mutex_init(&mgr->reqlock);
isc_mempool_create(mgr->mctx, sizeof(isc__nm_uvreq_t), &mgr->reqpool);
uint32_t keepalive, uint32_t advertised) {
REQUIRE(VALID_NM(mgr));
- mgr->init = init * 100;
- mgr->idle = idle * 100;
- mgr->keepalive = keepalive * 100;
- mgr->advertised = advertised * 100;
+ atomic_store(&mgr->init, init * 100);
+ atomic_store(&mgr->idle, idle * 100);
+ atomic_store(&mgr->keepalive, keepalive * 100);
+ atomic_store(&mgr->advertised, advertised * 100);
}
void
REQUIRE(VALID_NM(mgr));
if (initial != NULL) {
- *initial = mgr->init / 100;
+ *initial = atomic_load(&mgr->init) / 100;
}
if (idle != NULL) {
- *idle = mgr->idle / 100;
+ *idle = atomic_load(&mgr->idle) / 100;
}
if (keepalive != NULL) {
- *keepalive = mgr->keepalive / 100;
+ *keepalive = atomic_load(&mgr->keepalive) / 100;
}
if (advertised != NULL) {
- *advertised = mgr->advertised / 100;
+ *advertised = atomic_load(&mgr->advertised) / 100;
}
}
sock->recv_cbarg = cbarg;
sock->recv_read = true;
if (sock->read_timeout == 0) {
- sock->read_timeout = (atomic_load(&sock->keepalive)
- ? sock->mgr->keepalive
- : sock->mgr->idle);
+ sock->read_timeout =
+ (atomic_load(&sock->keepalive)
+ ? atomic_load(&sock->mgr->keepalive)
+ : atomic_load(&sock->mgr->idle));
}
ievent = isc__nm_get_netievent_tcpstartread(sock->mgr, sock);
req->uvbuf.len = nread;
if (!atomic_load(&sock->client)) {
- sock->read_timeout = (atomic_load(&sock->keepalive)
- ? sock->mgr->keepalive
- : sock->mgr->idle);
+ sock->read_timeout =
+ (atomic_load(&sock->keepalive)
+ ? atomic_load(&sock->mgr->keepalive)
+ : atomic_load(&sock->mgr->idle));
}
isc__nm_readcb(sock, req, ISC_R_SUCCESS);
isc__nm_incstats(csock->mgr, csock->statsindex[STATID_ACCEPT]);
- csock->read_timeout = csock->mgr->init;
+ csock->read_timeout = atomic_load(&csock->mgr->init);
atomic_fetch_add(&ssock->parent->active_child_connections, 1);
sock->recv_cbarg = cbarg;
sock->recv_read = true;
if (sock->read_timeout == 0) {
- sock->read_timeout = (atomic_load(&sock->keepalive)
- ? sock->mgr->keepalive
- : sock->mgr->idle);
+ sock->read_timeout =
+ (atomic_load(&sock->keepalive)
+ ? atomic_load(&sock->mgr->keepalive)
+ : atomic_load(&sock->mgr->idle));
}
ievent = isc__nm_get_netievent_tcpdnsread(sock->mgr, sock);
sock->buf_len += len;
if (!atomic_load(&sock->client)) {
- sock->read_timeout = sock->mgr->idle;
+ sock->read_timeout = atomic_load(&sock->mgr->idle);
}
process_sock_buffer(sock);
isc__nm_incstats(csock->mgr, csock->statsindex[STATID_ACCEPT]);
- csock->read_timeout = csock->mgr->init;
+ csock->read_timeout = atomic_load(&csock->mgr->init);
csock->closehandle_cb = resume_processing;
* reads.
*/
csock->read_timeout = (atomic_load(&csock->keepalive)
- ? csock->mgr->keepalive
- : csock->mgr->idle);
+ ? atomic_load(&csock->mgr->keepalive)
+ : atomic_load(&csock->mgr->idle));
isc_nmhandle_detach(&handle);
isc__nmsocket_attach(tlslistensock, &tlssock->listener);
isc_nmhandle_attach(handle, &tlssock->outerhandle);
tlssock->peer = handle->sock->peer;
- tlssock->read_timeout = handle->sock->mgr->init;
+ tlssock->read_timeout = atomic_load(&handle->sock->mgr->init);
tlssock->tid = isc_nm_tid();
tlssock->tls.server = true;
tlssock->tls.state = TLS_INIT;
isc_nmhandle_attach(handle, &dnssock->outerhandle);
dnssock->peer = handle->sock->peer;
- dnssock->read_timeout = handle->sock->mgr->init;
+ dnssock->read_timeout = atomic_load(&handle->sock->mgr->init);
dnssock->tid = isc_nm_tid();
dnssock->closehandle_cb = resume_processing;
dnssock->buf_len += len;
dnssock->read_timeout = (atomic_load(&dnssock->keepalive)
- ? dnssock->mgr->keepalive
- : dnssock->mgr->idle);
+ ? atomic_load(&dnssock->mgr->keepalive)
+ : atomic_load(&dnssock->mgr->idle));
do {
isc_result_t result;
isc_nmhandle_attach(handle, &dnssock->outerhandle);
dnssock->peer = handle->sock->peer;
- dnssock->read_timeout = handle->sock->mgr->init;
+ dnssock->read_timeout = atomic_load(&handle->sock->mgr->init);
dnssock->tid = isc_nm_tid();
atomic_init(&dnssock->client, true);
sock->recv_cbarg = cbarg;
sock->read_timeout = (atomic_load(&sock->keepalive)
- ? sock->mgr->keepalive
- : sock->mgr->idle);
+ ? atomic_load(&sock->mgr->keepalive)
+ : atomic_load(&sock->mgr->idle));
/*
* Add a reference to the handle to keep it from being freed by