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")

Reply via email to