mirror of
https://github.com/git/git.git
synced 2026-03-13 18:33:25 +01:00
As it turns out, the things returned by Winsock2's socket() are handles that can be passed to ReadFile()/WriteFile() - almost. The way this works is by wrapping those handles into file descriptors with _open_osfhandle(). But it turns out that the sockets created by the plain socket() function are prepared for "overlapped" I/O, which confuses ReadFile()/WriteFile(). Therefore, a reimplementation is provided that uses WSASocket() to explicitly asks for non-overlapped sockets. Special thanks got to H. Peter Anvin, who provided the necessary clues.