From 08c05b9693497dfae3782584de2867906d42e9bd Mon Sep 17 00:00:00 2001 From: arvidn Date: Thu, 9 Mar 2017 19:09:10 -0500 Subject: [PATCH] correctly URL encode the IPv6 argument to trackers --- ChangeLog | 1 + simulation/test_tracker.cpp | 3 +++ src/http_tracker_connection.cpp | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f54e84cba..d66c92f33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ + * correctly URL encode the IPv6 argument to trackers * fix default file pool size on windows * fix bug where settings_pack::file_pool_size setting was not being honored * add feature to periodically close files (to make windows clear disk cache) diff --git a/simulation/test_tracker.cpp b/simulation/test_tracker.cpp index e3466c4be..50730e066 100644 --- a/simulation/test_tracker.cpp +++ b/simulation/test_tracker.cpp @@ -744,6 +744,9 @@ TORRENT_TEST(tracker_ipv6_argument) std::string::size_type pos = req.find("&ipv6="); TEST_CHECK(pos != std::string::npos); got_ipv6 = pos != std::string::npos; + // make sure the IPv6 argument is url encoded + TEST_CHECK(req.substr(pos + 6, req.find_first_of(pos + 6, '&')) + == "ffff%3a%3a1337"); return sim::send_response(200, "OK", 11) + "d5:peers0:e"; } , [](torrent_handle h) {} diff --git a/src/http_tracker_connection.cpp b/src/http_tracker_connection.cpp index cf891bf92..b1aad94bd 100644 --- a/src/http_tracker_connection.cpp +++ b/src/http_tracker_connection.cpp @@ -194,7 +194,7 @@ namespace libtorrent if (!err) { url += "&ipv6="; - url += ip; + url += escape_string(ip.c_str(), ip.size()); } } #endif