summaryrefslogtreecommitdiff
path: root/src/CreateRequestCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2015-06-26 21:35:55 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2015-06-26 21:38:03 +0900
commit7e3d82cb2250c679a5d7dcc7e0e4f25cdd283c36 (patch)
tree1018ed52b099f5d7833b3d7c5d0060b364448d22 /src/CreateRequestCommand.cc
parent8fddf1bb7e72e0fe67311ed5365621fbcedd53f9 (diff)
Fix busy loop with --dry-run and 4xx response for URI listed in metalink
See GH-430
Diffstat (limited to 'src/CreateRequestCommand.cc')
-rw-r--r--src/CreateRequestCommand.cc8
1 files changed, 8 insertions, 0 deletions
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.",