diff options
| author | Linus Jahn <lnj@kaidan.im> | 2023-03-14 20:40:06 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2023-03-14 22:39:14 +0100 |
| commit | dfe4b2d2759e5a1af43f5f2a74b6416ce5dab229 (patch) | |
| tree | 10f2b0f9c4a4aeec121b151cd053cae1446ec80d | |
| parent | bb9f20419c794e4555860e6aeb097229653d5dc9 (diff) | |
MamManager: Create task before sending
| -rw-r--r-- | src/client/QXmppMamManager.cpp | 5 |
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; } |
