From 3edccaf0c7477cbc5f0589dd36323687e428694c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ondr=CC=8Cej=20Sury=CC=81?= Date: Mon, 19 Dec 2022 14:26:31 +0100 Subject: [PATCH] Ignore TCP dispatches in DNS_DISPATCHSTATE_NONE state The TCP dispatches in DNS_DISPATCHSTATE_NONE could be either very fresh or those could be dispatches that failed connecting to the destination. Ignore them when trying to connect to an existing TCP dispatch via dns_dispatch_gettcp(). --- lib/dns/dispatch.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index faa52fdc2b..97e7fc9191 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -1238,11 +1238,13 @@ dns_dispatch_gettcp(dns_dispatchmgr_t *mgr, const isc_sockaddr_t *destaddr, isc_sockaddr_eqaddr(localaddr, &sockname))) { switch (disp->state) { + case DNS_DISPATCHSTATE_NONE: + /* Dispatch in indeterminate state */ + break; case DNS_DISPATCHSTATE_CONNECTED: /* We found a connected dispatch */ dns_dispatch_attach(disp, &disp_connected); break; - case DNS_DISPATCHSTATE_NONE: case DNS_DISPATCHSTATE_CONNECTING: /* We found "a" dispatch, store it for later */ if (disp_fallback == NULL) {