From 50a5098b0ffbb330d92d5fc8722724a0009d90c4 Mon Sep 17 00:00:00 2001 From: Arseny Smirnov Date: Thu, 7 Jun 2018 14:37:42 +0300 Subject: [PATCH] FileLoadManager: hangup bugfix GitOrigin-RevId: 7d8a922dfd3e07769507123e39df66d7ea3d00d3 --- td/telegram/files/FileLoadManager.cpp | 2 +- td/telegram/files/FileLoadManager.h | 4 +--- td/telegram/files/FileManager.cpp | 2 -- 3 files changed, 2 insertions(+), 6 deletions(-) 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) {