From d24735b2173f4757cedd7bb54036f465d8c5d9ed Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 17 Jan 2020 17:45:43 +0300 Subject: [PATCH] Fix possible crash in CDN file loading. --- Telegram/SourceFiles/storage/download_manager_mtproto.cpp | 7 +++++++ Telegram/SourceFiles/storage/download_manager_mtproto.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/storage/download_manager_mtproto.cpp b/Telegram/SourceFiles/storage/download_manager_mtproto.cpp index 9d6f25be4..02df6fa4e 100644 --- a/Telegram/SourceFiles/storage/download_manager_mtproto.cpp +++ b/Telegram/SourceFiles/storage/download_manager_mtproto.cpp @@ -487,6 +487,13 @@ void DownloadMtprotoTask::removeSession(int sessionIndex) { redirect.push_back({ requestId, requestData.offset }); } } + for (auto &[requestData, bytes] : _cdnUncheckedParts) { + if (requestData.sessionIndex == sessionIndex) { + const auto newIndex = _owner->chooseSessionIndex(dcId()); + Assert(newIndex < sessionIndex); + requestData.sessionIndex = newIndex; + } + } for (const auto &[requestId, offset] : redirect) { cancelRequest(requestId); const auto newIndex = _owner->chooseSessionIndex(dcId()); diff --git a/Telegram/SourceFiles/storage/download_manager_mtproto.h b/Telegram/SourceFiles/storage/download_manager_mtproto.h index de342fd68..41f91b32c 100644 --- a/Telegram/SourceFiles/storage/download_manager_mtproto.h +++ b/Telegram/SourceFiles/storage/download_manager_mtproto.h @@ -163,7 +163,7 @@ protected: private: struct RequestData { int offset = 0; - int sessionIndex = 0; + mutable int sessionIndex = 0; int requestedInSession = 0; crl::time sent = 0;