Przeglądaj źródła

2009-11-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	In Magnet URI with tr parameter, put each announce URI in separate
	tier.
	* src/bittorrent_helper.cc
	* test/BittorrentHelperTest.cc
Tatsuhiro Tsujikawa 16 lat temu
rodzic
commit
5f082a9ff4
3 zmienionych plików z 16 dodań i 2 usunięć
  1. 7 0
      ChangeLog
  2. 7 1
      src/bittorrent_helper.cc
  3. 2 1
      test/BittorrentHelperTest.cc

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+2009-11-28  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	In Magnet URI with tr parameter, put each announce URI in separate
+	tier.
+	* src/bittorrent_helper.cc
+	* test/BittorrentHelperTest.cc
+
 2009-11-28  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Renamed ExtensionMessage::getBencodedData() as

+ 7 - 1
src/bittorrent_helper.cc

@@ -881,7 +881,13 @@ BDE parseMagnet(const std::string& magnet)
   }
   BDE announceList = BDE::list();
   if(r.containsKey("tr")) {
-    announceList << r["tr"];
+    const BDE& uris = r["tr"];
+    for(BDE::List::const_iterator i = uris.listBegin(); i != uris.listEnd();
+	++i) {
+      BDE tier = BDE::list();
+      tier << *i;
+      announceList << tier;
+    }
   }
   std::string name = "[METADATA]";
   if(r.containsKey("dn") && r["dn"].size()) {

+ 2 - 1
test/BittorrentHelperTest.cc

@@ -712,10 +712,11 @@ void BittorrentHelperTest::testParseMagnet()
 		       util::toHex(attrs[bittorrent::INFO_HASH].s()));
   CPPUNIT_ASSERT_EQUAL(std::string("[METADATA]aria2"),
 		       attrs[bittorrent::NAME].s());
+  CPPUNIT_ASSERT_EQUAL((size_t)2, attrs[bittorrent::ANNOUNCE_LIST].size());
   CPPUNIT_ASSERT_EQUAL(std::string("http://tracker1"),
 		       attrs[bittorrent::ANNOUNCE_LIST][0][0].s());
   CPPUNIT_ASSERT_EQUAL(std::string("http://tracker2"),
-		       attrs[bittorrent::ANNOUNCE_LIST][0][1].s());
+		       attrs[bittorrent::ANNOUNCE_LIST][1][0].s());
 
   magnet = "magnet:?xt=urn:btih:248d0a1cd08284299de78d5c1ed359bb46717d8c";
   attrs = bittorrent::parseMagnet(magnet);