a426b505 | 13-Oct-2023 |
Viktor Szakats |
build: variadic macro tidy-ups - delete unused `HAVE_VARIADIC_MACROS_C99/GCC` feature checks. (both autotools and CMake.) - delete duplicate `NULL` check in `Curl_trc_cf_infof()`.
build: variadic macro tidy-ups - delete unused `HAVE_VARIADIC_MACROS_C99/GCC` feature checks. (both autotools and CMake.) - delete duplicate `NULL` check in `Curl_trc_cf_infof()`. - fix compiler warning in `CURL_DISABLE_VERBOSE_STRINGS` builds. ``` ./lib/cf-socket.c:122:41: warning: unused parameter 'data' [-Wunused-parameter] static void nosigpipe(struct Curl_easy *data, ^ ``` - fix `#ifdef` comments in `lib/curl_trc.{c,h}`. - fix indentation in some `infof()` calls. Follow-up to dac293cfb7026b1ca4175d88b80f1432d3d3c684 #12167 Cherry-picked from #12105 Closes #12210
show more ...
|
191e695f | 26-Oct-2023 |
Viktor Szakats |
cmake: speed up threads setup for Windows Win32 threads are always available. We enabled them unconditionally (with `ENABLE_THREADED_RESOLVER`). CMake built-in thread detection logic
cmake: speed up threads setup for Windows Win32 threads are always available. We enabled them unconditionally (with `ENABLE_THREADED_RESOLVER`). CMake built-in thread detection logic has this condition hard-coded for Windows as well (since at least 2007). Instead of doing all the work of detecting pthread combinations on Windows, then discarding those results, skip these efforts and assume built-in thread support when building for Windows. This saves 1-3 slow CMake configuration steps. Reviewed-by: Daniel Stenberg Closes #12202
show more ...
|
c5d506e9 | 25-Oct-2023 |
Viktor Szakats |
cmake: speed up zstd detection Before this patch we detected the presence of a specific zstd API to see if we can use the library. zstd published that API in its first stable release
cmake: speed up zstd detection Before this patch we detected the presence of a specific zstd API to see if we can use the library. zstd published that API in its first stable release: v1.0.0 (2016-08-31). Replace that method by detecting the zstd library version instead and accepting if it's v1.0.0 or newer. Also display this detected version and display a warning if the zstd found is unfit for curl. We use the same version detection method as zstd itself, via its public C header. This deviates from autotools which keeps using the slow method of looking for the API by building a test program. The outcome is the same as long as zstd keeps offering this API. Ref: https://github.com/facebook/zstd/commit/5a0c8e24395079f8e8cdc90aa1659cd5ab1b7427 (2016-08-12, committed) Ref: https://github.com/facebook/zstd/releases/tag/v0.8.1 (2016-08-18, first released) Ref: https://github.com/facebook/zstd/releases/tag/v1.0.0 Reviewed-by: Daniel Stenberg Closes #12200
show more ...
|
9ee6da65 | 25-Oct-2023 |
Daniel Stenberg |
openssl: fix infof() to avoid compiler warning for %s with null vtls/openssl.c: In function ‘ossl_connect_step2’: ../lib/curl_trc.h:120:10: error: ‘%s’ directive argument is null [-Werro
openssl: fix infof() to avoid compiler warning for %s with null vtls/openssl.c: In function ‘ossl_connect_step2’: ../lib/curl_trc.h:120:10: error: ‘%s’ directive argument is null [-Werror=format-overflow=] 120 | Curl_infof(data, __VA_ARGS__); } while(0) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vtls/openssl.c:4008:5: note: in expansion of macro ‘infof’ 4008 | infof(data, "SSL connection using %s / %s / %s / %s", | ^~~~~ vtls/openssl.c:4008:49: note: format string is defined here 4008 | infof(data, "SSL connection using %s / %s / %s / %s", | ^~ Follow-up to b6e6d4ff8f253c8b8055bab Closes #12196
show more ...
|
dac293cf | 20-Oct-2023 |
Stefan Eissing |
lib: apache style infof and trace macros/functions - test for a simplified C99 variadic check - args to infof() in --disable-verbose are no longer disregarded but must compile.
lib: apache style infof and trace macros/functions - test for a simplified C99 variadic check - args to infof() in --disable-verbose are no longer disregarded but must compile. Closes #12167 Fixes #12083 Fixes #11880 Fixes #11891
show more ...
|
d1a7da65 | 26-Oct-2023 |
Daniel Stenberg |
RELEASE-NOTES: synced |
56a4db2e | 25-Oct-2023 |
Stefan Eissing |
urldata: move async resolver state from easy handle to connectdata - resolving is done for a connection, not for every transfer - save create/dup/free of a cares channel for each transfe
urldata: move async resolver state from easy handle to connectdata - resolving is done for a connection, not for every transfer - save create/dup/free of a cares channel for each transfer - check values of setopt calls against a local channel if no connection has been attached yet, when needed. Closes #12198
show more ...
|
910f740c | 26-Oct-2023 |
Daniel Stenberg |
CURLOPT_WRITEFUNCTION.3: clarify what libcurl returns for CURL_WRITEFUNC_ERROR It returns CURLE_WRITE_ERROR. It was not previously stated clearly. Reported-by: enWILLYado on github
CURLOPT_WRITEFUNCTION.3: clarify what libcurl returns for CURL_WRITEFUNC_ERROR It returns CURLE_WRITE_ERROR. It was not previously stated clearly. Reported-by: enWILLYado on github Fixes #12201 Closes #12203
show more ...
|
6ec70a9d | 25-Oct-2023 |
Viktor Szakats |
autotools: update references to deleted `crypt-auth` option Delete leftovers of the `crypt-auth` `./configure` option and add the new ones that replaced them. Follow-up to e92ed
autotools: update references to deleted `crypt-auth` option Delete leftovers of the `crypt-auth` `./configure` option and add the new ones that replaced them. Follow-up to e92edfbef64448ef461117769881f3ed776dec4e #11490 Reviewed-by: Daniel Stenberg Closes #12194
show more ...
|
47f5b1a3 | 04-Sep-2023 |
Stefan Eissing |
lib: introduce struct easy_poll_set for poll information Connection filter had a `get_select_socks()` method, inspired by the various `getsocks` functions involved during the lifetime of
lib: introduce struct easy_poll_set for poll information Connection filter had a `get_select_socks()` method, inspired by the various `getsocks` functions involved during the lifetime of a transfer. These, depending on transfer state (CONNECT/DO/DONE/ etc.), return sockets to monitor and flag if this shall be done for POLLIN and/or POLLOUT. Due to this design, sockets and flags could only be added, not removed. This led to problems in filters like HTTP/2 where flow control prohibits the sending of data until the peer increases the flow window. The general transfer loop wants to write, adds POLLOUT, the socket is writeable but no data can be written. This leads to cpu busy loops. To prevent that, HTTP/2 did set the `SEND_HOLD` flag of such a blocked transfer, so the transfer loop cedes further attempts. This works if only one such filter is involved. If a HTTP/2 transfer goes through a HTTP/2 proxy, two filters are setting/clearing this flag and may step on each other's toes. Connection filters `get_select_socks()` is replaced by `adjust_pollset()`. They get passed a `struct easy_pollset` that keeps up to `MAX_SOCKSPEREASYHANDLE` sockets and their `POLLIN|POLLOUT` flags. This struct is initialized in `multi_getsock()` by calling the various `getsocks()` implementations based on transfer state, as before. After protocol handlers/transfer loop have set the sockets and flags they want, the `easy_pollset` is *always* passed to the filters. Filters "higher" in the chain are called first, starting at the first not-yet-connection one. Each filter may add sockets and/or change flags. When all flags are removed, the socket itself is removed from the pollset. Example: * transfer wants to send, adds POLLOUT * http/2 filter has a flow control block, removes POLLOUT and adds POLLIN (it is waiting on a WINDOW_UPDATE from the server) * TLS filter is connected and changes nothing * h2-proxy filter also has a flow control block on its tunnel stream, removes POLLOUT and adds POLLIN also. * socket filter is connected and changes nothing * The resulting pollset is then mixed together with all other transfers and their pollsets, just as before. Use of `SEND_HOLD` is no longer necessary in the filters. All filters are adapted for the changed method. The handling in `multi.c` has been adjusted, but its state handling the the protocol handlers' `getsocks` method are untouched. The most affected filters are http/2, ngtcp2, quiche and h2-proxy. TLS filters needed to be adjusted for the connecting handshake read/write handling. No noticeable difference in performance was detected in local scorecard runs. Closes #11833
show more ...
|
29e198bc | 25-Oct-2023 |
Daniel Stenberg |
tests/README: SOCKS tests are not using OpenSSH, it has its own server Follow-up to 04fd67555cc Closes #12195 |
5ecbe4df | 24-Oct-2023 |
Jacob Hoffman-Andrews |
tets: make test documentation more user-friendly Put the instructions to run tests right at the top of tests/README.md. Give instructions to read the runtests.1 man page for informa
tets: make test documentation more user-friendly Put the instructions to run tests right at the top of tests/README.md. Give instructions to read the runtests.1 man page for information about flags. Delete redundant copy of the flags documentation in the README. Add a mention in README.md of the important parallelism flag, to make test runs go much faster. Move documentation of output line format into the runtests.1 man page, and update it with missing flags. Fix the order of two flags in the man page. Closes #12193
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 ...
|
7fdf30f2 | 24-Oct-2023 |
Jay Satiro |
page-footer: clarify exit code 25 - Clarify that curl tool exit code 25 means an upload failed to start. Exit code 25 is equivalent to CURLE_UPLOAD_FAILED (25). Prior to this ch
page-footer: clarify exit code 25 - Clarify that curl tool exit code 25 means an upload failed to start. Exit code 25 is equivalent to CURLE_UPLOAD_FAILED (25). Prior to this change the documentation only mentioned the case of FTP STOR failing. Reported-by: Emanuele Torre Ref: https://github.com/curl/curl/blob/curl-8_4_0/docs/libcurl/libcurl-errors.3#L113-L115 Fixes https://github.com/curl/curl/issues/12189 Closes https://github.com/curl/curl/pull/12190
show more ...
|
e8f9df6c | 24-Oct-2023 |
Daniel Stenberg |
scripts/cijobs.pl: adjust for appveyor Follow-up to a1d73a6bb |
b6e6d4ff | 03-Oct-2023 |
Alex Bozarth |
OpenSSL: Include SIG and KEM algorithms in verbose Currently the verbose output does not include which algorithms are used for the signature and key exchange when using OpenSSL. Includin
OpenSSL: Include SIG and KEM algorithms in verbose Currently the verbose output does not include which algorithms are used for the signature and key exchange when using OpenSSL. Including the algorithms used will enable better debugging when working on using new algorithm implementations. Know what algorithms are used has become more important with the fast growing research into new quantum-safe algorithms. This implementation includes a build time check for the OpenSSL version to use a new function that will be included in OpenSSL 3.2 that was introduced in openssl/openssl@6866824 Based-on-patch-by: Martin Schmatz <mrt@zurich.ibm.com> Closes #12030
show more ...
|
19a82c12 | 22-Oct-2023 |
Daniel Stenberg |
http2: provide an error callback and failf the message Getting nghttp2's error message helps users understand what's going on. For example when the connection is brought down due a forbi
http2: provide an error callback and failf the message Getting nghttp2's error message helps users understand what's going on. For example when the connection is brought down due a forbidden header is used - as that header is then not displayed by curl itself. Example: curl: (92) Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c] Ref: #12172 Closes #12179
show more ...
|
e17d8af2 | 23-Oct-2023 |
Turiiya <34311583+ttytm@users.noreply.github.com> |
BINDINGS: add V binding Closes #12182 |
f4ff4108 | 19-Oct-2023 |
Daniel Stenberg |
configure: check for the fseeko declaration too ... and make the code require both symbol and declaration. This is because for Android, the symbol is always present in the lib at
configure: check for the fseeko declaration too ... and make the code require both symbol and declaration. This is because for Android, the symbol is always present in the lib at build-time even when not actually available in run-time. Assisted-by: Viktor Szakats Reported-by: 12932 on github Fixes #12086 Closes #12158
show more ...
|
514969db | 19-Oct-2023 |
Viktor Szakats |
cmake: fix OpenSSL quic detection in quiche builds An orphan call to `CheckQuicSupportInOpenSSL()` remained after a recent update when checking QUIC for quiche. Move back QUIC detection
cmake: fix OpenSSL quic detection in quiche builds An orphan call to `CheckQuicSupportInOpenSSL()` remained after a recent update when checking QUIC for quiche. Move back QUIC detection to a function and fixup callers to use that. Also make sure that quiche gets QUIC from BoringSSL, because it doesn't support other forks at this time. Regression from dee310d54261f9a8416e87d50bccfe2cbe404949 #11555 Reported-by: Casey Bodley <cbodley@redhat.com> Fixes #12160 Closes #12162
show more ...
|
0bd9164b | 22-Oct-2023 |
Daniel Stenberg |
RELEASE-NOTES: synced bump to 8.5.0 for pending release |
85be173c | 21-Oct-2023 |
Dan Fandrich |
test3103: add missing quotes around a test tag attribute |
014ce7c0 | 11-Oct-2023 |
Loïc Yhuel |
tool: fix --capath when proxy support is disabled After 95e8515ca0, --capath always sets CURLOPT_PROXY_CAPATH, which fails with CURLE_UNKNOWN_OPTION when proxy support is disabled.
tool: fix --capath when proxy support is disabled After 95e8515ca0, --capath always sets CURLOPT_PROXY_CAPATH, which fails with CURLE_UNKNOWN_OPTION when proxy support is disabled. Closes #12089
show more ...
|
526779a7 | 20-Oct-2023 |
Daniel Stenberg |
openldap: move the alloc of ldapconninfo to *connect() Fixes a minor memory leak on LDAP connection reuse. Doing the allocation already in *setup_connection() is wrong since that
openldap: move the alloc of ldapconninfo to *connect() Fixes a minor memory leak on LDAP connection reuse. Doing the allocation already in *setup_connection() is wrong since that connect struct might get discarded early when an existing connection is reused instead. Closes #12166
show more ...
|
3afbe060 | 19-Oct-2023 |
Daniel Stenberg |
openldap: set the callback argument in oldap_do ... to make sure it has the current 'data' pointer and not a stale old one. Reported-by: Dan Fandrich Closes #12166 |