Signed-off-by: Zebediah Figura z.figura12@gmail.com --- include/wine/afd.h | 1 + server/sock.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+)
diff --git a/include/wine/afd.h b/include/wine/afd.h index d522b8a289f..ddf780500b7 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -175,6 +175,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_GET_SO_RCVTIMEO CTL_CODE(FILE_DEVICE_NETWORK, 232, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_AFD_WINE_GET_SO_REUSEADDR CTL_CODE(FILE_DEVICE_NETWORK, 233, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_AFD_WINE_SET_SO_REUSEADDR CTL_CODE(FILE_DEVICE_NETWORK, 234, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_AFD_WINE_SET_SO_SNDBUF CTL_CODE(FILE_DEVICE_NETWORK, 235, METHOD_BUFFERED, FILE_ANY_ACCESS)
struct afd_create_params { diff --git a/server/sock.c b/server/sock.c index 94dbafe44ee..0657a42427a 100644 --- a/server/sock.c +++ b/server/sock.c @@ -2650,6 +2650,22 @@ static int sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async ) return 0; }
+ case IOCTL_AFD_WINE_SET_SO_SNDBUF: + { + DWORD sndbuf; + + if (get_req_data_size() < sizeof(sndbuf)) + { + set_error( STATUS_BUFFER_TOO_SMALL ); + return 0; + } + sndbuf = *(DWORD *)get_req_data(); + + if (setsockopt( unix_fd, SOL_SOCKET, SO_RCVBUF, (char *)&sndbuf, sizeof(sndbuf) ) < 0) + set_error( sock_get_ntstatus( errno ) ); + return 0; + } + default: set_error( STATUS_NOT_SUPPORTED ); return 0;