浏览代码

2010-03-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Drop connection if same Peer ID has been already seen.
	* src/DefaultBtInteractive.cc
Tatsuhiro Tsujikawa 15 年之前
父节点
当前提交
9a922f8b02
共有 2 个文件被更改,包括 16 次插入0 次删除
  1. 5 0
      ChangeLog
  2. 11 0
      src/DefaultBtInteractive.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2010-03-30  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Drop connection if same Peer ID has been already seen.
+	* src/DefaultBtInteractive.cc
+
 2010-03-29  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Fixed the bug that waiting download unintentionally starts when

+ 11 - 0
src/DefaultBtInteractive.cc

@@ -115,6 +115,17 @@ BtMessageHandle DefaultBtInteractive::receiveHandshake(bool quickReply) {
        ("CUID#%s - Drop connection from the same Peer ID",
         util::itos(cuid).c_str()).str());
   }
+  std::vector<SharedHandle<Peer> > activePeers;
+  _peerStorage->getActivePeers(activePeers);
+  for(std::vector<SharedHandle<Peer> >::const_iterator i = activePeers.begin(),
+        eoi = activePeers.end(); i != eoi; ++i) {
+    if(memcmp((*i)->getPeerId(), message->getPeerId(), PEER_ID_LENGTH) == 0) {
+      throw DL_ABORT_EX
+        (StringFormat
+         ("CUID#%s - Same Peer ID has been already seen.",
+          util::itos(cuid).c_str()).str());
+    }
+  }
 
   peer->setPeerId(message->getPeerId());