diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 23140529b24..565f1c89dc0 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -578,7 +578,13 @@ int WINAPI WSAStartup( WORD version, WSADATA *data ) if (data) { - data->wVersion = version; + if (!LOBYTE(version) || LOBYTE(version) > 2 + || (LOBYTE(version) == 2 && HIBYTE(version) > 2)) + data->wVersion = MAKEWORD(2, 2); + else if (LOBYTE(version) == 1 && HIBYTE(version) > 1) + data->wVersion = MAKEWORD(1, 1); + else + data->wVersion = version; data->wHighVersion = MAKEWORD(2, 2); strcpy( data->szDescription, "WinSock 2.0" ); strcpy( data->szSystemStatus, "Running" ); diff --git a/dlls/ws2_32/tests/protocol.c b/dlls/ws2_32/tests/protocol.c index f859ad40e30..db89febff2e 100644 --- a/dlls/ws2_32/tests/protocol.c +++ b/dlls/ws2_32/tests/protocol.c @@ -2851,8 +2851,7 @@ static void test_startup(void) data.lpVendorInfo = (void *)0xdeadbeef; ret = WSAStartup(tests[i].version, &data); ok(ret == (LOBYTE(tests[i].version) ? 0 : WSAVERNOTSUPPORTED), "got %d\n", ret); - todo_wine_if (tests[i].version != tests[i].ret_version) - ok(data.wVersion == tests[i].ret_version, "got version %#x\n", data.wVersion); + ok(data.wVersion == tests[i].ret_version, "got version %#x\n", data.wVersion); if (!ret) { ret = WSAStartup(tests[i].version, &data);