From 82eff3440e024109f306dc261e46afa1877f29cf Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 13 Sep 2026 07:23:33 +0300 Subject: [PATCH] Fixed leak of usernames cache request on failed load. --- Telegram/SourceFiles/api/api_user_names.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/api/api_user_names.cpp b/Telegram/SourceFiles/api/api_user_names.cpp index 187fc0b4db..5b6a6f5289 100644 --- a/Telegram/SourceFiles/api/api_user_names.cpp +++ b/Telegram/SourceFiles/api/api_user_names.cpp @@ -83,6 +83,8 @@ rpl::producer Usernames::loadUsernames( consumer.put_next({}); consumer.put_done(); }); + }).fail([=] { + consumer.put_done(); }).send(); }; const auto requestChannel = [&](const MTPInputChannel &data) { @@ -103,6 +105,8 @@ rpl::producer Usernames::loadUsernames( consumer.put_done(); }); }); + }).fail([=] { + consumer.put_done(); }).send(); }; if (peer->isSelf()) { @@ -261,9 +265,11 @@ void Usernames::requestToCache(not_null peer) { const auto lifetime = std::make_shared(); *lifetime = loadUsernames( peer - ) | rpl::on_next([=, id = peer->id](Data::Usernames usernames) { + ) | rpl::on_next_done([=, id = peer->id](Data::Usernames usernames) { _tinyCache = std::make_pair(id, std::move(usernames)); lifetime->destroy(); + }, [=] { + lifetime->destroy(); }); }