From: Zebediah Figura z.figura12@gmail.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/ntdll/unix/socket.c | 3 +++ dlls/ws2_32/socket.c | 19 ++++++------------- include/wine/afd.h | 1 + 3 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 7fc41ff9f1a..86e415f5dce 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1999,6 +1999,9 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc } #endif
+ case IOCTL_AFD_WINE_GET_TCP_NODELAY: + return do_getsockopt( handle, io, IPPROTO_TCP, TCP_NODELAY, out_buffer, out_size ); + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 7da975167ee..ab1578ebed4 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -1880,7 +1880,6 @@ static int server_getsockopt( SOCKET s, ULONG code, char *optval, int *optlen ) INT WINAPI WS_getsockopt(SOCKET s, INT level, INT optname, char *optval, INT *optlen) { - int fd; INT ret = 0;
TRACE("(socket %04lx, %s, optval %s, optlen %p (%d))\n", s, @@ -2186,19 +2185,13 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, switch(optname) { case WS_TCP_NODELAY: - if ( (fd = get_sock_fd( s, 0, NULL )) == -1) - return SOCKET_ERROR; - convert_sockopt(&level, &optname); - if (getsockopt(fd, level, optname, optval, (socklen_t *)optlen) != 0 ) - { - SetLastError(wsaErrno()); - ret = SOCKET_ERROR; - } - release_sock_fd( s, fd ); - return ret; + return server_getsockopt( s, IOCTL_AFD_WINE_GET_TCP_NODELAY, optval, optlen ); + + default: + FIXME( "unrecognized TCP option %#x\n", optname ); + SetLastError( WSAENOPROTOOPT ); + return -1; } - FIXME("Unknown IPPROTO_TCP optname 0x%08x\n", optname); - return SOCKET_ERROR;
case WS_IPPROTO_IP: switch(optname) diff --git a/include/wine/afd.h b/include/wine/afd.h index 6e601f60095..c826351ff4c 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -226,6 +226,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_GET_IPX_PTYPE WINE_AFD_IOC(281) #define IOCTL_AFD_WINE_SET_IPX_PTYPE WINE_AFD_IOC(282) #define IOCTL_AFD_WINE_GET_IRLMP_ENUMDEVICES WINE_AFD_IOC(283) +#define IOCTL_AFD_WINE_GET_TCP_NODELAY WINE_AFD_IOC(284)
struct afd_create_params {