Hello, This issue has also been reported to upstream as #3306 [1] and has been fixed with PR #3385 [2]. And it will be available in the next 1.1.X release. I've added the patch that can be applied to fix the issue.
[1] https://github.com/arvidn/libtorrent/issues/3306 [2] https://github.com/arvidn/libtorrent/pull/3385 -- Tiger!P
Index: libtorrent-rasterbar-1.1.9/src/session_impl.cpp =================================================================== --- libtorrent-rasterbar-1.1.9.orig/src/session_impl.cpp 2018-07-29 21:56:52.000000000 +0200 +++ libtorrent-rasterbar-1.1.9/src/session_impl.cpp 2018-10-28 19:41:59.391255210 +0100 @@ -1320,7 +1320,7 @@ #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()) @@ -1334,6 +1334,24 @@ { req.bind_ip = m_listen_interface.address(); } + +#ifndef TORRENT_DISABLE_LOGGING + session_log("==> TRACKER REQUEST \"%s\" event: %s abort: %d ssl: %p " + "port: %d force-proxy: %d bind_ip: %s" + , req.url.c_str() + , (req.event==tracker_request::stopped?"stopped" + : req.event==tracker_request::started?"started":"-") + , m_abort +#ifdef TORRENT_USE_OPENSSL + , static_cast<void*>(req.ssl_ctx) +#else + , static_cast<void*>(0) +#endif + , req.listen_port + , m_settings.get_bool(settings_pack::force_proxy) + , req.bind_ip ? req.bind_ip->to_string().c_str() : "" + ); +#endif m_tracker_manager.queue_request(get_io_service(), req, c); } @@ -5510,7 +5528,16 @@ // 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<listen_socket_t>::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 Index: libtorrent-rasterbar-1.1.9/src/torrent.cpp =================================================================== --- libtorrent-rasterbar-1.1.9.orig/src/torrent.cpp 2018-07-29 21:56:52.000000000 +0200 +++ libtorrent-rasterbar-1.1.9/src/torrent.cpp 2018-10-28 19:46:40.731038658 +0100 @@ -3374,12 +3374,6 @@ #endif #ifndef TORRENT_DISABLE_LOGGING - debug_log("==> TRACKER REQUEST \"%s\" event: %s abort: %d" - , req.url.c_str() - , (req.event==tracker_request::stopped?"stopped" - :req.event==tracker_request::started?"started":"") - , m_abort); - // if we're not logging session logs, don't bother creating an // observer object just for logging if (m_abort && alerts().should_post<log_alert>()) @@ -3713,6 +3707,9 @@ req.private_torrent = m_torrent_file->priv(); req.second_announce = true; +#ifdef TORRENT_USE_OPENSSL + req.ssl_ctx = NULL; +#endif // tell the tracker to bind to the opposite protocol type req.bind_ip = tracker_ip.is_v4() Index: libtorrent-rasterbar-1.1.9/src/tracker_manager.cpp =================================================================== --- libtorrent-rasterbar-1.1.9.orig/src/tracker_manager.cpp 2018-07-29 21:56:49.000000000 +0200 +++ libtorrent-rasterbar-1.1.9/src/tracker_manager.cpp 2018-10-28 19:48:48.078940858 +0100 @@ -288,11 +288,7 @@ , 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")