"Erich E. Hoover" <erich.e.hoover(a)gmail.com> writes:
> @@ -4101,11 +4125,29 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
> WSASetLastError(WSAEOPNOTSUPP);
> return SOCKET_ERROR;
> default:
> - FIXME("unsupported WS_IOCTL cmd (%s)\n", debugstr_wsaioctl(code));
> status = WSAEOPNOTSUPP;
> break;
> }
>
> + if (status == WSAEOPNOTSUPP)
> + {
> + status = server_ioctl_sock(s, code, in_buff, in_size, out_buff, out_size, ret_size,
> + overlapped, completion);
> + if (status != WSAEOPNOTSUPP)
> + {
> + if (status == 0 || status == WSA_IO_PENDING)
> + TRACE("-> %s request\n", debugstr_wsaioctl(code));
> + else
> + ERR("-> %s request failed with status 0x%x\n", debugstr_wsaioctl(code), status);
> +
> + /* overlapped and completion operations will be handled by the server */
> + completion = NULL;
> + overlapped = NULL;
> + }
> + else
> + FIXME("unsupported WS_IOCTL cmd (%s)\n", debugstr_wsaioctl(code));
> + }
The returned size handling doesn't look right.
--
Alexandre Julliard
julliard(a)winehq.org