summaryrefslogtreecommitdiff
path: root/src/DefaultBtProgressInfoFile.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-12-04 14:52:46 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-12-04 14:52:46 +0000
commit24bdbf9aa6790f95b14449fed62d83fd196a0124 (patch)
tree8707645d11f86d1bbc700ad47c23c459654a8920 /src/DefaultBtProgressInfoFile.cc
parented3ebb7c22db5422328a69e600d2bb2aba6bbd86 (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.cc7
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());