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

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

index d467b81d0417bf90b9fc44d7ba274536136b6a6e..4bc5fc22a3e4bca4444403a61c24eb190bc4bf41 100644 (file)
@@ -1563,6 +1563,9 @@ isc__nm_tls_cleartimeout(isc_nmhandle_t *handle);
  * around.
  */
 
+void
+isc__nmsocket_tls_reset(isc_nmsocket_t *sock);
+
 const char *
 isc__nm_tls_verify_tls_peer_result_string(const isc_nmhandle_t *handle);
 
index 9563f27ef7c9fac572cff3497ac79810864af65a..d3ba6f2382bee3f9f650662b4419cdc623a09c41 100644 (file)
@@ -2330,6 +2330,11 @@ isc__nmsocket_reset(isc_nmsocket_t *sock) {
                 */
                REQUIRE(sock->parent == NULL);
                break;
+#ifdef HAVE_LIBNGHTTP2
+       case isc_nm_tlssocket:
+               isc__nmsocket_tls_reset(sock);
+               return;
+#endif /* HAVE_LIBNGHTTP2 */
        default:
                UNREACHABLE();
                break;
@@ -2548,6 +2553,10 @@ isc_nm_bad_request(isc_nmhandle_t *handle) {
                return;
        case isc_nm_tcpdnssocket:
        case isc_nm_tlsdnssocket:
+       case isc_nm_tcpsocket:
+#if HAVE_LIBNGHTTP2
+       case isc_nm_tlssocket:
+#endif /* HAVE_LIBNGHTTP2 */
                REQUIRE(sock->parent == NULL);
                isc__nmsocket_reset(sock);
                return;
@@ -2555,10 +2564,6 @@ isc_nm_bad_request(isc_nmhandle_t *handle) {
        case isc_nm_httpsocket:
                isc__nm_http_bad_request(handle);
                return;
-#endif /* HAVE_LIBNGHTTP2 */
-       case isc_nm_tcpsocket:
-#if HAVE_LIBNGHTTP2
-       case isc_nm_tlssocket:
 #endif /* HAVE_LIBNGHTTP2 */
        default:
                UNREACHABLE();
index a1e59b54add1186495bc485415a2c8f2f33ed8cc..e1602461eee63b074c206eb0935bea469613fc6c 100644 (file)
@@ -1203,6 +1203,18 @@ isc__nmhandle_tls_setwritetimeout(isc_nmhandle_t *handle,
        }
 }
 
+void
+isc__nmsocket_tls_reset(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));
+               isc__nmsocket_reset(sock->outerhandle->sock);
+       }
+}
+
 const char *
 isc__nm_tls_verify_tls_peer_result_string(const isc_nmhandle_t *handle) {
        isc_nmsocket_t *sock = NULL;