Browse 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 14 years ago
parent
commit
dab32ddc42
1 changed files with 5 additions and 2 deletions
  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();