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"};