aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}