fix issue with UDP socket closing before UDP trackers having a chance of sending stopped event

This commit is contained in:
Arvid Norberg 2010-07-18 02:49:26 +00:00
parent 0c7b5ab3da
commit eed5ec97a6
1 changed files with 8 additions and 6 deletions

View File

@ -350,16 +350,14 @@ void udp_socket::close()
TORRENT_ASSERT(m_magic == 0x1337); TORRENT_ASSERT(m_magic == 0x1337);
error_code ec; error_code ec;
m_ipv4_sock.close(ec); m_ipv4_sock.cancel(ec);
#if TORRENT_USE_IPV6 #if TORRENT_USE_IPV6
m_ipv6_sock.close(ec); m_ipv6_sock.cancel(ec);
#endif #endif
m_socks5_sock.close(ec); m_socks5_sock.cancel(ec);
m_resolver.cancel(); m_resolver.cancel();
m_abort = true; m_abort = true;
#ifdef TORRENT_DEBUG
m_outstanding_when_aborted = m_outstanding;
#endif
if (m_connection_ticket >= 0) if (m_connection_ticket >= 0)
{ {
m_cc.done(m_connection_ticket); m_cc.done(m_connection_ticket);
@ -470,6 +468,8 @@ void udp_socket::set_proxy_settings(proxy_settings const& ps)
m_proxy_settings = ps; m_proxy_settings = ps;
if (m_abort) return;
if (ps.type == proxy_settings::socks5 if (ps.type == proxy_settings::socks5
|| ps.type == proxy_settings::socks5_pw) || ps.type == proxy_settings::socks5_pw)
{ {
@ -510,6 +510,8 @@ void udp_socket::on_connect(int ticket)
CHECK_MAGIC; CHECK_MAGIC;
mutex::scoped_lock l(m_mutex); mutex::scoped_lock l(m_mutex);
if (m_abort) return;
m_connection_ticket = ticket; m_connection_ticket = ticket;
error_code ec; error_code ec;
m_socks5_sock.open(m_proxy_addr.address().is_v4()?tcp::v4():tcp::v6(), ec); m_socks5_sock.open(m_proxy_addr.address().is_v4()?tcp::v4():tcp::v6(), ec);