summaryrefslogtreecommitdiffstats
path: root/src/network/ssl
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2022-08-16 15:51:10 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2022-08-17 21:55:19 +0200
commit1ee75e47401d0ed4646d4fef7ce8e09eb90f4d5e (patch)
tree2e37ee0c069792204700950eba9f3e55e848c1dd /src/network/ssl
parent29a1fe72a0888eb1f22a5ae9fe1b3d87257f3246 (diff)
QSslServer: Make sure maxPendingConnections applies to all sockets
Not just the ones we added to the pending sockets list Pick-to: 6.4 Change-Id: I0a0016fe39df7ca2fc3f0c4e4111195bc6d90198 Reviewed-by: Konrad Kujawa <konrad.kujawa@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/network/ssl')
-rw-r--r--src/network/ssl/qsslserver.cpp6
-rw-r--r--src/network/ssl/qsslserver_p.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/src/network/ssl/qsslserver.cpp b/src/network/ssl/qsslserver.cpp
index 2ec42bf3ce..f96fccce82 100644
--- a/src/network/ssl/qsslserver.cpp
+++ b/src/network/ssl/qsslserver.cpp
@@ -350,6 +350,12 @@ void QSslServerPrivate::removeSocketData(quintptr socket)
}
}
+int QSslServerPrivate::totalPendingConnections() const
+{
+ // max pending connections is int, so this cannot exceed that
+ return QTcpServerPrivate::totalPendingConnections() + int(socketData.size());
+}
+
void QSslServerPrivate::checkClientHelloAndContinue()
{
Q_Q(QSslServer);
diff --git a/src/network/ssl/qsslserver_p.h b/src/network/ssl/qsslserver_p.h
index 71359f6cff..1b90d35d48 100644
--- a/src/network/ssl/qsslserver_p.h
+++ b/src/network/ssl/qsslserver_p.h
@@ -38,6 +38,7 @@ public:
void initializeHandshakeProcess(QSslSocket *socket);
void removeSocketData(quintptr socket);
void handleHandshakeTimedOut(QSslSocket *socket);
+ int totalPendingConnections() const override;
struct SocketData {
QMetaObject::Connection readyReadConnection;