Restore PTS after overflow.

This commit is contained in:
levlam 2023-07-11 15:50:50 +03:00
parent 6217e8c8f2
commit 00a6271edb

View File

@ -2733,8 +2733,11 @@ void UpdatesManager::add_pending_pts_update(tl_object_ptr<telegram_api::Update>
if (new_pts < old_pts - 99 && source != AFTER_GET_DIFFERENCE_SOURCE) {
bool need_restore_pts = new_pts < old_pts - 19999;
auto now = Time::now();
if (now > last_pts_jump_warning_time_ + 1 && (need_restore_pts || now < last_pts_jump_warning_time_ + 5) &&
!(old_pts == std::numeric_limits<int32>::max() && running_get_difference_)) {
if (old_pts == 2100000000 && new_pts < 1100000000 && pts_count <= 10000) {
set_pts(1, "restore PTS");
old_pts = get_pts();
} else if (now > last_pts_jump_warning_time_ + 1 && (need_restore_pts || now < last_pts_jump_warning_time_ + 5) &&
!(old_pts == std::numeric_limits<int32>::max() && running_get_difference_)) {
LOG(ERROR) << "Restore PTS after delete_first_messages from " << old_pts << " to " << new_pts
<< " is disabled, pts_count = " << pts_count << ", update is from " << source << ": "
<< oneline(to_string(update));