diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-12-04 14:52:46 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-12-04 14:52:46 +0000 |
| commit | 24bdbf9aa6790f95b14449fed62d83fd196a0124 (patch) | |
| tree | 8707645d11f86d1bbc700ad47c23c459654a8920 /src/DefaultBtProgressInfoFile.cc | |
| parent | ed3ebb7c22db5422328a69e600d2bb2aba6bbd86 (diff) | |
2007-12-04 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added --allow-piece-length-change option.
* src/DefaultBtProgressInfoFile.cc
* test/DefaultBtProgressInfoFileTest.cc
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.h
* src/version_usage.cc
* doc/aria2c.1.txt
* doc/aria2c.1
Fixed: duplicated result entry appears when exception is thrown
in
RequestGroup::createInitiateConnectionCommand().
* src/RequestGroupMan.cc (fillRequestGroupFromReserver):
Add RequestGroup to _requestGroup after RequetGroup::
createInitiateConnectionCommand() succeeds.
Externalized message
* src/XML2SAXMetalinkProcessor.cc
* src/message.h
Diffstat (limited to 'src/DefaultBtProgressInfoFile.cc')
| -rw-r--r-- | src/DefaultBtProgressInfoFile.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/DefaultBtProgressInfoFile.cc b/src/DefaultBtProgressInfoFile.cc index a1dde4cc..5d6a5a95 100644 --- a/src/DefaultBtProgressInfoFile.cc +++ b/src/DefaultBtProgressInfoFile.cc @@ -44,6 +44,7 @@ #include "File.h" #include "Util.h" #include "a2io.h" +#include "DownloadFailureException.h" #include <fstream> #include <errno.h> @@ -256,8 +257,14 @@ void DefaultBtProgressInfoFile::load() } _pieceStorage->addInFlightPiece(inFlightPieces); } else { + int32_t numInFlightPiece; + in.read(reinterpret_cast<char*>(&numInFlightPiece), sizeof(numInFlightPiece)); BitfieldMan src(pieceLength, totalLength); src.setBitfield(savedBitfield, bitfieldLength); + if((src.getCompletedLength() || numInFlightPiece) && + !_option->getAsBool(PREF_ALLOW_PIECE_LENGTH_CHANGE)) { + throw new DownloadFailureException("WARNING: Detected a change in piece length. You can proceed with --allow-piece-length-change=true, but you may lose some download progress."); + } BitfieldMan dest(_dctx->getPieceLength(), totalLength); Util::convertBitfield(&dest, &src); _pieceStorage->setBitfield(dest.getBitfield(), dest.getBitfieldLength()); |
