My understanding is that, in the absence of layered service providers, `SIO_BSP_HANDLE_SELECT` should behave like `SIO_BASE_HANDLE` (this is relied upon by https://github.com/python-trio/trio). Should I add tests to verify this? If so, should they basically just be the same as the existing `SIO_BASE_HANDLE` tests?
From: Josh Steffen josh@joshsteffen.com
Wine does not support layered service providers, so just fall through to SIO_BASE_HANDLE. --- dlls/ws2_32/socket.c | 1 + include/mswsock.h | 2 ++ 2 files changed, 3 insertions(+)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index d4223e93bd1..a267f65ab91 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2701,6 +2701,7 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID return ret ? -1 : 0; }
+ case SIO_BSP_HANDLE_SELECT: case SIO_BASE_HANDLE: { NTSTATUS status; diff --git a/include/mswsock.h b/include/mswsock.h index fa97d5bf04d..754b8ec3dd0 100644 --- a/include/mswsock.h +++ b/include/mswsock.h @@ -85,10 +85,12 @@ extern "C" { #ifndef USE_WS_PREFIX #define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR, 12) #define SIO_SET_COMPATIBILITY_MODE _WSAIOW(IOC_VENDOR, 300) +#define SIO_BSP_HANDLE_SELECT _WSAIOR(IOC_WS2, 28) #define SIO_BASE_HANDLE _WSAIOR(IOC_WS2, 34) #else #define WS_SIO_UDP_CONNRESET _WSAIOW(WS_IOC_VENDOR, 12) #define WS_SIO_SET_COMPATIBILITY_MODE _WSAIOW(WS_IOC_VENDOR, 300) +#define WS_SIO_BSP_HANDLE_SELECT _WSAIOR(WS_IOC_WS2, 28) #define WS_SIO_BASE_HANDLE _WSAIOR(WS_IOC_WS2, 34) #endif
Should I add tests to verify this? If so, should they basically just be the same as the existing `SIO_BASE_HANDLE` tests?
Yes, please.