From 6bd7e04875f0a323fc316d5be73358330134c9c8 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 10 Dec 2021 17:30:38 +0300 Subject: [PATCH] Ensure that online member count is reasonable. --- td/telegram/MessagesManager.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 87efc9721..ab7d13bfd 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -12093,6 +12093,30 @@ void MessagesManager::set_dialog_online_member_count(DialogId dialog_id, int32 o return; } + if (online_member_count < 0) { + LOG(ERROR) << "Receive online_member_count = " << online_member_count << " in " << dialog_id; + online_member_count = 0; + } + + switch (dialog_id.get_type()) { + case DialogType::Chat: { + auto participant_count = td_->contacts_manager_->get_chat_participant_count(dialog_id.get_chat_id()); + if (online_member_count > participant_count) { + online_member_count = participant_count; + } + break; + } + case DialogType::Channel: { + auto participant_count = td_->contacts_manager_->get_channel_participant_count(dialog_id.get_channel_id()); + if (participant_count != 0 && online_member_count > participant_count) { + online_member_count = participant_count; + } + break; + } + default: + break; + } + auto &info = dialog_online_member_counts_[dialog_id]; LOG(INFO) << "Change number of online members from " << info.online_member_count << " to " << online_member_count << " in " << dialog_id << " from " << source;