diff --git a/src/session_impl.cpp b/src/session_impl.cpp index 6e8e89c4f..5682a3de4 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -2201,11 +2201,19 @@ namespace aux { { TORRENT_ASSERT(is_network_thread()); + TORRENT_ASSERT(!m_abort); retry: // close the open listen sockets + // close the listen sockets + for (std::list::iterator i = m_listen_sockets.begin() + , end(m_listen_sockets.end()); i != end; ++i) + i->sock->close(ec); m_listen_sockets.clear(); m_incoming_connection = false; + ec.clear(); + + if (m_abort) return; m_ipv6_interface = tcp::endpoint(); m_ipv4_interface = tcp::endpoint(); @@ -2231,6 +2239,7 @@ retry: // sockets can be bound to the same one m_listen_interface.port(s.external_port); + TORRENT_ASSERT(!m_abort); m_listen_sockets.push_back(s); async_accept(s.sock, s.ssl); } @@ -2245,6 +2254,7 @@ retry: if (s.sock) { + TORRENT_ASSERT(!m_abort); m_listen_sockets.push_back(s); async_accept(s.sock, s.ssl); } @@ -2260,6 +2270,7 @@ retry: if (s.sock) { + TORRENT_ASSERT(!m_abort); m_listen_sockets.push_back(s); async_accept(s.sock, s.ssl); } @@ -2275,6 +2286,7 @@ retry: if (s.sock) { + TORRENT_ASSERT(!m_abort); m_listen_sockets.push_back(s); async_accept(s.sock, s.ssl); } @@ -2306,6 +2318,7 @@ retry: if (s.sock) { + TORRENT_ASSERT(!m_abort); m_listen_sockets.push_back(s); async_accept(s.sock, s.ssl); @@ -2325,6 +2338,7 @@ retry: if (s.sock) { + TORRENT_ASSERT(!m_abort); m_listen_sockets.push_back(s); async_accept(s.sock, s.ssl); }