From 3fa6ce55f4107ae79f108ec7ffbdbd9e26fca398 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 24 Nov 2009 16:42:55 +0000 Subject: [PATCH] 2009-11-25 Tatsuhiro Tsujikawa Fixed the bug that trackers in BitTorrent Magnet URI are not inherited to generated RequestGroup. * src/UTMetadataPostDownloadHandler.cc * test/UTMetadataPostDownloadHandlerTest.cc --- ChangeLog | 13 +++++++++++++ src/UTMetadataPostDownloadHandler.cc | 3 ++- test/UTMetadataPostDownloadHandlerTest.cc | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 179b6c22..617fb965 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-11-25 Tatsuhiro Tsujikawa + + Fixed the bug that trackers in BitTorrent Magnet URI are not + inherited to generated RequestGroup. + * src/UTMetadataPostDownloadHandler.cc + * test/UTMetadataPostDownloadHandlerTest.cc + +2009-11-25 Tatsuhiro Tsujikawa + + Prepended "[METADATA]" before dn. + * src/bittorrent_helper.cc + * test/BittorrentHelperTest.cc + 2009-11-24 Tatsuhiro Tsujikawa Rewritten Magnet URI parser. diff --git a/src/UTMetadataPostDownloadHandler.cc b/src/UTMetadataPostDownloadHandler.cc index 14f8ce6e..90ced69f 100644 --- a/src/UTMetadataPostDownloadHandler.cc +++ b/src/UTMetadataPostDownloadHandler.cc @@ -92,7 +92,8 @@ void UTMetadataPostDownloadHandler::getNextRequestGroups newAttrs[bittorrent::INFO_HASH].s()) { continue; } - if(!newAttrs.containsKey(bittorrent::ANNOUNCE_LIST)) { + assert(newAttrs[bittorrent::ANNOUNCE_LIST].isList()); + if(newAttrs[bittorrent::ANNOUNCE_LIST].size() == 0) { newAttrs[bittorrent::ANNOUNCE_LIST] = attrs[bittorrent::ANNOUNCE_LIST]; } diff --git a/test/UTMetadataPostDownloadHandlerTest.cc b/test/UTMetadataPostDownloadHandlerTest.cc index 30578005..88b0eb73 100644 --- a/test/UTMetadataPostDownloadHandlerTest.cc +++ b/test/UTMetadataPostDownloadHandlerTest.cc @@ -73,6 +73,8 @@ void UTMetadataPostDownloadHandlerTest::testGetNextRequestGroups() BDE attrs = BDE::dict(); attrs[bittorrent::INFO_HASH] = std::string(&infoHash[0], &infoHash[20]); BDE announceList = BDE::list(); + announceList << BDE::list(); + announceList[0] << std::string("http://tracker"); attrs[bittorrent::ANNOUNCE_LIST] = announceList; _dctx->setAttribute(bittorrent::BITTORRENT, attrs); _requestGroup->setDiskWriterFactory @@ -93,6 +95,9 @@ void UTMetadataPostDownloadHandlerTest::testGetNextRequestGroups() CPPUNIT_ASSERT_EQUAL(util::toHex(attrs[bittorrent::INFO_HASH].s()), util::toHex(newAttrs[bittorrent::INFO_HASH].s())); CPPUNIT_ASSERT(newAttrs.containsKey(bittorrent::ANNOUNCE_LIST)); + CPPUNIT_ASSERT_EQUAL((size_t)1, newAttrs[bittorrent::ANNOUNCE_LIST].size()); + CPPUNIT_ASSERT_EQUAL(std::string("http://tracker"), + newAttrs[bittorrent::ANNOUNCE_LIST][0][0].s()); CPPUNIT_ASSERT_EQUAL(_option->get("Hello"), newRg->getOption()->get("Hello"));