A follow-up fix for potentially missing OpenSSL symbol resolving
This patch also adds 'isValid()' to know if a backend from a plugin is in working condition (say, there is 'openssl' plugin but no or old openssl libraries in some system). Pick-to: dev Task-number: QTBUG-65922 Change-Id: I0b846536a069ca8c5a94e7191f11c81bac6ad527 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
64c47d7f61
commit
573ba145d7
@ -2844,6 +2844,11 @@ QTlsBackend *QSslSocketPrivate::tlsBackendInUse()
|
|||||||
if (!activeBackendName.size())
|
if (!activeBackendName.size())
|
||||||
activeBackendName = QTlsBackend::defaultBackendName();
|
activeBackendName = QTlsBackend::defaultBackendName();
|
||||||
|
|
||||||
|
if (!activeBackendName.size()) {
|
||||||
|
qCWarning(lcSsl, "No functional TLS backend was found");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return tlsBackend = QTlsBackend::findBackend(activeBackendName);
|
return tlsBackend = QTlsBackend::findBackend(activeBackendName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,8 +110,10 @@ public:
|
|||||||
return names;
|
return names;
|
||||||
|
|
||||||
names.reserve(backends.size());
|
names.reserve(backends.size());
|
||||||
for (const auto *factory : backends)
|
for (const auto *backend : backends) {
|
||||||
names.append(factory->backendName());
|
if (backend->isValid())
|
||||||
|
names.append(backend->backendName());
|
||||||
|
}
|
||||||
|
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
@ -198,6 +200,11 @@ QTlsBackend::~QTlsBackend()
|
|||||||
backends->removeBackend(this);
|
backends->removeBackend(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QTlsBackend::isValid() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
QString QTlsBackend::backendName() const
|
QString QTlsBackend::backendName() const
|
||||||
{
|
{
|
||||||
return QStringLiteral("dummyTLS");
|
return QStringLiteral("dummyTLS");
|
||||||
|
@ -41,6 +41,10 @@
|
|||||||
#include "qtlskey_openssl_p.h"
|
#include "qtlskey_openssl_p.h"
|
||||||
#include "qx509_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 "qsslsocket_openssl_symbols_p.h"
|
||||||
|
|
||||||
#include <qssl.h>
|
#include <qssl.h>
|
||||||
@ -83,6 +87,13 @@ QString QTlsBackendOpenSSL::backendName() const
|
|||||||
return builtinBackendNames[nameIndexOpenSSL];
|
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> QTlsBackendOpenSSL::supportedProtocols() const
|
||||||
{
|
{
|
||||||
QList<QSsl::SslProtocol> protocols;
|
QList<QSsl::SslProtocol> protocols;
|
||||||
|
@ -68,6 +68,7 @@ public:
|
|||||||
static void clearErrorQueue();
|
static void clearErrorQueue();
|
||||||
private:
|
private:
|
||||||
QString backendName() const override;
|
QString backendName() const override;
|
||||||
|
bool isValid() const override;
|
||||||
|
|
||||||
QList<QSsl::SslProtocol> supportedProtocols() const override;
|
QList<QSsl::SslProtocol> supportedProtocols() const override;
|
||||||
QList<QSsl::SupportedFeature> supportedFeatures() const override;
|
QList<QSsl::SupportedFeature> supportedFeatures() const override;
|
||||||
|
@ -195,6 +195,8 @@ public:
|
|||||||
QTlsBackend();
|
QTlsBackend();
|
||||||
~QTlsBackend() override;
|
~QTlsBackend() override;
|
||||||
|
|
||||||
|
virtual bool isValid() const;
|
||||||
|
|
||||||
virtual QString backendName() const = 0;
|
virtual QString backendName() const = 0;
|
||||||
virtual QList<QSsl::SslProtocol> supportedProtocols() const = 0;
|
virtual QList<QSsl::SslProtocol> supportedProtocols() const = 0;
|
||||||
virtual QList<QSsl::SupportedFeature> supportedFeatures() const = 0;
|
virtual QList<QSsl::SupportedFeature> supportedFeatures() const = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user