Kaynağa Gözat

Use standard percent-encode for tracker request query

Tatsuhiro Tsujikawa 9 yıl önce
ebeveyn
işleme
c57259f8e7
2 değiştirilmiş dosya ile 40 ekleme ve 41 silme
  1. 19 20
      src/DefaultBtAnnounce.cc
  2. 21 21
      test/DefaultBtAnnounceTest.cc

+ 19 - 20
src/DefaultBtAnnounce.cc

@@ -161,25 +161,24 @@ std::string DefaultBtAnnounce::getAnnounceUrl()
   const size_t keyLen = 8;
   std::string uri = announceList_.getAnnounce();
   uri += uriHasQuery(uri) ? "&" : "?";
-  uri +=
-      fmt("info_hash=%s&"
-          "peer_id=%s&"
-          "uploaded=%" PRId64 "&"
-          "downloaded=%" PRId64 "&"
-          "left=%" PRId64 "&"
-          "compact=1&"
-          "key=%s&"
-          "numwant=%d&"
-          "no_peer_id=1",
-          util::torrentPercentEncode(bittorrent::getInfoHash(downloadContext_),
-                                     INFO_HASH_LENGTH).c_str(),
-          util::torrentPercentEncode(bittorrent::getStaticPeerId(),
-                                     PEER_ID_LENGTH).c_str(),
-          stat.getSessionUploadLength(), stat.getSessionDownloadLength(), left,
-          util::torrentPercentEncode(bittorrent::getStaticPeerId() +
-                                         PEER_ID_LENGTH - keyLen,
-                                     keyLen).c_str(),
-          numWant);
+  uri += fmt("info_hash=%s&"
+             "peer_id=%s&"
+             "uploaded=%" PRId64 "&"
+             "downloaded=%" PRId64 "&"
+             "left=%" PRId64 "&"
+             "compact=1&"
+             "key=%s&"
+             "numwant=%d&"
+             "no_peer_id=1",
+             util::percentEncode(bittorrent::getInfoHash(downloadContext_),
+                                 INFO_HASH_LENGTH).c_str(),
+             util::percentEncode(bittorrent::getStaticPeerId(), PEER_ID_LENGTH)
+                 .c_str(),
+             stat.getSessionUploadLength(), stat.getSessionDownloadLength(),
+             left, util::percentEncode(bittorrent::getStaticPeerId() +
+                                           PEER_ID_LENGTH - keyLen,
+                                       keyLen).c_str(),
+             numWant);
   if (tcpPort_) {
     uri += fmt("&port=%u", tcpPort_);
   }
@@ -190,7 +189,7 @@ std::string DefaultBtAnnounce::getAnnounceUrl()
   }
   if (!trackerId_.empty()) {
     uri += "&trackerid=";
-    uri += util::torrentPercentEncode(trackerId_);
+    uri += util::percentEncode(trackerId_);
   }
   if (option_->getAsBool(PREF_BT_FORCE_ENCRYPTION) ||
       option_->getAsBool(PREF_BT_REQUIRE_CRYPTO)) {

+ 21 - 21
test/DefaultBtAnnounceTest.cc

@@ -158,7 +158,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -169,7 +169,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&supportcrypto=1"),
       btAnnounce.getAnnounceUrl());
@@ -179,7 +179,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://backup/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -192,7 +192,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=completed&"
                   "supportcrypto=1"),
@@ -203,7 +203,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://backup/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=completed&"
                   "supportcrypto=1"),
@@ -216,7 +216,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=0&no_peer_id=1&port=6989&event=stopped&"
                   "supportcrypto=1"),
@@ -227,7 +227,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://backup/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=0&no_peer_id=1&port=6989&event=stopped&"
                   "supportcrypto=1"),
@@ -255,7 +255,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -281,7 +281,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&supportcrypto=1"),
       btAnnounce.getAnnounceUrl());
@@ -296,7 +296,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=completed&"
                   "supportcrypto=1"),
@@ -312,7 +312,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=0&no_peer_id=1&port=6989&event=stopped&"
                   "supportcrypto=1"),
@@ -339,7 +339,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl_withQuery()
       std::string(
           "http://localhost/announce?k=v&"
           "info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%01%23Eg&"
-          "peer_id=%2Daria2%2Dultrafastdltl&"
+          "peer_id=-aria2-ultrafastdltl&"
           "uploaded=1572864&downloaded=1310720&left=1572864&compact=1&"
           "key=fastdltl&numwant=50&no_peer_id=1&port=6989&event=started&"
           "supportcrypto=1"),
@@ -364,7 +364,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl_externalIP()
       std::string(
           "http://localhost/announce?"
           "info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%01%23Eg&"
-          "peer_id=%2Daria2%2Dultrafastdltl&"
+          "peer_id=-aria2-ultrafastdltl&"
           "uploaded=1572864&downloaded=1310720&left=1572864&compact=1&"
           "key=fastdltl&numwant=50&no_peer_id=1&port=6989&event=started&"
           "supportcrypto=1&ip=192.168.1.1"),
@@ -395,7 +395,7 @@ void DefaultBtAnnounceTest::testIsAllAnnounceFailed()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -406,7 +406,7 @@ void DefaultBtAnnounceTest::testIsAllAnnounceFailed()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://backup/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -442,7 +442,7 @@ void DefaultBtAnnounceTest::testURLOrderInStoppedEvent()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost1/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -455,7 +455,7 @@ void DefaultBtAnnounceTest::testURLOrderInStoppedEvent()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost1/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=0&no_peer_id=1&port=6989&event=stopped&"
                   "supportcrypto=1"),
@@ -466,7 +466,7 @@ void DefaultBtAnnounceTest::testURLOrderInStoppedEvent()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost2/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=0&no_peer_id=1&port=6989&event=stopped&"
                   "supportcrypto=1"),
@@ -494,7 +494,7 @@ void DefaultBtAnnounceTest::testURLOrderInCompletedEvent()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost1/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=started&"
                   "supportcrypto=1"),
@@ -507,7 +507,7 @@ void DefaultBtAnnounceTest::testURLOrderInCompletedEvent()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost1/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=completed&"
                   "supportcrypto=1"),
@@ -518,7 +518,7 @@ void DefaultBtAnnounceTest::testURLOrderInCompletedEvent()
   CPPUNIT_ASSERT_EQUAL(
       std::string("http://localhost2/"
                   "announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%"
-                  "01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&"
+                  "01%23Eg&peer_id=-aria2-ultrafastdltl&uploaded=1572864&"
                   "downloaded=1310720&left=1572864&compact=1&key=fastdltl&"
                   "numwant=50&no_peer_id=1&port=6989&event=completed&"
                   "supportcrypto=1"),