From eed5ec97a6f753eb934a21c2f76faa0a437e1569 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Sun, 18 Jul 2010 02:49:26 +0000 Subject: [PATCH] fix issue with UDP socket closing before UDP trackers having a chance of sending stopped event --- src/udp_socket.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/udp_socket.cpp b/src/udp_socket.cpp index 3dd35efbf..bdc030efd 100644 --- a/src/udp_socket.cpp +++ b/src/udp_socket.cpp @@ -350,16 +350,14 @@ void udp_socket::close() TORRENT_ASSERT(m_magic == 0x1337); error_code ec; - m_ipv4_sock.close(ec); + m_ipv4_sock.cancel(ec); #if TORRENT_USE_IPV6 - m_ipv6_sock.close(ec); + m_ipv6_sock.cancel(ec); #endif - m_socks5_sock.close(ec); + m_socks5_sock.cancel(ec); m_resolver.cancel(); m_abort = true; -#ifdef TORRENT_DEBUG - m_outstanding_when_aborted = m_outstanding; -#endif + if (m_connection_ticket >= 0) { m_cc.done(m_connection_ticket); @@ -470,6 +468,8 @@ void udp_socket::set_proxy_settings(proxy_settings const& ps) m_proxy_settings = ps; + if (m_abort) return; + if (ps.type == proxy_settings::socks5 || ps.type == proxy_settings::socks5_pw) { @@ -510,6 +510,8 @@ void udp_socket::on_connect(int ticket) CHECK_MAGIC; mutex::scoped_lock l(m_mutex); + if (m_abort) return; + m_connection_ticket = ticket; error_code ec; m_socks5_sock.open(m_proxy_addr.address().is_v4()?tcp::v4():tcp::v6(), ec);