diff options
author | Florian Pritz <bluewind@xssn.at> | 2010-05-17 12:03:46 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@xssn.at> | 2010-05-17 12:03:46 +0200 |
commit | 8dc1d552c0bab7b72371c3a1529e365410c7548c (patch) | |
tree | ba9a58862318bf0a3cebaeec3d409e09048dcc73 /libtorrent-extended/bad_peer_handling.patch | |
parent | 6f48dae43b82aa4b02d1ef21ab39f2d27f5905f7 (diff) | |
download | aur-packages-8dc1d552c0bab7b72371c3a1529e365410c7548c.tar.gz aur-packages-8dc1d552c0bab7b72371c3a1529e365410c7548c.tar.xz |
add rtorrent-extended
Signed-off-by: Florian Pritz <bluewind@xssn.at>
Diffstat (limited to 'libtorrent-extended/bad_peer_handling.patch')
-rw-r--r-- | libtorrent-extended/bad_peer_handling.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/libtorrent-extended/bad_peer_handling.patch b/libtorrent-extended/bad_peer_handling.patch new file mode 100644 index 0000000..26d9515 --- /dev/null +++ b/libtorrent-extended/bad_peer_handling.patch @@ -0,0 +1,67 @@ +diff --git a/src/download/choke_manager.cc b/src/download/choke_manager.cc +index 4915a96..efda46c 100644 +--- a/src/download/choke_manager.cc ++++ b/src/download/choke_manager.cc +@@ -193,7 +193,8 @@ ChokeManager::set_snubbed(PeerConnectionBase* pc, ChokeManagerNode* base) { + choke_manager_erase(&m_queued, pc); + } + +- base->set_queued(false); ++ //breaks unsnubbing, ticket #989: ++ //base->set_queued(false); + } + + void +diff --git a/src/torrent/peer/peer.cc b/src/torrent/peer/peer.cc +index 3f29f82..a15a7b2 100644 +--- a/src/torrent/peer/peer.cc ++++ b/src/torrent/peer/peer.cc +@@ -63,7 +63,8 @@ bool Peer::is_down_interested() const { return c_ptr()->is_up_interested(); + + bool Peer::is_snubbed() const { return c_ptr()->is_up_snubbed(); } + void Peer::set_snubbed(bool v) { m_ptr()->set_upload_snubbed(v); } +-void Peer::set_banned() { m_peerInfo->set_failed_counter(64); } ++void Peer::set_banned() { m_peerInfo->set_banned(); } ++void Peer::set_unbanned() { m_peerInfo->set_unbanned(); } + + const Rate* Peer::down_rate() const { return c_ptr()->c_peer_chunks()->download_throttle()->rate(); } + const Rate* Peer::up_rate() const { return c_ptr()->c_peer_chunks()->upload_throttle()->rate(); } +diff --git a/src/torrent/peer/peer.h b/src/torrent/peer/peer.h +index 70169ad..6d9b4f9 100644 +--- a/src/torrent/peer/peer.h ++++ b/src/torrent/peer/peer.h +@@ -69,7 +69,10 @@ public: + + bool is_snubbed() const; + void set_snubbed(bool v); ++ ++ bool is_banned() const { return peer_info()->is_banned(); } + void set_banned(); ++ void set_unbanned(); + + const HashString& id() const { return peer_info()->id(); } + const char* options() const { return peer_info()->options(); } +diff --git a/src/torrent/peer/peer_info.h b/src/torrent/peer/peer_info.h +index fe80027..9b17e61 100644 +--- a/src/torrent/peer/peer_info.h ++++ b/src/torrent/peer/peer_info.h +@@ -51,6 +51,8 @@ public: + friend class PeerList; + friend class ProtocolExtension; + ++ static const unsigned int banned_mask = 4096; ++ + static const int flag_connected = (1 << 0); + static const int flag_incoming = (1 << 1); + static const int flag_handshake = (1 << 2); +@@ -79,6 +81,10 @@ public: + uint32_t failed_counter() const { return m_failedCounter; } + void set_failed_counter(uint32_t c) { m_failedCounter = c; } + ++ bool is_banned() const { return m_failedCounter & banned_mask; } ++ void set_banned() { m_failedCounter |= banned_mask; } ++ void set_unbanned() { m_failedCounter &= ~banned_mask; } ++ + uint32_t transfer_counter() const { return m_transferCounter; } + void set_transfer_counter(uint32_t c) { m_transferCounter = c; } + |