From 001be82566b1847b498e8b842ea87f28981262ed Mon Sep 17 00:00:00 2001 From: John Preston Date: Sat, 2 Dec 2017 12:32:43 +0400 Subject: [PATCH] Add some more checks to file downloader. --- Telegram/SourceFiles/storage/file_download.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Telegram/SourceFiles/storage/file_download.cpp b/Telegram/SourceFiles/storage/file_download.cpp index 7a7008c8eb..3db4f81678 100644 --- a/Telegram/SourceFiles/storage/file_download.cpp +++ b/Telegram/SourceFiles/storage/file_download.cpp @@ -381,6 +381,7 @@ void FileLoader::cancel(bool fail) { _file.remove(); } _data = QByteArray(); + removeFromQueue(); if (fail) { emit failed(this, started); @@ -480,6 +481,8 @@ mtpFileLoader::RequestData mtpFileLoader::prepareRequest(int offset) const { } void mtpFileLoader::makeRequest(int offset) { + Expects(!_finished); + auto requestData = prepareRequest(offset); auto send = [this, &requestData] { auto offset = requestData.offset; @@ -521,6 +524,7 @@ void mtpFileLoader::requestMoreCdnFileHashes() { } void mtpFileLoader::normalPartLoaded(const MTPupload_File &result, mtpRequestId requestId) { + Expects(!_finished); Expects(result.type() == mtpc_upload_fileCdnRedirect || result.type() == mtpc_upload_file); auto offset = finishSentRequestGetOffset(requestId); @@ -547,6 +551,8 @@ void mtpFileLoader::webPartLoaded(const MTPupload_WebFile &result, mtpRequestId } void mtpFileLoader::cdnPartLoaded(const MTPupload_CdnFile &result, mtpRequestId requestId) { + Expects(!_finished); + auto offset = finishSentRequestGetOffset(requestId); if (result.type() == mtpc_upload_cdnFileReuploadNeeded) { auto requestData = RequestData(); @@ -616,7 +622,9 @@ void mtpFileLoader::reuploadDone(const MTPVector &result, mtpReq } void mtpFileLoader::getCdnFileHashesDone(const MTPVector &result, mtpRequestId requestId) { + Expects(!_finished); Expects(_cdnHashesRequestId == requestId); + _cdnHashesRequestId = 0; auto offset = finishSentRequestGetOffset(requestId); @@ -683,6 +691,8 @@ int mtpFileLoader::finishSentRequestGetOffset(mtpRequestId requestId) { } void mtpFileLoader::partLoaded(int offset, base::const_byte_span bytes) { + Expects(!_finished); + if (bytes.size()) { if (_fileIsOpen) { auto fsize = _file.size();