summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2025-02-13 03:35:49 +0100
committerGravatar Nikias Bassen2025-02-13 03:35:49 +0100
commitbf9d739380242f75e58dc3d6db41266d4e766c2d (patch)
treea2bf6e765e224270d3a86606980245ae9dc9ada0
parent396c80159437932d1c3e7d3aa272efa5514a6a09 (diff)
downloadlibimobiledevice-glue-bf9d739380242f75e58dc3d6db41266d4e766c2d.tar.gz
libimobiledevice-glue-bf9d739380242f75e58dc3d6db41266d4e766c2d.tar.bz2
socket: WIN32: Make sure errno is set in error conditions
-rw-r--r--src/socket.c9
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;