From 26aa28acb3793d3d992625fcaad5e45df336a9a3 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 22 Mar 2006 15:10:03 +0000 Subject: * 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 --- src/PeerInteractionCommand.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/PeerInteractionCommand.cc') 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::iterator itr = indexes.begin(); itr != indexes.end(); itr++) { - PendingMessage pendingMessage = PendingMessage::createHaveMessage(*itr, peerConnection); - pendingMessages.push_back(pendingMessage); + if(pendingMessages.size() == 0) { + for(vector::iterator itr = indexes.begin(); itr != indexes.end(); itr++) { + peerConnection->sendHave(*itr); + } + } else { + for(vector::iterator itr = indexes.begin(); itr != indexes.end(); itr++) { + PendingMessage pendingMessage = PendingMessage::createHaveMessage(*itr, peerConnection); + pendingMessages.push_back(pendingMessage); + } } } - if(indexes.size() == 0) { - keepAlive(); - } + keepAlive(); } } -- cgit