]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Call isc__nm_tlsdns_failed_read on tls_error to cleanup the socket
authorOndřej Surý <ondrej@sury.org>
Fri, 19 Mar 2021 14:08:14 +0000 (15:08 +0100)
committerOndřej Surý <ondrej@sury.org>
Fri, 19 Mar 2021 14:28:52 +0000 (15:28 +0100)
In tls_error(), we now call isc__nm_tlsdns_failed_read() instead of just
stopping timer and reading from the socket.  This allows us to properly
cleanup any pending operation on the socket.

lib/isc/netmgr/tlsdns.c

index 330a2ae324ea3acca0f22f8f4e2adb58c187d536..db75b30d1cc6f7761623a8fa692e8805cfeab2d0 100644 (file)
@@ -1045,8 +1045,7 @@ tls_error(isc_nmsocket_t *sock, isc_result_t result) {
        switch (sock->tls.state) {
        case TLS_STATE_HANDSHAKE:
        case TLS_STATE_IO:
-               isc__nmsocket_timer_stop(sock);
-               isc__nm_stop_reading(sock);
+               isc__nm_tlsdns_failed_read_cb(sock, result);
                break;
        case TLS_STATE_ERROR:
                return;
@@ -1769,6 +1768,8 @@ tlsdns_close_direct(isc_nmsocket_t *sock) {
        REQUIRE(sock->tid == isc_nm_tid());
        REQUIRE(atomic_load(&sock->closing));
 
+       REQUIRE(sock->tls.pending_req == NULL);
+
        if (sock->quota != NULL) {
                isc_quota_detach(&sock->quota);
        }