From 9834594b1634ab931ed6c26f1271c16e4e7f580e Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 3 Jan 2023 15:32:10 +0300 Subject: [PATCH] Don't send parallel ping-server requests. --- td/telegram/UpdatesManager.cpp | 5 +++++ td/telegram/UpdatesManager.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index 1de1f3a55..34334c91b 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -1473,6 +1473,10 @@ void UpdatesManager::init_state() { } void UpdatesManager::ping_server() { + if (is_ping_sent_) { + return; + } + is_ping_sent_ = true; auto promise = PromiseCreator::lambda([](Result> result) { auto state = result.is_ok() ? result.move_as_ok() : nullptr; send_closure(G()->updates_manager(), &UpdatesManager::on_server_pong, std::move(state)); @@ -1482,6 +1486,7 @@ void UpdatesManager::ping_server() { void UpdatesManager::on_server_pong(tl_object_ptr &&state) { LOG(INFO) << "Receive " << oneline(to_string(state)); + is_ping_sent_ = false; if (state == nullptr || state->pts_ > get_pts() || state->seq_ > seq_) { get_difference("on server pong"); } diff --git a/td/telegram/UpdatesManager.h b/td/telegram/UpdatesManager.h index d1edd5d19..345645ef1 100644 --- a/td/telegram/UpdatesManager.h +++ b/td/telegram/UpdatesManager.h @@ -246,6 +246,8 @@ class UpdatesManager final : public Actor { int32 min_postponed_update_qts_ = 0; double get_difference_start_time_ = 0; // time from which we started to get difference without success + bool is_ping_sent_ = false; + FlatHashMap pending_audio_transcriptions_; MultiTimeout pending_audio_transcription_timeout_{"PendingAudioTranscriptionTimeout"};