From: Manuel Nickschas Date: Sun, 15 Mar 2020 19:18:20 +0000 (+0100) Subject: ssl: Use Pending Connections mechanism for SslServer X-Git-Tag: test-01~7 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=b62292bbe3f21887dc5ee4353ca9cf675f9aa3f3;hp=1400ec302022bfaff36e0fd65951085db7ef28f2 ssl: Use Pending Connections mechanism for SslServer Since Qt 4.7, it is no longer necessary to manage incoming connections manually in specializations of QTcpServer. Instead, newly created sockets can be added to the internal queue. --- diff --git a/src/core/sslserver.cpp b/src/core/sslserver.cpp index 9fceddd8..f7d35c34 100644 --- a/src/core/sslserver.cpp +++ b/src/core/sslserver.cpp @@ -57,28 +57,19 @@ SslServer::SslServer(QObject* parent) } } -QTcpSocket* SslServer::nextPendingConnection() -{ - if (_pendingConnections.isEmpty()) - return nullptr; - else - return _pendingConnections.takeFirst(); -} - void SslServer::incomingConnection(qintptr socketDescriptor) { - auto* serverSocket = new QSslSocket(this); - if (serverSocket->setSocketDescriptor(socketDescriptor)) { + auto* socket = new QSslSocket(this); + if (socket->setSocketDescriptor(socketDescriptor)) { if (isCertValid()) { - serverSocket->setLocalCertificate(_cert); - serverSocket->setPrivateKey(_key); - serverSocket->addCaCertificates(_ca); + socket->setLocalCertificate(_cert); + socket->setPrivateKey(_key); + socket->addCaCertificates(_ca); } - _pendingConnections << serverSocket; - emit newConnection(); + addPendingConnection(socket); } else { - delete serverSocket; + delete socket; } } diff --git a/src/core/sslserver.h b/src/core/sslserver.h index d91f28cf..eead9bfe 100644 --- a/src/core/sslserver.h +++ b/src/core/sslserver.h @@ -21,7 +21,6 @@ #pragma once #include -#include #include #include #include @@ -35,9 +34,6 @@ class SslServer : public QTcpServer public: SslServer(QObject* parent = nullptr); - bool hasPendingConnections() const override { return !_pendingConnections.isEmpty(); } - QTcpSocket* nextPendingConnection() override; - const QSslCertificate& certificate() const { return _cert; } const QSslKey& key() const { return _key; } bool isCertValid() const { return _isCertValid; } @@ -73,7 +69,6 @@ private: MetricsServer* _metricsServer{nullptr}; - QLinkedList _pendingConnections; QSslCertificate _cert; QSslKey _key; QList _ca;