diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-01-19 11:24:57 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-01-19 11:24:57 +0900 |
| commit | 8b93b12488d12820470e14f0ebbb656728f7df83 (patch) | |
| tree | 0d1f76f36d1606ea94b623e222430b7d7fe862e7 /src/UDPTrackerClient.cc | |
| parent | 7b2e797fdfa27794b0f4a96bba0c42b5e67a6050 (diff) | |
Reduce delay in tracker request
We eliminated 1 second delay between completion of name resolution for
tracker request and time when it is actually issued. We also elimited
1 second delay after last torrent download exists and it is told to
DHTInteractionCommand.
Diffstat (limited to 'src/UDPTrackerClient.cc')
| -rw-r--r-- | src/UDPTrackerClient.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/UDPTrackerClient.cc b/src/UDPTrackerClient.cc index 21e5c48f..cffbf1c9 100644 --- a/src/UDPTrackerClient.cc +++ b/src/UDPTrackerClient.cc @@ -132,7 +132,8 @@ struct CollectAddrPortMatch { }; } // namespace -int UDPTrackerClient::receiveReply(const unsigned char* data, size_t length, +int UDPTrackerClient::receiveReply(std::shared_ptr<UDPTrackerRequest>& recvReq, + const unsigned char* data, size_t length, const std::string& remoteAddr, uint16_t remotePort, const Timer& now) { @@ -167,6 +168,9 @@ int UDPTrackerClient::receiveReply(const unsigned char* data, size_t length, CollectAddrPortMatch(reqs, remoteAddr, remotePort)), connectRequests_.end()); pendingRequests_.insert(pendingRequests_.begin(), reqs.begin(), reqs.end()); + + recvReq = std::move(req); + break; } case UDPT_ACT_ANNOUNCE: { @@ -209,6 +213,9 @@ int UDPTrackerClient::receiveReply(const unsigned char* data, size_t length, getUDPTrackerEventStr(req->event), util::toHex(req->infohash).c_str(), req->reply->interval, req->reply->leechers, req->reply->seeders, numPeers)); + + recvReq = std::move(req); + break; } case UDPT_ACT_ERROR: { @@ -236,6 +243,9 @@ int UDPTrackerClient::receiveReply(const unsigned char* data, size_t length, if (req->action == UDPT_ACT_CONNECT) { failConnect(req->remoteAddr, req->remotePort, UDPT_ERR_TRACKER); } + + recvReq = std::move(req); + break; } case UDPT_ACT_SCRAPE: |
