From 34ba9b21f365b8d3bdc36808c2d665ca5cd128f6 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 8 Dec 2021 16:54:45 +0300 Subject: [PATCH 1/3] Don't try to load already loaded special sticker set. --- td/telegram/StickersManager.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index ac4e44533..53fdefbb6 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -1381,6 +1381,13 @@ void StickersManager::load_special_sticker_set(SpecialStickerSet &sticker_set) { sticker_set.is_being_loaded_ = true; LOG(INFO) << "Load " << sticker_set.type_.type_ << " " << sticker_set.id_; if (sticker_set.id_.is_valid()) { + auto s = get_sticker_set(sticker_set.id_); + CHECK(s != nullptr); + if (s->was_loaded) { + reload_special_sticker_set(sticker_set, s->is_loaded ? s->hash : 0); + return; + } + auto promise = PromiseCreator::lambda([actor_id = actor_id(this), type = sticker_set.type_](Result &&result) { send_closure(actor_id, &StickersManager::on_load_special_sticker_set, type, result.is_ok() ? Status::OK() : result.move_as_error()); From b67466a554916a65bae616facacdbb91c7927b1b Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 8 Dec 2021 17:19:20 +0300 Subject: [PATCH 2/3] Clarify that chats can't be banned with non-zero until_date. --- td/generate/scheme/td_api.tl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 370e193cf..980d08346 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -4850,7 +4850,7 @@ setChatMemberStatus chat_id:int53 member_id:MessageSender status:ChatMemberStatu //@description Bans a member in a chat. Members can't be banned in private or secret chats. In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first //@chat_id Chat identifier //@member_id Member identifier -//@banned_until_date Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups +//@banned_until_date Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups and if a chat is banned //@revoke_messages Pass true to delete all messages in the chat for the user that is being removed. Always true for supergroups and channels banChatMember chat_id:int53 member_id:MessageSender banned_until_date:int32 revoke_messages:Bool = Ok; From 85d6ef98c3df614a8fb1fb51945c32f31972319e Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 8 Dec 2021 18:13:52 +0300 Subject: [PATCH 3/3] Fix Scheduler::get_timeout. --- tdactor/td/actor/impl/Scheduler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tdactor/td/actor/impl/Scheduler.cpp b/tdactor/td/actor/impl/Scheduler.cpp index c5fe64b2d..dd3a1eb0c 100644 --- a/tdactor/td/actor/impl/Scheduler.cpp +++ b/tdactor/td/actor/impl/Scheduler.cpp @@ -519,6 +519,9 @@ void Scheduler::run_no_guard(Timestamp timeout) { } Timestamp Scheduler::get_timeout() { + if (!ready_actors_list_.empty()) { + return Timestamp::in(0); + } if (timeout_queue_.empty()) { return Timestamp::in(10000); }