From: Ondřej Surý Date: Wed, 2 Oct 2024 06:37:48 +0000 (+0200) Subject: Skip TCP dispatch responses that are not ours X-Git-Tag: v9.21.2~3^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4ef316e21ef6313fb522f6bf17576cb7a9a7b085;p=thirdparty%2Fbind9.git Skip TCP dispatch responses that are not ours When matching the TCP dispatch responses, we should skip the responses that do not belong to our TCP connection. This can happen with faulty upstream server that sends invalid QID back to us. --- diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index be6f3786880..f86d73a7b9b 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -692,7 +692,9 @@ tcp_recv_success(dns_dispatch_t *disp, isc_region_t *region, dns_dispentry_t *resp = cds_lfht_entry(cds_lfht_iter_get_node(&iter), dns_dispentry_t, ht_node); - if (resp != NULL) { + + /* Skip responses that are not ours */ + if (resp != NULL && resp->disp == disp) { if (!resp->reading) { /* * We already got a message for this QID and weren't