aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppCarbonManagerV2.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-12-30 23:35:47 +0100
committerLinus Jahn <lnj@kaidan.im>2022-12-30 23:35:47 +0100
commit6efebe555d30170c2ecfc2372113f342c513b0c2 (patch)
tree146535dd164abe60d28a020a2680e17c0de2b055 /src/client/QXmppCarbonManagerV2.cpp
parent93c35b3f1260f3dfafbc77609fcadb9a40a7b97f (diff)
downloadqxmpp-6efebe555d30170c2ecfc2372113f342c513b0c2.tar.gz
Replace QXmpp::SendError with QXmppError everywhere
Part of #501.
Diffstat (limited to 'src/client/QXmppCarbonManagerV2.cpp')
-rw-r--r--src/client/QXmppCarbonManagerV2.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/client/QXmppCarbonManagerV2.cpp b/src/client/QXmppCarbonManagerV2.cpp
index fa162612..1c3a6fcc 100644
--- a/src/client/QXmppCarbonManagerV2.cpp
+++ b/src/client/QXmppCarbonManagerV2.cpp
@@ -62,7 +62,7 @@ auto firstChildElement(const QDomElement &el, const char *tagName, const char *x
return QDomElement();
}
-auto parseIq(std::variant<QDomElement, SendError> &&sendResult) -> std::optional<QXmppStanza::Error>
+auto parseIq(std::variant<QDomElement, QXmppError> &&sendResult) -> std::optional<QXmppError>
{
if (auto el = std::get_if<QDomElement>(&sendResult)) {
auto iqType = el->attribute(QStringLiteral("type"));
@@ -71,11 +71,13 @@ auto parseIq(std::variant<QDomElement, SendError> &&sendResult) -> std::optional
}
QXmppIq iq;
iq.parse(*el);
- return iq.error();
- } else if (auto err = std::get_if<SendError>(&sendResult)) {
- using Error = QXmppStanza::Error;
- return Error(Error::Wait, Error::UndefinedCondition,
- QStringLiteral("Couldn't send request: ") + err->text);
+ if (auto error = iq.errorOptional()) {
+ return QXmppError { error->text(), std::move(*error) };
+ }
+ // Only happens with IQs with type=error, but no <error/> element
+ return QXmppError { QStringLiteral("Unknown error received."), QXmppStanza::Error() };
+ } else if (auto err = std::get_if<QXmppError>(&sendResult)) {
+ return *err;
}
return {};
}
@@ -163,7 +165,7 @@ void QXmppCarbonManagerV2::enableCarbons()
await(client()->sendIq(CarbonEnableIq()), this, [this](QXmppClient::IqResult domResult) {
if (auto err = parseIq(std::move(domResult))) {
- warning("Could not enable message carbons: " % err->text());
+ warning("Could not enable message carbons: " % err->description);
} else {
info("Message Carbons enabled.");
}