diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-03-22 15:10:03 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-03-22 15:10:03 +0000 |
| commit | 26aa28acb3793d3d992625fcaad5e45df336a9a3 (patch) | |
| tree | d2e46f9ad50aa1a11ce8350494458cf8a9372caa /src/PeerInteractionCommand.cc | |
| parent | bf336caa83f28f02f0b60697af3d97c2e5156144 (diff) | |
* PeerInteractionCommand.cc: added a call to
TorrentMan::unadvertisePiece in Destructor.
* PeerInteractionCommand.cc: make have message sent immediately
if the size of pending message queue is zero.
* TorrentMan.cc: set the maximum size of peer list to 250.
* TorrentMan.h: changed the container type of Peers and
UsedPieces
to deque.
* Util.cc: fixed rangedFileCopy.
* AbstractDiskWriter.{h,cc}: moved digest context initialization
to Constructor. Also, moved digest cleanup to Destructor.
* MetaFileUtil.cc: fixed memory leak
Diffstat (limited to 'src/PeerInteractionCommand.cc')
| -rw-r--r-- | src/PeerInteractionCommand.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/PeerInteractionCommand.cc b/src/PeerInteractionCommand.cc index 1b5f60d9..5b0174ee 100644 --- a/src/PeerInteractionCommand.cc +++ b/src/PeerInteractionCommand.cc @@ -46,6 +46,7 @@ PeerInteractionCommand::PeerInteractionCommand(int cuid, Peer* peer, PeerInteractionCommand::~PeerInteractionCommand() { delete peerConnection; delete requestSlotMan; + e->torrentMan->unadvertisePiece(cuid); } bool PeerInteractionCommand::executeInternal() { @@ -378,14 +379,18 @@ void PeerInteractionCommand::beforeSocketCheck() { PendingMessage pendingMessage(PeerMessage::BITFIELD, peerConnection); pendingMessages.push_back(pendingMessage); } else { - for(vector<int>::iterator itr = indexes.begin(); itr != indexes.end(); itr++) { - PendingMessage pendingMessage = PendingMessage::createHaveMessage(*itr, peerConnection); - pendingMessages.push_back(pendingMessage); + if(pendingMessages.size() == 0) { + for(vector<int>::iterator itr = indexes.begin(); itr != indexes.end(); itr++) { + peerConnection->sendHave(*itr); + } + } else { + for(vector<int>::iterator itr = indexes.begin(); itr != indexes.end(); itr++) { + PendingMessage pendingMessage = PendingMessage::createHaveMessage(*itr, peerConnection); + pendingMessages.push_back(pendingMessage); + } } } - if(indexes.size() == 0) { - keepAlive(); - } + keepAlive(); } } |
