diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-07 00:22:43 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-07 00:22:43 +0900 |
| commit | a9f734218fdccdc8521e4e88eca8e0d26f539629 (patch) | |
| tree | f6ad94d307cafeef3bb99140900e8ebd1d3e0daa /src/DHTPeerLookupTask.cc | |
| parent | 2dba2f86a43414d706287a5a0fa12aa6573a59d2 (diff) | |
Don't send announce_peer message with empty token in
DHTPeerLookupTask. Replace old node ID with new node ID when response
message is received in DHTAbstractNodeLookupTask.
Diffstat (limited to 'src/DHTPeerLookupTask.cc')
| -rw-r--r-- | src/DHTPeerLookupTask.cc | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/DHTPeerLookupTask.cc b/src/DHTPeerLookupTask.cc index 94c0de12..baf54093 100644 --- a/src/DHTPeerLookupTask.cc +++ b/src/DHTPeerLookupTask.cc @@ -102,17 +102,25 @@ void DHTPeerLookupTask::onFinish() size_t num = DHTBucket::K; for(std::deque<SharedHandle<DHTNodeLookupEntry> >::const_iterator i = getEntries().begin(), eoi = getEntries().end(); - i != eoi && num > 0; ++i, --num) { - if((*i)->used) { - const SharedHandle<DHTNode>& node = (*i)->node; - SharedHandle<DHTMessage> m = - getMessageFactory()->createAnnouncePeerMessage - (node, - getTargetID(), // this is infoHash - btRuntime_->getListenPort(), - tokenStorage_[util::toHex(node->getID(), DHT_ID_LENGTH)]); - getMessageDispatcher()->addMessageToQueue(m); + i != eoi && num > 0; ++i) { + if(!(*i)->used) { + continue; } + const SharedHandle<DHTNode>& node = (*i)->node; + std::string idHex = util::toHex(node->getID(), DHT_ID_LENGTH); + std::string token = tokenStorage_[idHex]; + if(token.empty()) { + A2_LOG_DEBUG(fmt("Token is empty for ID:%s", idHex.c_str())); + continue; + } + SharedHandle<DHTMessage> m = + getMessageFactory()->createAnnouncePeerMessage + (node, + getTargetID(), // this is infoHash + btRuntime_->getListenPort(), + token); + getMessageDispatcher()->addMessageToQueue(m); + --num; } } |
