mirror of
https://github.com/twisterarmy/twister-core.git
synced 2025-01-22 20:44:56 +00:00
apply upstream fix by Arvid
http://sourceforge.net/p/libtorrent/code/10056/
This commit is contained in:
parent
17641de17a
commit
5c203adea3
@ -176,7 +176,7 @@ namespace libtorrent
|
|||||||
void on_name_lookup(error_code const& e, tcp::resolver::iterator i);
|
void on_name_lookup(error_code const& e, tcp::resolver::iterator i);
|
||||||
void on_timeout();
|
void on_timeout();
|
||||||
void on_connect(int ticket);
|
void on_connect(int ticket);
|
||||||
void on_connected(error_code const& ec);
|
void on_connected(error_code const& ec, int ticket);
|
||||||
void handshake1(error_code const& e);
|
void handshake1(error_code const& e);
|
||||||
void handshake2(error_code const& e);
|
void handshake2(error_code const& e);
|
||||||
void handshake3(error_code const& e);
|
void handshake3(error_code const& e);
|
||||||
|
@ -873,6 +873,13 @@ void udp_socket::on_connect(int ticket)
|
|||||||
if (m_abort) return;
|
if (m_abort) return;
|
||||||
if (is_closed()) return;
|
if (is_closed()) return;
|
||||||
|
|
||||||
|
if (m_connection_ticket != -1)
|
||||||
|
{
|
||||||
|
// there's already an outstanding connect. Cancel it.
|
||||||
|
m_socks5_sock.close();
|
||||||
|
m_connection_ticket = -1;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined TORRENT_ASIO_DEBUGGING
|
#if defined TORRENT_ASIO_DEBUGGING
|
||||||
add_outstanding_async("udp_socket::on_connected");
|
add_outstanding_async("udp_socket::on_connected");
|
||||||
#endif
|
#endif
|
||||||
@ -885,10 +892,10 @@ void udp_socket::on_connect(int ticket)
|
|||||||
++m_outstanding_connect;
|
++m_outstanding_connect;
|
||||||
#endif
|
#endif
|
||||||
m_socks5_sock.async_connect(tcp::endpoint(m_proxy_addr.address(), m_proxy_addr.port())
|
m_socks5_sock.async_connect(tcp::endpoint(m_proxy_addr.address(), m_proxy_addr.port())
|
||||||
, boost::bind(&udp_socket::on_connected, this, _1));
|
, boost::bind(&udp_socket::on_connected, this, _1, ticket));
|
||||||
}
|
}
|
||||||
|
|
||||||
void udp_socket::on_connected(error_code const& e)
|
void udp_socket::on_connected(error_code const& e, int ticket)
|
||||||
{
|
{
|
||||||
#if defined TORRENT_ASIO_DEBUGGING
|
#if defined TORRENT_ASIO_DEBUGGING
|
||||||
complete_async("udp_socket::on_connected");
|
complete_async("udp_socket::on_connected");
|
||||||
@ -904,14 +911,15 @@ void udp_socket::on_connected(error_code const& e)
|
|||||||
+ m_outstanding_resolve
|
+ m_outstanding_resolve
|
||||||
+ m_outstanding_connect_queue
|
+ m_outstanding_connect_queue
|
||||||
+ m_outstanding_socks);
|
+ m_outstanding_socks);
|
||||||
if (m_abort) return;
|
|
||||||
CHECK_MAGIC;
|
CHECK_MAGIC;
|
||||||
|
|
||||||
if (e == asio::error::operation_aborted) return;
|
|
||||||
|
|
||||||
TORRENT_ASSERT(is_single_thread());
|
TORRENT_ASSERT(is_single_thread());
|
||||||
m_cc.done(m_connection_ticket);
|
m_cc.done(ticket);
|
||||||
m_connection_ticket = -1;
|
// if the tickets mismatch, another connection attempt
|
||||||
|
// was initiated while waiting for this one to complete.
|
||||||
|
if (ticket == m_connection_ticket)
|
||||||
|
m_connection_ticket = -1;
|
||||||
|
|
||||||
// we just called done, which means on_timeout
|
// we just called done, which means on_timeout
|
||||||
// won't be called. Decrement the outstanding
|
// won't be called. Decrement the outstanding
|
||||||
@ -927,6 +935,14 @@ void udp_socket::on_connected(error_code const& e)
|
|||||||
+ m_outstanding_resolve
|
+ m_outstanding_resolve
|
||||||
+ m_outstanding_connect_queue
|
+ m_outstanding_connect_queue
|
||||||
+ m_outstanding_socks);
|
+ m_outstanding_socks);
|
||||||
|
|
||||||
|
if (e == asio::error::operation_aborted) return;
|
||||||
|
|
||||||
|
// if ticket != m_connection_ticket, it means m_connection_ticket
|
||||||
|
// will not have been reset, and it means we are still waiting
|
||||||
|
// for a connection attempt.
|
||||||
|
if (m_connection_ticket != -1) return;
|
||||||
|
|
||||||
if (m_abort) return;
|
if (m_abort) return;
|
||||||
|
|
||||||
if (e)
|
if (e)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user