aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppFutureUtils_p.h9
-rw-r--r--src/base/QXmppStream.cpp9
2 files changed, 8 insertions, 10 deletions
diff --git a/src/base/QXmppFutureUtils_p.h b/src/base/QXmppFutureUtils_p.h
index 5e6b5ca8..95150008 100644
--- a/src/base/QXmppFutureUtils_p.h
+++ b/src/base/QXmppFutureUtils_p.h
@@ -158,14 +158,15 @@ auto parseIq(Input &&sendResult, Converter convert) -> decltype(convert({}))
IqType iq;
iq.parse(element);
if (iq.type() == QXmppIq::Error) {
- return iq.error();
+ if (auto err = iq.errorOptional()) {
+ return QXmppError { err->text(), std::move(*err) };
+ }
+ return QXmppError { QStringLiteral("Unknown error.") };
}
return convert(std::move(iq));
},
[](QXmppError error) -> Result {
- using Error = QXmppStanza::Error;
- return Error(Error::Wait, Error::UndefinedCondition,
- QStringLiteral("Couldn't send request: ") + error.description);
+ return error;
},
},
sendResult);
diff --git a/src/base/QXmppStream.cpp b/src/base/QXmppStream.cpp
index d1a5ccd2..7274e242 100644
--- a/src/base/QXmppStream.cpp
+++ b/src/base/QXmppStream.cpp
@@ -251,8 +251,8 @@ QXmppTask<QXmppStream::IqResult> QXmppStream::sendIq(QXmppPacket &&packet, const
auto sendFuture = send(std::move(packet));
if (sendFuture.isFinished()) {
- if (std::holds_alternative<QXmppError>(sendFuture.result())) {
- // early exit (saves QFutureWatcher)
+ if (std::holds_alternative<QXmppError>(sendFuture.takeResult())) {
+ // early exit
return makeReadyTask<IqResult>(std::get<QXmppError>(sendFuture.result()));
}
} else {
@@ -266,10 +266,7 @@ QXmppTask<QXmppStream::IqResult> QXmppStream::sendIq(QXmppPacket &&packet, const
});
}
- IqState state {
- {},
- to,
- };
+ IqState state { {}, to };
auto task = state.interface.task();
d->runningIqs.insert(id, std::move(state));
return task;