aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-03-14 20:40:06 +0100
committerLinus Jahn <lnj@kaidan.im>2023-03-14 22:39:14 +0100
commitdfe4b2d2759e5a1af43f5f2a74b6416ce5dab229 (patch)
tree10f2b0f9c4a4aeec121b151cd053cae1446ec80d
parentbb9f20419c794e4555860e6aeb097229653d5dc9 (diff)
MamManager: Create task before sending
-rw-r--r--src/client/QXmppMamManager.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/client/QXmppMamManager.cpp b/src/client/QXmppMamManager.cpp
index c39a3411..a63c997d 100644
--- a/src/client/QXmppMamManager.cpp
+++ b/src/client/QXmppMamManager.cpp
@@ -243,6 +243,9 @@ QXmppTask<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(con
auto [itr, _] = d->ongoingRequests.insert({ queryIq.queryId().toStdString(), RetrieveRequestState() });
+ // create task here; promise could finish immediately after client()->sendIq()
+ auto task = itr->second.promise.task();
+
// retrieve messages
client()->sendIq(std::move(queryIq)).then(this, [this, queryId = queryIq.queryId()](QXmppClient::IqResult result) {
auto itr = d->ongoingRequests.find(queryId.toStdString());
@@ -309,5 +312,5 @@ QXmppTask<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(con
}
});
- return itr->second.promise.task();
+ return task;
}