diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/ssl/qsslsocket.cpp | 5 | ||||
-rw-r--r-- | src/network/ssl/qtlsbackend.cpp | 11 | ||||
-rw-r--r-- | src/network/ssl/qtlsbackend_openssl.cpp | 11 | ||||
-rw-r--r-- | src/network/ssl/qtlsbackend_openssl_p.h | 1 | ||||
-rw-r--r-- | src/network/ssl/qtlsbackend_p.h | 2 |
5 files changed, 28 insertions, 2 deletions
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index 83383db8ca..9a02f439ab 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -2844,6 +2844,11 @@ QTlsBackend *QSslSocketPrivate::tlsBackendInUse() if (!activeBackendName.size()) activeBackendName = QTlsBackend::defaultBackendName(); + if (!activeBackendName.size()) { + qCWarning(lcSsl, "No functional TLS backend was found"); + return nullptr; + } + return tlsBackend = QTlsBackend::findBackend(activeBackendName); } diff --git a/src/network/ssl/qtlsbackend.cpp b/src/network/ssl/qtlsbackend.cpp index ac6d965bd3..1df462e362 100644 --- a/src/network/ssl/qtlsbackend.cpp +++ b/src/network/ssl/qtlsbackend.cpp @@ -110,8 +110,10 @@ public: return names; names.reserve(backends.size()); - for (const auto *factory : backends) - names.append(factory->backendName()); + for (const auto *backend : backends) { + if (backend->isValid()) + names.append(backend->backendName()); + } return names; } @@ -198,6 +200,11 @@ QTlsBackend::~QTlsBackend() backends->removeBackend(this); } +bool QTlsBackend::isValid() const +{ + return true; +} + QString QTlsBackend::backendName() const { return QStringLiteral("dummyTLS"); diff --git a/src/network/ssl/qtlsbackend_openssl.cpp b/src/network/ssl/qtlsbackend_openssl.cpp index b0dd920aed..e288498820 100644 --- a/src/network/ssl/qtlsbackend_openssl.cpp +++ b/src/network/ssl/qtlsbackend_openssl.cpp @@ -41,6 +41,10 @@ #include "qtlskey_openssl_p.h" #include "qx509_openssl_p.h" +// TLSTODO: Later, this code (ensure initialised, etc.) +// must move from the socket to backend. +#include "qsslsocket_p.h" +// #include "qsslsocket_openssl_symbols_p.h" #include <qssl.h> @@ -83,6 +87,13 @@ QString QTlsBackendOpenSSL::backendName() const return builtinBackendNames[nameIndexOpenSSL]; } +bool QTlsBackendOpenSSL::isValid() const +{ + // TLSTODO: backend should do initialization, + // not socket. + return QSslSocket::supportsSsl(); +} + QList<QSsl::SslProtocol> QTlsBackendOpenSSL::supportedProtocols() const { QList<QSsl::SslProtocol> protocols; diff --git a/src/network/ssl/qtlsbackend_openssl_p.h b/src/network/ssl/qtlsbackend_openssl_p.h index 67472980af..478e4762c2 100644 --- a/src/network/ssl/qtlsbackend_openssl_p.h +++ b/src/network/ssl/qtlsbackend_openssl_p.h @@ -68,6 +68,7 @@ public: static void clearErrorQueue(); private: QString backendName() const override; + bool isValid() const override; QList<QSsl::SslProtocol> supportedProtocols() const override; QList<QSsl::SupportedFeature> supportedFeatures() const override; diff --git a/src/network/ssl/qtlsbackend_p.h b/src/network/ssl/qtlsbackend_p.h index e077521b32..c1d5137ca3 100644 --- a/src/network/ssl/qtlsbackend_p.h +++ b/src/network/ssl/qtlsbackend_p.h @@ -195,6 +195,8 @@ public: QTlsBackend(); ~QTlsBackend() override; + virtual bool isValid() const; + virtual QString backendName() const = 0; virtual QList<QSsl::SslProtocol> supportedProtocols() const = 0; virtual QList<QSsl::SupportedFeature> supportedFeatures() const = 0; |