From 878022bc0d959164886a4531710193e23f5fc623 Mon Sep 17 00:00:00 2001 From: "andrew (from workstation)" Date: Sun, 17 May 2020 13:24:23 +0200 Subject: [PATCH] fixes --- td/telegram/files/FileManager.cpp | 58 +++++++++++++------------------ 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index eb7e6402..4fec092f 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -3709,48 +3709,40 @@ void FileManager::memory_cleanup() { for (unsigned int i = 1; i < file_id_info_.size(); i++) { auto main_node_id = file_id_info_[i].node_id_; - if (main_node_id == 0) { - continue; - } - auto &node = file_nodes_[main_node_id]; + if (main_node_id != 0) { + auto &node = file_nodes_[main_node_id]; + if (node != nullptr && ((int32) i) == node->main_file_id_.get()) { + if (time - file_id_insert_time_[i] > 5 /* MAIN FILE TTL */) { + for (auto &file_id : node->file_ids_) { + /* DESTROY ASSOCIATED QUERIES */ + for (auto &query_id : queries_container_.ids()) { + auto query = queries_container_.get(query_id); + if (query != nullptr && file_id.get() == query->file_id_.get()) { + on_error(query_id, Status::Error(400, "FILE_DOWNLOAD_RESTART")); + } + } - if (node != nullptr && ((int32) i) == node->main_file_id_.get()) { - if (time - file_id_insert_time_[i] > 5 /* MAIN FILE TTL */) { - for (auto &file_id : node->file_ids_) { - /* DESTROY ASSOCIATED QUERIES */ + /* DESTROY ASSOCIATED FILE */ + empty_file_ids_.push_back(file_id.get()); + file_id_info_[file_id.get()] = FileIdInfo(); + } + + /* DESTROY MAIN QUERY */ for (auto &query_id : queries_container_.ids()) { auto query = queries_container_.get(query_id); - if (query != nullptr && file_id.get() == query->file_id_.get()) { + if (query != nullptr && ((int32)i) == query->file_id_.get()) { on_error(query_id, Status::Error(400, "FILE_DOWNLOAD_RESTART")); } } - /* DESTROY ASSOCIATED NODE */ - auto file_node_id = file_id_info_[file_id.get()].node_id_; - if (file_node_id != 0) { - file_nodes_[file_node_id] = nullptr; - } + /* DESTROY MAIN FILE */ + file_id_insert_time_[i] = INT64_MAX; + empty_file_ids_.push_back(i); + file_id_info_[i] = FileIdInfo(); - /* DESTROY ASSOCIATED FILE */ - empty_file_ids_.push_back(file_id.get()); - file_id_info_[file_id.get()] = FileIdInfo(); + /* DESTROY MAIN NODE */ + file_nodes_[main_node_id] = nullptr; } - - /* DESTROY MAIN QUERY */ - for (auto &query_id : queries_container_.ids()) { - auto query = queries_container_.get(query_id); - if (query != nullptr && ((int32) i) == query->file_id_.get()) { - on_error(query_id, Status::Error(400, "FILE_DOWNLOAD_RESTART")); - } - } - - /* DESTROY MAIN FILE */ - file_id_insert_time_[i] = INT64_MAX; - empty_file_ids_.push_back(i); - file_id_info_[i] = FileIdInfo(); - - /* DESTROY MAIN NODE */ - file_nodes_[main_node_id] = nullptr; } } }