summaryrefslogtreecommitdiff
path: root/src/FillRequestGroupCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-09-08 14:42:03 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-09-08 14:42:03 +0000
commit420500f6bf53e0fafc6660deaa014b425af13fe7 (patch)
tree5597d7de149d54dc3781a9e91a3bc540f5e0632e /src/FillRequestGroupCommand.cc
parentc51815dd5294dde6bc942738443ae5b01ff22118 (diff)
2010-09-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Call RequestGroupMan::fillRequestGroupFromReserver() repeatedly while RequestGroupMan::requestQueueCheck() is true. * src/FillRequestGroupCommand.cc
Diffstat (limited to 'src/FillRequestGroupCommand.cc')
-rw-r--r--src/FillRequestGroupCommand.cc24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/FillRequestGroupCommand.cc b/src/FillRequestGroupCommand.cc
index 0934ebc8..7e754108 100644
--- a/src/FillRequestGroupCommand.cc
+++ b/src/FillRequestGroupCommand.cc
@@ -63,17 +63,19 @@ bool FillRequestGroupCommand::execute()
}
SharedHandle<RequestGroupMan> rgman = e_->getRequestGroupMan();
if(rgman->queueCheckRequested()) {
- try {
- // During adding RequestGroup,
- // RequestGroupMan::requestQueueCheck() might be called, so
- // first clear it here.
- rgman->clearQueueCheck();
- rgman->fillRequestGroupFromReserver(e_);
- } catch(RecoverableException& ex) {
- getLogger()->error(EX_EXCEPTION_CAUGHT, ex);
- // Re-request queue check to fulfill the requests of all
- // downloads, some might come after this exception.
- rgman->requestQueueCheck();
+ while(rgman->queueCheckRequested()) {
+ try {
+ // During adding RequestGroup,
+ // RequestGroupMan::requestQueueCheck() might be called, so
+ // first clear it here.
+ rgman->clearQueueCheck();
+ rgman->fillRequestGroupFromReserver(e_);
+ } catch(RecoverableException& ex) {
+ getLogger()->error(EX_EXCEPTION_CAUGHT, ex);
+ // Re-request queue check to fulfill the requests of all
+ // downloads, some might come after this exception.
+ rgman->requestQueueCheck();
+ }
}
if(rgman->downloadFinished()) {
return true;