diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-05-07 03:49:27 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-05-07 03:49:27 +0000 |
| commit | 030bc082872b640765fd092e5cee4920c208a5fd (patch) | |
| tree | 8114aa66550b9fa4579e8e0dfbb4cebc69fd9ba4 /src/FtpNegotiationCommand.cc | |
| parent | 4432b68d24e362618a8b28b73467466e262a1809 (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.cc | 41 |
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 |
