Kaynağa Gözat

2009-12-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Fixed the bug that query parameter in magnet URI is not decoded.
	* src/magnet.cc
	* test/MagnetTest.cc
Tatsuhiro Tsujikawa 16 yıl önce
ebeveyn
işleme
8cd1d845f2
3 değiştirilmiş dosya ile 10 ekleme ve 3 silme
  1. 6 0
      ChangeLog
  2. 3 2
      src/magnet.cc
  3. 1 1
      test/MagnetTest.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2009-12-07  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Fixed the bug that query parameter in magnet URI is not decoded.
+	* src/magnet.cc
+	* test/MagnetTest.cc
+
 2009-12-07  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Specified defaultSize as an argument for easy testing.

+ 3 - 2
src/magnet.cc

@@ -53,11 +53,12 @@ BDE parse(const std::string& magnet)
       i != queries.end(); ++i) {
     std::pair<std::string, std::string> kv;
     util::split(kv, *i, '=');
+    std::string value = util::urldecode(kv.second);
     if(dict.containsKey(kv.first)) {
-      dict[kv.first] << kv.second;
+      dict[kv.first] << value;
     } else {
       BDE list = BDE::list();
-      list << kv.second;
+      list << value;
       dict[kv.first] = list;
     }
   }

+ 1 - 1
test/MagnetTest.cc

@@ -24,7 +24,7 @@ void MagnetTest::testParse()
 {
   BDE r = parse
     ("magnet:?xt=urn:btih:248d0a1cd08284299de78d5c1ed359bb46717d8c&dn=aria2"
-     "&tr=http://tracker1&tr=http://tracker2");
+     "&tr=http%3A%2F%2Ftracker1&tr=http://tracker2");
   CPPUNIT_ASSERT_EQUAL
     (std::string("urn:btih:248d0a1cd08284299de78d5c1ed359bb46717d8c"),
      r["xt"][0].s());