diff --git a/ChangeLog b/ChangeLog index 6d35db7d..85fdbbd6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-08-29 Tatsuhiro Tsujikawa + + Run PeerLookupTask more frequently when the number of peer is low. + * src/DHTGetPeersCommand.cc + * src/DHTGetPeersCommand.h + 2010-08-29 Tatsuhiro Tsujikawa Drop connection when bad ut_metadata is received.. diff --git a/src/DHTGetPeersCommand.cc b/src/DHTGetPeersCommand.cc index 1ab987e8..c2f50048 100644 --- a/src/DHTGetPeersCommand.cc +++ b/src/DHTGetPeersCommand.cc @@ -79,7 +79,10 @@ bool DHTGetPeersCommand::execute() if(task_.isNull() && ((numRetry_ > 0 && lastGetPeerTime_.difference(global::wallclock) >= (time_t)numRetry_*5) || - lastGetPeerTime_.difference(global::wallclock) >= GET_PEER_INTERVAL)) { + lastGetPeerTime_.difference(global::wallclock) >= GET_PEER_INTERVAL || + (btRuntime_->lessThanMinPeers() && + lastGetPeerTime_.difference(global::wallclock) >= GET_PEER_MIN_INTERVAL + && !requestGroup_->downloadFinished()))) { if(getLogger()->debug()) { getLogger()->debug("Issuing PeerLookup for infoHash=%s", bittorrent::getInfoHashString diff --git a/src/DHTGetPeersCommand.h b/src/DHTGetPeersCommand.h index 553450a0..7b0795b5 100644 --- a/src/DHTGetPeersCommand.h +++ b/src/DHTGetPeersCommand.h @@ -54,6 +54,8 @@ class DHTGetPeersCommand:public Command { private: static const time_t GET_PEER_INTERVAL = (15*60); + static const time_t GET_PEER_MIN_INTERVAL = (5*60); + static const size_t MAX_RETRIES = 10; RequestGroup* requestGroup_;