diff options
| author | Linus Jahn <lnj@kaidan.im> | 2023-02-27 17:27:53 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2023-02-27 17:27:53 +0100 |
| commit | ea9fa4e0df8d45e06b1d7ead5e29813ea5025493 (patch) | |
| tree | dc1249014b90b858f2a2af57900d89d37337a3d1 | |
| parent | a06db8e3469a0c7acd8f5e6bc6502ad16f1d59b8 (diff) | |
MamManager: Fix task is not finished when no message is encrypted
| -rw-r--r-- | src/client/QXmppMamManager.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/client/QXmppMamManager.cpp b/src/client/QXmppMamManager.cpp index f173aa01..c39a3411 100644 --- a/src/client/QXmppMamManager.cpp +++ b/src/client/QXmppMamManager.cpp @@ -264,11 +264,14 @@ QXmppTask<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(con if (auto *e2eeExt = client()->encryptionExtension()) { auto &messages = itr->second.messages; auto running = std::make_shared<uint>(0); + // handle case when no message is encrypted + auto hasEncryptedMessages = false; for (auto i = 0; i < messages.size(); i++) { if (!e2eeExt->isEncrypted(messages.at(i))) { continue; } + hasEncryptedMessages = true; auto message = messages.at(i); (*running)++; @@ -290,6 +293,12 @@ QXmppTask<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(con } }); } + + if (!hasEncryptedMessages) { + // finish here, no decryptMessage callback will do it + itr->second.finish(); + d->ongoingRequests.erase(itr); + } } else { itr->second.finish(); d->ongoingRequests.erase(itr); |
