aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-02-27 17:27:53 +0100
committerLinus Jahn <lnj@kaidan.im>2023-02-27 17:27:53 +0100
commitea9fa4e0df8d45e06b1d7ead5e29813ea5025493 (patch)
treedc1249014b90b858f2a2af57900d89d37337a3d1 /src/client
parenta06db8e3469a0c7acd8f5e6bc6502ad16f1d59b8 (diff)
MamManager: Fix task is not finished when no message is encrypted
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppMamManager.cpp9
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);