Selaa lähdekoodia

2008-02-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Added handling of dynamic cast failure.
	* src/DHTNodeLookupTask.cc
	* src/DHTPeerLookupTask.cc
Tatsuhiro Tsujikawa 17 vuotta sitten
vanhempi
commit
34e6a1dc9a
3 muutettua tiedostoa jossa 19 lisäystä ja 3 poistoa
  1. 6 0
      ChangeLog
  2. 5 1
      src/DHTNodeLookupTask.cc
  3. 8 2
      src/DHTPeerLookupTask.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2008-02-11  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Added handling of dynamic cast failure.
+	* src/DHTNodeLookupTask.cc
+	* src/DHTPeerLookupTask.cc
+
 2008-02-11  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Added the ability to stop aria2 itself when given time has passed

+ 5 - 1
src/DHTNodeLookupTask.cc

@@ -50,7 +50,11 @@ std::deque<SharedHandle<DHTNode> >
 DHTNodeLookupTask::getNodesFromMessage(const SharedHandle<DHTMessage>& message)
 {
   SharedHandle<DHTFindNodeReplyMessage> m = message;
-  return m->getClosestKNodes();
+  if(m.isNull()) {
+    return std::deque<SharedHandle<DHTNode> >();
+  } else {
+    return m->getClosestKNodes();
+  }
 }
 
 SharedHandle<DHTMessage>

+ 8 - 2
src/DHTPeerLookupTask.cc

@@ -59,13 +59,19 @@ DHTPeerLookupTask::DHTPeerLookupTask(const SharedHandle<BtContext>& btContext):
 std::deque<SharedHandle<DHTNode> > DHTPeerLookupTask::getNodesFromMessage(const SharedHandle<DHTMessage>& message)
 {
   SharedHandle<DHTGetPeersReplyMessage> m = message;
-  return m->getClosestKNodes();
+  if(m.isNull()) {
+    return std::deque<SharedHandle<DHTNode> >();
+  } else {
+    return m->getClosestKNodes();
+  }
 }
   
 void DHTPeerLookupTask::onReceivedInternal(const SharedHandle<DHTMessage>& message)
 {
   SharedHandle<DHTGetPeersReplyMessage> m = message;
-
+  if(m.isNull()) {
+    return;
+  }
   SharedHandle<DHTNode> remoteNode = m->getRemoteNode();
   _tokenStorage[Util::toHex(remoteNode->getID(), DHT_ID_LENGTH)] = m->getToken();