From eece9692d707ccb20356ec06955f8308c4e59ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 17 Dec 2023 14:18:48 +0100 Subject: New upstream version 4.19 --- src/socket.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/socket.c') diff --git a/src/socket.c b/src/socket.c index e2ad9ed..9fdd903 100644 --- a/src/socket.c +++ b/src/socket.c @@ -394,13 +394,15 @@ EXPORT_SYMBOL int HX_socket_from_env(const struct addrinfo *ai, const char *intf } top_fd = x; } - for (int fd = 3; fd < top_fd; ++fd) - if (try_sk_from_env(fd, ai, intf) == fd) { + for (int fd = 3; fd < top_fd; ++fd) { + if (try_sk_from_env(fd, ai, intf) != fd) + continue; #ifdef SOCK_CLOEXEC - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD, 0) | FD_CLOEXEC); + if (fcntl(fd, F_SETFD, fcntl(fd, F_GETFD, 0) | FD_CLOEXEC) != 0) + /* ignore */; #endif - return fd; - } + return fd; + } errno = ENOENT; return -1; } -- cgit v1.2.3 From 2acbac8ef9d314b73fbbd68c2e70580988c063a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 26 Feb 2024 09:59:08 +0100 Subject: New upstream version 4.23 --- src/socket.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/socket.c') diff --git a/src/socket.c b/src/socket.c index 9fdd903..fe813f5 100644 --- a/src/socket.c +++ b/src/socket.c @@ -41,7 +41,7 @@ #else # define STUPIDWIN(x) (x) #endif -#if defined(__sun) && !defined(SO_PROTOCOL) +#if defined(__sun) && !defined(SO_PROTOCOL) && defined(SO_PROTOTYPE) # define SO_PROTOCOL SO_PROTOTYPE #endif #ifndef AI_V4MAPPED @@ -333,17 +333,21 @@ static int try_sk_from_env(int fd, const struct addrinfo *ai, const char *intf) return -1; #else optlen = sizeof(value); +#ifdef SO_DOMAIN ret = getsockopt(fd, SOL_SOCKET, SO_DOMAIN, &value, &optlen); if (ret < 0 || value != ai->ai_family) return -1; +#endif optlen = sizeof(value); ret = getsockopt(fd, SOL_SOCKET, SO_TYPE, &value, &optlen); if (ret < 0 || value != ai->ai_socktype) return -1; optlen = sizeof(value); +#ifdef SO_PROTOCOL ret = getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &value, &optlen); if (ret < 0 || value != ai->ai_protocol) return -1; +#endif #endif struct sockaddr_storage addr; memset(&addr, 0, sizeof(addr)); -- cgit v1.2.3