in source/windows/iocp/socket.c [538:577]
static int s_determine_socket_error(int error) {
switch (error) {
case WSAECONNREFUSED:
case IO_STATUS_CONNECTION_REFUSED:
return AWS_IO_SOCKET_CONNECTION_REFUSED;
case WSAETIMEDOUT:
case IO_STATUS_TIMEOUT:
return AWS_IO_SOCKET_TIMEOUT;
case IO_PIPE_BROKEN:
return AWS_IO_SOCKET_CLOSED;
case STATUS_INVALID_ADDRESS_COMPONENT:
case WSAEADDRNOTAVAIL:
return AWS_IO_SOCKET_INVALID_ADDRESS;
case WSAEADDRINUSE:
return AWS_IO_SOCKET_ADDRESS_IN_USE;
case WSAENETUNREACH:
case IO_NETWORK_UNREACHABLE:
case IO_HOST_UNREACHABLE:
return AWS_IO_SOCKET_NO_ROUTE_TO_HOST;
case WSAENETDOWN:
return AWS_IO_SOCKET_NETWORK_DOWN;
case WSAECONNABORTED:
case IO_CONNECTION_ABORTED:
return AWS_IO_SOCKET_CONNECT_ABORTED;
case WSAENOBUFS:
return AWS_ERROR_OOM;
case WSAEMFILE:
return AWS_ERROR_MAX_FDS_EXCEEDED;
case WSAENAMETOOLONG:
case WSA_INVALID_PARAMETER:
case SOME_ERROR_CODE_THAT_MEANS_INVALID_PATH:
return AWS_ERROR_FILE_INVALID_PATH;
case WSAEAFNOSUPPORT:
return AWS_IO_SOCKET_UNSUPPORTED_ADDRESS_FAMILY;
case WSAEACCES:
return AWS_ERROR_NO_PERMISSION;
default:
return AWS_IO_SOCKET_NOT_CONNECTED;
}
}