summaryrefslogtreecommitdiff
path: root/src/FtpNegotiationCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-05-07 03:49:27 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-05-07 03:49:27 +0000
commit030bc082872b640765fd092e5cee4920c208a5fd (patch)
tree8114aa66550b9fa4579e8e0dfbb4cebc69fd9ba4 /src/FtpNegotiationCommand.cc
parent4432b68d24e362618a8b28b73467466e262a1809 (diff)
2009-05-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed broken file renaming feature since r1202. * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/HttpResponseCommand.cc * src/RequestGroup.cc * src/RequestGroup.h
Diffstat (limited to 'src/FtpNegotiationCommand.cc')
-rw-r--r--src/FtpNegotiationCommand.cc41
1 files changed, 35 insertions, 6 deletions
diff --git a/src/FtpNegotiationCommand.cc b/src/FtpNegotiationCommand.cc
index b0bf0fc4..ea9e6314 100644
--- a/src/FtpNegotiationCommand.cc
+++ b/src/FtpNegotiationCommand.cc
@@ -341,16 +341,29 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
} else {
sequence = SEQ_PREPARE_SERVER_SOCKET;
}
- _requestGroup->initPieceStorage();
- if(dctx->knowsTotalLength() &&
- _requestGroup->downloadFinishedByFileLength()) {
+
+ if(e->option->getAsBool(PREF_DRY_RUN)) {
+ _requestGroup->initPieceStorage();
+ onDryRunFileFound();
+ return false;
+ }
+
+ if(_requestGroup->downloadFinishedByFileLength()) {
+ _requestGroup->initPieceStorage();
+ _requestGroup->getPieceStorage()->markAllPiecesDone();
sequence = SEQ_DOWNLOAD_ALREADY_COMPLETED;
+ logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+ _requestGroup->getGID(),
+ _requestGroup->getFilePath().c_str());
+
poolConnection();
return false;
}
+
_requestGroup->shouldCancelDownloadForSafety();
+ _requestGroup->initPieceStorage();
_requestGroup->getPieceStorage()->getDiskAdaptor()->initAndOpenFile();
if(dctx->knowsTotalLength()) {
@@ -361,19 +374,28 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
return true;
} else {
+ _requestGroup->adjustFilename
+ (SharedHandle<BtProgressInfoFile>(new DefaultBtProgressInfoFile
+ (_requestGroup->getDownloadContext(),
+ SharedHandle<PieceStorage>(),
+ e->option)));
_requestGroup->initPieceStorage();
if(e->option->getAsBool(PREF_DRY_RUN)) {
- _requestGroup->getPieceStorage()->markAllPiecesDone();
- poolConnection();
- sequence = SEQ_HEAD_OK;
+ onDryRunFileFound();
return false;
}
BtProgressInfoFileHandle infoFile(new DefaultBtProgressInfoFile(_requestGroup->getDownloadContext(), _requestGroup->getPieceStorage(), e->option));
if(!infoFile->exists() && _requestGroup->downloadFinishedByFileLength()) {
+ _requestGroup->getPieceStorage()->markAllPiecesDone();
+
sequence = SEQ_DOWNLOAD_ALREADY_COMPLETED;
+ logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+ _requestGroup->getGID(),
+ _requestGroup->getFilePath().c_str());
+
poolConnection();
return false;
@@ -649,4 +671,11 @@ void FtpNegotiationCommand::poolConnection() const
}
}
+void FtpNegotiationCommand::onDryRunFileFound()
+{
+ _requestGroup->getPieceStorage()->markAllPiecesDone();
+ poolConnection();
+ sequence = SEQ_HEAD_OK;
+}
+
} // namespace aria2