From 8f623e8be7ddbd1ec40c4fe2699e2e2808654c96 Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 7 Nov 2020 13:37:16 +0300 Subject: [PATCH] Add early check for another active channel difference. --- td/telegram/MessagesManager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 1882536c8..915fd5481 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -34313,6 +34313,11 @@ void MessagesManager::get_channel_difference(DialogId dialog_id, int32 pts, bool } LOG_CHECK(dialog_id.get_type() == DialogType::Channel) << dialog_id << " " << source; + if (active_get_channel_differencies_.count(dialog_id)) { + LOG(INFO) << "Skip running channels.getDifference for " << dialog_id << " from " << source + << " because it has already been run"; + return; + } auto input_channel = td_->contacts_manager_->get_input_channel(dialog_id.get_channel_id()); if (input_channel == nullptr) { LOG(ERROR) << "Skip running channels.getDifference for " << dialog_id << " from " << source @@ -34350,6 +34355,7 @@ void MessagesManager::do_get_channel_difference(DialogId dialog_id, int32 pts, b << " because it has already been run"; return; } + // must work even we know nothing about the dialog // can be called multiple times before after_get_channel_difference const Dialog *d = get_dialog(dialog_id);