From 23058b943f6275767388767559086870e2fa98d7 Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Fri, 2 Jun 2017 15:16:31 -0400 Subject: [PATCH] [w32socket] Use coop handles for System.Net.Sockets.Socket.cancel_blocking_socket_operation --- mono/metadata/icall-def.h | 2 +- mono/metadata/w32socket.c | 12 ++++++------ mono/metadata/w32socket.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mono/metadata/icall-def.h b/mono/metadata/icall-def.h index 183e5fca21d..a77e1a7c00e 100644 --- a/mono/metadata/icall-def.h +++ b/mono/metadata/icall-def.h @@ -479,7 +479,7 @@ HANDLES(ICALL(SOCK_18, "SetSocketOption_internal(intptr,System.Net.Sockets.Socke HANDLES(ICALL(SOCK_19, "Shutdown_internal(intptr,System.Net.Sockets.SocketShutdown,int&)", ves_icall_System_Net_Sockets_Socket_Shutdown_internal)) HANDLES(ICALL(SOCK_20, "Socket_internal(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,int&)", ves_icall_System_Net_Sockets_Socket_Socket_internal)) HANDLES(ICALL(SOCK_20a, "SupportsPortReuse", ves_icall_System_Net_Sockets_Socket_SupportPortReuse)) -ICALL(SOCK_21a, "cancel_blocking_socket_operation", icall_cancel_blocking_socket_operation) +HANDLES(ICALL(SOCK_21a, "cancel_blocking_socket_operation", icall_cancel_blocking_socket_operation)) ICALL_TYPE(SOCKEX, "System.Net.Sockets.SocketException", SOCKEX_1) ICALL(SOCKEX_1, "WSAGetLastError_internal", ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal) diff --git a/mono/metadata/w32socket.c b/mono/metadata/w32socket.c index 9c58e5437f6..bd802a67bb1 100644 --- a/mono/metadata/w32socket.c +++ b/mono/metadata/w32socket.c @@ -2850,14 +2850,14 @@ mono_network_cleanup (void) } void -icall_cancel_blocking_socket_operation (MonoThread *thread) +icall_cancel_blocking_socket_operation (MonoThreadObjectHandle thread, MonoError *error) { - MonoInternalThread *internal; - - internal = thread->internal_thread; - g_assert (internal); + error_init (error); + MonoInternalThreadHandle internal = MONO_HANDLE_NEW_GET (MonoInternalThread, thread, internal_thread); + g_assert (!MONO_HANDLE_IS_NULL (internal)); - mono_thread_info_abort_socket_syscall_for_close (MONO_UINT_TO_NATIVE_THREAD_ID (internal->tid)); + guint64 tid = mono_internal_thread_handle_ptr (internal)->tid; + mono_thread_info_abort_socket_syscall_for_close (MONO_UINT_TO_NATIVE_THREAD_ID (tid)); } #endif /* #ifndef DISABLE_SOCKETS */ diff --git a/mono/metadata/w32socket.h b/mono/metadata/w32socket.h index d060af1e267..1788e2175bd 100644 --- a/mono/metadata/w32socket.h +++ b/mono/metadata/w32socket.h @@ -284,7 +284,7 @@ ves_icall_System_Net_Sockets_Socket_SendFile_internal (gsize sock, MonoStringHan gint flags, gint32 *werror, gboolean blocking, MonoError *error); void -icall_cancel_blocking_socket_operation (MonoThread *thread); +icall_cancel_blocking_socket_operation (MonoThreadObjectHandle thread, MonoError *error); gboolean ves_icall_System_Net_Sockets_Socket_SupportPortReuse (MonoProtocolType proto, MonoError *error); -- 2.11.4.GIT