Commit graph

38999 commits

Author SHA1 Message Date
Viktor Szakats
037ff984ff
or higher -> or greater 9 src 2026-06-13 00:09:22 +02:00
Viktor Szakats
46d858bc3b
or higher -> or greater 9 src 2026-06-13 00:09:22 +02:00
Viktor Szakats
251780043c
or higher -> or greater 8 src 2026-06-13 00:09:22 +02:00
Viktor Szakats
ca032f6b0a
or higher -> or greater 7 GHA 2026-06-13 00:09:22 +02:00
Viktor Szakats
f60248956a
or higher -> or greater 6 vms 2026-06-13 00:09:22 +02:00
Viktor Szakats
13af664848
or higher -> or greater 5 cmake 2026-06-13 00:09:22 +02:00
Viktor Szakats
0e4d961a41
or higher -> or greater 4 m4 2026-06-13 00:09:22 +02:00
Viktor Szakats
fee38eb181
or higher -> or greater 3 tests 2026-06-13 00:09:22 +02:00
Viktor Szakats
b92d14018c
or higher -> or greater 2 2026-06-13 00:09:21 +02:00
Viktor Szakats
2843e66bd7
or higher -> or greater 2026-06-13 00:09:05 +02:00
Viktor Szakats
7ddd6405b4
later/older -> higher/lower 2026-06-13 00:09:05 +02:00
Viktor Szakats
c952c5d74c
minimum -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
c62c48ef44
and older -> or older 2026-06-13 00:09:05 +02:00
Viktor Szakats
9224d37408
and newer -> or newer 2026-06-13 00:09:05 +02:00
Viktor Szakats
44439068b8
and older -> or older 2026-06-13 00:09:05 +02:00
Viktor Szakats
161e7f79f3
and later -> and newer 2026-06-13 00:09:05 +02:00
Viktor Szakats
bad8800c62
and later -> and newer 2026-06-13 00:09:05 +02:00
Viktor Szakats
d842beed0e
and newer -> and higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
a76927fa06
and later -> and newer 2026-06-13 00:09:05 +02:00
Viktor Szakats
97e75f98b7
and later -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
de6ab39f5d
and older -> or lower, and newer -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
1a086f8548
AIX uppercase 2026-06-13 00:09:05 +02:00
Viktor Szakats
e05b7bc752
and newer -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
e66bdb9941
and above -> or newer 2026-06-13 00:09:05 +02:00
Viktor Szakats
9e5ead016b
and above -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
69e89374b2
and upper -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
c3178ce43b
and later -> or higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
a0b616162f
or greater/above -> higher (400) 2026-06-13 00:09:05 +02:00
Viktor Szakats
6ba2ab0741
or later -> newer (Windows version) 2026-06-13 00:09:05 +02:00
Viktor Szakats
eb2edbb00f
or later -> higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
c4707f2890
or greater -> higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
a2e9dfa9f0
or older -> lower 2026-06-13 00:09:05 +02:00
Viktor Szakats
e9347d54e4
or above -> higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
aa156cdc52
at least -> higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
46c2cf51f7
at least -> higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
7d02e46280
or newer -> higher 2026-06-13 00:09:05 +02:00
Viktor Szakats
1d5dc6d2f9
or later -> higher 2026-06-13 00:09:04 +02:00
Viktor Szakats
ccb637e5e3
or later -> newer (OS version) 2026-06-13 00:08:23 +02:00
Viktor Szakats
68a0bb1f50
or upper -> higher 2026-06-13 00:08:23 +02:00
Stefan Eissing
73daec6620
lib: transfer origin and proxy handling
Add `data->state.origin` as the origin the transfer is sending the
current request to/gets the response from. Use it for request specific
properties like authentication, hsts and cookie handling, etc.

Unless talking to a forwarding HTTP proxy (e.g. not tunneling),
`data->state.origin` and `conn->origin` are the same.

With a forwarding HTTP proxy in play, `conn->origin` is set to
`conn->http_proxy.peer` and `conn->bits.origin_is_proxy` (a new bit) is
set.

Remove the connection bits, now replaced with:

* `conn->bits.socksproxy` -> `conn->socks_proy.peer`
* `conn->bits.httpproxy` -> `conn->http_proy.peer`
* `conn->bits.proxy` -> `(conn->socks_proy.peer || conn->http_proy.peer`)
* `conn->bits.tunnel_proxy` -> (`conn->http_proy.peer && !conn->bits.origin_is_proxy`)
* `(conn->bits.httpproxy && !conn->bits.tunnel_proxy)` -> `conn->bits.origin_is_proxy`

Rename `noproxy.[ch]` to `proxy.[ch]`. Move the connection proxy setup
code from `url.c` to `proxy.c`.

Remove `data->info.conn_remote_port` as no one uses it.

Add test_40_02b for a SOCKS connection to a forwarding HTTPS proxy.

Update internal documentation about peers and creds.

Closes #21967
2026-06-12 23:52:00 +02:00
Viktor Szakats
c951368579
build: enable -Wlogical-op picky warning for GCC 4.4+
Follow-up to 879a1514c3 #21992

Closes #21893
2026-06-12 23:37:37 +02:00
Viktor Szakats
879a1514c3
socket: introduce SOCK_EAGAIN() and use it
To contain the logic of checking for both `EWOULDBLOCK` and/or `EAGAIN`
depending on platform/availability. Also to avoid checking for both if
they mapp to the same value, and to avoid PP guards around use.

This also ensures `EAGAIN` is consistently not checked on Windows, where
headers defined it, but `SOCKERRNO` never returns it, because curl maps
it to `WSAGetLastError()`.

If they map to the same value, checking them both in an `if` expression
trips GCC warning `-Wlogical-op` (the same way it triggers duplicate
case value error in `switch`).

Also:
- replace two `switch()` statements with the new macro.
- tests/server/sws: make two outliers use the new macro that were only
  checking for `EWOULDBLOCK` before this patch, in `connect_to()`.
- move variables to the left-side of expressions, where missing.
- rustls: use a variant of this macro that uses raw `EWOULDBLOCK`.
  Tried tracing it back to the origins, but I couldn't figure out if
  this is working as expected on all supported Windows versions in
  Rust. It seems to be using `GetLastError()`, according to
  https://docs.rs/system_error/0.2.0/system_error/, which would be
  probably incorrect.

Notes:
- it's probably a good idea to assign `SOCKERRNO` to a variable before
  passing it to this macro.

Cherry-picked from #21893

Closes #21992
2026-06-12 23:27:23 +02:00
Viktor Szakats
7c51a33877
AmigaOS: fix build fallouts, re-add to CI
Fix build issues:
- src: adjust `toolx_ftruncate()`.
- libtests/cli_ftp_upload: make `struct timeval` initialization portable.
- libtests/lib1960: do unconst in local `inet_pton()` macro.
- tests/server/dnsd: make it stub instead of failing the build.
- tests/server: make them link AmiSSL for `SocketBase`.

Also:
- bump AmiSSL to the latest release.
- add download hash checks and toolchain cache.
- sync restored code with local updates made since last year.

It takes 30 seconds per job, 1 minute in total.

Thanks-to: Bebbo
Thanks-to: Darren Banfi
Ref: https://github.com/curl/curl/pull/21989#issuecomment-4691380623
Follow-up to 7a14898264 #17486

Closes #21993
2026-06-12 20:27:44 +02:00
Stefan Eissing
7d8c68adbe schannel: fix https proxy for client cert and certinfo
When schannel operates in front of a proxy, it needs to use the proxy
ssl configs, not the transfers ones. Choose the configs as it is done in
other TLS backends.

Prior to this change the client cert for the destination was mistakenly
also used as the client cert for the proxy.

Prior to this change the proxy server certificate info was mistakenly
saved as the destination cert info. However, if the destination was a
TLS connection, the real destination cert info would overwrite the
proxy cert info. libcurl currently does not support proxy server cert
info AFAICT (see discussion in #21986).

Closes https://github.com/curl/curl/pull/21986
2026-06-12 14:21:10 -04:00
Viktor Szakats
4f53234309
telnet: fix old copy-paste typo in variable name
This code lacks tests, though we agreed it looks plausible enough to
merge it based on surrounding code. Even though this line has been
present for a long time. If you use this code, please report any results
or issues.

Reported by GitHub Code Quality

Follow-up to ae1912cb0d

Closes #21979
2026-06-12 16:03:32 +02:00
Daniel Stenberg
a1db90053b
runtests: exit hard on duplicate test name
To make the mistake more noticeable

Closes #21991
2026-06-12 15:33:57 +02:00
Daniel Stenberg
5b9263e5d7
mailmap: Darren Banfi 2026-06-12 14:48:12 +02:00
Darren Banfi
982e2e8c75
AmigaOS: curl_setup.h avoid explicit_bzero with clib2
clib2 defines __NEWLIB__ after its system headers are included, but it
does not provide explicit_bzero().

curl therefore selects the explicit_bzero() path and fails to build with
m68k-amigaos-gcc:

```
../lib/curl_setup.h:1650:35: error: implicit declaration of function 'explicit_bzero' [-Werror=implicit-function-declaration]
 1650 | #define curlx_memzero(buf, size)  explicit_bzero(buf, size)
      |                                   ^~~~~~~~~~~~~~
curlx/strdup.c:115:5: note: in expansion of macro 'curlx_memzero'
  115 |     curlx_memzero(buf, size);
      |     ^~~~~~~~~~~~~
```

Excluding __CLIB2__ from the generic __NEWLIB__ branch makes curl use
its existing portable curlx_memzero() fallback. The full AmigaOS build
then completes successfully.

I've tested the following on Amiga OS 3.2.3 with this patch and latest
build.

- HTTP and HTTPS transfers
- AmiSSL certificate handling
- redirects
- downloads and file output
- timeout handling with the expected exit code 28
- repeated execution with clean exits
- no crashes or regressions observed

Follow-up to 066478f634 #21598

Closes #21989
2026-06-12 14:44:10 +02:00
Viktor Szakats
fb2441294e
GHA/distcheck: switch to parse info.json
Refs:
c569aaa161
https://github.com/curl/curl-www/pull/596

Follow-up to b3bc61ab68 #21978

Closes #21988
2026-06-12 13:33:06 +02:00
Daniel Stenberg
8664a9f378
runtests: error out on duplicate test names
Closes #21984
2026-06-12 13:19:44 +02:00