ws2_32: Reimplement getsockopt(SO_TYPE) on top of ws_protocol_info().

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2021-06-30 20:24:35 -05:00 committed by Alexandre Julliard
parent 0ec555e58e
commit b58ca92fa5
1 changed files with 8 additions and 13 deletions

View File

@ -2259,27 +2259,22 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
case WS_SO_TYPE: case WS_SO_TYPE:
{ {
int sock_type; WSAPROTOCOL_INFOW info;
int size;
if (!optlen || *optlen < sizeof(int) || !optval) if (!optlen || *optlen < sizeof(int) || !optval)
{ {
SetLastError(WSAEFAULT); SetLastError(WSAEFAULT);
return SOCKET_ERROR; return SOCKET_ERROR;
} }
if ( (fd = get_sock_fd( s, 0, NULL )) == -1)
return SOCKET_ERROR;
sock_type = _get_fd_type(fd); if (!ws_protocol_info( s, TRUE, &info, &size ))
if (sock_type == -1) return -1;
{
SetLastError(wsaErrno());
ret = SOCKET_ERROR;
}
else
(*(int *)optval) = convert_socktype_u2w(sock_type);
release_sock_fd( s, fd ); *(int *)optval = info.iSocketType;
return ret; return 0;
} }
default: default:
TRACE("Unknown SOL_SOCKET optname: 0x%08x\n", optname); TRACE("Unknown SOL_SOCKET optname: 0x%08x\n", optname);
SetLastError(WSAENOPROTOOPT); SetLastError(WSAENOPROTOOPT);