-
Notifications
You must be signed in to change notification settings - Fork 197
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Set stream errors to be ignored during account creation/deletion
https://xmpp.org/extensions/xep-0077.html#usecases-cancel specifies the usage of the stream error <not-authorized/>. That is now handled as a valid response to the account deletion request instead of a result IQ stanza or in addition to it. The same applies to the stream error <conflict> since some servers send that instead of the <not-authorized/> stream error. There are servers closing the connection during account creation with a <connection-timeout/> stream error. That is now ignored.
- Loading branch information
Showing
5 changed files
with
53 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
// SPDX-FileCopyrightText: 2009 Manjeet Dahiya <[email protected]> | ||
// SPDX-FileCopyrightText: 2019 Linus Jahn <[email protected]> | ||
// SPDX-FileCopyrightText: 2023 Melvin Keskin <[email protected]> | ||
// | ||
// SPDX-License-Identifier: LGPL-2.1-or-later | ||
|
||
|
@@ -123,6 +124,13 @@ QStringList QXmppClientPrivate::discoveryFeatures() | |
|
||
void QXmppClientPrivate::onErrorOccurred(const QString &text, const QXmppOutgoingClient::ConnectionError &err, QXmppClient::Error oldError) | ||
{ | ||
// Skip stream errors that are valid during special procedures such as account | ||
// creation/deletion. | ||
if (const auto streamError = std::get_if<QXmpp::StreamError>(&err); | ||
streamError && ignoredStreamErrors.contains(*streamError)) { | ||
return; | ||
} | ||
|
||
if (q->configuration().autoReconnectionEnabled()) { | ||
if (oldError == QXmppClient::XmppStreamError) { | ||
// if we receive a resource conflict, inhibit reconnection | ||
|
@@ -931,6 +939,18 @@ bool QXmppClient::injectMessage(QXmppMessage &&message) | |
return handled; | ||
} | ||
|
||
/// | ||
/// Sets stream errors that are ignored if they occur. | ||
/// | ||
/// \param errors stream errors to be ignored | ||
/// | ||
/// \since QXmpp 1.9 | ||
/// | ||
void QXmppClient::setIgnoredStreamErrors(const QVector<QXmpp::StreamError> &errors) | ||
{ | ||
d->ignoredStreamErrors = errors; | ||
} | ||
|
||
/// | ||
/// Give extensions a chance to handle incoming stanzas. | ||
/// | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
// SPDX-FileCopyrightText: 2009 Manjeet Dahiya <[email protected]> | ||
// SPDX-FileCopyrightText: 2019 Linus Jahn <[email protected]> | ||
// SPDX-FileCopyrightText: 2023 Melvin Keskin <[email protected]> | ||
// | ||
// SPDX-License-Identifier: LGPL-2.1-or-later | ||
|
||
|
@@ -11,6 +12,7 @@ | |
#include "QXmppPresence.h" | ||
#include "QXmppSendResult.h" | ||
#include "QXmppSendStanzaParams.h" | ||
#include "QXmppStreamError.h" | ||
|
||
#include <memory> | ||
#include <variant> | ||
|
@@ -321,6 +323,8 @@ public Q_SLOTS: | |
void injectIq(const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata); | ||
bool injectMessage(QXmppMessage &&message); | ||
|
||
void setIgnoredStreamErrors(const QVector<QXmpp::StreamError> &); | ||
|
||
private Q_SLOTS: | ||
void _q_elementReceived(const QDomElement &element, bool &handled); | ||
void _q_reconnect(); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
// SPDX-FileCopyrightText: 2020 Manjeet Dahiya <[email protected]> | ||
// SPDX-FileCopyrightText: 2020 Linus Jahn <[email protected]> | ||
// SPDX-FileCopyrightText: 2023 Melvin Keskin <[email protected]> | ||
// | ||
// SPDX-License-Identifier: LGPL-2.1-or-later | ||
|
||
|
@@ -40,6 +41,7 @@ class QXmppClientPrivate | |
QXmppLogger *logger; | ||
/// Pointer to the XMPP stream | ||
QXmppOutgoingClient *stream; | ||
QVector<QXmpp::StreamError> ignoredStreamErrors; | ||
|
||
QXmppE2eeExtension *encryptionExtension; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters