mirror of https://github.com/aria2/aria2
2007-12-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Fixed the bug that causes aria2 not to finish download. BUG#1855875. I could reproduce this bug in following procedure: 1. Stop the download at the very beginning(1% or 100KB downloaded). 2. Restart aria2. 3. You see the download stopped around 99%. * src/HttpResponseCommand.cc (handleDefaultEncoding) * src/StreamFileAllocationEntry.cc: Removed the timeout handling. If timeout is reached, then _nextCommand is unused and it may contains segments and they won't be canceled. Actually, timeout is not needed here because if the server dropped connection, then retry is made.pull/1/head
parent
286f34cb3f
commit
ccd4a35096
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
||||||
|
2007-12-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
|
Fixed the bug that causes aria2 not to finish download. BUG#1855875.
|
||||||
|
I could reproduce this bug in following procedure:
|
||||||
|
1. Stop the download at the very beginning(1% or 100KB downloaded).
|
||||||
|
2. Restart aria2.
|
||||||
|
3. You see the download stopped around 99%.
|
||||||
|
* src/HttpResponseCommand.cc (handleDefaultEncoding)
|
||||||
|
* src/StreamFileAllocationEntry.cc: Removed the timeout handling.
|
||||||
|
If timeout is reached, then _nextCommand is unused and it may contains
|
||||||
|
segments and they won't be canceled. Actually, timeout is not needed
|
||||||
|
here because if the server dropped connection, then retry is made.
|
||||||
|
|
||||||
2007-12-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
2007-12-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
Added uTorrent compatible Peer Exchange.
|
Added uTorrent compatible Peer Exchange.
|
||||||
|
|
|
@ -139,6 +139,8 @@ bool HttpResponseCommand::handleDefaultEncoding(const HttpResponseHandle& httpRe
|
||||||
SegmentHandle segment = _requestGroup->getSegmentMan()->getSegment(cuid, 0);
|
SegmentHandle segment = _requestGroup->getSegmentMan()->getSegment(cuid, 0);
|
||||||
if(!segment.isNull() && segment->getPositionToWrite() == 0) {
|
if(!segment.isNull() && segment->getPositionToWrite() == 0) {
|
||||||
command = createHttpDownloadCommand(httpResponse);
|
command = createHttpDownloadCommand(httpResponse);
|
||||||
|
} else {
|
||||||
|
_requestGroup->getSegmentMan()->cancelSegment(cuid);
|
||||||
}
|
}
|
||||||
prepareForNextAction(command);
|
prepareForNextAction(command);
|
||||||
e->noWait = true;
|
e->noWait = true;
|
||||||
|
|
|
@ -54,8 +54,7 @@ StreamFileAllocationEntry::~StreamFileAllocationEntry() {}
|
||||||
Commands StreamFileAllocationEntry::prepareForNextAction(DownloadEngine* e)
|
Commands StreamFileAllocationEntry::prepareForNextAction(DownloadEngine* e)
|
||||||
{
|
{
|
||||||
Commands commands;
|
Commands commands;
|
||||||
if(_timer.difference() <= e->option->getAsInt(PREF_DIRECT_DOWNLOAD_TIMEOUT) &&
|
if(_nextCommand) {
|
||||||
_nextCommand) {
|
|
||||||
commands.push_back(popNextCommand());
|
commands.push_back(popNextCommand());
|
||||||
// try remaining uris
|
// try remaining uris
|
||||||
Commands streamCommands = _requestGroup->createNextCommandWithAdj(e, -1);
|
Commands streamCommands = _requestGroup->createNextCommandWithAdj(e, -1);
|
||||||
|
|
Loading…
Reference in New Issue