From: Viktor Szakats Date: Tue, 16 Dec 2025 00:37:10 +0000 (+0100) Subject: build: unix socket tidy-ups X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5431b3dd6bbbf3b3ae25dab955e5e3a2f94d49ad;p=thirdparty%2Fcurl.git build: unix socket tidy-ups - lib: delete two unused `` includes. - lib: drop interim macro `WIN32_SOCKADDR_UN`. Follow-up to 0fe9018e1a1af0d906dfe934efe2f2b1ba48f060 #7737 Also fixing a potential issue of leaving unix socket support disabled if any header would include Windows' `afunix.h`, and define `UNIX_PATH_MAX` on its own. - connect: honor unix socket disable option. - connect: simplify unix socket PP condition. `USE_UNIX_SOCKETS` already means the necessary header/type are available, guaranteed by configure. `AF_UNIX` is already used elsewhere in the code without explicit checks. - curl_setup.h: document availability of `afunix.h` on Windows more. It requires mingw-w64 10+ or MS SDK 10.17763.0 VS2017 15.8+. - curl_setup.h: use `afunix.h` with mingw-w64 v10+ to start avoiding the local workaround if possible. - GHA/windows: test disable unix socket option on Windows. Ref: https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/ Closes #19989 --- diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3260e0c5b0..700913e092 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -429,7 +429,7 @@ jobs: env: 'x86_64' ver: '15.1.0' url: 'https://github.com/skeeto/w64devkit/releases/download/v2.2.0/w64devkit-x64-2.2.0.7z.exe' - config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=OFF' + config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=OFF -DENABLE_UNIX_SOCKETS=OFF' type: 'Release' - name: 'schannel' # mingw-w64 10.0 sys: 'mingw64' diff --git a/lib/cf-ip-happy.c b/lib/cf-ip-happy.c index 029746354c..d6501d0079 100644 --- a/lib/cf-ip-happy.c +++ b/lib/cf-ip-happy.c @@ -27,9 +27,6 @@ #ifdef HAVE_NETINET_IN_H #include /* may need it */ #endif -#ifdef HAVE_SYS_UN_H -#include /* for sockaddr_un */ -#endif #ifdef HAVE_LINUX_TCP_H #include #elif defined(HAVE_NETINET_TCP_H) diff --git a/lib/cf-socket.c b/lib/cf-socket.c index f9a883b0c3..3e22c4ad26 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -27,9 +27,6 @@ #ifdef HAVE_NETINET_IN_H #include /* may need it */ #endif -#ifdef HAVE_SYS_UN_H -#include /* for sockaddr_un */ -#endif #ifdef HAVE_LINUX_TCP_H #include #elif defined(HAVE_NETINET_TCP_H) diff --git a/lib/connect.c b/lib/connect.c index f1700e5b96..42d5cd7a3f 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -218,7 +218,7 @@ bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen, #ifdef USE_IPV6 struct sockaddr_in6 *si6 = NULL; #endif -#if (defined(HAVE_SYS_UN_H) || defined(WIN32_SOCKADDR_UN)) && defined(AF_UNIX) +#ifdef USE_UNIX_SOCKETS struct sockaddr_un *su = NULL; #else (void)salen; @@ -241,7 +241,7 @@ bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen, } break; #endif -#if (defined(HAVE_SYS_UN_H) || defined(WIN32_SOCKADDR_UN)) && defined(AF_UNIX) +#ifdef USE_UNIX_SOCKETS case AF_UNIX: if(salen > (curl_socklen_t)sizeof(CURL_SA_FAMILY_T)) { su = (struct sockaddr_un *)sa; diff --git a/lib/curl_setup.h b/lib/curl_setup.h index a7dc41493c..d34b8a7407 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -1148,17 +1148,17 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf, #endif #if defined(USE_UNIX_SOCKETS) && defined(_WIN32) -# ifndef UNIX_PATH_MAX - /* Replicating logic present in afunix.h - (distributed with newer Windows 10 SDK versions only) */ -# define UNIX_PATH_MAX 108 - /* !checksrc! disable TYPEDEFSTRUCT 1 */ - typedef struct sockaddr_un { - CURL_SA_FAMILY_T sun_family; - char sun_path[UNIX_PATH_MAX]; - } SOCKADDR_UN, *PSOCKADDR_UN; -# define WIN32_SOCKADDR_UN -# endif +/* Offered by mingw-w64 v10+. MS SDK 10.17763/~VS2017+. */ +#if defined(__MINGW32__) && (__MINGW64_VERSION_MAJOR >= 10) +# include +#elif !defined(UNIX_PATH_MAX) /* Replicate logic present in afunix.h */ +# define UNIX_PATH_MAX 108 +/* !checksrc! disable TYPEDEFSTRUCT 1 */ +typedef struct sockaddr_un { + CURL_SA_FAMILY_T sun_family; + char sun_path[UNIX_PATH_MAX]; +} SOCKADDR_UN, *PSOCKADDR_UN; +#endif #endif #ifdef USE_OPENSSL