summaryrefslogtreecommitdiff
path: root/src/PeerInteractionCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-03-22 15:10:03 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-03-22 15:10:03 +0000
commit26aa28acb3793d3d992625fcaad5e45df336a9a3 (patch)
treed2e46f9ad50aa1a11ce8350494458cf8a9372caa /src/PeerInteractionCommand.cc
parentbf336caa83f28f02f0b60697af3d97c2e5156144 (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.cc17
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();
}
}