From e1eb12e60fd7c8d05f9122e43a513bc05f38ce27 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Fri, 26 Oct 2018 15:10:10 +0200 Subject: [PATCH] ssl listen port fix and improved tracker announce logging --- ChangeLog | 1 + src/session_impl.cpp | 11 ++++++++++- src/torrent.cpp | 15 ++++++++++++--- src/tracker_manager.cpp | 6 +----- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index b28613249..19da0505c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ + * fix tracker announce issue, advertising port 0 in secondary IPv6 announce * fix missing boost/noncopyable.hpp includes * fix python binding for torrent_info::creation_date() diff --git a/src/session_impl.cpp b/src/session_impl.cpp index 49eb6e896..9c03069b5 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -1320,7 +1320,7 @@ namespace aux { #ifdef TORRENT_USE_OPENSSL // SSL torrents use the SSL listen port if (req.ssl_ctx) req.listen_port = ssl_listen_port(); - req.ssl_ctx = &m_ssl_ctx; + else req.ssl_ctx = &m_ssl_ctx; #endif #if TORRENT_USE_I2P if (!m_settings.get_str(settings_pack::i2p_hostname).empty()) @@ -5511,7 +5511,16 @@ retry: // potentially identify us if it is leaked elsewere if (m_settings.get_bool(settings_pack::force_proxy)) return 0; if (m_listen_sockets.empty()) return 0; +#ifdef TORRENT_USE_OPENSSL + for (std::list::const_iterator i = m_listen_sockets.begin() + , end(m_listen_sockets.end()); i != end; ++i) + { + if (!i->ssl) return i->external_port; + } + return 0; +#else return m_listen_sockets.front().external_port; +#endif } boost::uint16_t session_impl::ssl_listen_port() const diff --git a/src/torrent.cpp b/src/torrent.cpp index 838c04061..fc6f18aef 100644 --- a/src/torrent.cpp +++ b/src/torrent.cpp @@ -3372,11 +3372,20 @@ namespace { #endif #ifndef TORRENT_DISABLE_LOGGING - debug_log("==> TRACKER REQUEST \"%s\" event: %s abort: %d" + debug_log("==> TRACKER REQUEST \"%s\" event: %s abort: %d ssl: %p " + "port: %d ssl-port: %d force-proxy: %d" , req.url.c_str() , (req.event==tracker_request::stopped?"stopped" - :req.event==tracker_request::started?"started":"") - , m_abort); + :req.event==tracker_request::started?"started":"-") + , m_abort +#ifdef TORRENT_USE_OPENSSL + , static_cast(req.ssl_ctx) +#else + , static_cast(0) +#endif + , m_ses.listen_port() + , m_ses.ssl_listen_port() + , settings().get_bool(settings_pack::force_proxy)); // if we're not logging session logs, don't bother creating an // observer object just for logging diff --git a/src/tracker_manager.cpp b/src/tracker_manager.cpp index 06b850e56..fc70d614f 100644 --- a/src/tracker_manager.cpp +++ b/src/tracker_manager.cpp @@ -286,11 +286,7 @@ namespace libtorrent , req.listen_port); #endif - TORRENT_ASSERT(!m_abort || req.event == tracker_request::stopped); - if (m_abort && req.event != tracker_request::stopped) - return; - - std::string protocol = req.url.substr(0, req.url.find(':')); + std::string const protocol = req.url.substr(0, req.url.find(':')); #ifdef TORRENT_USE_OPENSSL if (protocol == "http" || protocol == "https")