From 030bc082872b640765fd092e5cee4920c208a5fd Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 7 May 2009 03:49:27 +0000 Subject: 2009-05-07 Tatsuhiro Tsujikawa Fixed broken file renaming feature since r1202. * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/HttpResponseCommand.cc * src/RequestGroup.cc * src/RequestGroup.h --- src/FtpNegotiationCommand.cc | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) (limited to 'src/FtpNegotiationCommand.cc') 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(new DefaultBtProgressInfoFile + (_requestGroup->getDownloadContext(), + SharedHandle(), + 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 -- cgit