diff options
author | 2025-02-13 03:35:49 +0100 | |
---|---|---|
committer | 2025-02-13 03:35:49 +0100 | |
commit | bf9d739380242f75e58dc3d6db41266d4e766c2d (patch) | |
tree | a2bf6e765e224270d3a86606980245ae9dc9ada0 | |
parent | 396c80159437932d1c3e7d3aa272efa5514a6a09 (diff) | |
download | libimobiledevice-glue-bf9d739380242f75e58dc3d6db41266d4e766c2d.tar.gz libimobiledevice-glue-bf9d739380242f75e58dc3d6db41266d4e766c2d.tar.bz2 |
socket: WIN32: Make sure errno is set in error conditions
-rw-r--r-- | src/socket.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/socket.c b/src/socket.c index fe9f4d9..1d59faf 100644 --- a/src/socket.c +++ b/src/socket.c @@ -312,6 +312,9 @@ static ALWAYS_INLINE enum poll_status poll_wrapper(int fd, fd_mode mode, int tim } else if (sret == 0) { return poll_status_timeout; } else { +#ifdef _WIN32 + errno = WSAError_to_errno(WSAGetLastError()); +#endif switch (errno) { case EINTR: // interrupt signal in select @@ -1068,6 +1071,9 @@ int socket_connect_addr(struct sockaddr* addr, uint16_t port) sfd = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TCP); if (sfd == -1) { +#ifdef _WIN32 + errno = WSAError_to_errno(WSAGetLastError()); +#endif SOCKET_ERR(1, "socket(): %s\n", strerror(errno)); return -1; } @@ -1081,6 +1087,9 @@ int socket_connect_addr(struct sockaddr* addr, uint16_t port) #endif if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void*)&yes, sizeof(int)) == -1) { +#ifdef _WIN32 + errno = WSAError_to_errno(WSAGetLastError()); +#endif SOCKET_ERR(1, "setsockopt() SO_REUSEADDR: %s\n", strerror(errno)); socket_close(sfd); return -1; |