From dfe41c9a0db3c76c2c1d568f7a339fecb773354b Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 21 Mar 2022 20:14:26 +0300 Subject: [PATCH] Remove too new messages in on_get_history beforehand just in case. --- td/telegram/MessagesManager.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 7c39ab487..cf95d2343 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -10058,6 +10058,26 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_ } } + if (d->last_new_message_id.is_valid()) { + // remove too new messages from response + while (!messages.empty()) { + if (get_message_dialog_id(messages[0]) == dialog_id && + get_message_id(messages[0], false) <= d->last_new_message_id) { + // the message is old enough + break; + } + + LOG(INFO) << "Ignore too new " << get_message_id(messages[0], false); + messages.erase(messages.begin()); + if (messages.empty()) { + // received no suitable messages; try again + return promise.set_value(Unit()); + } else { + last_received_message_id = get_message_id(messages[0], false); + } + } + } + bool prev_have_full_history = d->have_full_history; MessageId prev_last_new_message_id = d->last_new_message_id; MessageId prev_first_database_message_id = d->first_database_message_id;