tst_http2: use the supportedFeatures() instead of macros

With the recent change, 'system' headers gone: not in the test code anymore,
so, for example OPENSSL_VERSION_NUMBER is undefined, making the test
to select a wrong code-path - 'h2c', instead of encrypted h2.

Pick-to: 6.2
Pick-to: 6.1
Change-Id: I3b201e21fac56875c9045c7463e2ae69af4c6470
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
bb10
Timur Pocheptsov 2021-06-24 17:32:24 +02:00
parent d705d7e5d6
commit 13ce568b76
2 changed files with 18 additions and 10 deletions

View File

@ -318,8 +318,12 @@ QList<QSsl::SupportedFeature> QTlsBackendOpenSSL::supportedFeatures() const
QList<QSsl::SupportedFeature> features;
features << QSsl::SupportedFeature::CertificateVerification;
#if !defined(OPENSSL_NO_TLSEXT)
features << QSsl::SupportedFeature::ClientSideAlpn;
features << QSsl::SupportedFeature::ServerSideAlpn;
#endif // !OPENSSL_NO_TLSEXT
features << QSsl::SupportedFeature::Ocsp;
features << QSsl::SupportedFeature::Psk;
features << QSsl::SupportedFeature::SessionTicket;

View File

@ -26,6 +26,8 @@
**
****************************************************************************/
#include <QtNetwork/qtnetworkglobal.h>
#include <QTest>
#include <QTestEventLoop>
#include <QScopeGuard>
@ -40,6 +42,10 @@
#include <QtNetwork/qnetworkrequest.h>
#include <QtNetwork/qnetworkreply.h>
#if QT_CONFIG(ssl)
#include <QtNetwork/qsslsocket.h>
#endif
#include <QtCore/qglobal.h>
#include <QtCore/qobject.h>
#include <QtCore/qthread.h>
@ -51,16 +57,6 @@
#include <QtTest/private/qemulationdetector_p.h>
#if (!defined(QT_NO_OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_TLSEXT)) \
|| QT_CONFIG(schannel)
// HTTP/2 over TLS requires ALPN/NPN to negotiate the protocol version.
const bool clearTextHTTP2 = false;
#else
// No ALPN/NPN support to negotiate HTTP/2, we'll use cleartext 'h2c' with
// a protocol upgrade procedure.
const bool clearTextHTTP2 = true;
#endif
Q_DECLARE_METATYPE(H2Type)
Q_DECLARE_METATYPE(QNetworkRequest::Attribute)
@ -184,6 +180,8 @@ struct ServerDeleter
}
};
bool clearTextHTTP2 = false;
using ServerPtr = QScopedPointer<Http2Server, ServerDeleter>;
H2Type defaultConnectionType()
@ -196,6 +194,12 @@ H2Type defaultConnectionType()
tst_Http2::tst_Http2()
: workerThread(new QThread)
{
#if QT_CONFIG(ssl)
const auto features = QSslSocket::supportedFeatures();
clearTextHTTP2 = !features.contains(QSsl::SupportedFeature::ServerSideAlpn);
#else
clearTextHTTP2 = true;
#endif
workerThread->start();
}