Merge branch '3300-dispatch-udp_recv-handle-deactivated-resp-returning-success-v9_18' into 'v9_18'

[v9_18] Handle ISC_R_SUCCESS on a deactivated response in udp_recv()

See merge request isc-projects/bind9!6200
This commit is contained in:
Arаm Sаrgsyаn 2022-04-27 19:07:45 +00:00
commit 95d1e9ee62
2 changed files with 6 additions and 2 deletions

View file

@ -1,3 +1,7 @@
5872. [bug] udp_recv() in dispatch could trigger an INSIST when the
callback's result indicated success but the response
was canceled in the meantime. [GL #3300]
5866. [bug] Work around a jemalloc quirk which could trigger an
out-of-memory condition in named over time. [GL #3287]

View file

@ -491,6 +491,8 @@ udp_recv(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
*/
if (ISC_LINK_LINKED(resp, alink)) {
response = resp->response;
} else if (eresult == ISC_R_SUCCESS) {
eresult = ISC_R_CANCELED;
}
if (eresult != ISC_R_SUCCESS) {
@ -503,8 +505,6 @@ udp_recv(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
goto done;
}
INSIST(ISC_LINK_LINKED(resp, alink));
peer = isc_nmhandle_peeraddr(handle);
isc_netaddr_fromsockaddr(&netaddr, &peer);