#
cd2b4520 |
| 28-Oct-2024 |
Daniel Stenberg |
src/lib: remove redundant ternary operators Closes #15435
|
#
522c89a1 |
| 26-Oct-2024 |
Daniel Stenberg |
lib: remove Curl_ prefix from static functions 'Curl_' is a prefix used for library global functions (cross-files). Static functions should thus not use it. Closes #15419
|
#
9cc24640 |
| 17-Oct-2024 |
Daniel Stenberg |
source: avoid use of 'very' in comments
|
#
9bee39bf |
| 12-Oct-2024 |
Daniel Stenberg |
url: use same credentials on redirect Previously it could lose the username and only use the password. Added test 998 and 999 to verify. Reported-by: Tobias Bora Fixes
url: use same credentials on redirect Previously it could lose the username and only use the password. Added test 998 and 999 to verify. Reported-by: Tobias Bora Fixes #15262 Closes #15282
show more ...
|
#
3b43a05e |
| 10-Oct-2024 |
Daniel Stenberg |
netrc: cache the netrc file in memory So that on redirects etc it does not reread the file but just parses it again. Reported-by: Pierre-Etienne Meunier Fixes #15248 Clo
netrc: cache the netrc file in memory So that on redirects etc it does not reread the file but just parses it again. Reported-by: Pierre-Etienne Meunier Fixes #15248 Closes #15259
show more ...
|
#
bcec0840 |
| 02-Oct-2024 |
Daniel Stenberg |
lib: use bool/TRUE/FALSE properly booleans should use the type 'bool' and set the value to TRUE/FALSE non-booleans should not be 'bool' and should not set the value to TRUE/FALS
lib: use bool/TRUE/FALSE properly booleans should use the type 'bool' and set the value to TRUE/FALSE non-booleans should not be 'bool' and should not set the value to TRUE/FALSE Closes #15123
show more ...
|
#
d78e129d |
| 27-Sep-2024 |
Daniel Stenberg |
WebSockets: make support official (non-experimental) Inverts the configure/cmake options to instead provide options that disable WebSockets and have them (ws + wss) enabled by default.
WebSockets: make support official (non-experimental) Inverts the configure/cmake options to instead provide options that disable WebSockets and have them (ws + wss) enabled by default. Closes #14936
show more ...
|
#
d83b528a |
| 10-Sep-2024 |
Viktor Szakats |
tidy-up: spelling C89, Schannel, Secure Transport, contractions. Cherry-picked from #14692 Closes #14996
|
#
47d6ec98 |
| 19-Sep-2024 |
Stefan Eissing |
alt-svc: honor data->state.httpwant When a transfer is set for a speficif HTTP version, only lookup that protocol in the alt-svc mappings. When no speicific version is requested, sca
alt-svc: honor data->state.httpwant When a transfer is set for a speficif HTTP version, only lookup that protocol in the alt-svc mappings. When no speicific version is requested, scan all entries as before. Closes #14966
show more ...
|
#
433d7303 |
| 19-Sep-2024 |
Stefan Eissing |
url: connection reuse on h3 connections - When searching for existing connections, interpret the default CURL_HTTP_VERSION_2TLS as "anything goes". This will allow us to reuse HT
url: connection reuse on h3 connections - When searching for existing connections, interpret the default CURL_HTTP_VERSION_2TLS as "anything goes". This will allow us to reuse HTTP/3 connections better - add 'http/1.1' as allowed protocol identifier in Alt-Svc files - add test_02_0[345] for testing protocol selection on provided alt-svc files Fixes #14890 Reported-by: MacKenzie Closes #14966
show more ...
|
#
fbf5d507 |
| 18-Sep-2024 |
Daniel Stenberg |
lib/src: white space edits to comply better with code style ... as checksrc now finds and complains about these. Closes #14921
|
#
50166c0d |
| 13-Sep-2024 |
Stefan Eissing |
connect: store connection info when really done Output the 'Connected to...' info message when the connection has been fully established and all information is available. Due to
connect: store connection info when really done Output the 'Connected to...' info message when the connection has been fully established and all information is available. Due to our happy eyeballing, we should not emit info messages in filters, because they may be part of an eyeballing attempt and may be discarded later for another chain. Closes #14897
show more ...
|
#
4ff04615 |
| 02-Sep-2024 |
Daniel Stenberg |
lib: use FMT_ as prefix instead of CURL_FORMAT_ For printf format defines used internally. Makes the code slighly easier to read. Closes #14764
|
#
00ef6073 |
| 30-Aug-2024 |
Stefan Eissing |
url: fix connection reuse for HTTP/2 upgrades Normally, when a connection's filters have all connected, the multiplex status is determined. However, HTTP/2 Upgrade: requests will onl
url: fix connection reuse for HTTP/2 upgrades Normally, when a connection's filters have all connected, the multiplex status is determined. However, HTTP/2 Upgrade: requests will only do this when the first server response has been received. The current connection reuse mechanism does not accomodate that and when the time between connect and response is large enough, connection reuse may not happen as desired. See test case 2405 failures, such as in https://github.com/curl/curl/actions/runs/10629497461/job/29467166451 Add 'conn->bits.asks_multiplex' as indicator that a connection is still being evaluated for mulitplexing, so that new transfers may wait on this to be cleared. Closes #14739
show more ...
|
#
64ab0ace |
| 28-Aug-2024 |
Stefan Eissing |
urldata: remove crlf_conversions counter Since the introduction of client writers, we check the body length in the PROTOCOL phase and do FTP lineend conversions laster in the CONTENT
urldata: remove crlf_conversions counter Since the introduction of client writers, we check the body length in the PROTOCOL phase and do FTP lineend conversions laster in the CONTENT_DECODING phase. This means we no longer need to count the conversions for length checks. Closes #14709
show more ...
|
#
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
|
#
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 ...
|
#
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 ...
|
#
3b057d4b |
| 21-Aug-2024 |
Daniel Stenberg |
test1521: verify setting options to NULL better Previously this test allowed several error values when setting options. This made this test miss #14629. Now, errors are generall
test1521: verify setting options to NULL better Previously this test allowed several error values when setting options. This made this test miss #14629. Now, errors are generally not accepted for setopts: - numerical setopts accept CURLE_BAD_FUNCTION_ARGUMENT for funny input - the first setopt to an option accepts CURLE_NOT_BUILT_IN or CURLE_UNKNOWN_OPTION for when they are disabled/not built-in - there is an allowlist concept for some return code for some variables, managed at the top of the mk-lib1521.pl script In curl.h: remove the OBSOLETE named values from the setopt list. Closes #14634
show more ...
|
#
a58b50fc |
| 15-Aug-2024 |
Stefan Eissing |
transfer: Curl_sendrecv() and event related improvements - Renames Curl_readwrite() to Curl_sendrecv() to reflect that it is mainly about talking to the server, not reads or writes to
transfer: Curl_sendrecv() and event related improvements - Renames Curl_readwrite() to Curl_sendrecv() to reflect that it is mainly about talking to the server, not reads or writes to the client. Add a `nowp` parameter since the single caller already has this. - Curl_sendrecv() now runs all possible operations whenever it is called and either it had been polling sockets or the 'select_bits' are set. POLL_IN/POLL_OUT are not always directly related to send/recv operations. Filters like HTTP/2, QUIC or TLS may monitor reverse directions. If a transfer does not want to send (KEEP_SEND), it will not do so, as before. Same for receives. - Curl_update_timer() now checks the absolute timestamp of an expiry and the last/new timeout to determine if the application needs to stop/start/restart its timer. This fixes edge cases where updates did not happen as they should have. - improved --test-event curl_easy_perform() simulation to handle situations where no sockets are registered but a timeout is in place. - fixed bug in events_socket() that complained about removing a socket that was unknown, when indeed it had removed the socket just before, only it was the last in the list - fixed conncache's internal handle to carry the multi instance (where the cache has one) so that operations on the closure handle trigger event callbacks correctly. - fixed conncache to not POLL_REMOVE a socket twice when a conneciton was closed. Closes #14561
show more ...
|
#
22d292b3 |
| 12-Aug-2024 |
Stefan Eissing |
urldata: introduce `data->mid`, a unique identifier inside a multi `data->id` is unique in *most* situations, but not in all. If a libcurl application uses more than one connection cache
urldata: introduce `data->mid`, a unique identifier inside a multi `data->id` is unique in *most* situations, but not in all. If a libcurl application uses more than one connection cache, they will overlap. This is a rare situations, but libcurl apps do crazy things. However, for informative things, like tracing, `data->id` is superior, since it assigns new ids in curl's serial curl_easy_perform() use. Introduce `data->mid` which is a unique identifer inside one multi instance, assigned on multi_add_handle() and cleared on multi_remove_handle(). Use the `mid` in DoH operations and also in h2/h3 stream hashes. Reported-by: 罗朝辉 Fixes #14414 Closes #14499
show more ...
|
#
ba235ab2 |
| 10-Aug-2024 |
Daniel Stenberg |
llist: remove direct struct accesses, use only functions - Turned them all into functions to also do asserts etc. - The llist related structs got all their fields renamed in order t
llist: remove direct struct accesses, use only functions - Turned them all into functions to also do asserts etc. - The llist related structs got all their fields renamed in order to make sure no existing code remains using direct access. - Each list node struct now points back to the list it "lives in", so Curl_node_remove() no longer needs the list pointer. - Rename the node struct and some of the access functions. - Added lots of ASSERTs to verify API being used correctly - Fix some cases of API misuse Add docs/LLIST.md documenting the internal linked list API. Closes #14485
show more ...
|
#
f0a55181 |
| 12-Aug-2024 |
Daniel Stenberg |
urldata: remove 'scratch' from the UrlState struct It is not used anywhere anymore Follow-up to e3905de8196d67b89df160 Closes #14500
|
#
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 ...
|
#
5a9262a3 |
| 12-Jul-2024 |
Stefan Eissing |
url: dns_entry related improvements Replace Curl_resolv_unlock() with Curl_resolv_unlink(): -replace inuse member with refcount in Curl_dns_entry - pass Curl_dns_entry ** t
url: dns_entry related improvements Replace Curl_resolv_unlock() with Curl_resolv_unlink(): -replace inuse member with refcount in Curl_dns_entry - pass Curl_dns_entry ** to unlink, so it gets always cleared - solve potential (but unlikley) UAF in FTP's handling of looked up Curl_dns_entry. Esp. do not use addr information after unlinking an entry. In reality, the unlink will not free memory, as the dns entry is still referenced by the hostcache. But this is not safe and relying on no other code pruning the cache in the meantime. - pass permanent flag when adding a dns entry instead of fixing timestamp afterwards. url.c: fold several static *resolve_* functions into one. Closes #14195
show more ...
|