summaryrefslogtreecommitdiff
path: root/src/HandshakeExtensionMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-06-23 11:55:23 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-06-23 11:55:23 +0000
commit4736e77acfc728176591f677cd2c973ef1d71098 (patch)
treedc3d6913df2ba3e5ca3e81986534a7df169e3ff7 /src/HandshakeExtensionMessage.cc
parent3e98f0553319033a9a37190870541417ea3f3a1e (diff)
2010-06-23 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Request ut_metadata in end-game mode(in other words, more aggresively) * src/HandshakeExtensionMessage.cc * src/Peer.cc * src/Peer.h * src/PeerSessionResource.cc * src/PeerSessionResource.h * src/UTMetadataRequestFactory.cc * test/UTMetadataRequestFactoryTest.cc
Diffstat (limited to 'src/HandshakeExtensionMessage.cc')
-rw-r--r--src/HandshakeExtensionMessage.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/HandshakeExtensionMessage.cc b/src/HandshakeExtensionMessage.cc
index 5a743de2..20c2e621 100644
--- a/src/HandshakeExtensionMessage.cc
+++ b/src/HandshakeExtensionMessage.cc
@@ -123,6 +123,11 @@ void HandshakeExtensionMessage::doReceivedAction()
if(metadataSize_ != attrs->metadataSize) {
throw DL_ABORT_EX("Wrong metadata_size. Which one is correct!?");
}
+ if(!peer_->isSeeder()) {
+ peer_->reconfigureSessionResource(dctx_->getPieceLength(),
+ dctx_->getTotalLength());
+ peer_->setAllBitfield();
+ }
} else {
attrs->metadataSize = metadataSize_;
dctx_->getFirstFileEntry()->setLength(metadataSize_);
@@ -131,7 +136,9 @@ void HandshakeExtensionMessage::doReceivedAction()
SharedHandle<PieceStorage> pieceStorage =
dctx_->getOwnerRequestGroup()->getPieceStorage();
- pieceStorage->setEndGamePieceNum(0);
+ peer_->reconfigureSessionResource(dctx_->getPieceLength(),
+ dctx_->getTotalLength());
+ peer_->setAllBitfield();
}
} else if(attrs->metadata.empty()) {
throw DL_ABORT_EX("Peer didn't provide metadata_size."