SecureTransport - enable ALPN on macOS
Initially macOS SDK 10.13 had a missing symbol (only a function declaration in a header), while iOS, tvOS and watchOS SDKs all had the required symbol. Now it appears more recent SDK for macOS also has the function we need and thus we enable ALPN on macOS (as a result 'h2' protocol can now be negotiated as required by RFC 7540). [ChangeLog][QtNetwork][QSslSocket] Enable ALPN (and thus HTTP/2 negotiation) in SecureTransport backend (macOS). Change-Id: I65bd8262a9571a5495d11f7f5a29d150334cd09c Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
parent
2b33e0c272
commit
f8a5902800
@ -371,12 +371,12 @@ void QSslSocketBackendPrivate::continueHandshake()
|
||||
Q_Q(QSslSocket);
|
||||
connectionEncrypted = true;
|
||||
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_11_0, __TVOS_11_0, __WATCHOS_4_0)
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_13, __IPHONE_11_0, __TVOS_11_0, __WATCHOS_4_0)
|
||||
// Unlike OpenSSL, Secure Transport does not allow to negotiate protocols via
|
||||
// a callback during handshake. We can only set our list of preferred protocols
|
||||
// (and send it during handshake) and then receive what our peer has sent to us.
|
||||
// And here we can finally try to find a match (if any).
|
||||
if (__builtin_available(iOS 11.0, tvOS 11.0, watchOS 4.0, *)) {
|
||||
if (__builtin_available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *)) {
|
||||
const auto &requestedProtocols = configuration.nextAllowedProtocols;
|
||||
if (const int requestedCount = requestedProtocols.size()) {
|
||||
configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNone;
|
||||
@ -873,8 +873,8 @@ bool QSslSocketBackendPrivate::initSslContext()
|
||||
return false;
|
||||
}
|
||||
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_11_0, __TVOS_11_0, __WATCHOS_4_0)
|
||||
if (__builtin_available(iOS 11.0, tvOS 11.0, watchOS 4.0, *)) {
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_13, __IPHONE_11_0, __TVOS_11_0, __WATCHOS_4_0)
|
||||
if (__builtin_available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *)) {
|
||||
const auto protocolNames = configuration.nextAllowedProtocols;
|
||||
QCFType<CFMutableArrayRef> cfNames(CFArrayCreateMutable(nullptr, 0, &kCFTypeArrayCallBacks));
|
||||
if (cfNames) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user