diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs index b1085ee9663ec..943f1f37f0b0f 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs @@ -2090,12 +2090,9 @@ public IAsyncResult BeginConnect(EndPoint remoteEP, AsyncCallback? callback, obj private bool CanUseConnectEx(EndPoint remoteEP) { - return (_socketType == SocketType.Stream) && - (_rightEndPoint != null || remoteEP.GetType() == typeof(IPEndPoint)); + return _socketType == SocketType.Stream && remoteEP is IPEndPoint; } - - internal IAsyncResult UnsafeBeginConnect(EndPoint remoteEP, AsyncCallback? callback, object? state, bool flowContext = false) { if (CanUseConnectEx(remoteEP)) diff --git a/src/libraries/System.Net.Sockets/tests/FunctionalTests/Connect.cs b/src/libraries/System.Net.Sockets/tests/FunctionalTests/Connect.cs index 6deacc4bcaf2e..9f919c82f2872 100644 --- a/src/libraries/System.Net.Sockets/tests/FunctionalTests/Connect.cs +++ b/src/libraries/System.Net.Sockets/tests/FunctionalTests/Connect.cs @@ -42,6 +42,22 @@ public async Task Connect_Udp_Success(IPAddress listenAt) Assert.True(client.Connected); } + [Theory] + [MemberData(nameof(Loopbacks))] + public async Task Connect_Dns_Success(IPAddress listenAt) + { + int port; + using (SocketTestServer.SocketTestServerFactory(SocketImplementationType.Async, listenAt, out port)) + { + using (Socket client = new Socket(listenAt.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) + { + Task connectTask = ConnectAsync(client, new DnsEndPoint("localhost", port)); + await connectTask; + Assert.True(client.Connected); + } + } + } + [OuterLoop] [Theory] [MemberData(nameof(Loopbacks))]