]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
TLS: add isc__nmsocket_timer_running() support
authorArtem Boldariev <artem@boldariev.com>
Tue, 26 Jul 2022 14:36:32 +0000 (17:36 +0300)
committerArtem Boldariev <artem@boldariev.com>
Tue, 20 Dec 2022 19:24:44 +0000 (21:24 +0200)
This commit adds isc__nmsocket_timer_running() support to the generic
TLS code in order to make it more compatible with TCP.

lib/isc/netmgr/netmgr-int.h
lib/isc/netmgr/netmgr.c
lib/isc/netmgr/tlsstream.c

index 4bc5fc22a3e4bca4444403a61c24eb190bc4bf41..6e8a78c6888f4398c0e6d43107854b2e8211a47e 100644 (file)
@@ -1583,6 +1583,9 @@ void
 isc__nmhandle_tls_setwritetimeout(isc_nmhandle_t *handle,
                                  uint64_t write_timeout);
 
+bool
+isc__nmsocket_tls_timer_running(isc_nmsocket_t *sock);
+
 void
 isc__nm_tls_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result,
                           bool async);
index d3ba6f2382bee3f9f650662b4419cdc623a09c41..ba97f97d0bbbeb6636124e1c23ec74a459ec6158 100644 (file)
@@ -1545,6 +1545,15 @@ bool
 isc__nmsocket_timer_running(isc_nmsocket_t *sock) {
        REQUIRE(VALID_NMSOCK(sock));
 
+       switch (sock->type) {
+#ifdef HAVE_LIBNGHTTP2
+       case isc_nm_tlssocket:
+               return (isc__nmsocket_tls_timer_running(sock));
+#endif /* HAVE_LIBNGHTTP2 */
+       default:
+               break;
+       }
+
        return (uv_is_active((uv_handle_t *)&sock->read_timer));
 }
 
index e1602461eee63b074c206eb0935bea469613fc6c..5aae50419b6ef2fce74f8b89278ac20236f4941d 100644 (file)
@@ -1215,6 +1215,20 @@ isc__nmsocket_tls_reset(isc_nmsocket_t *sock) {
        }
 }
 
+bool
+isc__nmsocket_tls_timer_running(isc_nmsocket_t *sock) {
+       REQUIRE(VALID_NMSOCK(sock));
+       REQUIRE(sock->type == isc_nm_tlssocket);
+
+       if (sock->outerhandle != NULL) {
+               INSIST(VALID_NMHANDLE(sock->outerhandle));
+               REQUIRE(VALID_NMSOCK(sock->outerhandle->sock));
+               return (isc__nmsocket_timer_running(sock->outerhandle->sock));
+       }
+
+       return (false);
+}
+
 const char *
 isc__nm_tls_verify_tls_peer_result_string(const isc_nmhandle_t *handle) {
        isc_nmsocket_t *sock = NULL;