From 204259375081da4844628a7b3236d233b3fec7a0 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Sun, 23 May 2010 21:39:03 +0000 Subject: [PATCH] peer receive logic fix --- src/peer_connection.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp index 6566244c7..85fa7143d 100644 --- a/src/peer_connection.cpp +++ b/src/peer_connection.cpp @@ -4369,6 +4369,8 @@ namespace libtorrent TORRENT_ASSERT(m_packet_size > 0); int max_receive = m_packet_size - m_recv_pos; + TORRENT_ASSERT(max_receive >= 0); + if (m_recv_pos >= m_soft_packet_size) m_soft_packet_size = 0; if (m_soft_packet_size && max_receive > m_soft_packet_size - m_recv_pos) max_receive = m_soft_packet_size - m_recv_pos; @@ -4637,6 +4639,7 @@ namespace libtorrent m_statistics.last_protocol_downloaded() - cur_protocol_dl; TORRENT_ASSERT(stats_diff == int(bytes_transferred)); #endif + if (m_disconnecting) return; TORRENT_ASSERT(m_packet_size > 0); @@ -4649,6 +4652,7 @@ namespace libtorrent if (m_recv_pos >= m_soft_packet_size) m_soft_packet_size = 0; max_receive = m_packet_size - m_recv_pos; + TORRENT_ASSERT(max_receive >= 0); if (m_soft_packet_size && max_receive > m_soft_packet_size - m_recv_pos) max_receive = m_soft_packet_size - m_recv_pos; int quota_left = m_quota[download_channel];