diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-07-18 15:14:50 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-07-18 15:14:50 +0000 |
| commit | 21887ddb7cc8071fd6ad8f8cb5d5443beec0356b (patch) | |
| tree | 0d183bea1e0c4d26e94a55d4f626fcdc48c43822 /src | |
| parent | 05d8f8ffdb5ad0dbcde527cdd1ca910886e24178 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/Metalink2RequestGroup.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/Metalink2RequestGroup.cc b/src/Metalink2RequestGroup.cc index f041dee0..27894429 100644 --- a/src/Metalink2RequestGroup.cc +++ b/src/Metalink2RequestGroup.cc @@ -315,6 +315,25 @@ Metalink2RequestGroup::createRequestGroup SharedHandle<Dependency> dep(new BtDependency(rg, torrentRg)); rg->dependsOn(dep); 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 groups.push_back(rg); |
