From 5b699987eba698cdefbed594fbb2dd039afa3f0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Witold=20Kr=C4=99cicki?= Date: Wed, 31 Oct 2018 11:23:57 +0000 Subject: [PATCH] Cleanup fctx->finds before sending 'final' query after qname minimization. At the beginning of qname minimization we get fctx->finds filled with what's in the cache at this point, in worst case root servers. After doing full run querying for NSes at different levels we need to clean it and refill it with proper values from cache. --- CHANGES | 3 +++ lib/dns/resolver.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGES b/CHANGES index 93a7759d44..cf610e3a33 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +5075. [bug] Refresh nameservers from cache when sending final + query in qname minimization. [GL #16] + 5074. [cleanup] Remove vector socket functions - isc_socket_recvv(), isc_socket_sendtov(), isc_socket_sendtov2(), isc_socket_sendv() - in order to simplify socket code. diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 51b7f18592..b424e77cf8 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -4143,6 +4143,15 @@ resume_qmin(isc_task_t *task, isc_event_t *event) { fctx->ns_ttl = fctx->nameservers.ttl; fctx->ns_ttl_ok = true; fctx_minimize_qname(fctx); + if (!fctx->minimized) { + /* + * We have finished minimizing, but fctx->finds was filled at + * the beginning of the run - now we need to clear it before + * sending the final query to use proper nameservers. + */ + fctx_cancelqueries(fctx, false, false); + fctx_cleanupall(fctx); + } fctx_try(fctx, true, false); cleanup: