From c44cf31df70a0b0881cde38744e2980510a6abc6 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 5 Dec 2009 07:51:04 +0000 Subject: [PATCH] 2009-12-05 Tatsuhiro Tsujikawa Fixed the bug that connection is always dropped if handshake message in extension protocol don't have metadata_size. src/HandshakeExtensionMessage.cc * src/HandshakeExtensionMessage.cc --- ChangeLog | 7 +++++++ src/HandshakeExtensionMessage.cc | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e91c1639..1d6ed3e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-12-05 Tatsuhiro Tsujikawa + + Fixed the bug that connection is always dropped if handshake + message in extension protocol don't have metadata_size. + src/HandshakeExtensionMessage.cc + * src/HandshakeExtensionMessage.cc + 2009-12-05 Tatsuhiro Tsujikawa Updated "URI, MAGNET, TORRENT_FILE, METALINK_FILE" section. Added diff --git a/src/HandshakeExtensionMessage.cc b/src/HandshakeExtensionMessage.cc index 3c2cee1f..8151adbe 100644 --- a/src/HandshakeExtensionMessage.cc +++ b/src/HandshakeExtensionMessage.cc @@ -113,7 +113,7 @@ void HandshakeExtensionMessage::doReceivedAction() BDE& attrs = _dctx->getAttribute(bittorrent::BITTORRENT); if(!attrs.containsKey(bittorrent::METADATA) && !_peer->getExtensionMessageID("ut_metadata")) { - // TODO In metadataGetMode, if peer dont' support metadata + // TODO In metadataGetMode, if peer don't support metadata // transfer, should we drop connection? There is a possibility // that peer can still tell us peers using PEX. throw DL_ABORT_EX("Peer doesn't support ut_metadata extension. Goodbye."); @@ -133,7 +133,7 @@ void HandshakeExtensionMessage::doReceivedAction() _dctx->getOwnerRequestGroup()->getPieceStorage(); pieceStorage->setEndGamePieceNum(0); } - } else { + } else if(!attrs.containsKey(bittorrent::METADATA)) { throw DL_ABORT_EX("Peer didn't provide metadata_size." " It seems that it doesn't have whole metadata."); }