diff options
Diffstat (limited to 'libtorrent/src/peer_connection.cpp')
-rwxr-xr-x | libtorrent/src/peer_connection.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libtorrent/src/peer_connection.cpp b/libtorrent/src/peer_connection.cpp index 81a8afd5f..92037a924 100755 --- a/libtorrent/src/peer_connection.cpp +++ b/libtorrent/src/peer_connection.cpp @@ -2549,6 +2549,10 @@ namespace libtorrent error_code ec; m_socket->close(ec); m_ses.close_connection(this, message); + + // we should only disconnect while we still have + // at least one reference left to the connection + TORRENT_ASSERT(refcount() > 0); } void peer_connection::set_upload_limit(int limit) @@ -3507,6 +3511,10 @@ namespace libtorrent INVARIANT_CHECK; + // keep ourselves alive in until this function exits in + // case we disconnect + boost::intrusive_ptr<peer_connection> me(self()); + TORRENT_ASSERT(m_channel_state[download_channel] == peer_info::bw_network); m_channel_state[download_channel] = peer_info::bw_idle; @@ -3774,6 +3782,10 @@ namespace libtorrent INVARIANT_CHECK; + // keep ourselves alive in until this function exits in + // case we disconnect + boost::intrusive_ptr<peer_connection> me(self()); + TORRENT_ASSERT(m_channel_state[upload_channel] == peer_info::bw_network); m_send_buffer.pop_front(bytes_transferred); |