mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 09:09:59 -04: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:
parent
562697e703
commit
b4ac7faee9
1 changed files with 4 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue