From ec406b84fb6021be8da1b6488e7b082242c68692 Mon Sep 17 00:00:00 2001 From: Tomas Weinfurt Date: Wed, 26 Jul 2023 17:16:37 -0700 Subject: [PATCH] handle QUIC_STATUS_ADDRESS_NOT_AVAILABLE (#89362) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * handle QUIC_STATUS_ADDRESS_NOT_AVAILABLE * Update src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic.cs Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com> --------- Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com> --- .../System.Net.Quic/src/System/Net/Quic/Internal/ThrowHelper.cs | 1 + src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic.cs | 1 + .../src/System/Net/Quic/Interop/msquic_generated_linux.cs | 3 +++ .../src/System/Net/Quic/Interop/msquic_generated_macos.cs | 3 +++ .../src/System/Net/Quic/Interop/msquic_generated_windows.cs | 3 +++ 5 files changed, 11 insertions(+) diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/ThrowHelper.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/ThrowHelper.cs index 618985e..ec677f9 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/ThrowHelper.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/ThrowHelper.cs @@ -79,6 +79,7 @@ internal static class ThrowHelper if (status == QUIC_STATUS_INVALID_ADDRESS) return new SocketException((int)SocketError.AddressNotAvailable); if (status == QUIC_STATUS_ADDRESS_IN_USE) return new SocketException((int)SocketError.AddressAlreadyInUse); if (status == QUIC_STATUS_UNREACHABLE) return new SocketException((int)SocketError.HostUnreachable); + if (status == QUIC_STATUS_ADDRESS_NOT_AVAILABLE) return new SocketException((int)SocketError.AddressFamilyNotSupported); // // TLS and certificate errors throw AuthenticationException to match SslStream diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic.cs index 658b132..26296b1 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic.cs @@ -84,6 +84,7 @@ namespace Microsoft.Quic public static int QUIC_STATUS_CERT_EXPIRED => OperatingSystem.IsWindows() ? MsQuic_Windows.QUIC_STATUS_CERT_EXPIRED : (OperatingSystem.IsLinux() || OperatingSystem.IsAndroid()) ? MsQuic_Linux.QUIC_STATUS_CERT_EXPIRED : MsQuic_MacOS.QUIC_STATUS_CERT_EXPIRED; public static int QUIC_STATUS_CERT_UNTRUSTED_ROOT => OperatingSystem.IsWindows() ? MsQuic_Windows.QUIC_STATUS_CERT_UNTRUSTED_ROOT : (OperatingSystem.IsLinux() || OperatingSystem.IsAndroid()) ? MsQuic_Linux.QUIC_STATUS_CERT_UNTRUSTED_ROOT : MsQuic_MacOS.QUIC_STATUS_CERT_UNTRUSTED_ROOT; public static int QUIC_STATUS_CERT_NO_CERT => OperatingSystem.IsWindows() ? MsQuic_Windows.QUIC_STATUS_CERT_NO_CERT : (OperatingSystem.IsLinux() || OperatingSystem.IsAndroid()) ? MsQuic_Linux.QUIC_STATUS_CERT_NO_CERT : MsQuic_MacOS.QUIC_STATUS_CERT_NO_CERT; + public static int QUIC_STATUS_ADDRESS_NOT_AVAILABLE => OperatingSystem.IsWindows() ? MsQuic_Windows.QUIC_STATUS_ADDRESS_NOT_AVAILABLE : (OperatingSystem.IsLinux() || OperatingSystem.IsAndroid()) ? MsQuic_Linux.QUIC_STATUS_ADDRESS_NOT_AVAILABLE : MsQuic_MacOS.QUIC_STATUS_ADDRESS_NOT_AVAILABLE; public static int QUIC_ADDRESS_FAMILY_UNSPEC => OperatingSystem.IsWindows() ? MsQuic_Windows.QUIC_ADDRESS_FAMILY_UNSPEC : (OperatingSystem.IsLinux() || OperatingSystem.IsAndroid()) ? MsQuic_Linux.QUIC_ADDRESS_FAMILY_UNSPEC : MsQuic_MacOS.QUIC_ADDRESS_FAMILY_UNSPEC; public static int QUIC_ADDRESS_FAMILY_INET => OperatingSystem.IsWindows() ? MsQuic_Windows.QUIC_ADDRESS_FAMILY_INET : (OperatingSystem.IsLinux() || OperatingSystem.IsAndroid()) ? MsQuic_Linux.QUIC_ADDRESS_FAMILY_INET : MsQuic_MacOS.QUIC_ADDRESS_FAMILY_INET; diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_linux.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_linux.cs index f8c8e91..f37674b 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_linux.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_linux.cs @@ -114,6 +114,9 @@ namespace Microsoft.Quic [NativeTypeName("#define QUIC_STATUS_CERT_NO_CERT QUIC_STATUS_CERT_ERROR(3)")] public const int QUIC_STATUS_CERT_NO_CERT = ((int)(3) + 512 + 200000000); + [NativeTypeName("#define QUIC_STATUS_ADDRESS_NOT_AVAILABLE ((QUIC_STATUS)EADDRNOTAVAIL)")] + public const int QUIC_STATUS_ADDRESS_NOT_AVAILABLE = ((int)(0x63)); + public const int QUIC_ADDRESS_FAMILY_UNSPEC = 0; public const int QUIC_ADDRESS_FAMILY_INET = 2; public const int QUIC_ADDRESS_FAMILY_INET6 = 10; diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_macos.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_macos.cs index 26b32f6..21a9282 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_macos.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_macos.cs @@ -114,6 +114,9 @@ namespace Microsoft.Quic [NativeTypeName("#define QUIC_STATUS_CERT_NO_CERT QUIC_STATUS_CERT_ERROR(3)")] public const int QUIC_STATUS_CERT_NO_CERT = ((int)(3) + 512 + 200000000); + [NativeTypeName("#define QUIC_STATUS_ADDRESS_NOT_AVAILABLE ((QUIC_STATUS)EADDRNOTAVAIL)")] + public const int QUIC_STATUS_ADDRESS_NOT_AVAILABLE = ((int)(0x31)); + public const int QUIC_ADDRESS_FAMILY_UNSPEC = 0; public const int QUIC_ADDRESS_FAMILY_INET = 2; public const int QUIC_ADDRESS_FAMILY_INET6 = 30; diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_windows.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_windows.cs index c9ceebc..b8ee137 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_windows.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Interop/msquic_generated_windows.cs @@ -114,6 +114,9 @@ namespace Microsoft.Quic [NativeTypeName("#define QUIC_STATUS_CERT_NO_CERT SEC_E_NO_CREDENTIALS")] public const int QUIC_STATUS_CERT_NO_CERT = unchecked((int)(0x8009030E)); + [NativeTypeName("#define QUIC_STATUS_ADDRESS_NOT_AVAILABLE QUIC_STATUS_HRESULT_FROM_WIN32(WSAEAFNOSUPPORT)")] + public const int QUIC_STATUS_ADDRESS_NOT_AVAILABLE = unchecked((int)(((10047) & 0x0000FFFF) | (7 << 16) | 0x80000000)); + public const int QUIC_ADDRESS_FAMILY_UNSPEC = 0; public const int QUIC_ADDRESS_FAMILY_INET = 2; public const int QUIC_ADDRESS_FAMILY_INET6 = 23; -- 2.7.4