mirror of https://github.com/aria2/aria2
2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Change the number of retries for tracker request based on the number of available tracker in a torrent file. * src/TrackerWatcherCommand.ccpull/1/head
parent
1b26827851
commit
746c187ae8
|
@ -1,3 +1,9 @@
|
||||||
|
2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Change the number of retries for tracker request based on the
|
||||||
|
number of available tracker in a torrent file.
|
||||||
|
* src/TrackerWatcherCommand.cc
|
||||||
|
|
||||||
2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2009-02-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Added _maxTries property to RequestGroup and assign the option
|
Added _maxTries property to RequestGroup and assign the option
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
#include "A2STR.h"
|
#include "A2STR.h"
|
||||||
#include "SocketCore.h"
|
#include "SocketCore.h"
|
||||||
#include "Request.h"
|
#include "Request.h"
|
||||||
|
#include "AnnounceTier.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -178,12 +179,37 @@ RequestGroupHandle TrackerWatcherCommand::createAnnounce() {
|
||||||
return rg;
|
return rg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool backupTrackerIsAvailable
|
||||||
|
(const std::deque<SharedHandle<AnnounceTier> >& announceTiers)
|
||||||
|
{
|
||||||
|
if(announceTiers.size() >= 2) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(announceTiers.empty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(announceTiers[0]->urls.size() >= 2) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RequestGroupHandle
|
RequestGroupHandle
|
||||||
TrackerWatcherCommand::createRequestGroup(const std::string& uri)
|
TrackerWatcherCommand::createRequestGroup(const std::string& uri)
|
||||||
{
|
{
|
||||||
std::deque<std::string> uris;
|
std::deque<std::string> uris;
|
||||||
uris.push_back(uri);
|
uris.push_back(uri);
|
||||||
RequestGroupHandle rg(new RequestGroup(e->option, uris));
|
RequestGroupHandle rg(new RequestGroup(e->option, uris));
|
||||||
|
// If backup tracker is available, only try 2 times for each tracker
|
||||||
|
// and if they all fails, then try next one.
|
||||||
|
if(backupTrackerIsAvailable(_btContext->getAnnounceTiers())) {
|
||||||
|
logger->debug("This is multi-tracker announce.");
|
||||||
|
rg->setMaxTries(2);
|
||||||
|
} else {
|
||||||
|
logger->debug("This is single-tracker announce.");
|
||||||
|
rg->setMaxTries(5);
|
||||||
|
}
|
||||||
|
|
||||||
static const std::string TRACKER_ANNOUNCE_FILE("[tracker.announce]");
|
static const std::string TRACKER_ANNOUNCE_FILE("[tracker.announce]");
|
||||||
SingleFileDownloadContextHandle dctx
|
SingleFileDownloadContextHandle dctx
|
||||||
|
|
Loading…
Reference in New Issue