diff options
Diffstat (limited to 'src/server/QXmppServer.cpp')
| -rw-r--r-- | src/server/QXmppServer.cpp | 90 |
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()); } } |
