From 43d4a7aae13161bf52b3822a3766e940b1ec56e4 Mon Sep 17 00:00:00 2001 From: Aryan Shah Date: Mon, 19 Oct 2026 10:56:11 +0100 Subject: [PATCH 1/3] Adopt new swift-nio-quic configuration API --- Package.swift | 3 +- .../HTTP3/HTTP3+QUICConfiguration.swift | 38 +++++++++---------- .../Utilities/Helpers.swift | 8 ++-- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/Package.swift b/Package.swift index 3b7b9de..37f1f26 100644 --- a/Package.swift +++ b/Package.swift @@ -101,7 +101,8 @@ let package = Package( .package(url: "https://github.com/apple/swift-certificates.git", from: "1.19.3"), .package(url: "https://github.com/apple/swift-log.git", from: "1.14.0"), .package(url: "https://github.com/apple/swift-nio.git", from: "2.103.0"), - .package(url: "https://github.com/apple/swift-nio-quic.git", .upToNextMinor(from: "0.4.0")), + // TODO: Update once v0.6.0 is released. + .package(url: "https://github.com/apple/swift-nio-quic.git", branch: "main"), .package(url: "https://github.com/apple/swift-nio-quic-helpers.git", .upToNextMinor(from: "0.1.0")), .package(url: "https://github.com/apple/swift-nio-http3.git", .upToNextMinor(from: "0.3.0")), .package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.37.0"), diff --git a/Sources/NIOHTTPServer/Configuration/HTTP3/HTTP3+QUICConfiguration.swift b/Sources/NIOHTTPServer/Configuration/HTTP3/HTTP3+QUICConfiguration.swift index 545bb61..1f20487 100644 --- a/Sources/NIOHTTPServer/Configuration/HTTP3/HTTP3+QUICConfiguration.swift +++ b/Sources/NIOHTTPServer/Configuration/HTTP3/HTTP3+QUICConfiguration.swift @@ -207,13 +207,11 @@ extension NIOHTTPServerConfiguration.HTTP3 { } @available(anyAppleOS 27.0, *) -extension NIOQUIC.QUICConfiguration.QLogConfiguration { +extension NIOQUIC.QLogConfiguration { fileprivate init(_ configuration: NIOHTTPServerConfiguration.HTTP3.QUICConfiguration.QLogConfiguration) { - self.init( - path: configuration.path, - topic: configuration.topic, - description: configuration.description - ) + self.init(path: configuration.path) + self.topic = configuration.topic + self.description = configuration.description } } @@ -268,25 +266,25 @@ extension NIOQUIC.QUICConfiguration { _ config: NIOHTTPServerConfiguration.HTTP3.QUICConfiguration, authenticationConfiguration: NIOQUIC.AuthenticationConfiguration ) { - self = .server( + self = .forServer( // SwiftTLS currently just ignores the `serverName` sent in the ClientHello. See // https://github.com/apple/swift-nio-quic/issues/4. serverName: config.serverName, authenticationConfiguration: authenticationConfiguration, - keyExchangeGroup: .init(config.keyExchangeGroup), - applicationProtocols: ["h3"], - maxIdleTimeout: config.maxIdleTimeout, - initialMaxData: config.initialMaxData, - initialMaxStreamDataBidiLocal: config.initialMaxStreamDataBidirectionalLocal, - initialMaxStreamDataBidiRemote: config.initialMaxStreamDataBidirectionalRemote, - initialMaxStreamDataUni: config.initialMaxStreamDataUnidirectional, - initialMaxStreamsBidi: config.initialMaxStreamsBidirectional, - initialMaxStreamsUni: config.initialMaxStreamsUnidirectional, - keepAliveInterval: config.keepAliveInterval, - sendRetry: config.sendRetry, - keyLogPath: config.keyLogPath, - qLogConfiguration: config.qLogConfiguration.map { .init($0) } + applicationProtocols: ["h3"] ) + self.keyExchangeGroup = .init(config.keyExchangeGroup) + self.maxIdleTimeout = config.maxIdleTimeout + self.initialMaxData = config.initialMaxData + self.initialMaxStreamDataBidiLocal = config.initialMaxStreamDataBidirectionalLocal + self.initialMaxStreamDataBidiRemote = config.initialMaxStreamDataBidirectionalRemote + self.initialMaxStreamDataUni = config.initialMaxStreamDataUnidirectional + self.initialMaxStreamsBidi = config.initialMaxStreamsBidirectional + self.initialMaxStreamsUni = config.initialMaxStreamsUnidirectional + self.keepAliveInterval = config.keepAliveInterval + self.sendRetry = config.sendRetry + self.keyLogPath = config.keyLogPath + self.qLogConfiguration = config.qLogConfiguration.map { .init($0) } } #if UnstableHTTPDatagrams diff --git a/Tests/NIOHTTPServerTests/Utilities/Helpers.swift b/Tests/NIOHTTPServerTests/Utilities/Helpers.swift index 3a91472..b65c4da 100644 --- a/Tests/NIOHTTPServerTests/Utilities/Helpers.swift +++ b/Tests/NIOHTTPServerTests/Utilities/Helpers.swift @@ -135,11 +135,13 @@ extension QUICConfiguration { caPath: String?, maxDatagramFrameSize: Int = 65535 ) -> QUICConfiguration { - QUICConfiguration.client( + var configuration = QUICConfiguration.forClient( verificationConfiguration: .x509Certificates(trustRootsFilePath: caPath), - applicationProtocols: [NIOHTTPServer.HTTPVersion.http3.alpnIdentifier], - maxDatagramFrameSize: maxDatagramFrameSize + applicationProtocols: [NIOHTTPServer.HTTPVersion.http3.alpnIdentifier] ) + configuration.maxDatagramFrameSize = maxDatagramFrameSize + + return configuration } } #endif From 2489188fb54e0b050603d1bdc41c8f629a83f33c Mon Sep 17 00:00:00 2001 From: Aryan Shah Date: Mon, 19 Oct 2026 11:12:28 +0100 Subject: [PATCH 2/3] Update dependency version --- Package.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index 37f1f26..4fddcf1 100644 --- a/Package.swift +++ b/Package.swift @@ -101,8 +101,7 @@ let package = Package( .package(url: "https://github.com/apple/swift-certificates.git", from: "1.19.3"), .package(url: "https://github.com/apple/swift-log.git", from: "1.14.0"), .package(url: "https://github.com/apple/swift-nio.git", from: "2.103.0"), - // TODO: Update once v0.6.0 is released. - .package(url: "https://github.com/apple/swift-nio-quic.git", branch: "main"), + .package(url: "https://github.com/apple/swift-nio-quic.git", from: "0.6.0"), .package(url: "https://github.com/apple/swift-nio-quic-helpers.git", .upToNextMinor(from: "0.1.0")), .package(url: "https://github.com/apple/swift-nio-http3.git", .upToNextMinor(from: "0.3.0")), .package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.37.0"), From c8debe2e63182584aa65d8bf0dbbf29f22104e56 Mon Sep 17 00:00:00 2001 From: Aryan Shah Date: Mon, 19 Oct 2026 11:21:53 +0100 Subject: [PATCH 3/3] Keep `upToNextMinor` --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 4fddcf1..5dca7d2 100644 --- a/Package.swift +++ b/Package.swift @@ -101,7 +101,7 @@ let package = Package( .package(url: "https://github.com/apple/swift-certificates.git", from: "1.19.3"), .package(url: "https://github.com/apple/swift-log.git", from: "1.14.0"), .package(url: "https://github.com/apple/swift-nio.git", from: "2.103.0"), - .package(url: "https://github.com/apple/swift-nio-quic.git", from: "0.6.0"), + .package(url: "https://github.com/apple/swift-nio-quic.git", .upToNextMinor(from: "0.6.0")), .package(url: "https://github.com/apple/swift-nio-quic-helpers.git", .upToNextMinor(from: "0.1.0")), .package(url: "https://github.com/apple/swift-nio-http3.git", .upToNextMinor(from: "0.3.0")), .package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.37.0"),