summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-06-05 11:10:20 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-06-05 11:10:20 +0900
commite31a49b8ee56f2068d9d10bcc055ec7c58ea1208 (patch)
treedd99fdd8ff75c6b4b50d40ca556b14eb92b23e41 /src
parentef9e67aeb2d24736d283c6f6f760fd8f30ecd09a (diff)
Don't unchoke peer which is not interested in us
Diffstat (limited to 'src')
-rw-r--r--src/BtLeecherStateChoke.cc27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/BtLeecherStateChoke.cc b/src/BtLeecherStateChoke.cc
index 14da740e..98db9e3e 100644
--- a/src/BtLeecherStateChoke.cc
+++ b/src/BtLeecherStateChoke.cc
@@ -152,10 +152,14 @@ void BtLeecherStateChoke::plannedOptimisticUnchoke(
PeerFilter(true, true));
if (i != std::begin(peerEntries)) {
std::shuffle(std::begin(peerEntries), i, *SimpleRandomizer::getInstance());
- (*std::begin(peerEntries)).enableOptUnchoking();
+
+ auto& ent = *std::begin(peerEntries);
+ auto& peer = ent.getPeer();
+
+ ent.enableOptUnchoking();
+
A2_LOG_INFO(
- fmt("POU: %s",
- (*std::begin(peerEntries)).getPeer()->getIPAddress().c_str()));
+ fmt("POU: %s:%u", peer->getIPAddress().c_str(), peer->getPort()));
}
}
@@ -173,14 +177,17 @@ void BtLeecherStateChoke::regularUnchoke(std::vector<PeerEntry>& peerEntries)
bool fastOptUnchoker = false;
auto peerIter = std::begin(peerEntries);
for (; peerIter != std::end(peerEntries) && count; ++peerIter, --count) {
- peerIter->disableChokingRequired();
- A2_LOG_INFO(fmt("RU: %s, dlspd=%d",
- (*peerIter).getPeer()->getIPAddress().c_str(),
- (*peerIter).getDownloadSpeed()));
auto& peer = peerIter->getPeer();
+
if (!peer->peerInterested()) {
continue;
}
+
+ peerIter->disableChokingRequired();
+
+ A2_LOG_INFO(fmt("RU: %s:%u, dlspd=%d", peer->getIPAddress().c_str(),
+ peer->getPort(), (*peerIter).getDownloadSpeed()));
+
if (peer->optUnchoking()) {
fastOptUnchoker = true;
peerIter->disableOptUnchoking();
@@ -193,7 +200,11 @@ void BtLeecherStateChoke::regularUnchoke(std::vector<PeerEntry>& peerEntries)
}
p.enableOptUnchoking();
- A2_LOG_INFO(fmt("OU: %s", p.getPeer()->getIPAddress().c_str()));
+
+ auto& peer = p.getPeer();
+
+ A2_LOG_INFO(
+ fmt("OU: %s:%u", peer->getIPAddress().c_str(), peer->getPort()));
break;
}