udp socket debugging and asserts

This commit is contained in:
Arvid Norberg 2010-02-21 20:15:07 +00:00
parent cebb0b8212
commit b96e0a448e
3 changed files with 15 additions and 2 deletions

View File

@ -138,6 +138,7 @@ namespace libtorrent
#ifdef TORRENT_DEBUG
bool m_started;
int m_magic;
int m_outstanding_when_aborted;
#endif
};

View File

@ -67,6 +67,7 @@ udp_socket::udp_socket(asio::io_service& ios, udp_socket::callback_t const& c
#ifdef TORRENT_DEBUG
m_magic = 0x1337;
m_started = false;
m_outstanding_when_aborted = -1;
#endif
}
@ -206,7 +207,7 @@ void udp_socket::on_read(udp::socket* s, error_code const& e, std::size_t bytes_
++m_outstanding;
#ifdef TORRENT_DEBUG
m_started = true;
m_started = true;
#endif
return;
}
@ -356,6 +357,9 @@ void udp_socket::close()
m_socks5_sock.close(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);
@ -376,6 +380,9 @@ void udp_socket::bind(udp::endpoint const& ep, error_code& ec)
CHECK_MAGIC;
mutex::scoped_lock l(m_mutex);
TORRENT_ASSERT(m_abort == false);
if (m_abort) return;
if (m_ipv4_sock.is_open()) m_ipv4_sock.close(ec);
#if TORRENT_USE_IPV6
if (m_ipv6_sock.is_open()) m_ipv6_sock.close(ec);
@ -389,6 +396,7 @@ void udp_socket::bind(udp::endpoint const& ep, error_code& ec)
if (ec) return;
m_ipv4_sock.async_receive_from(asio::buffer(m_v4_buf, sizeof(m_v4_buf))
, m_v4_ep, boost::bind(&udp_socket::on_read, this, &m_ipv4_sock, _1, _2));
++m_outstanding;
}
#if TORRENT_USE_IPV6
else
@ -399,9 +407,9 @@ void udp_socket::bind(udp::endpoint const& ep, error_code& ec)
if (ec) return;
m_ipv6_sock.async_receive_from(asio::buffer(m_v6_buf, sizeof(m_v6_buf))
, m_v6_ep, boost::bind(&udp_socket::on_read, this, &m_ipv6_sock, _1, _2));
++m_outstanding;
}
#endif
++m_outstanding;
#ifdef TORRENT_DEBUG
m_started = true;
#endif
@ -413,6 +421,9 @@ void udp_socket::bind(int port)
CHECK_MAGIC;
mutex::scoped_lock l(m_mutex);
TORRENT_ASSERT(m_abort == false);
if (m_abort) return;
error_code ec;
if (m_ipv4_sock.is_open()) m_ipv4_sock.close(ec);

View File

@ -81,6 +81,7 @@ namespace libtorrent
, m_attempts(0)
, m_state(action_error)
{
TORRENT_ASSERT(refcount() == 1);
m_socket.set_proxy_settings(proxy);
}