summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2022-03-03 13:31:18 +0100
committerMårten Nordheim <marten.nordheim@qt.io>2022-03-03 14:07:50 +0000
commitdf23e7697e9d7575b50a21106291370d70074471 (patch)
tree5c9b300d420bce3b1096aa383a7c7ee97ffba092
parent2d946126342e585de4426dc0231e8edd30b0adf9 (diff)
QSslServer: Handle socket errors
Close SSL sockets on socket errors. Such errors occur for example when the supplied SSL certificate is too short. Without error handling the incoming connection simply hangs. Fixes: QTBUG-100533 Change-Id: I326a8c19a56852660e8e199035a014d7c9d12327 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
-rw-r--r--src/sslserver/qsslserver.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/sslserver/qsslserver.cpp b/src/sslserver/qsslserver.cpp
index b07f04b..45c4826 100644
--- a/src/sslserver/qsslserver.cpp
+++ b/src/sslserver/qsslserver.cpp
@@ -52,6 +52,11 @@ QSslServer::~QSslServer() = default;
void QSslServer::incomingConnection(qintptr handle)
{
QSslSocket *socket = new QSslSocket(this);
+ connect(socket, &QAbstractSocket::errorOccurred, socket, [socket]() {
+ qCWarning(lcSS, "Socket error: %s", qPrintable(socket->errorString()));
+ socket->close();
+ });
+
connect(socket, QOverload<const QList<QSslError>&>::of(&QSslSocket::sslErrors),
[this, socket](const QList<QSslError> &errors) {
for (auto &err: errors)