From 2b197459c6e141bfef3e6f23b714ee9c1f6b1af9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 11:12:33 +0100 Subject: [PATCH 1/3] [9.0] Guard against empty Accept address (#111366) * guard agains empty Accept address * remove assert * add comment --------- Co-authored-by: wfurt --- .../System.Net.Sockets/src/System/Net/Sockets/Socket.cs | 4 ++-- .../src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 e1f19c03d6d0ad..817a8221d6bf0f 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 @@ -3602,7 +3602,7 @@ internal void InternalSetBlocking(bool desired) } // CreateAcceptSocket - pulls unmanaged results and assembles them into a new Socket object. - internal Socket CreateAcceptSocket(SafeSocketHandle fd, EndPoint remoteEP) + internal Socket CreateAcceptSocket(SafeSocketHandle fd, EndPoint? remoteEP) { // Internal state of the socket is inherited from listener. Debug.Assert(fd != null && !fd.IsInvalid); @@ -3610,7 +3610,7 @@ internal Socket CreateAcceptSocket(SafeSocketHandle fd, EndPoint remoteEP) return UpdateAcceptSocket(socket, remoteEP); } - internal Socket UpdateAcceptSocket(Socket socket, EndPoint remoteEP) + internal Socket UpdateAcceptSocket(Socket socket, EndPoint? remoteEP) { // Internal state of the socket is inherited from listener. socket._addressFamily = _addressFamily; diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs index bcb411922ae05e..088fb07ca46d23 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Unix.cs @@ -35,7 +35,6 @@ private void CompleteAcceptOperation(IntPtr acceptedFileDescriptor, Memory _acceptedFileDescriptor = acceptedFileDescriptor; if (socketError == SocketError.Success) { - Debug.Assert(socketAddress.Length > 0); _acceptAddressBufferCount = socketAddress.Length; } else @@ -348,9 +347,10 @@ private SocketError FinishOperationAccept(SocketAddress remoteSocketAddress) new ReadOnlySpan(_acceptBuffer, 0, _acceptAddressBufferCount).CopyTo(remoteSocketAddress.Buffer.Span); remoteSocketAddress.Size = _acceptAddressBufferCount; + // on macOS accept can sometimes return empty remote address even when it returns successfully. Socket acceptedSocket = _currentSocket!.CreateAcceptSocket( SocketPal.CreateSocket(_acceptedFileDescriptor), - _currentSocket._rightEndPoint!.Create(remoteSocketAddress)); + remoteSocketAddress.Size > 0 ? _currentSocket._rightEndPoint!.Create(remoteSocketAddress) : null); if (_acceptSocket is null) { // Store the accepted socket From 01ad3ef413b9216cd6c9e42915e2149029eea5fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 11:23:53 +0100 Subject: [PATCH 2/3] fix FastOpen compilation (#111142) Co-authored-by: wfurt --- src/native/libs/System.Native/pal_networking.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/native/libs/System.Native/pal_networking.c b/src/native/libs/System.Native/pal_networking.c index dc727fe5465045..cae1285e7e74e4 100644 --- a/src/native/libs/System.Native/pal_networking.c +++ b/src/native/libs/System.Native/pal_networking.c @@ -1660,6 +1660,11 @@ int32_t SystemNative_Connect(intptr_t socket, uint8_t* socketAddress, int32_t so return err == 0 ? Error_SUCCESS : SystemNative_ConvertErrorPlatformToPal(errno); } +#if defined(__linux__) && !defined(TCP_FASTOPEN_CONNECT) +// fixup if compiled against old Kernel headers. +// Can be removed once we have at least 4.11 +#define TCP_FASTOPEN_CONNECT 30 +#endif int32_t SystemNative_Connectx(intptr_t socket, uint8_t* socketAddress, int32_t socketAddressLen, uint8_t* data, int32_t dataLen, int32_t tfo, int* sent) { if (socketAddress == NULL || socketAddressLen < 0 || sent == NULL) From 197591281d94dbfd666133c42dc63ea4dc3dcefc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 14:42:31 +0100 Subject: [PATCH 3/3] [apple-mobile] Disable TLSWitLoadedDlls for Apple mobile (#111356) Co-authored-by: Matous Kozak --- src/tests/JIT/Directed/tls/TestTLSWithLoadedDlls.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/JIT/Directed/tls/TestTLSWithLoadedDlls.csproj b/src/tests/JIT/Directed/tls/TestTLSWithLoadedDlls.csproj index c17a210af0c9de..ac1a042106e22d 100644 --- a/src/tests/JIT/Directed/tls/TestTLSWithLoadedDlls.csproj +++ b/src/tests/JIT/Directed/tls/TestTLSWithLoadedDlls.csproj @@ -4,6 +4,8 @@ true false true + + true PdbOnly