From b58ca92fa53088a87c4c33a1e31c0d4ec1a43a1c Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 30 Jun 2021 20:24:35 -0500 Subject: [PATCH] ws2_32: Reimplement getsockopt(SO_TYPE) on top of ws_protocol_info(). Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/ws2_32/socket.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index ce71e25d63d..9f32e7eaf96 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2259,27 +2259,22 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, case WS_SO_TYPE: { - int sock_type; + WSAPROTOCOL_INFOW info; + int size; + if (!optlen || *optlen < sizeof(int) || !optval) { SetLastError(WSAEFAULT); return SOCKET_ERROR; } - if ( (fd = get_sock_fd( s, 0, NULL )) == -1) - return SOCKET_ERROR; - sock_type = _get_fd_type(fd); - if (sock_type == -1) - { - SetLastError(wsaErrno()); - ret = SOCKET_ERROR; - } - else - (*(int *)optval) = convert_socktype_u2w(sock_type); + if (!ws_protocol_info( s, TRUE, &info, &size )) + return -1; - release_sock_fd( s, fd ); - return ret; + *(int *)optval = info.iSocketType; + return 0; } + default: TRACE("Unknown SOL_SOCKET optname: 0x%08x\n", optname); SetLastError(WSAENOPROTOOPT);