diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index e0e5e27bd..17d7e6fcc 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -14533,6 +14533,8 @@ void ContactsManager::get_current_state(vector writerLock(memory_cleanup_mutex); + auto time = std::time(nullptr); + auto user_ttl = !G()->shared_config().get_option_integer("delete_user_reference_after_seconds", 3600); auto chat_ttl = !G()->shared_config().get_option_integer("delete_chat_reference_after_seconds", 3600); @@ -14543,7 +14545,7 @@ void ContactsManager::memory_cleanup() { //auto &user = it->second; auto user_id = it->first; - auto is_invalid = user_id.get_time() > user_ttl; + auto is_invalid = time - user_id.get_time() > user_ttl || user_id.get_time() > time; if (is_invalid) { user_id.reset_time(); @@ -14576,7 +14578,7 @@ void ContactsManager::memory_cleanup() { //auto &chat = it->second; auto chat_id = it->first; - auto is_invalid = chat_id.get_time() > chat_ttl; + auto is_invalid = time - chat_id.get_time() > chat_ttl || chat_id.get_time() > time; if (is_invalid) { chat_id.reset_time(); @@ -14604,7 +14606,7 @@ void ContactsManager::memory_cleanup() { //auto &channel = it->second; auto channel_id = it->first; - auto is_invalid = channel_id.get_time() > chat_ttl; + auto is_invalid = time - channel_id.get_time() > chat_ttl || channel_id.get_time() > time; if (is_invalid) { channel_id.reset_time(); diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index b39f384be..c4e3e694e 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -3882,7 +3882,7 @@ void FileManager::memory_cleanup() { if (find_node != file_nodes_.end()) { auto &node = find_node->second; - if (time - node->main_file_id_.get_time() > file_ttl) { + if (time - node->main_file_id_.get_time() > file_ttl || node->main_file_id_.get_time() > time) { auto can_reset = node->download_priority_ == 0; can_reset &= node->generate_download_priority_ == 0; can_reset &= node->download_id_ == 0; @@ -3895,7 +3895,7 @@ void FileManager::memory_cleanup() { if (find_file != file_id_info_.end()) { auto &file = find_file->second; can_reset &= file.download_priority_ == 0; - can_reset &= time - file_ids_it->get_time() > file_ttl; + can_reset &= time - file_ids_it->get_time() > file_ttl || file_ids_it->get_time() > time; } file_ids_it++; }