mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
Refactor async callbacks and fix the double tlsdnsconnect callback
The isc_nm_tlsdnsconnect() call could end up with two connect callbacks called when the timeout fired and the TCP connection was aborted, but the TLS handshake was not complete yet. isc__nm_connecttimeout_cb() forgot to clean up sock->tls.pending_req when the connect callback was called with ISC_R_TIMEDOUT, leading to a second callback running later. A new argument has been added to the isc__nm_*_failed_connect_cb and isc__nm_*_failed_read_cb functions, to indicate whether the callback needs to run asynchronously or not.
This commit is contained in:
@@ -1853,7 +1853,8 @@ isc__nm_tcp_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result);
|
||||
void
|
||||
isc__nm_tcpdns_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result);
|
||||
void
|
||||
isc__nm_tlsdns_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result);
|
||||
isc__nm_tlsdns_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result,
|
||||
bool async);
|
||||
|
||||
isc_result_t
|
||||
isc__nm_tcpdns_processbuffer(isc_nmsocket_t *sock);
|
||||
@@ -1899,9 +1900,9 @@ void
|
||||
isc__nm_failed_accept_cb(isc_nmsocket_t *sock, isc_result_t eresult);
|
||||
void
|
||||
isc__nm_failed_connect_cb(isc_nmsocket_t *sock, isc__nm_uvreq_t *req,
|
||||
isc_result_t eresult);
|
||||
isc_result_t eresult, bool async);
|
||||
void
|
||||
isc__nm_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result);
|
||||
isc__nm_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result, bool async);
|
||||
|
||||
void
|
||||
isc__nmsocket_connecttimeout_cb(uv_timer_t *timer);
|
||||
|
Reference in New Issue
Block a user