diff --git a/swift/apple/FirezoneNetworkExtension/Adapter.swift b/swift/apple/FirezoneNetworkExtension/Adapter.swift index 7bea788ca..32c4fb56a 100644 --- a/swift/apple/FirezoneNetworkExtension/Adapter.swift +++ b/swift/apple/FirezoneNetworkExtension/Adapter.swift @@ -448,7 +448,22 @@ extension Adapter: CallbackHandlerDelegate { let resolvers = resetToSystemDNSGettingBindResolvers() #endif - return resolvers + var parsedResolvers: [String] = [] + + // Normalize addresses to remove any possible scope suffixes + resolvers.forEach { stringAddress in + if let ipv4Address = IPv4Address(stringAddress) { + return parsedResolvers.append("\(ipv4Address)") + } + + if let ipv6Address = IPv6Address(stringAddress) { + return parsedResolvers.append("\(ipv6Address)") + } + + Log.warning("IP address \(stringAddress) did not parse as either IPv4 or IPv6") + } + + return parsedResolvers } } diff --git a/website/src/components/Changelog/Apple.tsx b/website/src/components/Changelog/Apple.tsx index de49c9006..60af8e57e 100644 --- a/website/src/components/Changelog/Apple.tsx +++ b/website/src/components/Changelog/Apple.tsx @@ -24,7 +24,13 @@ export default function Apple() { return ( {/* When you cut a release, remove any solved issues from the "known issues" lists over in `client-apps`. This must not be done when the issue's PR merges. */} - + + + Fixes a rare bug that could prevent certain IPv6 DNS upstream + resolvers from being used if they contained an interface scope + specifier. + + Finalizes the managed configuration support for the macOS client. For