Merge branch '2258-xfrin-shutdown-race' into 'main'

address some possible shutdown races in xfrin

Closes #2258

See merge request isc-projects/bind9!4374
This commit is contained in:
Evan Hunt 2020-11-09 21:45:14 +00:00
commit 45f1df5412
3 changed files with 7 additions and 4 deletions

View file

@ -10004,7 +10004,7 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) {
&server->in_roothints),
"setting up root hints");
atomic_store(&server->reload_status, NAMED_RELOAD_IN_PROGRESS);
atomic_init(&server->reload_status, NAMED_RELOAD_IN_PROGRESS);
/*
* Setup the server task, which is responsible for coordinating

View file

@ -937,7 +937,7 @@ xfrin_connect_done(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) {
TIME_NOW(&now);
dns_zonemgr_unreachableadd(zmgr, &xfr->masteraddr,
&xfr->sourceaddr, &now);
goto failure;
CHECK(result);
} else {
dns_zonemgr_unreachabledel(zmgr, &xfr->masteraddr,
&xfr->sourceaddr);
@ -959,9 +959,10 @@ xfrin_connect_done(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) {
signer);
CHECK(xfrin_send_request(xfr));
isc_nmhandle_detach(&handle);
failure:
isc_nmhandle_detach(&handle);
if (result != ISC_R_SUCCESS && result != ISC_R_SHUTTINGDOWN) {
xfrin_fail(xfr, result, "failed to connect");
}

View file

@ -98,7 +98,9 @@ dnstcp_readtimeout(uv_timer_t *timer) {
REQUIRE(sock->tid == isc_nm_tid());
/* Close the TCP connection; its closure should fire ours. */
isc_nmhandle_detach(&sock->outerhandle);
if (sock->outerhandle != NULL) {
isc_nmhandle_detach(&sock->outerhandle);
}
}
/*