From 1d7d57326af8c339bfd82f27c2d344d05be660b6 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Thu, 24 Jun 2021 22:32:47 -0500 Subject: [PATCH] ws2_32: Implement getsockopt(SO_DONTLINGER) on top of Win32 getsockopt(SO_LINGER). Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/ws2_32/socket.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 3925a7ed500..112376e583c 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2162,29 +2162,21 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, case WS_SO_DONTLINGER: { - struct linger lingval; - socklen_t len = sizeof(struct linger); + struct WS_linger linger; + int len = sizeof(linger); + int ret; if (!optlen || *optlen < sizeof(BOOL)|| !optval) { SetLastError(WSAEFAULT); return SOCKET_ERROR; } - if ( (fd = get_sock_fd( s, 0, NULL )) == -1) - return SOCKET_ERROR; - if (getsockopt(fd, SOL_SOCKET, SO_LINGER, &lingval, &len) != 0 ) + if (!(ret = WS_getsockopt( s, WS_SOL_SOCKET, WS_SO_LINGER, (char *)&linger, &len ))) { - SetLastError(wsaErrno()); - ret = SOCKET_ERROR; - } - else - { - *(BOOL *)optval = !lingval.l_onoff; + *(BOOL *)optval = !linger.l_onoff; *optlen = sizeof(BOOL); } - - release_sock_fd( s, fd ); return ret; }