This returns ENOPROTOOPT on Linux, but succeeds on Windows.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/ws2_32/socket.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index b183b85b0b3..2dd3cf20752 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -3548,6 +3548,11 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, case WS_SO_BROADCAST: return server_setsockopt( s, IOCTL_AFD_WINE_SET_SO_BROADCAST, optval, optlen );
+ case WS_SO_ERROR: + FIXME( "SO_ERROR, stub!\n" ); + SetLastError( WSAENOPROTOOPT ); + return -1; + /* Some options need some conversion before they can be sent to * setsockopt. The conversions are done here, then they will fall through * to the general case. Special options that are not passed to @@ -3603,7 +3608,6 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, /* The options listed here don't need any special handling. Thanks to * the conversion happening above, options from there will fall through * to this, too.*/ - case WS_SO_ERROR: case WS_SO_KEEPALIVE: case WS_SO_OOBINLINE: /* BSD socket SO_REUSEADDR is not 100% compatible to winsock semantics.