Most of the WSAStartup calls use version 2.2, but some of them use 1.1 .
This triggers a bug in oat++ when I use it in a plugin, as it apparently expects non-1.1 behavior when using connect on async sockets and 1.1 is negotiated. But regardless, it’s weird that the negotiated version is inconsistent throughout Unreal Engine.
https://github.com/search?q=repo%3AEpicGames%2FUnrealEngine+wsastartup&type=code&p=1
The behavior that affects oat++:
https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
Due to ambiguities in version 1.1 of the Windows Sockets specification, error codes returned from connect while a connection is already pending may vary among implementations. As a result, it is not recommended that applications use multiple calls to connect to detect connection completion. If they do, they must be prepared to handle WSAEINVAL and WSAEWOULDBLOCK error values the same way that they handle WSAEALREADY, to assure robust operation.
This does affect in WSAEINVAL, which is not handled properly by oat++:
I am yet to file an issue with oat++, but I half expect to get told to use a winsock version from this decade.