summaryrefslogtreecommitdiff
path: root/src/DownloadCommand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/DownloadCommand.cc')
-rw-r--r--src/DownloadCommand.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/DownloadCommand.cc b/src/DownloadCommand.cc
index c72ca3fc..7652b531 100644
--- a/src/DownloadCommand.cc
+++ b/src/DownloadCommand.cc
@@ -260,6 +260,17 @@ void DownloadCommand::checkLowestDownloadSpeed() const
bool DownloadCommand::prepareForNextSegment() {
if(_requestGroup->downloadFinished()) {
+ // If this is a single file download, and file size becomes known
+ // just after downloading, set total length to FileEntry object
+ // here.
+ if(_requestGroup->getDownloadContext()->getFileEntries().size() == 1) {
+ const SharedHandle<FileEntry>& fileEntry =
+ _requestGroup->getDownloadContext()->getFirstFileEntry();
+ if(fileEntry->getLength() == 0) {
+ fileEntry->setLength
+ (_requestGroup->getPieceStorage()->getCompletedLength());
+ }
+ }
#ifdef ENABLE_MESSAGE_DIGEST
CheckIntegrityEntryHandle entry(new ChecksumCheckIntegrityEntry(_requestGroup));
if(entry->isValidationReady()) {