Parcourir la source

[master] don't send SERVFAIL if we already sent an answer

the check that we have already sent something if the timeout happens to fire was missing, discussed with Jeremy on jabber
Jelte Jansen il y a 14 ans
Parent
commit
dab32ddc42
1 fichiers modifiés avec 5 ajouts et 2 suppressions
  1. 5 2
      src/lib/asiolink/recursive_query.cc

+ 5 - 2
src/lib/asiolink/recursive_query.cc

@@ -352,8 +352,10 @@ public:
         // we have an answer or timeout ourselves
         isc::resolve::makeErrorMessage(answer_message_,
                                        Rcode::SERVFAIL());
-        resolvercallback_->success(answer_message_);
-        answer_sent_ = true;
+        if (!answer_sent_) {
+            answer_sent_ = true;
+            resolvercallback_->success(answer_message_);
+        }
     }
 
     virtual void stop(bool resume) {
@@ -366,6 +368,7 @@ public:
         // until that one comes back to us)
         done_ = true;
         if (resume && !answer_sent_) {
+            answer_sent_ = true;
             resolvercallback_->success(answer_message_);
         } else {
             resolvercallback_->failure();