| Previous | Next |
| EHOSTDOWN | EHOSTUNREACH |
EINPROGRESS
EINPROGRESS is a pending-operation status, not a completed connection and not a final failure. The caller must transition from “request issued” to “awaiting completion” and obtain the final outcome through the API's documented readiness, event, or completion mechanism.
For a Windows nonblocking socket, the native code is usually WSAEINPROGRESS or another Winsock status available immediately through WSAGetLastError(). A wrapper that exposes EINPROGRESS should retain the original code and attach it to the specific pending operation; otherwise, concurrent operations become impossible to diagnose.
Correct completion handling
- Associate an immutable attempt ID with the socket operation before issuing it.
- Wait for the documented completion signal, then query the final per-socket error or completion result instead of assuming readiness equals success.
- Guard against a timeout firing at the same time as completion; exactly one path must publish the terminal state.
- Keep buffers and address structures alive for the entire lifetime required by the asynchronous API.
References
- Microsoft: connect()
- Microsoft: WSARecv() and overlapped completion
- Microsoft: errno and WSAGetLastError
Looking for a different code? Search another status or error code.