diff --git a/ChangeLog b/ChangeLog index a59c3947..c89fcfd9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-09-08 Tatsuhiro Tsujikawa + + Call RequestGroupMan::fillRequestGroupFromReserver() repeatedly + while RequestGroupMan::requestQueueCheck() is true. + * src/FillRequestGroupCommand.cc + 2010-09-08 Tatsuhiro Tsujikawa Use const ref 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 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;