Fix busy loop with --dry-run and 4xx response for URI listed in metalink

See GH-430
pull/454/head
Tatsuhiro Tsujikawa 2015-06-26 21:35:55 +09:00
parent 8fddf1bb7e
commit 7e3d82cb22
1 changed files with 8 additions and 0 deletions

View File

@ -48,6 +48,7 @@
#include "SocketRecvBuffer.h" #include "SocketRecvBuffer.h"
#include "LogFactory.h" #include "LogFactory.h"
#include "wallclock.h" #include "wallclock.h"
#include "DownloadFailureException.h"
namespace aria2 { namespace aria2 {
@ -94,6 +95,13 @@ bool CreateRequestCommand::executeInternal()
if(getSegmentMan()) { if(getSegmentMan()) {
getSegmentMan()->ignoreSegmentFor(getFileEntry()); getSegmentMan()->ignoreSegmentFor(getFileEntry());
} }
if(getOption()->getAsBool(PREF_DRY_RUN)) {
// For dry run mode, just throwing DlAbortEx makes infinite
// loop, since we don't have SegmentMan, and we cannot tell all
// hopes were abandoned.
throw DOWNLOAD_FAILURE_EXCEPTION2("No URI available.",
getRequestGroup()->getLastErrorCode());
}
// In this case, the error might be already set in RequestGroup, // In this case, the error might be already set in RequestGroup,
// so use it here. // so use it here.
throw DL_ABORT_EX2("No URI available.", throw DL_ABORT_EX2("No URI available.",