Browse Source

2009-11-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Fixed the bug that DHTAbstractNodeLookupTask never finishes if
	error occurred in DHTMessageDispatcherImpl::sendMessage().
	* src/DHTMessageDispatcherImpl.cc
Tatsuhiro Tsujikawa 16 years ago
parent
commit
f1043306f0
2 changed files with 13 additions and 0 deletions
  1. 6 0
      ChangeLog
  2. 7 0
      src/DHTMessageDispatcherImpl.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2009-11-01  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Fixed the bug that DHTAbstractNodeLookupTask never finishes if
+	error occurred in DHTMessageDispatcherImpl::sendMessage().
+	* src/DHTMessageDispatcherImpl.cc
+
 2009-11-01  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Don't reuse URI if Request pool is not empty.

+ 7 - 0
src/DHTMessageDispatcherImpl.cc

@@ -82,6 +82,13 @@ DHTMessageDispatcherImpl::sendMessage(const SharedHandle<DHTMessageEntry>& entry
     }
   } catch(RecoverableException& e) {
     _logger->error("Failed to send message: %s", e, entry->_message->toString().c_str());
+    // Add message to DHTMessageTracker with timeout 0 to treat it as
+    // time out. Without this, we have untracked message and some of
+    // DHTTask(such as DHTAbstractNodeLookupTask) don't finish
+    // forever.
+    if(!entry->_message->isReply()) {
+      _tracker->addMessage(entry->_message, 0, entry->_callback);
+    }
   }
   return true;
 }