diff options
| author | Linus Jahn <lnj@kaidan.im> | 2020-09-09 15:05:23 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-06-27 20:17:17 +0200 |
| commit | 3caffcebf16680576d8dd785437eed16a6c5f36d (patch) | |
| tree | 0805a42decacdda2ace8d43196c25fe21a6fad79 /src/client/QXmppOutgoingClient.cpp | |
| parent | 7e936d200db4855ceaf9eabc1e84c3574a12ec98 (diff) | |
Add reporting of IQ responses with QFutures
Diffstat (limited to 'src/client/QXmppOutgoingClient.cpp')
| -rw-r--r-- | src/client/QXmppOutgoingClient.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/client/QXmppOutgoingClient.cpp b/src/client/QXmppOutgoingClient.cpp index a8bfb62d..6479f334 100644 --- a/src/client/QXmppOutgoingClient.cpp +++ b/src/client/QXmppOutgoingClient.cpp @@ -213,6 +213,20 @@ QXmppOutgoingClient::QXmppOutgoingClient(QObject *parent) connect(this, &QXmppStream::connected, this, &QXmppOutgoingClient::pingStart); connect(this, &QXmppStream::disconnected, this, &QXmppOutgoingClient::pingStop); + + // IQ response handling + connect(this, &QXmppStream::connected, this, [=]() { + if (!d->streamResumed) { + // we can't expect a response because this is a new stream + cancelOngoingIqs(); + } + }); + connect(this, &QXmppStream::disconnected, this, [=]() { + if (!d->canResume) { + // this stream can't be resumed; we can cancel all ongoing IQs + cancelOngoingIqs(); + } + }); } /// Destroys an outgoing client stream. @@ -510,7 +524,7 @@ void QXmppOutgoingClient::handleStanza(const QDomElement &nodeRecv) d->bindModeAvailable = (features.bindMode() != QXmppStreamFeatures::Disabled); d->streamManagementAvailable = (features.streamManagementMode() != QXmppStreamFeatures::Disabled); - // chech whether the stream can be resumed + // check whether the stream can be resumed if (d->streamManagementAvailable && d->canResume) { d->isResuming = true; QXmppStreamManagementResume streamManagementResume(lastIncomingSequenceNumber(), d->smId); |
