aboutsummaryrefslogtreecommitdiff
path: root/src/server/QXmppServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/QXmppServer.cpp')
-rw-r--r--src/server/QXmppServer.cpp90
1 files changed, 50 insertions, 40 deletions
diff --git a/src/server/QXmppServer.cpp b/src/server/QXmppServer.cpp
index 3eacfbd3..35b0d2ad 100644
--- a/src/server/QXmppServer.cpp
+++ b/src/server/QXmppServer.cpp
@@ -1,25 +1,6 @@
-/*
- * Copyright (C) 2008-2021 The QXmpp developers
- *
- * Author:
- * Jeremy Lainé
- *
- * Source:
- * https://github.com/qxmpp-project/qxmpp
- *
- * This file is a part of QXmpp library.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- */
+// SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
#include "QXmppServer.h"
@@ -145,8 +126,9 @@ bool QXmppServerPrivate::routeData(const QString &to, const QByteArray &data)
}
// send data
- for (auto *conn : found)
+ for (auto *conn : std::as_const(found)) {
QMetaObject::invokeMethod(conn, "sendData", Q_ARG(QByteArray, data));
+ }
return !found.isEmpty();
} else if (!serversForServers.isEmpty()) {
@@ -172,7 +154,7 @@ bool QXmppServerPrivate::routeData(const QString &to, const QByteArray &data)
// add stream
outgoingServers.insert(conn);
- q->setGauge("outgoing-server.count", outgoingServers.size());
+ emit q->setGauge("outgoing-server.count", outgoingServers.size());
// queue data and connect to remote server
QMetaObject::invokeMethod(conn, "queueData", Q_ARG(QByteArray, data));
@@ -259,7 +241,8 @@ void QXmppServerPrivate::warning(const QString &message)
void QXmppServerPrivate::loadExtensions(QXmppServer *server)
{
if (!loaded) {
- for (auto *object : QPluginLoader::staticInstances()) {
+ const auto pluginLoaders = QPluginLoader::staticInstances();
+ for (auto *object : pluginLoaders) {
auto *plugin = qobject_cast<QXmppServerPlugin *>(object);
if (!plugin)
continue;
@@ -277,9 +260,10 @@ void QXmppServerPrivate::loadExtensions(QXmppServer *server)
void QXmppServerPrivate::startExtensions()
{
if (!started) {
- for (auto *extension : extensions)
+ for (auto *extension : std::as_const(extensions)) {
if (!extension->start())
warning(QString("Could not start extension %1").arg(extension->extensionName()));
+ }
started = true;
}
}
@@ -446,8 +430,12 @@ void QXmppServer::addCaCertificates(const QString &path)
}
// reconfigure servers
- for (auto *server : d->serversForClients + d->serversForServers)
+ for (auto *server : std::as_const(d->serversForClients)) {
+ server->addCaCertificates(d->caCertificates);
+ }
+ for (auto *server : std::as_const(d->serversForServers)) {
server->addCaCertificates(d->caCertificates);
+ }
}
/// Sets the path for the local SSL certificate.
@@ -469,8 +457,12 @@ void QXmppServer::setLocalCertificate(const QString &path)
}
// reconfigure servers
- for (auto *server : d->serversForClients + d->serversForServers)
+ for (auto *server : std::as_const(d->serversForClients)) {
server->setLocalCertificate(d->localCertificate);
+ }
+ for (auto *server : std::as_const(d->serversForServers)) {
+ server->setLocalCertificate(d->localCertificate);
+ }
}
///
@@ -485,8 +477,12 @@ void QXmppServer::setLocalCertificate(const QSslCertificate &certificate)
d->localCertificate = certificate;
// reconfigure servers
- for (auto *server : d->serversForClients + d->serversForServers)
+ for (auto *server : std::as_const(d->serversForClients)) {
server->setLocalCertificate(d->localCertificate);
+ }
+ for (auto *server : std::as_const(d->serversForServers)) {
+ server->setLocalCertificate(d->localCertificate);
+ }
}
/// Sets the path for the local SSL private key.
@@ -508,8 +504,12 @@ void QXmppServer::setPrivateKey(const QString &path)
}
// reconfigure servers
- for (auto *server : d->serversForClients + d->serversForServers)
+ for (auto *server : std::as_const(d->serversForClients)) {
server->setPrivateKey(d->privateKey);
+ }
+ for (auto *server : std::as_const(d->serversForServers)) {
+ server->setPrivateKey(d->privateKey);
+ }
}
///
@@ -524,8 +524,12 @@ void QXmppServer::setPrivateKey(const QSslKey &key)
d->privateKey = key;
// reconfigure servers
- for (auto *server : d->serversForClients + d->serversForServers)
+ for (auto *server : std::as_const(d->serversForClients)) {
server->setPrivateKey(d->privateKey);
+ }
+ for (auto *server : std::as_const(d->serversForServers)) {
+ server->setPrivateKey(d->privateKey);
+ }
}
/// Listen for incoming XMPP client connections.
@@ -572,10 +576,14 @@ bool QXmppServer::listenForClients(const QHostAddress &address, quint16 port)
void QXmppServer::close()
{
// prevent new connections
- for (auto *server : d->serversForClients + d->serversForServers) {
+ for (auto *server : std::as_const(d->serversForClients)) {
+ server->close();
+ }
+ for (auto *server : std::as_const(d->serversForServers)) {
server->close();
- delete server;
}
+ qDeleteAll(d->serversForClients);
+ qDeleteAll(d->serversForServers);
d->serversForClients.clear();
d->serversForServers.clear();
@@ -586,10 +594,12 @@ void QXmppServer::close()
QSetIterator<QXmppIncomingClient *> itr(d->incomingClients);
while (itr.hasNext())
itr.next()->disconnectFromHost();
- for (auto *stream : d->incomingServers)
+ for (auto *stream : std::as_const(d->incomingServers)) {
stream->disconnectFromHost();
- for (auto *stream : d->outgoingServers)
+ }
+ for (auto *stream : std::as_const(d->outgoingServers)) {
stream->disconnectFromHost();
+ }
}
/// Listen for incoming XMPP server connections.
@@ -682,7 +692,7 @@ void QXmppServer::addIncomingClient(QXmppIncomingClient *stream)
// add stream
d->incomingClients.insert(stream);
- setGauge("incoming-client.count", d->incomingClients.size());
+ emit setGauge("incoming-client.count", d->incomingClients.size());
}
/// Handle a new incoming TCP connection from a client.
@@ -758,7 +768,7 @@ void QXmppServer::_q_clientDisconnected()
emit clientDisconnected(jid);
// update counter
- setGauge("incoming-client.count", d->incomingClients.size());
+ emit setGauge("incoming-client.count", d->incomingClients.size());
}
}
@@ -804,7 +814,7 @@ void QXmppServer::_q_outgoingServerDisconnected()
if (d->outgoingServers.remove(outgoing)) {
outgoing->deleteLater();
- setGauge("outgoing-server.count", d->outgoingServers.size());
+ emit setGauge("outgoing-server.count", d->outgoingServers.size());
}
}
@@ -835,7 +845,7 @@ void QXmppServer::_q_serverConnection(QSslSocket *socket)
// add stream
d->incomingServers.insert(stream);
- setGauge("incoming-server.count", d->incomingServers.size());
+ emit setGauge("incoming-server.count", d->incomingServers.size());
}
/// Handle a stream disconnection for an incoming server.
@@ -848,7 +858,7 @@ void QXmppServer::_q_serverDisconnected()
if (d->incomingServers.remove(incoming)) {
incoming->deleteLater();
- setGauge("incoming-server.count", d->incomingServers.size());
+ emit setGauge("incoming-server.count", d->incomingServers.size());
}
}