From a9d18439e90ddbd6a58209d38bb8086ec8160090 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Fri, 30 Mar 2007 03:09:28 +0000 Subject: [PATCH] piece picker fix --- src/piece_picker.cpp | 28 +++++++++++++--------------- src/session_impl.cpp | 3 +-- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/piece_picker.cpp b/src/piece_picker.cpp index 6d49b6cc6..8086bc359 100755 --- a/src/piece_picker.cpp +++ b/src/piece_picker.cpp @@ -643,28 +643,26 @@ namespace libtorrent assert(p.downloading == 1); assert(!p.have()); + + std::vector::iterator i + = std::find_if(m_downloads.begin() + , m_downloads.end() + , has_index(index)); + assert(i != m_downloads.end()); + m_downloads.erase(i); + p.downloading = 0; + + assert(std::find_if(m_downloads.begin() + , m_downloads.end() + , has_index(index)) == m_downloads.end()); + if (p.filtered()) { --m_num_filtered; ++m_num_have_filtered; - return; } if (p.have()) return; p.set_have(); - if (p.downloading) - { - std::vector::iterator i - = std::find_if(m_downloads.begin(), - m_downloads.end(), - has_index(index)); - assert(i != m_downloads.end()); - m_downloads.erase(i); - p.downloading = 0; - - assert(std::find_if(m_downloads.begin(), - m_downloads.end(), - has_index(index)) == m_downloads.end()); - } assert(p.priority(m_sequenced_download_threshold) == 0); move(priority, info_index); } diff --git a/src/session_impl.cpp b/src/session_impl.cpp index cf2875622..cfc3ca36d 100755 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -965,10 +965,9 @@ namespace libtorrent { namespace detail { torrent& t = *i->second; assert(!t.is_aborted()); - if (t.should_request()) + if (t.should_request() && m_external_listen_port > 0) { tracker_request req = t.generate_tracker_request(); - assert(m_external_listen_port > 0); req.listen_port = m_external_listen_port; req.key = m_key; m_tracker_manager.queue_request(m_strand, req, t.tracker_login()