diff --git a/td/telegram/files/FileLoadManager.cpp b/td/telegram/files/FileLoadManager.cpp index 4aa8af89..4ae87ea5 100644 --- a/td/telegram/files/FileLoadManager.cpp +++ b/td/telegram/files/FileLoadManager.cpp @@ -154,7 +154,7 @@ void FileLoadManager::update_local_file_location(QueryId id, const LocalFileLoca } send_closure(node->loader_, &FileLoaderActor::update_local_file_location, local); } -void FileLoadManager::close() { +void FileLoadManager::hangup() { nodes_container_.for_each([](auto id, auto &node) { node.loader_.reset(); }); stop_flag_ = true; loop(); diff --git a/td/telegram/files/FileLoadManager.h b/td/telegram/files/FileLoadManager.h index e2dcc216..dcc3ead6 100644 --- a/td/telegram/files/FileLoadManager.h +++ b/td/telegram/files/FileLoadManager.h @@ -55,9 +55,6 @@ class FileLoadManager final : public Actor { void update_local_file_location(QueryId id, const LocalFileLocation &local); void get_content(const FullLocalFileLocation &local_location, Promise promise); - // just stops actor and all queries. no callbacks will be called - void close(); - private: struct Node { QueryId query_id_; @@ -78,6 +75,7 @@ class FileLoadManager final : public Actor { void start_up() override; void loop() override; + void hangup() override; void hangup_shared() override; void close_node(NodeId node_id); diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index 377ceaa6..36a6f6e8 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -463,8 +463,6 @@ void FileManager::init_actor() { "FileGenerateManager", G()->get_slow_net_scheduler_id(), context_->create_reference()); } FileManager::~FileManager() { - // NB: As FileLoadManager callback is just "this" pointer, this event must be processed immediately. - send_closure(std::move(file_load_manager_), &FileLoadManager::close); } string FileManager::fix_file_extension(Slice file_name, Slice file_type, Slice file_extension) {