Bläddra i källkod

2010-09-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Call RequestGroupMan::fillRequestGroupFromReserver() repeatedly
	while RequestGroupMan::requestQueueCheck() is true.
	* src/FillRequestGroupCommand.cc
Tatsuhiro Tsujikawa 15 år sedan
förälder
incheckning
420500f6bf
2 ändrade filer med 19 tillägg och 11 borttagningar
  1. 6 0
      ChangeLog
  2. 13 11
      src/FillRequestGroupCommand.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2010-09-08  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Call RequestGroupMan::fillRequestGroupFromReserver() repeatedly
+	while RequestGroupMan::requestQueueCheck() is true.
+	* src/FillRequestGroupCommand.cc
+
 2010-09-08  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Use const ref

+ 13 - 11
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;