Bläddra i källkod

2010-06-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	When wrong type DHT reply message is received for a transaction
	ID, assume the message timed out.
	* src/DHTNodeLookupTaskCallback.cc
	* src/DHTNodeLookupTaskCallback.h
	* src/DHTPeerLookupTaskCallback.cc
	* src/DHTPeerLookupTaskCallback.h
	* src/DHTPingReplyMessageCallback.h
Tatsuhiro Tsujikawa 15 år sedan
förälder
incheckning
ae957baa98

+ 10 - 0
ChangeLog

@@ -1,3 +1,13 @@
+2010-06-20  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	When wrong type DHT reply message is received for a transaction
+	ID, assume the message timed out.
+	* src/DHTNodeLookupTaskCallback.cc
+	* src/DHTNodeLookupTaskCallback.h
+	* src/DHTPeerLookupTaskCallback.cc
+	* src/DHTPeerLookupTaskCallback.h
+	* src/DHTPingReplyMessageCallback.h
+
 2010-06-20  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Removed PeerListProcessor. Its functionality is now moved to

+ 24 - 0
src/DHTNodeLookupTaskCallback.cc

@@ -34,21 +34,45 @@
 /* copyright --> */
 #include "DHTNodeLookupTaskCallback.h"
 #include "DHTNodeLookupTask.h"
+#include "DHTAnnouncePeerReplyMessage.h"
+#include "DHTGetPeersReplyMessage.h"
+#include "DHTPingReplyMessage.h"
+#include "Peer.h"
 
 namespace aria2 {
 
 DHTNodeLookupTaskCallback::DHTNodeLookupTaskCallback(DHTNodeLookupTask* task):
   _task(task) {}
 
+void DHTNodeLookupTaskCallback::visit
+(const DHTAnnouncePeerReplyMessage* message)
+{
+  // When wrong message type is received, forced to timeout
+  onTimeout(message->getRemoteNode());
+}
+
 void DHTNodeLookupTaskCallback::visit(const DHTFindNodeReplyMessage* message)
 {
   _task->onReceived(message);
 }
 
+void DHTNodeLookupTaskCallback::visit(const DHTGetPeersReplyMessage* message)
+{
+  // When wrong message type is received, forced to timeout
+  onTimeout(message->getRemoteNode());
+}
+
+void DHTNodeLookupTaskCallback::visit(const DHTPingReplyMessage* message)
+{
+  // When wrong message type is received, forced to timeout
+  onTimeout(message->getRemoteNode());
+}
+
 void DHTNodeLookupTaskCallback::onTimeout
 (const SharedHandle<DHTNode>& remoteNode)
 {
   _task->onTimeout(remoteNode);
 }
 
+
 } // namespace aria2

+ 3 - 3
src/DHTNodeLookupTaskCallback.h

@@ -47,13 +47,13 @@ private:
 public:
   DHTNodeLookupTaskCallback(DHTNodeLookupTask* task);
 
-  virtual void visit(const DHTAnnouncePeerReplyMessage* message) {}
+  virtual void visit(const DHTAnnouncePeerReplyMessage* message);
 
   virtual void visit(const DHTFindNodeReplyMessage* message);
 
-  virtual void visit(const DHTGetPeersReplyMessage* message) {}
+  virtual void visit(const DHTGetPeersReplyMessage* message);
 
-  virtual void visit(const DHTPingReplyMessage* message) {}
+  virtual void visit(const DHTPingReplyMessage* message);
 
   virtual void onTimeout(const SharedHandle<DHTNode>& remoteNode);
 };

+ 20 - 0
src/DHTPeerLookupTaskCallback.cc

@@ -34,17 +34,37 @@
 /* copyright --> */
 #include "DHTPeerLookupTaskCallback.h"
 #include "DHTPeerLookupTask.h"
+#include "DHTAnnouncePeerReplyMessage.h"
+#include "DHTFindNodeReplyMessage.h"
+#include "DHTPingReplyMessage.h"
+#include "Peer.h"
 
 namespace aria2 {
 
 DHTPeerLookupTaskCallback::DHTPeerLookupTaskCallback(DHTPeerLookupTask* task):
   _task(task) {}
 
+void DHTPeerLookupTaskCallback::visit
+(const DHTAnnouncePeerReplyMessage* message)
+{
+  onTimeout(message->getRemoteNode());
+}
+
+void DHTPeerLookupTaskCallback::visit(const DHTFindNodeReplyMessage* message)
+{
+  onTimeout(message->getRemoteNode());
+}
+
 void DHTPeerLookupTaskCallback::visit(const DHTGetPeersReplyMessage* message)
 {
   _task->onReceived(message);
 }
 
+void DHTPeerLookupTaskCallback::visit(const DHTPingReplyMessage* message)
+{
+  onTimeout(message->getRemoteNode());
+}
+
 void DHTPeerLookupTaskCallback::onTimeout
 (const SharedHandle<DHTNode>& remoteNode)
 {

+ 3 - 3
src/DHTPeerLookupTaskCallback.h

@@ -47,13 +47,13 @@ private:
 public:
   DHTPeerLookupTaskCallback(DHTPeerLookupTask* task);
 
-  virtual void visit(const DHTAnnouncePeerReplyMessage* message) {}
+  virtual void visit(const DHTAnnouncePeerReplyMessage* message);
 
-  virtual void visit(const DHTFindNodeReplyMessage* message) {}
+  virtual void visit(const DHTFindNodeReplyMessage* message);
 
   virtual void visit(const DHTGetPeersReplyMessage* message);
 
-  virtual void visit(const DHTPingReplyMessage* message) {}
+  virtual void visit(const DHTPingReplyMessage* message);
 
   virtual void onTimeout(const SharedHandle<DHTNode>& remoteNode);
 };

+ 16 - 3
src/DHTPingReplyMessageCallback.h

@@ -36,6 +36,10 @@
 #define _D_DHT_PING_REPLY_MESSAGE_CALLBACK_H_
 
 #include "DHTMessageCallback.h"
+#include "DHTAnnouncePeerReplyMessage.h"
+#include "DHTFindNodeReplyMessage.h"
+#include "DHTGetPeersReplyMessage.h"
+#include "Peer.h"
 
 namespace aria2 {
 
@@ -46,11 +50,20 @@ private:
 public:
   DHTPingReplyMessageCallback(Task* task):_task(task) {}
 
-  virtual void visit(const DHTAnnouncePeerReplyMessage* message) {}
+  virtual void visit(const DHTAnnouncePeerReplyMessage* message)
+  {
+    onTimeout(message->getRemoteNode());
+  }
 
-  virtual void visit(const DHTFindNodeReplyMessage* message) {}
+  virtual void visit(const DHTFindNodeReplyMessage* message)
+  {
+    onTimeout(message->getRemoteNode());
+  }
 
-  virtual void visit(const DHTGetPeersReplyMessage* message) {}
+  virtual void visit(const DHTGetPeersReplyMessage* message)
+  {
+    onTimeout(message->getRemoteNode());
+  }
 
   virtual void visit(const DHTPingReplyMessage* message)
   {