diff --git a/ChangeLog b/ChangeLog index 1ce3b64a..6996c6a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-08-08 Tatsuhiro Tsujikawa + + Limited numCommand less than or equal to the number of piece. + * src/RequestGroup.cc + 2008-08-07 Tatsuhiro Tsujikawa Eliminated randomness from the test case. Removed #ifdef __MINGW32 diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index f8a5173c..f4e7b078 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -481,18 +481,21 @@ bool RequestGroup::tryAutoFileRenaming() void RequestGroup::createNextCommandWithAdj(std::deque& 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& commands,