TLS Stream: handle successful TLS handshake after listener shutdown

It was possible that accept callback can be called after listener
shutdown. In such a case the callback pointer equals NULL, leading to
segmentation fault. This commit fixes that.
This commit is contained in:
Artem Boldariev
2022-10-18 14:42:10 +03:00
parent c62994e6a4
commit a6f14565b4

View File

@@ -342,9 +342,13 @@ tls_try_handshake(isc_nmsocket_t *sock, isc_result_t *presult) {
isc__nmsocket_log_tls_session_reuse(sock, sock->tlsstream.tls);
tlshandle = isc__nmhandle_get(sock, &sock->peer, &sock->iface);
if (sock->tlsstream.server) {
result = sock->listener->accept_cb(
tlshandle, result,
sock->listener->accept_cbarg);
if (isc__nmsocket_closing(sock->listener)) {
result = ISC_R_CANCELED;
} else {
result = sock->listener->accept_cb(
tlshandle, result,
sock->listener->accept_cbarg);
}
} else {
tls_call_connect_cb(sock, tlshandle, result);
}