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:
parent
0ec555e58e
commit
b58ca92fa5
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue