Browse Source

2008-08-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Limited numCommand less than or equal to the number of piece.
	* src/RequestGroup.cc
Tatsuhiro Tsujikawa 17 years ago
parent
commit
a699a46858
2 changed files with 16 additions and 8 deletions
  1. 5 0
      ChangeLog
  2. 11 8
      src/RequestGroup.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2008-08-08  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Limited numCommand less than or equal to the number of piece.
+	* src/RequestGroup.cc
+
 2008-08-07  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Eliminated randomness from the test case. Removed #ifdef __MINGW32

+ 11 - 8
src/RequestGroup.cc

@@ -481,18 +481,21 @@ bool RequestGroup::tryAutoFileRenaming()
 void RequestGroup::createNextCommandWithAdj(std::deque<Command*>& commands,
 					    DownloadEngine* e, int numAdj)
 {
-  unsigned int numCommand;
-  if(_numConcurrentCommand == 0) {
-    numCommand = _uris.size();
+  int numCommand;
+  if(getTotalLength() == 0) {
+    numCommand = 1+numAdj;
   } else {
-    int n = _numConcurrentCommand+numAdj;
-    if(n > 0) {
-      numCommand = n;
+    if(_numConcurrentCommand == 0) {
+      numCommand = std::min(_downloadContext->getNumPieces(), _uris.size());
     } else {
-      return;
+      numCommand = std::min(_downloadContext->getNumPieces(),
+			    _numConcurrentCommand);
     }
+    numCommand += numAdj;
+  }
+  if(numCommand > 0) {
+    createNextCommand(commands, e, numCommand);
   }
-  createNextCommand(commands, e, numCommand, Request::METHOD_GET);
 }
 
 void RequestGroup::createNextCommand(std::deque<Command*>& commands,