diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 9309dbfa6..f6524c7d2 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -14252,6 +14252,10 @@ void MessagesManager::on_reload_dialog_filters_timeout(void *messages_manager_pt } void MessagesManager::reload_dialog_filters() { + if (are_dialog_filters_being_reloaded_) { + need_dialog_filters_reload_ = true; + return; + } auto promise = PromiseCreator::lambda( [actor_id = actor_id(this)](Result>> r_filters) { send_closure(actor_id, &MessagesManager::on_get_dialog_filters, std::move(r_filters), false); @@ -14261,11 +14265,13 @@ void MessagesManager::reload_dialog_filters() { void MessagesManager::on_get_dialog_filters(Result>> r_filters, bool dummy) { + are_dialog_filters_being_reloaded_ = false; if (G()->close_flag()) { return; } if (r_filters.is_error()) { LOG(WARNING) << "Receive error " << r_filters.error() << " for GetDialogFiltersQuery"; + need_dialog_filters_reload_ = false; schedule_dialog_filters_reload(Random::fast(60, 5 * 60)); return; } @@ -14368,6 +14374,10 @@ void MessagesManager::on_get_dialog_filters(Result MessagesManager::search_public_dialogs(const string &query, Promise &&promise) { diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 4eacc15bc..650dabfac 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2890,6 +2890,8 @@ class MessagesManager : public Actor { std::unordered_map dialog_lists_; std::unordered_map dialog_folders_; + bool are_dialog_filters_being_reloaded_ = false; + bool need_dialog_filters_reload_ = false; int32 dialog_filters_updated_date_ = 0; vector> server_dialog_filters_; vector> dialog_filters_;