From 2203600e0523c70815d69512a5c00a2e5a0d5b2a Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Wed, 25 Sep 2013 12:04:07 -0500 Subject: [PATCH] Fix logic for failed DNS TXT lookups. A failed request should not evict a previous result from the local cache/mapping. --- src/DNS_Mgr.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/DNS_Mgr.cc b/src/DNS_Mgr.cc index 5880a02c57..08e8889a10 100644 --- a/src/DNS_Mgr.cc +++ b/src/DNS_Mgr.cc @@ -711,17 +711,19 @@ void DNS_Mgr::AddResult(DNS_Mgr_Request* dr, struct nb_dns_result* r) if ( dr->ReqIsTxt() ) { TextMap::iterator it = text_mappings.find(dr->ReqHost()); + if ( it == text_mappings.end() ) text_mappings[dr->ReqHost()] = new_dm; else { - if ( new_dm->Failed() && prev_dm && prev_dm->Valid() ) - ++keep_prev; - else - { - prev_dm = it->second; - it->second = new_dm; - } + prev_dm = it->second; + it->second = new_dm; + } + + if ( new_dm->Failed() && prev_dm && prev_dm->Valid() ) + { + text_mappings[dr->ReqHost()] = prev_dm; + ++keep_prev; } } else