From 8a711b56d93b6e87fc9b390e9480286f20fbb6ba Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 14 Oct 2023 03:00:54 +0300 Subject: [PATCH] Limit the number of ignored updates before end of the first get difference. --- td/telegram/UpdatesManager.cpp | 6 +++--- td/telegram/UpdatesManager.h | 10 +++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index 580c42d20..89a824d4d 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -257,8 +257,8 @@ UpdatesManager::UpdatesManager(Td *td, ActorShared<> parent) : td_(td), parent_( pending_audio_transcription_timeout_.set_callback(on_pending_audio_transcription_timeout_callback); pending_audio_transcription_timeout_.set_callback_data(static_cast(td_)); - if (td_->option_manager_->get_option_integer("since_last_open") < 3600 && !td_->auth_manager_->is_bot()) { - finished_first_get_difference_ = true; + if (!td_->auth_manager_->is_authorized() || !td_->auth_manager_->is_bot()) { + skipped_postponed_updates_after_start_ = 0; } } @@ -2106,7 +2106,7 @@ void UpdatesManager::after_get_difference() { retry_timeout_.cancel_timeout(); retry_time_ = 1; - finished_first_get_difference_ = true; + skipped_postponed_updates_after_start_ = 0; td_->option_manager_->set_option_empty("since_last_open"); // cancels qts_gap_timeout_ if needed, can apply some updates received during getDifference, diff --git a/td/telegram/UpdatesManager.h b/td/telegram/UpdatesManager.h index 64380681f..6ccce6c30 100644 --- a/td/telegram/UpdatesManager.h +++ b/td/telegram/UpdatesManager.h @@ -263,7 +263,7 @@ class UpdatesManager final : public Actor { bool are_sessions_inited_ = false; bool running_get_difference_ = false; - bool finished_first_get_difference_ = false; + int32 skipped_postponed_updates_after_start_ = 50000; int32 last_confirmed_pts_ = 0; int32 last_confirmed_qts_ = 0; int32 min_postponed_update_pts_ = 0; @@ -310,8 +310,12 @@ class UpdatesManager final : public Actor { void on_qts_ack(PtsManager::PtsId ack_token); void save_qts(int32 qts); - bool can_postpone_updates() const { - return finished_first_get_difference_; + bool can_postpone_updates() { + if (skipped_postponed_updates_after_start_ == 0) { + return true; + } + skipped_postponed_updates_after_start_--; + return false; } void set_date(int32 date, bool from_update, string date_source);