From 9abb00bb5f66c1d365fb0e69bc96fa2e49bd37cf Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Tue, 10 May 2022 19:46:12 +0300 Subject: [PATCH] Fix an abort in DoH (client-side) when writing on closing sock The commit fixes a corner case in client-side DoH code, when a write attempt is done on a closing socket (session). The change ensures that the write call-back will be called with a proper error code (see failed_send_cb() call in client_httpsend()). --- lib/isc/netmgr/http.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/isc/netmgr/http.c b/lib/isc/netmgr/http.c index a787e2d310..4cde316236 100644 --- a/lib/isc/netmgr/http.c +++ b/lib/isc/netmgr/http.c @@ -1509,7 +1509,12 @@ client_send(isc_nmhandle_t *handle, const isc_region_t *region) { REQUIRE(region != NULL); REQUIRE(region->base != NULL); REQUIRE(region->length <= MAX_DNS_MESSAGE_SIZE); - REQUIRE(cstream != NULL); + + if (session->closed) { + return (ISC_R_CANCELED); + } + + INSIST(cstream != NULL); if (cstream->post) { /* POST */