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"));