mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
allow streamdns read to resume after timeout
when reading on a streamdns socket failed due to timeout, but the dispatch was still waiting for other responses, it would resume reading by calling isc_nm_read() again. this caused an assertion because the socket was already reading. we now check that either the socket is reading, or that it was already reading on the same handle.
This commit is contained in:
@@ -831,7 +831,7 @@ isc__nm_streamdns_read(isc_nmhandle_t *handle, isc_nm_recv_cb_t cb,
|
||||
sock = handle->sock;
|
||||
REQUIRE(VALID_NMSOCK(sock));
|
||||
REQUIRE(sock->type == isc_nm_streamdnssocket);
|
||||
REQUIRE(sock->recv_handle == NULL);
|
||||
REQUIRE(sock->recv_handle == handle || sock->recv_handle == NULL);
|
||||
REQUIRE(sock->tid == isc_tid());
|
||||
|
||||
closing = streamdns_closing(sock);
|
||||
@@ -839,7 +839,9 @@ isc__nm_streamdns_read(isc_nmhandle_t *handle, isc_nm_recv_cb_t cb,
|
||||
sock->recv_cb = cb;
|
||||
sock->recv_cbarg = cbarg;
|
||||
sock->reading = true;
|
||||
isc_nmhandle_attach(handle, &sock->recv_handle);
|
||||
if (sock->recv_handle == NULL) {
|
||||
isc_nmhandle_attach(handle, &sock->recv_handle);
|
||||
}
|
||||
|
||||
/*
|
||||
* In some cases there is little sense in making the operation
|
||||
|
Reference in New Issue
Block a user