diff --git a/ChangeLog b/ChangeLog index d79615f0..b47e7bc5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2009-11-22 Tatsuhiro Tsujikawa + + Added _metadataGetMode member variable. It toggles the action when + messages are received: usually they almost do nothing if + _metadataGetMode is true. + * src/AbstractBtMessage.cc + * src/AbstractBtMessage.h + * src/BtAllowedFastMessage.cc + * src/BtBitfieldMessage.cc + * src/BtCancelMessage.cc + * src/BtChokeMessage.cc + * src/BtHaveAllMessage.cc + * src/BtHaveMessage.cc + * src/BtInterestedMessage.cc + * src/BtNotInterestedMessage.cc + * src/BtPieceMessage.cc + * src/BtRejectMessage.cc + * src/BtRequestMessage.cc + * src/BtUnchokeMessage.cc + 2009-11-22 Tatsuhiro Tsujikawa Added bencode::decode overload functions. They have extra argument diff --git a/src/AbstractBtMessage.cc b/src/AbstractBtMessage.cc index d68d49b1..43908556 100644 --- a/src/AbstractBtMessage.cc +++ b/src/AbstractBtMessage.cc @@ -48,6 +48,7 @@ AbstractBtMessage::AbstractBtMessage(uint8_t id, const std::string& name): uploading(false), cuid(0), _name(name), + _metadataGetMode(false), logger(LogFactory::getInstance()) {} diff --git a/src/AbstractBtMessage.h b/src/AbstractBtMessage.h index 588bc96e..7e8389f6 100644 --- a/src/AbstractBtMessage.h +++ b/src/AbstractBtMessage.h @@ -73,6 +73,8 @@ protected: SharedHandle validator; + bool _metadataGetMode; + Logger* logger; public: AbstractBtMessage(uint8_t id, const std::string& name); @@ -148,6 +150,11 @@ public: { return _name; } + + void enableMetadataGetMode() + { + _metadataGetMode = true; + } }; typedef SharedHandle AbstractBtMessageHandle; diff --git a/src/BtAllowedFastMessage.cc b/src/BtAllowedFastMessage.cc index d65de456..13086b6e 100644 --- a/src/BtAllowedFastMessage.cc +++ b/src/BtAllowedFastMessage.cc @@ -53,6 +53,9 @@ void BtAllowedFastMessage::doReceivedAction() { (StringFormat("%s received while fast extension is disabled", toString().c_str()).str()); } + if(_metadataGetMode) { + return; + } peer->addPeerAllowedIndex(getIndex()); } diff --git a/src/BtBitfieldMessage.cc b/src/BtBitfieldMessage.cc index 7165859e..8ed83fe0 100644 --- a/src/BtBitfieldMessage.cc +++ b/src/BtBitfieldMessage.cc @@ -71,6 +71,9 @@ BtBitfieldMessage::create(const unsigned char* data, size_t dataLength) } void BtBitfieldMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } pieceStorage->updatePieceStats(bitfield, bitfieldLength, peer->getBitfield()); peer->setBitfield(bitfield, bitfieldLength); if(peer->isSeeder() && pieceStorage->downloadFinished()) { diff --git a/src/BtCancelMessage.cc b/src/BtCancelMessage.cc index 536f4b58..ac8aee16 100644 --- a/src/BtCancelMessage.cc +++ b/src/BtCancelMessage.cc @@ -47,6 +47,9 @@ SharedHandle BtCancelMessage::create void BtCancelMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } dispatcher->doCancelSendingPieceAction(getIndex(), getBegin(), getLength()); } diff --git a/src/BtChokeMessage.cc b/src/BtChokeMessage.cc index 85cad16e..606f94ed 100644 --- a/src/BtChokeMessage.cc +++ b/src/BtChokeMessage.cc @@ -49,6 +49,9 @@ SharedHandle BtChokeMessage::create void BtChokeMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } peer->peerChoking(true); dispatcher->doChokedAction(); requestFactory->doChokedAction(); diff --git a/src/BtHaveAllMessage.cc b/src/BtHaveAllMessage.cc index b99abbf5..8ccf7acc 100644 --- a/src/BtHaveAllMessage.cc +++ b/src/BtHaveAllMessage.cc @@ -56,6 +56,9 @@ void BtHaveAllMessage::doReceivedAction() (StringFormat("%s received while fast extension is disabled", toString().c_str()).str()); } + if(_metadataGetMode) { + return; + } pieceStorage->subtractPieceStats(peer->getBitfield(), peer->getBitfieldLength()); peer->setAllBitfield(); diff --git a/src/BtHaveMessage.cc b/src/BtHaveMessage.cc index 35317665..d008dad6 100644 --- a/src/BtHaveMessage.cc +++ b/src/BtHaveMessage.cc @@ -50,6 +50,9 @@ SharedHandle BtHaveMessage::create void BtHaveMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } peer->updateBitfield(getIndex(), 1); pieceStorage->addPieceStats(getIndex()); if(peer->isSeeder() && pieceStorage->downloadFinished()) { diff --git a/src/BtInterestedMessage.cc b/src/BtInterestedMessage.cc index 38b23106..0ee531ae 100644 --- a/src/BtInterestedMessage.cc +++ b/src/BtInterestedMessage.cc @@ -48,6 +48,9 @@ SharedHandle BtInterestedMessage::create void BtInterestedMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } peer->peerInterested(true); if(!peer->amChoking()) { _peerStorage->executeChoke(); diff --git a/src/BtNotInterestedMessage.cc b/src/BtNotInterestedMessage.cc index a4adc7df..8d8b9352 100644 --- a/src/BtNotInterestedMessage.cc +++ b/src/BtNotInterestedMessage.cc @@ -48,6 +48,9 @@ SharedHandle BtNotInterestedMessage::create void BtNotInterestedMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } peer->peerInterested(false); if(!peer->amChoking()) { _peerStorage->executeChoke(); diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc index c97e570b..a31ebf58 100644 --- a/src/BtPieceMessage.cc +++ b/src/BtPieceMessage.cc @@ -77,6 +77,9 @@ BtPieceMessageHandle BtPieceMessage::create(const unsigned char* data, size_t da } void BtPieceMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } RequestSlot slot = dispatcher->getOutstandingRequest(index, begin, blockLength); diff --git a/src/BtRejectMessage.cc b/src/BtRejectMessage.cc index d28d5851..d3e95c70 100644 --- a/src/BtRejectMessage.cc +++ b/src/BtRejectMessage.cc @@ -56,6 +56,9 @@ void BtRejectMessage::doReceivedAction() (StringFormat("%s received while fast extension is disabled.", toString().c_str()).str()); } + if(_metadataGetMode) { + return; + } // TODO Current implementation does not close a connection even if // a request for this reject message has never sent. RequestSlot slot = diff --git a/src/BtRequestMessage.cc b/src/BtRequestMessage.cc index 12af9702..3a0569f2 100644 --- a/src/BtRequestMessage.cc +++ b/src/BtRequestMessage.cc @@ -51,6 +51,9 @@ SharedHandle BtRequestMessage::create void BtRequestMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } if(pieceStorage->hasPiece(getIndex()) && (!peer->amChoking() || (peer->amChoking() && peer->isInAmAllowedIndexSet(getIndex())))) { diff --git a/src/BtUnchokeMessage.cc b/src/BtUnchokeMessage.cc index 65b419a0..f54bcd35 100644 --- a/src/BtUnchokeMessage.cc +++ b/src/BtUnchokeMessage.cc @@ -47,6 +47,9 @@ SharedHandle BtUnchokeMessage::create void BtUnchokeMessage::doReceivedAction() { + if(_metadataGetMode) { + return; + } peer->peerChoking(false); }