9280bbea | 28-Aug-2024 |
Stefan Eissing |
urldata: remove proxy_connect_closed bit The connections 'proxy_connect_closed' bit was not used any more. Remove it. Closes #14708 |
80f9fce5 | 28-Aug-2024 |
Stefan Eissing |
cookie: add more debug tracing to set-cookie handling Might help us see why test977 fails occasionally. Closes #14705 |
ea6f5c9f | 27-Aug-2024 |
Stefan Eissing |
connect: limit update IP info Update IP related information at the connection and the transfer in two places only: once the filter chain connects and when a transfer is added to a co
connect: limit update IP info Update IP related information at the connection and the transfer in two places only: once the filter chain connects and when a transfer is added to a connection. The latter only updates on reuse when the filters already are connected. The only user of that information before a full connect is the HAProxy filter. Add cfilter CF_QUERY_IP_INFO query to let it find the information from the filters "below". This solves two issues with the previous version: - updates where often done twice with the same info - happy eyeballing filter "forks" could overwrite each others updates before the full winner was determined. Closes #14699
show more ...
|
87f0a794 | 27-Aug-2024 |
Moritz Buhl |
HTTP3.md: cleanup markup and language Closes #14698 |
0ae3fadb | 26-Aug-2024 |
Stefan Eissing |
pytest: tweak counts Lower some iteration counts for tests where they do not seem to add value. Raise speed limits somewhat to shave off a second or two. Closes #14689 |
29610e5f | 26-Aug-2024 |
Stefan Eissing |
transfer: skip EOS read when download done When we downloaded all we wanted, and we did not want a response body, and no Trailer: has been announced, and the receive gives EAGAIN, do not
transfer: skip EOS read when download done When we downloaded all we wanted, and we did not want a response body, and no Trailer: has been announced, and the receive gives EAGAIN, do not hang around unnecessarily. Some servers are buggy in HEAD processing and fail to send the HTTP/2 EOS. Since we do not need any more data, end the request right there. This will cause us to send a RST_STREAM to the server. Fixes #14670 Reported-by: Gruber Glass Closes #14685
show more ...
|
1be704e1 | 23-Aug-2024 |
Stefan Eissing |
cpool: rename "connection cache/conncache" to "Connection Pools/cpool" This is a better match for what they do and the general "cpool" var/function prefix works well. The pool n
cpool: rename "connection cache/conncache" to "Connection Pools/cpool" This is a better match for what they do and the general "cpool" var/function prefix works well. The pool now handles very long hostnames correctly. The following changes have been made: * 'struct connectdata', e.g. connections, keep new members named `destination` and ' destination_len' that fully specifies interface+port+hostname of where the connection is going to. This is used in the pool for "bundling" of connections with the same destination. There is no limit on the length any more. * Locking: all locks are done inside conncache.c when calling into the pool and released on return. This eliminates hazards of the callers keeping track. * 'struct connectbundle' is now internal to the pool. It is no longer referenced by a connection. * 'bundle->multiuse' no longer exists. HTTP/2 and 3 and TLS filters no longer need to set it. Instead, the multi checks on leaving MSTATE_CONNECT or MSTATE_CONNECTING if the connection is now multiplexed and new, e.g. not conn->bits.reuse. In that case the processing of pending handles is triggered. * The pool's init is provided with a callback to invoke on all connections being discarded. This allows the cleanups in `Curl_disconnect` to run, wherever it is decided to retire a connection. * Several pool operations can now be fully done with one call. Pruning dead connections, upkeep and checks on pool limits can now directly discard connections and need no longer return those to the caller for doing that (as we have now the callback described above). * Finding a connection for reuse is now done via `Curl_cpool_find()` and the caller provides callbacks to evaluate the connection candidates. * The 'Curl_cpool_check_limits()' now directly uses the max values that may be set in the transfer's multi. No need to pass them around. Curl_multi_max_host_connections() and Curl_multi_max_total_connections() are gone. * Add method 'Curl_node_llist()' to get the llist a node is in. Used in cpool to verify connection are indeed in the list (or not in any list) as they need to. I left the conncache.[ch] as is for now and also did not touch the documentation. If we update that outside the feature window, we can do this in a separate PR. Multi-thread safety is not achieved by this PR, but since more details on how pools operate are now "internal" it is a better starting point to go for this in the future. Closes #14662
show more ...
|
3af75e18 | 26-Aug-2024 |
Daniel Stenberg |
configure: remove USE_EXPLICIT_LIB_DEPS Added a long time ago for something that libtool should handle for us. Closes #14697 |
d620ec67 | 27-Aug-2024 |
Viktor Szakats |
CI: add test timeouts, more cmake build tests, fix VS2010 C warning - GHA/macos: set timeout for test runs. Double the value for autotools to fit torture tests. - GHA/cygwin: reduc
CI: add test timeouts, more cmake build tests, fix VS2010 C warning - GHA/macos: set timeout for test runs. Double the value for autotools to fit torture tests. - GHA/cygwin: reduce test run timeout for autotools. - GHA/cygwin: enable building tests with cmake. - GHA/windows: enable building tests with MSYS cmake. - GHA/windows: enable building tests with MSVC UWP. - appveyor: enable building tests with VS2008 x86 and VS2010 x64. - tests: add workaround compiler warnings when building with VS2010: ``` tests\server\util.c(482): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(486): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(490): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(720): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(726): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(732): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(781): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(785): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size tests\server\util.c(789): warning C4306: 'type cast' : conversion from 'int' to 'void (__cdecl *)(int)' of greater size ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/50485633/job/4ujlwxod3cexmn2q#L1535 With this, tests are built in all GHA cygwin/windows jobs. Timeouts avoid long runs with runaway issues, example: https://github.com/curl/curl/actions/runs/10575522173 Closes #14700
show more ...
|
2625360b | 25-Aug-2024 |
Viktor Szakats |
configure: fix WinIDN builds targeting old Windows 1. GHA/windows: enable WinIDN in Linux cross-builds. (to reveal the issue in CI.) 2. fix compiler warning when building wit
configure: fix WinIDN builds targeting old Windows 1. GHA/windows: enable WinIDN in Linux cross-builds. (to reveal the issue in CI.) 2. fix compiler warning when building with mingw-w64 supporting WinIDN, while targeting pre-Vista Windows, with a `WINVER` set to target Vista or newer. (Such was Ubuntu's mingw-w64 with the classic-mingw-specific trick in point 3 of this PR.) ``` ../../lib/idn.c:154:23: error: redundant redeclaration of ‘IdnToAscii’ [-Werror=redundant-decls] 154 | WINBASEAPI int WINAPI IdnToAscii(DWORD dwFlags, | ^~~~~~~~~~ In file included from /usr/share/mingw-w64/include/windows.h:73, from /usr/share/mingw-w64/include/winsock2.h:23, from ../../lib/setup-win32.h:91, from ../../lib/curl_setup.h:308, from ../../lib/idn.c:29: /usr/share/mingw-w64/include/winnls.h:1075:30: note: previous declaration of ‘IdnToAscii’ was here 1075 | WINNORMALIZEAPI int WINAPI IdnToAscii (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpASCIICharStr, int cchASCIIChar); | ^~~~~~~~~~ [...same for IdnToUnicode...] ``` Ref: https://github.com/curl/curl/actions/runs/10542832783/job/29210098553#step:7:89 3. drop `WINVER` override for classic-mingw. curl no longer supports building with classic-mingw. Reverts 37f1c21cb9c809ec870803fc40e1ed2afd9534ac #7581 4. sync `if IdnToUnicode can be linked` detection snippet with the live code in `lib/idn.c`. It fixes detection for the scenario in point 2. 5. delete unused `WINIDN_DIR` variable. Bug: https://github.com/curl/curl/pull/12606#issuecomment-1885381038 Previous abandoned attempt: #12684 Reviewed-by: Jay Satiro Closes #14680
show more ...
|
09437d8c | 26-Aug-2024 |
Viktor Szakats |
tests: delete `libhostname.so` and `chkhostname` Before this patch, `libhostname.so` and `chkhostname` were a test facility for overriding `gethostname()` in non-debug builds on Linu
tests: delete `libhostname.so` and `chkhostname` Before this patch, `libhostname.so` and `chkhostname` were a test facility for overriding `gethostname()` in non-debug builds on Linux and other Unix platforms supporting `LD_PRELOAD`. `gethostname()` has a single use with SMTP. The alternative way to override `gethostname()` is building in debug mode, which allows to do this via the `CURL_GETHOSTNAME` env, on all platforms. Drop the `LD_PRELOAD` solution in favour of the above. Also: - delete inactive NTLM code with a `gethostname()` call made from it. - streamline NTLM code by dropping a `printf()` and a macro. - tests: stop setting `CURL_GETHOSTNAME` where unnecessary. Closes #14695
show more ...
|
59b419f1 | 23-Aug-2024 |
Dan Fandrich |
CI: add a script and job to run cmakelint A number of checks don't match our style or are buggy and so are disabled. Co-authored-by: Viktor Szakats <vszakats@users.noreply.github.co
CI: add a script and job to run cmakelint A number of checks don't match our style or are buggy and so are disabled. Co-authored-by: Viktor Szakats <vszakats@users.noreply.github.com> Fixes #14580 Closes #14665
show more ...
|
fa37248d | 27-Aug-2024 |
Daniel Stenberg |
mailmap: add Moritz Buhl |
8fe1f562 | 27-Aug-2024 |
Moritz Buhl |
ngtcp2/osslq: remove NULL pointer dereferences If data is NULL, then it does not make sense to pass it to failf. Closes #14701 |
8dd0cb73 | 26-Aug-2024 |
Eric Norris |
share: don't reinitialize conncache Before this change, calling curl_share_setopt w/ CURL_LOCK_DATA_CONNECT a second time would re-initialize the connection cache, rather than use th
share: don't reinitialize conncache Before this change, calling curl_share_setopt w/ CURL_LOCK_DATA_CONNECT a second time would re-initialize the connection cache, rather than use the existing one. After this change, calling curl_share_setopt w/ CURL_LOCK_DATA_CONNECT multiple times will have no effect after the first call. Closes #14696
show more ...
|
c96551ce | 23-Aug-2024 |
Viktor Szakats |
cmake: `Libs.private` improvements - skip adding pkg-config libdirs if they are system locations. - replace custom regexes with `get_filename_component()`. - collect `-L` and `-frame
cmake: `Libs.private` improvements - skip adding pkg-config libdirs if they are system locations. - replace custom regexes with `get_filename_component()`. - collect `-L` and `-framework` separately. It means these will appear before libs in the `Libs.private` entry, syncing it with `./configure`. - collect in a list variable (was: string). - use `list(REMOVE_DUPLICATES)` to deduplicate libdirs. - rename internal variable that is now solely used for system libdirs. Follow-up to 7c0b6eb3bd1680e43e0688677c41b11a39b41962 #14652 Closes #14668
show more ...
|
2c9331be | 26-Aug-2024 |
Viktor Szakats |
GHA/macos: drop options no longer necessary Follow-up to 7673c1292955f1c4dc0d19acd3051b5acfb349aa #14674 Closes #14693 |
bc72a78a | 11-Aug-2024 |
Aki <75532970+AkiSakurai@users.noreply.github.com> |
GHA/windows: enable HTTPS tests with stunnel - install stunnel Closes #14488 |
4a006169 | 26-Aug-2024 |
Viktor Szakats |
GHA/configure-vs-cmake: drop disabling dependency tracking [ci skip] Recently added, but it's not saving anything at the configure stage, the only stage in this workflow. Follow
GHA/configure-vs-cmake: drop disabling dependency tracking [ci skip] Recently added, but it's not saving anything at the configure stage, the only stage in this workflow. Follow-up to aaacd02466f77d03b8fdc19e91a0a3ec72f4c38a #14678
show more ...
|
8132b170 | 26-Aug-2024 |
Daniel Stenberg |
transfer: remove comments, add asserts Curl_xfer_send and Curl_xfer_recv had commented FIXMEs about protocol setting up the transfers badly, but in reality these functions are too lo
transfer: remove comments, add asserts Curl_xfer_send and Curl_xfer_recv had commented FIXMEs about protocol setting up the transfers badly, but in reality these functions are too low-level to be able to depend on the protocol transfer setups having been done yet. Removed. The functions had checks for data and data->conn that I convered to asserts since they SHOULD always be valid in this function. The same goes for the runtime check for buffer_size > 0 that I also converted to an assert since that should never be set to an invalid value. Closes #14688
show more ...
|
444e34c5 | 26-Aug-2024 |
Daniel Stenberg |
CONTRIBUTE: polished - rewrite the keywords section to use less quoted texts - add "When the pull request is approved" - change some titles Closes #14691 |
89b9fb64 | 26-Aug-2024 |
Daniel Stenberg |
pop3: use the protocol handler ->write_resp Remove the "hardcoded" logic for the pop3 transfer handler and instead use the generic protocol handler write_resp function. Remove t
pop3: use the protocol handler ->write_resp Remove the "hardcoded" logic for the pop3 transfer handler and instead use the generic protocol handler write_resp function. Remove the check for 'data->req.ignorebody' because I cannot find a code flow where this is set for POP3. Closes #14684
show more ...
|
10873ec5 | 26-Aug-2024 |
Viktor Szakats |
GHA/configure-vs-cmake: delete stray backslash [ci skip] |
26ab9027 | 26-Aug-2024 |
Viktor Szakats |
configure: fix indentation more Follow-up to 0052b4b52dfbd6455a24dd95837e5236dc8e1f5d #14628 Closes #14682 |
aaacd024 | 25-Aug-2024 |
Viktor Szakats |
GHA/configure-vs-cmake: add Windows build, fix issues - configure: disable pthreads by default on Windows. - configure: disable detecting `fseeko()` on Windows. (It exists in mingw
GHA/configure-vs-cmake: add Windows build, fix issues - configure: disable pthreads by default on Windows. - configure: disable detecting `fseeko()` on Windows. (It exists in mingw-w64 2.0.0 and newer, but it's permanently ignored in CMake, as this function is never necessary on Windows.) - extend existing exceptions with their Windows variants. - `lib/formdata.c`: prioritize `_fseeki64()` over `fseeko()`. To reduce the difference between Windows builds, which now all use `_fseeki64()`. - cmake: perm-enable `HAVE_DIRENT_H` and `HAVE_OPENDIR` for mingw-w64, to match configure. Follow-up to bfe54b0e88239da542493321e795cd71c14af9cc #13137 This in theory could make the dir listing feature work in mingw-w64 build, but in my tests (on WINE) it failed at the preceding `open()` call. - cmake: perm-enable `HAVE_STRINGS_H` and `HAVE_UTIME_H` for mingw-w64, to match configure. (They are wrappers and make no difference in the build.) Also: - configure: sync `USE_MANUAL` macro with cmake, by only setting it for `src`. Drop checker exception. - CI: use `--disable-dependency-tracking` in existing jobs. - CI: install packages before git checkout, in existing jobs. Closes #14678
show more ...
|