#
78c31729 |
| 01-Nov-2024 |
Jonas 'Sortie' Termansen |
curl_addrinfo: support operating systems with only getaddrinfo(3) The gethostbyname(3) family was removed in POSIX-1.2008 in favor of getaddrinfo(3) introduced in POSIX-1.2001. Modern PO
curl_addrinfo: support operating systems with only getaddrinfo(3) The gethostbyname(3) family was removed in POSIX-1.2008 in favor of getaddrinfo(3) introduced in POSIX-1.2001. Modern POSIX systems such as Sortix does not have gethostbyname nor the related definitions and structures. curl already only uses getaddrinfo(3) if available and thread safe, although there is mild breakage if the related gethostbyname definitions are missing. This change attempts to fix that breakage: Remove an unnecessary configure error if gethostbyname is missing since getaddrinfo is enough as a fallback. Rewrite Curl_ip2addr to not use struct hostent as it no longer is standardized and create the struct Curl_addrinfo directly. Only define the Curl_he2ai function on non-getaddrinfo systems where it is going to be used with struct hoestent. Revoke the fallback logic for when it's unknown whether getaddrinfo is thread safe. It doesn't appear to make any sense since h_errno is unrelated to getaddrinfo. The logic prevents new POSIX.1-2024 systems from passing the thread safety test since h_errno does not exist anymore and POSIX already requires getaddrinfo to be thread safe. There's already a denylist in place for operating systems with known buggy implementations. Closes #15475
show more ...
|
#
86d5c265 |
| 07-Oct-2024 |
Viktor Szakats |
configure: drop unused bare `socket.h` detection Added in 37eba37019388f767f5de67b4071641044d7b026 (2009-06-17) to help detecting socket functions. But, this `socket.h` isn't us
configure: drop unused bare `socket.h` detection Added in 37eba37019388f767f5de67b4071641044d7b026 (2009-06-17) to help detecting socket functions. But, this `socket.h` isn't used in the source code since 90dd1fc66401d5bb7814f4edeb16a06c925b1f1e #8288 (2022-01-16). Closes #15173
show more ...
|
#
2d1959dd |
| 06-Oct-2024 |
Viktor Szakats |
configure: drop duplicate feature checks for `poll()`, `if_nametoindex()` Before this patch they were detected via manual methods, then with `AC_CHECK_FUNCS()`. Delete the manua
configure: drop duplicate feature checks for `poll()`, `if_nametoindex()` Before this patch they were detected via manual methods, then with `AC_CHECK_FUNCS()`. Delete the manual checks and keep the latter. Also delete `CURL_INCLUDES_POLL()` which is no longer used after the above. Closes #15170
show more ...
|
#
c72cefea |
| 30-Sep-2024 |
Daniel Stenberg |
select: use poll() if existing, avoid poll() with no sockets poll() on macOS 10.12 was deemed broken in 2016 when we discovered that it misbehaves when provided with no sockets to wait f
select: use poll() if existing, avoid poll() with no sockets poll() on macOS 10.12 was deemed broken in 2016 when we discovered that it misbehaves when provided with no sockets to wait for. The HAVE_POLL_FINE is used to mark a poll() implementation that behaves correctly: it *should* still wait the timeout time. curl has therefore opted to use select() on Apple operating systems ever since. To avoid the risk that this or other breakage cause problems. However, using select() internally is also bad because it suffers from problems when using file descriptors beyond 1024. This change makes poll() used if it is present, but if there is no sockets to wait for it avoids using poll() and instead falls back to select() - but without any sockets to wait for there is no 1024 problem. This removes all previous special-handling involving HAVE_POLL_FINE. ref: https://daniel.haxx.se/blog/2016/10/11/poll-on-mac-10-12-is-broken/ Closes #15096
show more ...
|
#
7060b9b0 |
| 25-Sep-2024 |
Daniel Stenberg |
build: fix cross-compile check for poll with bionic Since it seems the _POSIX_C_SOURCE "trick" does not work there, the check does not find poll(). Fixes #15013 Reported-by:
build: fix cross-compile check for poll with bionic Since it seems the _POSIX_C_SOURCE "trick" does not work there, the check does not find poll(). Fixes #15013 Reported-by: vvb2060 on github Closes #15037
show more ...
|
#
68a224c2 |
| 28-Aug-2024 |
Viktor Szakats |
tidy-up: indentation in autotools sources Indentation in `configure.ac` and `.m4` files. Closes #14692
|
#
30ab1133 |
| 29-Aug-2024 |
Viktor Szakats |
configure: catch Apple in more target triplets Before this patch, only these triplets were considered Apple: `<cpu>-apple-darwin` After this patch, these are also considered App
configure: catch Apple in more target triplets Before this patch, only these triplets were considered Apple: `<cpu>-apple-darwin` After this patch, these are also considered Apple: `<cpu>-apple-(ios*|tvos*|visionos*|watchos*|<ETC>)` `$host_os` (the last third of the triplet) still has a valid use to differentiate between OS flavours, though for now this isn't used, aligning with CMake. Closes #14728
show more ...
|
#
04e3621d |
| 29-Aug-2024 |
Viktor Szakats |
build: add `poll()` detection for cross-builds For cross-builds rely on `_POSIX_C_SOURCE` to decide if `poll()` is supported, rather than just assuming it isn't. This may still
build: add `poll()` detection for cross-builds For cross-builds rely on `_POSIX_C_SOURCE` to decide if `poll()` is supported, rather than just assuming it isn't. This may still miss to detect `poll()` support, as seen for example with Linux MUSL cross-builds. Also: - GHA/curl-for-win: enable RISC-V 64 cross-target for Linux MUSL. (to test this case with cmake, with a false-negative.) The first RISC-V 64 build in curl's CI. - GHA/curl-for-win: add arm64/intel64 job for Linux glibc. (to test this case with cmake, and succeed.) - cmake: delete unnecessary `#include <sys/time.h>` from non-cross-build `poll()` detection snippet. Follow-up tp cc8b8137659e1733fdd3810c19ff5ec8db438509 #14718 Fixes #14714 Closes #14734
show more ...
|
#
cc8b8137 |
| 29-Aug-2024 |
Viktor Szakats |
build: drop unused feature-detection code for Apple `poll()` Drop Apple-specific detection logic for `poll()`. This detection snippet has been disabled for Apple in both configure and cm
build: drop unused feature-detection code for Apple `poll()` Drop Apple-specific detection logic for `poll()`. This detection snippet has been disabled for Apple in both configure and cmake, for `poll()` being broken on Apple since 10.12 Sierra (2016). Also replace `exit(1);` with `return 1;` in configure, to make the snippets match. Added in 9297ca49f5f3caca938a679b9c1feeb719e61ddb #1057 (2016-10-11). Disabled for: configure/darwin in a34c7ce7546f39f24692925d66c2f42324dd94e9 (2016-10-18) cmake/macOS in 825911be587bbabc3b7e4777ed3bd1bb7c858b58 #7619 cmake/iOS in d14831233df3a15b14db563156614c9ea60fcf06 #8244 cmake/all Apple in a86254b39307af1a53735b065a382567805cd9b8 #12515 Closes #14718
show more ...
|
#
26ab9027 |
| 26-Aug-2024 |
Viktor Szakats |
configure: fix indentation more Follow-up to 0052b4b52dfbd6455a24dd95837e5236dc8e1f5d #14628 Closes #14682
|
#
f81f351b |
| 02-Aug-2024 |
Viktor Szakats |
tidy-up: OS names Use these words and casing more consistently across text, comments and one curl tool output: AIX, ALPN, ANSI, BSD, Cygwin, Darwin, FreeBSD, GitHub, HP-UX, Linux,
tidy-up: OS names Use these words and casing more consistently across text, comments and one curl tool output: AIX, ALPN, ANSI, BSD, Cygwin, Darwin, FreeBSD, GitHub, HP-UX, Linux, macOS, MS-DOS, MSYS, MinGW, NTLM, POSIX, Solaris, UNIX, Unix, Unicode, WINE, WebDAV, Win32, winbind, WinIDN, Windows, Windows CE, Winsock. Mostly OS names and a few more. Also a couple of other minor text fixups. Closes #14360
show more ...
|
#
4c22d97b |
| 13-Jul-2024 |
Viktor Szakats |
build: use `#error` instead of invalid syntax It reduces configure log noise. Follow-up to 20c1b2d75ee38189ffa75d21ed04108e1e0630ae #13287 Closes #14181
|
#
59bc9a1d |
| 07-Jul-2024 |
Viktor Szakats |
configure: sort feature list, lowercase protocols, use backticks - sort features case-insensitively to match `curl -V` and cmake. `sort -f` is POSIX, but check if it's available anyway
configure: sort feature list, lowercase protocols, use backticks - sort features case-insensitively to match `curl -V` and cmake. `sort -f` is POSIX, but check if it's available anyway. - make protocols lowercase to match `curl -V` and cmake. - replace two outlier `$()` with backticks. Closes #14117
show more ...
|
#
c8925f3e |
| 12-May-2024 |
Orgad Shaneh |
autotools: delete unused functions Closes #13605
|
#
b65f0e04 |
| 10-May-2024 |
Viktor Szakats |
autotools: fix `HAVE_IOCTLSOCKET_FIONBIO` test for gcc 14 ``` conftest.c:152:41: error: passing argument 3 of 'ioctlsocket' from incompatible pointer type [-Wincompatible-pointer-types]
autotools: fix `HAVE_IOCTLSOCKET_FIONBIO` test for gcc 14 ``` conftest.c:152:41: error: passing argument 3 of 'ioctlsocket' from incompatible pointer type [-Wincompatible-pointer-types] 152 | if(0 != ioctlsocket(0, FIONBIO, &flags)) | ^~~~~~ | | | int * ``` Reported-by: LigH Fixes #13579 Closes #13587
show more ...
|
#
03e7dff8 |
| 12-Dec-2023 |
Viktor Szakats |
windows: delete redundant headers `winsock2.h` pulls in `windows.h`. `ws2tcpip.h` pulls in `winsock2.h`. `winsock2.h` and `ws2tcpip.h` are also pulled by `curl/curl.h`. Keep onl
windows: delete redundant headers `winsock2.h` pulls in `windows.h`. `ws2tcpip.h` pulls in `winsock2.h`. `winsock2.h` and `ws2tcpip.h` are also pulled by `curl/curl.h`. Keep only those headers that are not already included, or the code under it uses something from that specific header. Closes #12539
show more ...
|
#
c1bc090d |
| 09-Dec-2023 |
Viktor Szakats |
windows: simplify detecting and using system headers - autotools, cmake: assume that if we detect Windows, `windows.h`, `winsock2.h` and `ws2tcpip.h` do exist. - lib: fix 3 outlier
windows: simplify detecting and using system headers - autotools, cmake: assume that if we detect Windows, `windows.h`, `winsock2.h` and `ws2tcpip.h` do exist. - lib: fix 3 outlier `#if` conditions to use `USE_WINSOCK` instead of looking for `winsock2.h`. - autotools: merge 3 Windows check methods into one. - move Watt-32 and lwIP socket support to `setup-win32.h` from `config-win32.h`. It opens up using these with all build tools. Also merge logic with Windows Sockets. - fix to assume Windows sockets with the mingw32ce toolchain. Follow-up to: 2748c64d605b19fb419ae56810ad8da36487a2d4 - cmake: delete unused variable `signature_call_conv` since eb33ccd5332435fa50f1758e5debb869c6942b7f. - autotools: simplify `CURL_CHECK_WIN32_LARGEFILE` detection. - examples/externalsocket: fix header order. - cmake/OtherTests.cmake: delete Windows-specific `_source_epilogue` that wasn't used anymore. - cmake/OtherTests.cmake: set `WIN32_LEAN_AND_MEAN` for test `SIZEOF_STRUCT_SOCKADDR_STORAGE`. After this patch curl universally uses `_WIN32` to guard Windows-specific logic. It guards Windows Sockets-specific logic with `USE_WINSOCK` (this might need further work). Reviewed-by: Jay Satiro Closes #12495
show more ...
|
#
ede2e812 |
| 07-Dec-2023 |
Viktor Szakats |
tidy-up: whitespace Closes #12484
|
#
60359ad5 |
| 06-Nov-2023 |
Viktor Szakats |
build: delete `HAVE_STDINT_H` and `HAVE_INTTYPES_H` We use `stdint.h` unconditionally in all places except one. These uses are imposed by external dependencies / features. nghttp2, quic,
build: delete `HAVE_STDINT_H` and `HAVE_INTTYPES_H` We use `stdint.h` unconditionally in all places except one. These uses are imposed by external dependencies / features. nghttp2, quic, wolfSSL and `HAVE_MACH_ABSOLUTE_TIME` do require this C99 header. It means that any of these features make curl require a C99 compiler. (In case of MSVC, this means Visual Studio 2010 or newer.) This patch changes the single use of `stdint.h` guarded by `HAVE_STDINT_H` to use `stdint.h` unconditionally. Also stop using `inttypes.h` as an alternative there. `HAVE_INTTYPES_H` wasn't used anywhere else, allowing to delete this feature check as well. Closes #12275
show more ...
|
#
2100d9fd |
| 05-Oct-2023 |
Viktor Szakats |
cmake: pre-fill rest of detection values for Windows The goal of this patch is to avoid unnecessary feature detection work when doing Windows builds with CMake. Do this by pre-filling we
cmake: pre-fill rest of detection values for Windows The goal of this patch is to avoid unnecessary feature detection work when doing Windows builds with CMake. Do this by pre-filling well-known detection results for Windows and specifically for mingw-w64 and MSVC compilers. Also limit feature checks to platforms where the results are actually used. Drop a few redundant ones. And some tidying up. - pre-fill remaining detection values in Windows CMake builds. Based on actual detection results observed in CI runs, preceding similar work over libssh2 and matching up values with `lib/config-win32.h`. This brings down CMake configuration time from 58 to 14 seconds on the same local machine. On AppVeyor CI this translates to: - 128 seconds -> 50 seconds VS2022 MSVC with OpenSSL (per CMake job): https://ci.appveyor.com/project/curlorg/curl/builds/48208419/job/4gw66ecrjpy7necb#L296 https://ci.appveyor.com/project/curlorg/curl/builds/48217440/job/8m4fwrr2fe249uo8#L186 - 62 seconds -> 16 seconds VS2017 MINGW (per CMake job): https://ci.appveyor.com/project/curlorg/curl/builds/48208419/job/s1y8q5ivlcs7ub29?fullLog=true#L290 https://ci.appveyor.com/project/curlorg/curl/builds/48217440/job/pchpxyjsyc9kl13a?fullLog=true#L194 The formula is about 1-3 seconds delay for each detection. Almost all of these trigger a full compile-link cycle behind the scenes, slow even today, both cross and native, mingw-w64 and apparently MSVC too. Enabling .map files or other custom build features slows it down further. (Similar is expected for autotools configure.) - stop detecting `idn2.h` if idn2 was deselected. autotools does this. - stop detecting `idn2.h` if idn2 was not found. This deviates from autotools. Source code requires both header and lib, so this is still correct, but faster. - limit `ADDRESS_FAMILY` detection to Windows. - normalize `HAVE_WIN32_WINNT` value to lowercase `0x0a12` format. - pre-fill `HAVE_WIN32_WINNT`-dependent detection results. Saving 4 (slow) feature-detections in most builds: `getaddrinfo`, `freeaddrinfo`, `inet_ntop`, `inet_pton` - fix pre-filled `HAVE_SYS_TIME_H`, `HAVE_SYS_PARAM_H`, `HAVE_GETTIMEOFDAY` for mingw-w64. Luckily this do not change build results, as `WIN32` took priority over `HAVE_GETTIMEOFDAY` with the current source code. - limit `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` and `HAVE_CLOCK_GETTIME_MONOTONIC` detections to non-Windows. We're not using these in the source code for Windows. - reduce compiler warning noise in CMake internal logs: - fix to include `winsock2.h` before `windows.h`. Apply it to autotools test snippets too. - delete previous `-D_WINSOCKAPI_=` hack that aimed to fix the above. - cleanup `CMake/CurlTests.c` to emit less warnings. - delete redundant `HAVE_MACRO_SIGSETJMP` feature check. It was the same check as `HAVE_SIGSETJMP`. - delete 'experimental' marking from `CURL_USE_OPENSSL`. - show CMake version via `CMakeLists.txt`. Credit to the `zlib-ng` project for the idea: https://github.com/zlib-ng/zlib-ng/blob/61e181c8ae93dbf56040336179c9954078bd1399/CMakeLists.txt#L7 - make `CMake/CurlTests.c` pass `checksrc`. - `CMake/WindowsCache.cmake` tidy-ups. - replace `WIN32` guard with `_WIN32` in `CMake/CurlTests.c`. Closes #12044
show more ...
|
#
4c6365af |
| 02-Oct-2023 |
Viktor Szakats |
autotools: restore `HAVE_IOCTL_*` detections This restores `CURL_CHECK_FUNC_IOCTL` detection. I deleted it in 4d73854462f30948acab12984b611e9e33ee41e6 and c3456652a0c72d1845d08df9769
autotools: restore `HAVE_IOCTL_*` detections This restores `CURL_CHECK_FUNC_IOCTL` detection. I deleted it in 4d73854462f30948acab12984b611e9e33ee41e6 and c3456652a0c72d1845d08df9769667db7e159949 (2022-08), because the `HAVE_IOCTL` result it generated was unused in the source. But, I did miss the fact that this had two dependent checks: `CURL_CHECK_FUNC_IOCTL_FIONBIO`, `CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR` that we do actually need: `HAVE_IOCTL_FIONBIO`, `HAVE_IOCTL_SIOCGIFADDR`. Regression from 4d73854462f30948acab12984b611e9e33ee41e6 Ref: #11964 (effort to sync cmake detections with autotools) Closes #12008
show more ...
|
#
2ba80494 |
| 27-Sep-2023 |
Daniel Stenberg |
configure: remove unused checks - for sys/uio.h - for fork - for connect Ref: #11964 Closes #11973
|
#
a7f8d04e |
| 27-Sep-2023 |
Viktor Szakats |
curl-functions.m4: fixup recent bad edits Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 Closes #11966
|
#
d14089df |
| 27-Sep-2023 |
Daniel Stenberg |
curl-functions.m4: fix include line This made the getaddrinfo detection fail, but we did not spot it in the CI because it graciously falled back to using legacy functions instead!
curl-functions.m4: fix include line This made the getaddrinfo detection fail, but we did not spot it in the CI because it graciously falled back to using legacy functions instead! Follow-up to 96c29900bcec (#11940) Closes #11965
show more ...
|
#
96c29900 |
| 25-Sep-2023 |
Viktor Szakats |
build: delete checks for C89 standard headers Delete checks and guards for standard C89 headers and assume these are available: `stdio.h`, `string.h`, `time.h`, `setjmp.h`, `stdlib.h`,
build: delete checks for C89 standard headers Delete checks and guards for standard C89 headers and assume these are available: `stdio.h`, `string.h`, `time.h`, `setjmp.h`, `stdlib.h`, `stddef.h`, `signal.h`. Some of these we already used unconditionally, some others we only used for feature checks. Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 (for `stdio.h` in CMake) Closes #11940
show more ...
|