From 0e6556cd86c558c86dfde60d82891a46bf32b64f Mon Sep 17 00:00:00 2001 From: Green Sky Date: Fri, 6 Oct 2023 12:50:53 +0200 Subject: [PATCH] gracefully handle toxcore forgetting early --- solanaceae/tox_messages/tox_transfer_manager.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/solanaceae/tox_messages/tox_transfer_manager.cpp b/solanaceae/tox_messages/tox_transfer_manager.cpp index d691557..e58a5e6 100644 --- a/solanaceae/tox_messages/tox_transfer_manager.cpp +++ b/solanaceae/tox_messages/tox_transfer_manager.cpp @@ -403,6 +403,15 @@ bool ToxTransferManager::onToxEvent(const Tox_Event_File_Recv* e) { // TODO: also check for file id + auto [f_id_opt, _] = _t.toxFileGetFileID(friend_number, file_number); + //assert(f_id_opt.has_value()); + if (!f_id_opt.has_value()) { + // very unfortuante, toxcore already forgot about the transfer we are handling + // TODO: make sure we exit cracefully here + std::cerr << "TTM error: querying for fileid failed, toxcore already forgot. frd:" << friend_number << " fnb:" << file_number << "\n"; + return false; + } + // get current time unix epoch utc uint64_t ts = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); @@ -421,8 +430,6 @@ bool ToxTransferManager::onToxEvent(const Tox_Event_File_Recv* e) { transfer.emplace(friend_number, file_number); transfer.emplace(file_kind); - auto [f_id_opt, _] = _t.toxFileGetFileID(friend_number, file_number); - assert(f_id_opt.has_value()); transfer.emplace(f_id_opt.value()); { // file info