2010-07-19 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Metadata download may take very long time. If URIs are
	available, give up metadata download in at most 30 seconds.
	* src/Metalink2RequestGroup.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-07-18 15:14:50 +00:00
parent 05d8f8ffdb
commit 21887ddb7c
2 changed files with 25 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-07-19 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Metadata download may take very long time. If URIs are
available, give up metadata download in at most 30 seconds.
* src/Metalink2RequestGroup.cc
2010-07-19 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> 2010-07-19 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Call RequestGroup::setForceHaltRequested(true) from Call RequestGroup::setForceHaltRequested(true) from

View File

@ -315,6 +315,25 @@ Metalink2RequestGroup::createRequestGroup
SharedHandle<Dependency> dep(new BtDependency(rg, torrentRg)); SharedHandle<Dependency> dep(new BtDependency(rg, torrentRg));
rg->dependsOn(dep); rg->dependsOn(dep);
torrentRg->belongsTo(rg->getGID()); torrentRg->belongsTo(rg->getGID());
// metadata download may take very long time. If URIs are
// available, give up metadata download in at most 30 seconds.
const time_t btStopTimeout = 30;
time_t currentBtStopTimeout =
torrentRg->getOption()->getAsInt(PREF_BT_STOP_TIMEOUT);
if(currentBtStopTimeout == 0 || currentBtStopTimeout > btStopTimeout) {
std::vector<SharedHandle<FileEntry> >::const_iterator i;
std::vector<SharedHandle<FileEntry> >::const_iterator eoi
= dctx->getFileEntries().end();
for(i = dctx->getFileEntries().begin(); i != eoi; ++i) {
if((*i)->getRemainingUris().empty()) {
break;
}
}
if(i == dctx->getFileEntries().end()) {
torrentRg->getOption()->put
(PREF_BT_STOP_TIMEOUT, util::itos(btStopTimeout));
}
}
} }
#endif // ENABLE_BITTORRENT #endif // ENABLE_BITTORRENT
groups.push_back(rg); groups.push_back(rg);