From bf9d739380242f75e58dc3d6db41266d4e766c2d Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Thu, 13 Feb 2025 03:35:49 +0100 Subject: socket: WIN32: Make sure errno is set in error conditions --- src/socket.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/socket.c') 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; -- cgit v1.1-32-gdbae