diff --git a/Telegram/SourceFiles/mtproto/session.cpp b/Telegram/SourceFiles/mtproto/session.cpp index a10f2e7d5..0a50a4561 100644 --- a/Telegram/SourceFiles/mtproto/session.cpp +++ b/Telegram/SourceFiles/mtproto/session.cpp @@ -557,13 +557,22 @@ void Session::tryToReceive() { if (messages.empty()) { break; } + const auto guard = QPointer(this); + const auto instance = QPointer(_instance); + const auto main = (_shiftedDcId == BareDcId(_shiftedDcId)); for (const auto &message : messages) { if (message.requestId) { - _instance->processCallback(message); - } else if (_shiftedDcId == BareDcId(_shiftedDcId)) { + instance->processCallback(message); + } else if (main) { // Process updates only in main session. - _instance->processUpdate(message); + instance->processUpdate(message); } + if (!instance) { + return; + } + } + if (!guard) { + break; } } }