summaryrefslogtreecommitdiffstats
path: root/libtorrent/src/peer_connection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libtorrent/src/peer_connection.cpp')
-rwxr-xr-xlibtorrent/src/peer_connection.cpp12
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);