diff --git a/src/CreateRequestCommand.cc b/src/CreateRequestCommand.cc index 8db0cf56..b7b178a7 100644 --- a/src/CreateRequestCommand.cc +++ b/src/CreateRequestCommand.cc @@ -48,6 +48,7 @@ #include "SocketRecvBuffer.h" #include "LogFactory.h" #include "wallclock.h" +#include "DownloadFailureException.h" namespace aria2 { @@ -94,6 +95,13 @@ bool CreateRequestCommand::executeInternal() if(getSegmentMan()) { 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, // so use it here. throw DL_ABORT_EX2("No URI available.",