From dfe4b2d2759e5a1af43f5f2a74b6416ce5dab229 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Tue, 14 Mar 2023 20:40:06 +0100 Subject: MamManager: Create task before sending --- src/client/QXmppMamManager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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::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::retrieveMessages(con } }); - return itr->second.promise.task(); + return task; } -- cgit v1.2.3