mirror of https://github.com/xemu-project/xemu.git
util: WSAEWOULDBLOCK on connect should map to EINPROGRESS
In general, WSAEWOULDBLOCK can be mapped to EAGAIN as done by socket_error() (or EWOULDBLOCK). But for connect() with non-blocking sockets, it actually means the operation is in progress: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect "The socket is marked as nonblocking and the connection cannot be completed immediately." (this is also the behaviour implemented by GLib GSocket) This fixes socket_can_bind_connect() test on win32. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
56f997500a
commit
f1cd5d41ef
|
@ -585,7 +585,11 @@ int qemu_connect_wrap(int sockfd, const struct sockaddr *addr,
|
|||
int ret;
|
||||
ret = connect(sockfd, addr, addrlen);
|
||||
if (ret < 0) {
|
||||
errno = socket_error();
|
||||
if (WSAGetLastError() == WSAEWOULDBLOCK) {
|
||||
errno = EINPROGRESS;
|
||||
} else {
|
||||
errno = socket_error();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue