From d3453a838769b8658486e0ab970f830a577926f3 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 3 Sep 2008 12:12:47 +0000 Subject: [PATCH] 2008-09-03 Tatsuhiro Tsujikawa If an error occurred with a URI, remove identical URI from remaining URI list because it is likely that same error occurred in the end and it is waste of time. * src/AbstractCommand.cc * src/RequestGroup.cc * src/RequestGroup.h --- ChangeLog | 9 +++++++++ src/AbstractCommand.cc | 1 + src/RequestGroup.cc | 5 +++++ src/RequestGroup.h | 2 ++ 4 files changed, 17 insertions(+) diff --git a/ChangeLog b/ChangeLog index 11a17ac9..81254f67 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-09-03 Tatsuhiro Tsujikawa + + If an error occurred with a URI, remove identical URI from remaining + URI list because it is likely that same error occurred in the end and it + is waste of time. + * src/AbstractCommand.cc + * src/RequestGroup.cc + * src/RequestGroup.h + 2008-09-02 Tatsuhiro Tsujikawa Removed wrong comment. diff --git a/src/AbstractCommand.cc b/src/AbstractCommand.cc index 59671a77..b29de581 100644 --- a/src/AbstractCommand.cc +++ b/src/AbstractCommand.cc @@ -213,6 +213,7 @@ void AbstractCommand::onAbort() { if(!_requestGroup->getPieceStorage().isNull()) { _requestGroup->getSegmentMan()->cancelSegment(cuid); } + _requestGroup->removeIdenticalURI(req->getUrl()); } void AbstractCommand::disableReadCheckSocket() { diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index dce81e3f..2b560b57 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -960,6 +960,11 @@ void RequestGroup::removeURIWhoseHostnameIs(const std::string& hostname) _uris = newURIs; } +void RequestGroup::removeIdenticalURI(const std::string& uri) +{ + _uris.erase(std::remove(_uris.begin(), _uris.end(), uri), _uris.end()); +} + void RequestGroup::reportDownloadFinished() { _logger->notice(MSG_FILE_DOWNLOAD_COMPLETED, diff --git a/src/RequestGroup.h b/src/RequestGroup.h index 47543ad6..2101520c 100644 --- a/src/RequestGroup.h +++ b/src/RequestGroup.h @@ -342,6 +342,8 @@ public: void removeURIWhoseHostnameIs(const std::string& hostname); + void removeIdenticalURI(const std::string& uri); + void reportDownloadFinished(); const std::deque& getAcceptFeatures() const;