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.
This commit is contained in:
Ondřej Surý
2024-10-02 08:37:48 +02:00
parent 41f4c620c2
commit 4ef316e21e

View File

@@ -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