diff options
author | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2022-03-03 13:31:18 +0100 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2022-03-03 14:07:50 +0000 |
commit | df23e7697e9d7575b50a21106291370d70074471 (patch) | |
tree | 5c9b300d420bce3b1096aa383a7c7ee97ffba092 | |
parent | 2d946126342e585de4426dc0231e8edd30b0adf9 (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.cpp | 5 |
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) |