#
38bf07bc |
| 12-Jun-2024 |
Patrick Monnerat |
os400: make it compilable again A newly introduced use of getsockname() in the cli tool makes it require the ascii wrapper module, which is not available outside of the library: as t
os400: make it compilable again A newly introduced use of getsockname() in the cli tool makes it require the ascii wrapper module, which is not available outside of the library: as the tool only uses the address family field (binary), disable wrappers outside of libcurl. Fix setsockopt() parameter type mismatch using a (void *) cast. Sync ILE/RPG binding. Closes #13930
show more ...
|
#
b77d627d |
| 05-Jun-2024 |
Andy Pan |
tcpkeepalive: add CURLOPT_TCP_KEEPCNT and --keepalive-cnt Closes #13885
|
#
54fe8c44 |
| 14-May-2024 |
Orgad Shaneh |
curl: support VLAN Priority: --vlan-priority Add --vlan-priority option to the command line tool for setting VLAN priority. Closes #13907
|
#
d69ee3ef |
| 07-Jun-2024 |
Daniel Stenberg |
curl: support -w '%{num_retries} Suggested-by: Jay Guerette Ref: https://github.com/curl/curl/discussions/13901 Closes #13910
|
#
ab6d5442 |
| 04-Apr-2024 |
Dorian Craps |
curl: (on linux) add MPTCP support Multipath TCP (MPTCP), standardized in RFC8684 [1], is a TCP extension that enables a TCP connection to use different paths. Multipath TCP has
curl: (on linux) add MPTCP support Multipath TCP (MPTCP), standardized in RFC8684 [1], is a TCP extension that enables a TCP connection to use different paths. Multipath TCP has been used for several use cases. On smartphones, MPTCP enables seamless handovers between cellular and Wi-Fi networks while preserving established connections. This use-case is what pushed Apple to use MPTCP since 2013 in multiple applications [2]. On dual-stack hosts, Multipath TCP enables the TCP connection to automatically use the best performing path, either IPv4 or IPv6. If one path fails, MPTCP automatically uses the other path. To benefit from MPTCP, both the client and the server have to support it. Multipath TCP is a backward-compatible TCP extension that is enabled by default on recent Linux distributions (Debian, Ubuntu, Redhat, ...). Multipath TCP is included in the Linux kernel since version 5.6 [3]. To use it on Linux, an application must explicitly enable it when creating the socket. No need to change anything else in the application. This attached patch adds an --mptcp option which allows the creation of an MPTCP socket instead of TCP on Linux. If Multipath TCP is not supported on the system, an error will be reported. It is important to note that if the end server doesn't support MPTCP, the connection will continue after a seamless fallback to TCP. Link: https://www.rfc-editor.org/rfc/rfc8684.html [1] Link: https://www.tessares.net/apples-mptcp-story-so-far/ [2] Link: https://www.mptcp.dev [3] Co-developed-by: Dorian Craps (@CrapsDorian) <doriancraps@gmail.com> Co-developed-by: Olivier Bonaventure (@obonaventure) <Olivier.Bonaventure@uclouvain.be> Co-developed-by: Matthieu Baerts (@matttbe) <matttbe@kernel.org> Signed-off-by: Dorian Craps <dorian.craps@student.vinci.be> Closes #13278
show more ...
|
#
3c20ae08 |
| 12-May-2024 |
Orgad Shaneh |
curl: support IP Type of Service / Traffic Class: --ip-tos Add --ip-tos option to the command line tool for setting TOS for IPv4 or Traffic Class for IPv6. Closes #13606
|
#
59dc9f7e |
| 20-May-2024 |
Viktor Szakats |
build: untangle `CURLDEBUG` and `DEBUGBUILD` macros `CURLDEBUG` is meant to enable memory tracking, but in a bunch of cases, it was protecting debug features that were supposed to be gua
build: untangle `CURLDEBUG` and `DEBUGBUILD` macros `CURLDEBUG` is meant to enable memory tracking, but in a bunch of cases, it was protecting debug features that were supposed to be guarded with `DEBUGBUILD`. Replace these uses with `DEBUGBUILD`. This leaves `CURLDEBUG` uses solely for its intended purpose: to enable the memory tracking debug feature. Also: - autotools: rely on `DEBUGBUILD` to enable `checksrc`. Instead of `CURLDEBUG`, which worked in most cases because debug builds enable `CURLDEBUG` by default, but it's not accurate. - include `lib/easyif.h` instead of keeping a copy of a declaration. - add CI test jobs for the build issues discovered. Ref: https://github.com/curl/curl/pull/13694#issuecomment-2120311894 Closes #13718
show more ...
|
#
96a4cad4 |
| 19-May-2024 |
Orgad Shaneh |
tool_operate: avoid explicitly setting verifypeer to 1 Also for the proxy verison. It is the default, just like verifyhost, since a long time. Closes #13704
|
#
1a895383 |
| 13-May-2024 |
Viktor Szakats |
src: tidy up types, add necessary casts Cherry-picked from #13489 Closes #13614
|
#
00bef959 |
| 20-Apr-2024 |
Gusted |
tool_operate: don't truncate the etag save file by default This fixes a regression of 75d79a4486b279100209ddf8c7fdb12955fb66e9. The code in tool-operate truncated the etag save file, und
tool_operate: don't truncate the etag save file by default This fixes a regression of 75d79a4486b279100209ddf8c7fdb12955fb66e9. The code in tool-operate truncated the etag save file, under the assumption that the file would be written with a new etag value. However since 75d79a4486b279100209ddf8c7fdb12955fb66e9 that might not be the case anymore and could result in the file being truncated when --etag-compare and --etag-save was used and that the etag value matched with what the server responded. Instead the truncation should not be done when a new etag value should be written. Test 3204 was added to verify that the file with the etag value doesn't change the contents when used by --etag-compare and --etage-save and that value matches with what the server returns on a non 2xx response. Closes #13432
show more ...
|
#
5fa594ab |
| 20-Apr-2024 |
Daniel Stenberg |
tool_operate: init vars unconditionally in post_per_transfer In case of (the unlikely) early return, they could otherwise remain uninitialized Spotted by CodeSonar Clos
tool_operate: init vars unconditionally in post_per_transfer In case of (the unlikely) early return, they could otherwise remain uninitialized Spotted by CodeSonar Closes #13430
show more ...
|
#
a362962b |
| 04-Apr-2024 |
Stephen Farrell |
TLS: add support for ECH (Encrypted Client Hello) An EXPERIMENTAL feature used with CURLOPT_ECH and --ech. Closes #11922
|
#
aba80430 |
| 30-Mar-2024 |
Daniel Stenberg |
tool: follow-up getenv fix Remove a double free. Change the IPFS env use to a plain getenv() simply because coverity gets confused. Follow-up to 9126b141c9398fe Closes #13241
|
#
9126b141 |
| 30-Mar-2024 |
Daniel Stenberg |
curl: use curl_getenv instead of the curlx_ version The curlx one was once introduced when we still considered dropping the libcurl function at some point. To reduce confusion and to mak
curl: use curl_getenv instead of the curlx_ version The curlx one was once introduced when we still considered dropping the libcurl function at some point. To reduce confusion and to make it easier to understand when curl_free() should be used, use the actual libcurl function call directly instead. Closes #13230
show more ...
|
#
40948189 |
| 14-Mar-2024 |
Daniel Stenberg |
curl: make --libcurl output better CURLOPT_*SSLVERSION The option is really two enums ORed together, so it needs special attention to make the code output nice. Added test 1481
curl: make --libcurl output better CURLOPT_*SSLVERSION The option is really two enums ORed together, so it needs special attention to make the code output nice. Added test 1481 to verify. Both the server and the proxy versions. Reported-by: Boris Verkhovskiy Fixes #13127 Closes #13129
show more ...
|
#
924e264b |
| 05-Feb-2024 |
Daniel Stenberg |
tool_operate: change precedence of server Retry-After time - When calculating the retry time, no longer allow a server's requested Retry-After time to take precedence over a longer ret
tool_operate: change precedence of server Retry-After time - When calculating the retry time, no longer allow a server's requested Retry-After time to take precedence over a longer retry time (either default algorithmic or user-specified). Prior to this change the server's Retry-After time took precedence over curl's retry time in all cases, but that's not always practical for short Retry-After times depending on how busy the server is. Bug: https://curl.se/mail/archive-2024-01/0022.html Reported-by: Dirk Hünniger Closes https://github.com/curl/curl/pull/12871
show more ...
|
#
2f3e7a26 |
| 01-Feb-2024 |
Daniel Stenberg |
tool_operate: do not set CURLOPT_QUICK_EXIT in debug builds Since it allows (small) memory leaks that interfere with torture tests and regular memory-leak checks. Reported-by: D
tool_operate: do not set CURLOPT_QUICK_EXIT in debug builds Since it allows (small) memory leaks that interfere with torture tests and regular memory-leak checks. Reported-by: Dan Fandrich Fixes #12834 Closes #12835
show more ...
|
#
ae9f01f3 |
| 15-Jan-2024 |
Daniel Stenberg |
tool_operate: make --remove-on-error only remove "real" files Reported-by: Harry Sintonen Assisted-by: Dan Fandrich Closes #12710
|
#
ba01cac3 |
| 15-Jan-2024 |
Daniel Stenberg |
tool_operate: stop setting the file comment on Amiga - the URL is capped at 80 cols, which ruins it if longer - it does not strip off URL credentials - it is done unconditonally, not
tool_operate: stop setting the file comment on Amiga - the URL is capped at 80 cols, which ruins it if longer - it does not strip off URL credentials - it is done unconditonally, not on --xattr - we don't have Amiga in the CI which makes fixing it blindly fragile Someone who builds and tests on Amiga can add it back correctly in a future if there is a desire. Reported-by: Harry Sintonen Closes #12709
show more ...
|
#
1f4433da |
| 08-Jan-2024 |
Daniel Stenberg |
tool_getparam: build post data using dynbuf (more)
|
#
1dba44b2 |
| 08-Jan-2024 |
Daniel Stenberg |
tool_getparam: replace malloc + copy by dynbuf for --data
|
#
e9a7d4a1 |
| 21-Nov-2023 |
Viktor Szakats |
windows: use built-in `_WIN32` macro to detect Windows Windows compilers define `_WIN32` automatically. Windows SDK headers or build env defines `WIN32`, or we have to take care of it. T
windows: use built-in `_WIN32` macro to detect Windows Windows compilers define `_WIN32` automatically. Windows SDK headers or build env defines `WIN32`, or we have to take care of it. The agreement seems to be that `_WIN32` is the preferred practice here. Make the source code rely on that to detect we're building for Windows. Public `curl.h` was using `WIN32`, `__WIN32__` and `CURL_WIN32` for Windows detection, next to the official `_WIN32`. After this patch it only uses `_WIN32` for this. Also, make it stop defining `CURL_WIN32`. There is a slight chance these break compatibility with Windows compilers that fail to define `_WIN32`. I'm not aware of any obsolete or modern compiler affected, but in case there is one, one possible solution is to define this macro manually. grepping for `WIN32` remains useful to discover Windows-specific code. Also: - extend `checksrc` to ensure we're not using `WIN32` anymore. - apply minor formatting here and there. - delete unnecessary checks for `!MSDOS` when `_WIN32` is present. Co-authored-by: Jay Satiro Reviewed-by: Daniel Stenberg Closes #12376
show more ...
|
#
bc8509a7 |
| 07-Nov-2023 |
Sam James |
misc: fix -Walloc-size warnings GCC 14 introduces a new -Walloc-size included in -Wextra which gives: ``` src/tool_operate.c: In function ‘add_per_transfer’: src/tool_operat
misc: fix -Walloc-size warnings GCC 14 introduces a new -Walloc-size included in -Wextra which gives: ``` src/tool_operate.c: In function ‘add_per_transfer’: src/tool_operate.c:213:5: warning: allocation of insufficient size ‘1’ for type ‘struct per_transfer’ with size ‘480’ [-Walloc-size] 213 | p = calloc(sizeof(struct per_transfer), 1); | ^ src/var.c: In function ‘addvariable’: src/var.c:361:5: warning: allocation of insufficient size ‘1’ for type ‘struct var’ with size ‘32’ [-Walloc-size] 361 | p = calloc(sizeof(struct var), 1); | ^ ``` The calloc prototype is: ``` void *calloc(size_t nmemb, size_t size); ``` So, just swap the number of members and size arguments to match the prototype, as we're initialising 1 struct of size `sizeof(struct ...)`. GCC then sees we're not doing anything wrong. Closes #12292
show more ...
|
#
01d9b8bc |
| 06-Nov-2023 |
Daniel Stenberg |
curl: move IPFS code into src/tool_ipfs.[ch] - convert ensure_trailing into ensure_trailing_slash - strdup the URL string to own it proper - use shorter variable names - combine
curl: move IPFS code into src/tool_ipfs.[ch] - convert ensure_trailing into ensure_trailing_slash - strdup the URL string to own it proper - use shorter variable names - combine some expressions - simplify error handling in ipfs_gateway() - add MAX_GATEWAY_URL_LEN + proper bailout if maximum is reached - ipfs-gateway.d polish and simplification - shorten ipfs error message + make them "synthetic" Closes #12281
show more ...
|
#
ba281e5c |
| 06-Nov-2023 |
Daniel Stenberg |
tool_operate: do not mix memory models Make sure 'inputpath' only points to memory allocated by libcurl so that curl_free works correctly. Pointed out by Coverity Follo
tool_operate: do not mix memory models Make sure 'inputpath' only points to memory allocated by libcurl so that curl_free works correctly. Pointed out by Coverity Follow-up to 859e88f6533f9e1f890 Closes #12280
show more ...
|