Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
539 commits
Select commit Hold shift + click to select a range
be6c4ee
gtls: verify OCSP response signature in gtls_verify_ocsp_status
MegaManSec May 19, 2026
89683e0
tidy-up: use test/example domains more
vszakats Jun 2, 2026
a4313f1
RELEASE-NOTES: synced
bagder Jun 2, 2026
74f18f2
github: Add AI usage warning to issue, doc and PR templates
jay May 28, 2026
a794673
schannel: use fopen instead CreateFile
Vasiliy-Kkk May 27, 2026
2932b7f
gtls: minor fixes and improvements
vszakats Jun 2, 2026
5d178de
hsts.md: mention multiple curl invokes effect
bagder Jun 2, 2026
22d9794
vquic: moving related things into subdir
icing Jun 2, 2026
fb6be54
GHA: bump 2 GitHub Actions
dependabot[bot] Jun 2, 2026
6730081
cookie: refactor parse_cookie_header
bagder Jun 3, 2026
cf79192
tool_parsecfg: refactor parseconfig()
bagder Jun 3, 2026
ef8f685
urlapi: simplify urlget_url somewhat
bagder Jun 3, 2026
fda48a5
top-complexity: drop threshold to 50
bagder Jun 3, 2026
75a94f3
tests: add `cookies` feature to some tests
MarcelRaad Jun 3, 2026
3d721a1
BINDINGS: Update Hollywood link
afalkenhahn Jun 3, 2026
c32427d
VULN-DISCLOSURE-POLICY.md: emphasize comm as a human
bagder Jun 5, 2026
56eca2a
quic: count zero length packets against max
icing Jun 5, 2026
3c7d136
libssh2: use non-deprecated `libssh2_knownhost_addc()`
vszakats Jun 5, 2026
5c9ac36
libssh2: do not use deprecated macros when unavailable
vszakats Jun 5, 2026
cb30754
libssh2: sync version check with INTERNALS.md
vszakats Jun 5, 2026
1b8f4db
tidy-up: drop stray casts for allocated pointers
vszakats Jun 4, 2026
0c8c6f4
libssh2: replace macro names with non-misspelled alternatives
vszakats Jun 5, 2026
982e19f
vquic: drop stray casts for `iovec.iov_len`
vszakats Jun 5, 2026
d3e9a81
tidy-up: miscellaneous
vszakats Jun 1, 2026
3b9f097
schannel_verify: simplify CryptQueryObject use
Vasiliy-Kkk May 26, 2026
c3c2cfb
http: reject spurious CR bytes in headers
bagder Jun 6, 2026
f7f1666
CURLOPT_CHUNK_BGN_FUNCTION: target is there for symlinks only
bagder Jun 6, 2026
38b72f3
CURLOPT_PINNEDPUBLICKEY.md: does not apply for other origins
bagder Jun 6, 2026
317bf7e
ftplistparser: clear strings.target if not symlink
bagder Jun 6, 2026
fbcf10a
progress: fx CURLINFO time reporting
icing Jun 2, 2026
c4c1284
CURLOPT_PORT.md: use stronger language
bagder Jun 6, 2026
7bb7b2c
tool: warn when --ssl and --ftp-ssl-control override each other
bagder Jun 6, 2026
e2cb3cc
CURLOPT_DISALLOW_USERNAME_IN_URL: is for CURLOPT_URL only
bagder Jun 7, 2026
1a1ec74
RELEASE-NOTES: synced
bagder Jun 7, 2026
9c1ebea
lib1587: drop redundant includes
vszakats Jun 7, 2026
7c34365
urlapi: fix memleaks on error in `parse_hostname_login()`
vszakats Jun 5, 2026
0618ffe
Revert "url: remove ssh_config_matches"
bagder Jun 8, 2026
9b69cfb
var: use a dedicated pointer for the alloc
bagder Jun 8, 2026
5df33ef
setopt: claer the "custom" CA booleans when set to NULL
bagder Jun 8, 2026
39d5cea
libssh2: save non-standard port to `known_hosts`
vszakats Jun 5, 2026
cdce246
runtests: allow skipping tests on torture, use for test 357
vszakats Jun 8, 2026
a89fd1f
GHA: update dependency pizlonator/fil-c to v0.679
renovate[bot] Jun 8, 2026
ff70868
_ENVIRONMENT.md. Windows does case insensitive env variables
bagder Jun 8, 2026
e786a4e
CURLOPT_DOH_URL.md: does not inherit proxy options
bagder Jun 8, 2026
435fb96
netrc: remember and check filename loaded
icing Jun 8, 2026
d69bfad
ssl native_ca_store: always reinit
icing Jun 8, 2026
7de0a7e
chunked: reject invalid bytes in trailer
alhudz Jun 8, 2026
2dfd265
checksrc-all.pl: do not check files multiple times
vszakats Jun 8, 2026
8145476
pytest: close file handles after use, and two minor tidy-ups
vszakats Jun 8, 2026
04afd16
urlapi: URL decode hostname before IP address normalization
bagder Jun 9, 2026
a2b943b
digest: escape control codes too
bagder Jun 8, 2026
7b9d74a
resolve: Mention in error that IP address is expected
yedayak Jun 5, 2026
cb4465b
pytest: close file handles after use (cont.), and tidy-ups
vszakats Jun 9, 2026
b9b2c0c
docs: returned header size reflects HTTP/1-style format
vszakats Jun 8, 2026
fb9a520
peer.h: fix typo in comment
bagder Jun 9, 2026
849317f
ws: make pong sending lazy
icing Jun 8, 2026
952b044
tidy-up: miscellaneous
vszakats Jun 5, 2026
e66b81a
cookie: tailmatch the domains for secure override
bagder Jun 8, 2026
feb609f
cf-socket: store errno from do_connect in ctx->error
yedayak Jun 8, 2026
4aa8cc3
pytest: fix remaining code checker warnings
vszakats Jun 9, 2026
bbb226b
unit1675: fix potential memory leak on dynbuf fail path
vszakats Jun 9, 2026
9dcc57b
pytest: add comment to empty except branch
vszakats Jun 9, 2026
847aac0
tidy-up: use uppercase `TRUE`/`FALSE` where missing
vszakats Jun 9, 2026
056dcd9
pytest: use `Optional[]`, adjust whitespace
vszakats Jun 9, 2026
cb4b3e7
smbserver: check impacket presence differently
vszakats Jun 9, 2026
c7cba2f
sigv4: URL encode the user name in the header
bagder Jun 9, 2026
62b118c
http-proxy: verify CONNECT response headers
alhudz Jun 9, 2026
e37417e
psl: require libpsl 0.16.0 (2016-12-10) or greater
vszakats Jun 9, 2026
d8c97b0
GHA: update dependency openssl/openssl to v4.0.1
renovate[bot] Jun 9, 2026
59213ab
tidy-up: drop redundant `!= NULL` syntax
vszakats Jun 9, 2026
014be82
tidy-up: drop redundant `== NULL` syntax
vszakats Jun 9, 2026
4ead428
tests: enhance names, remove duplicates
bagder Jun 9, 2026
084ceb6
hsts: duplicate live HSTS data in curl_easy_duphandle
whatchamacallem Jun 1, 2026
ce53f90
RELEASE-NOTES: synced
bagder Jun 9, 2026
2864e99
smbserver: update internal id generation for Python 3
vszakats Jun 9, 2026
81cdf4d
appveyor: bump 3 VS2022 jobs to VS2026
vszakats Jun 9, 2026
3f10553
tests: restore 1030 and 611
bagder Jun 9, 2026
5c6b488
digest: flush state on origin or credential change
bagder Jun 10, 2026
4fcf9c8
test 527: bring back, not a dupe
bagder Jun 10, 2026
f924489
ngtcp2: share common functionality
icing Jun 5, 2026
f5cf508
GHA: update ruff from v0.15.12 to v0.15.16
renovate[bot] Jun 10, 2026
a6cece5
GHA: update awslabs/aws-lc from v1.73.0 to v5.0.0
renovate[bot] Jun 10, 2026
ae2986c
mqtt: return error on truncated Remaining Length
bagder Jun 10, 2026
2f3fa47
build: enable `-Wformat-signedness`, fix issues found
vszakats Apr 16, 2026
97aed9c
tidy-up: drop stray comparisons with literal zero
vszakats Jun 10, 2026
a6971ce
connect: turn conn_get_first_origin into static
bagder Jun 10, 2026
7409680
CURLOPT_WRITEFUNCTION.md: mention redirects
bagder Jun 10, 2026
7ec2514
digest: flush proxy state on proxy or credential change
alhudz Jun 10, 2026
30c9c79
cf-socket: make Curl_addr2string static
icing Jun 10, 2026
946306b
cf-ip-happy: update documentation
icing Jun 11, 2026
8a867c2
h3proxy: no stream userdata
icing Jun 11, 2026
9d93d4a
SECURITY-ADVISORY.md: expand
bagder Jun 11, 2026
9cf6b70
multi: remove a stale comment
bagder Jun 11, 2026
b7c9229
CURLINFO_CONTENT_LENGTH_UPLOAD_T.md: expand
bagder Jun 10, 2026
2b336e6
content_encoding: fix non-last chunked rejection
bagder Jun 11, 2026
f763847
cf-ip-happy.c: minor comment typo
bagder Jun 11, 2026
08ae71f
CURLOPT_WRITEFUNCTION.md: remove stray reference to HSTS
bagder Jun 11, 2026
7f45bb8
http_digest: return better error
bagder Jun 11, 2026
663b156
GHA/windows: bump Cygwin Action and adjust version number
vszakats Jun 11, 2026
c0d433d
GHA: update debian:bookworm-slim Docker digest to 96e378d
renovate[bot] Jun 11, 2026
04a85a1
asyn-thrdd: add IPv6 guards
sourceturner Jun 6, 2026
2a606c6
tidy-up: miscellaneous
vszakats Jun 9, 2026
e35ba09
tidy-up: add spaces around equal operators where missing
vszakats Jun 11, 2026
8b1be77
runtests: fix tests for curl builds with embedded CA bundle
vszakats Jun 11, 2026
bcb2890
telnet: fix error message typos
vszakats Jun 11, 2026
0cd0a64
GHA/distcheck: fix parsing the download page
vszakats Jun 11, 2026
244834d
tests: add the "--resolve" keyword to tests that lack it
fabiankeil Jun 7, 2026
c5b6b74
libtests: add and use tutil_throwaway_cb
bagder Jun 11, 2026
c37b398
RELEASE-NOTES: synced
bagder Jun 11, 2026
b3bc61a
GHA/distcheck: use `https://curl.se/info`
vszakats Jun 11, 2026
abdfa2b
lib695, lib757: fix truncated newline in error messages
vszakats Jun 11, 2026
d77b4b7
GHA: drop `brew update` from all jobs
vszakats Jun 12, 2026
410f3ca
checksrc: silence `-b` option debug message
vszakats Jun 12, 2026
ab3bb8c
config2setopts: use default protocol properly
bagder Jun 12, 2026
8664a9f
runtests: error out on duplicate test names
bagder Jun 12, 2026
fb24412
GHA/distcheck: switch to parse `info.json`
vszakats Jun 12, 2026
982e2e8
AmigaOS: curl_setup.h avoid explicit_bzero with clib2
boingball Jun 12, 2026
5b9263e
mailmap: Darren Banfi
bagder Jun 12, 2026
a1db900
runtests: exit hard on duplicate test name
bagder Jun 12, 2026
4f53234
telnet: fix old copy-paste typo in variable name
vszakats Jun 11, 2026
7d8c68a
schannel: fix https proxy for client cert and certinfo
icing Jun 12, 2026
7c51a33
AmigaOS: fix build fallouts, re-add to CI
vszakats Jun 12, 2026
879a151
socket: introduce `SOCK_EAGAIN()` and use it
vszakats Jun 7, 2026
c951368
build: enable `-Wlogical-op` picky warning for GCC 4.4+
vszakats Jun 6, 2026
73daec6
lib: transfer origin and proxy handling
icing Jun 12, 2026
bb837dd
telnet: drop redundant interim variables
vszakats Jun 12, 2026
8d3c4fe
sspi: free libcurl allocated memory with curlx_free
bagder Jun 12, 2026
6b78264
ldap: base64 encode binary LDIF values with WinLDAP
Jun 12, 2026
fb83911
socks_sspi: invalid response length is a fatal error
bagder Jun 14, 2026
fe2df80
socket: use name `sockerr` for socket error variables
vszakats Jun 12, 2026
ba16b83
telnet: drop an `int` cast no longer necessary
vszakats Jun 14, 2026
c61f007
krb5_sspi: fix error message on `DecryptMessage()` fail
vszakats Jun 14, 2026
9972f70
perl: switch from backticks to `qx()`
vszakats May 19, 2026
d9ea8cd
tests/servers: do not interpret `unlink()` retval as `errno`
vszakats Jun 14, 2026
945938d
rtspd: sync up sleep loop with sws
vszakats Jun 14, 2026
9002d33
servers: minor socket error handling fixes
vszakats Jun 14, 2026
f1b1919
servers: drop single-use interim result variables
vszakats Jun 14, 2026
c4cb676
smb: integer overflow proof a size check
bagder Jun 14, 2026
5bff1c3
socks_sspi: store socks5_gssapi_enctype
bagder Jun 14, 2026
0ffab25
tidy-up: miscellaneous
vszakats Jun 11, 2026
43c685f
cmake/FindGSS: fix comment, adjust custom flavor property name
vszakats Jun 15, 2026
9061302
tidy-up: prefer spelling 'flavor', where missing
vszakats Jun 15, 2026
79a2416
urlapi: refactor and simplify curl_url_set
bagder Jun 14, 2026
a6d9783
libtests: prefer `sizeof()` over `strlen()`, fix potential OOB read i…
vszakats Jun 14, 2026
e70f8eb
servers: fix error message if unix socket path is not a socket
vszakats Jun 15, 2026
03bc93b
servers: drop unix socket path attribute check on Windows
vszakats Jun 15, 2026
8cc3fed
transfer: adapt Curl_xfer_is_secure()
icing Jun 15, 2026
0882e39
servers: mask to `S_IFMT` in unix socket path attribute check
vszakats Jun 15, 2026
b0d733e
VULN-DISCLOSURE-POLICY: non-released code
bagder Jun 15, 2026
9f25dce
checksrc: detect and warn for (void)!
bagder Jun 15, 2026
c8d8f08
src/test: avoid (void)! constructs
bagder Jun 15, 2026
7333f66
cf-capsule: complete filter
icing Jun 15, 2026
6ce7404
verify-release: verify more thoroughly with git
bagder Jun 15, 2026
7d09426
servers: accept `unlink()` failing due to the file missing
vszakats Jun 15, 2026
8932063
lib668: do not assume null-terminator in test input data
vszakats Jun 15, 2026
f497b25
cf-setup: own source file
icing Jun 15, 2026
eb6d1e0
ratelimits: use minimal burst rate
icing Jun 15, 2026
0dae3b2
servers: accept `lstat()` failing due to the file missing
vszakats Jun 15, 2026
adb606e
curl_formdata: fix to pass long where missing, document `CURLFORM_NAM…
vszakats Jun 15, 2026
46ba384
winldap: avoid NULL pointer deref on `ldap_get_dn()` fail
vszakats Jun 14, 2026
5687d21
servers: fix off-by-3 OOB write for large `loghex()` inputs
vszakats Jun 15, 2026
526d3b8
servers: silence `-Wunused-result` with pragma
vszakats Jun 15, 2026
50ffc35
tls: wolfssl: fixes for PQC key shares
Frauschi Jun 15, 2026
b9702f8
cookie: use origin scheme for secure context check
Daviey Jun 15, 2026
bb72413
cf-https-connect: do not engage on proxy origin
icing Jun 15, 2026
7f57aee
verify-release: don't unpack in git repo
bagder Jun 15, 2026
5d1ac48
setopt: mark function argument as unused *properly*
bagder Jun 15, 2026
678e639
perl: `|| die` -> `or die`
vszakats Jun 14, 2026
e0c6f4d
tool_writeout: fix %time{} output for %s
bagder Jun 16, 2026
c2b050e
servers: deduplicate `storerequest()` across two servers
vszakats Jun 16, 2026
bd10924
url: connection credentials origin
icing Jun 16, 2026
b56cb3b
_URL.md: remove the zone-id mention
bagder Jun 16, 2026
1bb75af
GHA: update google/boringssl to v0.20260616.0
renovate[bot] Jun 16, 2026
be8f243
perl: `open... || ` -> `open... or` (cont.)
vszakats Jun 16, 2026
aacb90b
cmake/FindGSS: prioritize MIT over GNU in pkg-config detection
vszakats Jun 16, 2026
6125d5d
CI: improve labeler tag detection
dfandrich Jun 16, 2026
528c05a
configure: tidy up `OPT_APPLE_SECTRUST` initialization
vszakats Jun 16, 2026
73d0609
GHA: bump pip cryptography from 46.0.7 to 48.0.1
dependabot[bot] Jun 16, 2026
92db819
cf-dns: pass peer for result lookups
icing Jun 16, 2026
7806fb3
RELEASE-NOTES: synced
bagder Jun 16, 2026
74ac8e7
creds: create with empty user+pass
icing Jun 16, 2026
39caaff
libtest: unify on easy_setopt macro
bagder Jun 17, 2026
8c3ef95
dns-httpsrr-lookup: use origin, not peer
icing Jun 17, 2026
d2886c5
http: for basic+digest auth, do not engage on empty user+passwd
icing Jun 17, 2026
60381b2
first.h reflow
vszakats Jun 17, 2026
4abe47e
src: sync nghttp2 versions checks with current requirements
vszakats Jun 17, 2026
bdb1773
INTERNALS.md: document minimum nghttp3 and ngtcp2 versions
vszakats Jun 17, 2026
0ffd2e7
GHA/windows: do `apt-get update` in clang-tidy cross-build job again
vszakats Jun 17, 2026
4e07b37
GHA/linux: allow more time for `apt.repos.intel.com` install
vszakats Jun 17, 2026
766969b
GHA: sync apt-get code between workflows/jobs
vszakats Jun 17, 2026
e8b7677
GHA/linux: give more time for `apt-get install`
vszakats Jun 17, 2026
174cafb
cmake: simplify `LINK_ONLY` imported target extraction
vszakats Jun 17, 2026
a36e979
GHA/macos: enable krb5 in an autotools job
vszakats Jun 17, 2026
6db0ba2
cmake/FindGSS: drop "MIT Unknown" version value, related tidy ups
vszakats Jun 17, 2026
e136694
cmake/FindGSS: drop CMake <3.16 compatibility logic
vszakats Jun 17, 2026
9ccc80b
url: don't log bits.close state
yedayak Jun 17, 2026
4a86af9
cookie: reject control octets in file-loaded cookies
alhudz Jun 17, 2026
abad1c9
RELEASE-PROCEDURE.md: update coming relese dates
bagder Jun 18, 2026
f0be417
multi: xfers_really_alive
icing Jun 17, 2026
af94731
GHA/linux: drop arm runner home attribute workaround (fixed upstream)
vszakats Jun 18, 2026
6079ff3
GHA/http3-linux: simplify setting `CC`/`CXX` envs
vszakats Jun 18, 2026
2d70c81
GHA/linux: use default GCC compiler, drop `CC`/`CXX` envs
vszakats Jun 18, 2026
a7e35c9
docs/VERIFY: expand with more things we do
bagder Jun 18, 2026
2f8fb98
pingpong: reject nul byte in server response line
alhudz Jun 13, 2026
5a2af80
GHA/linux: bump analyzer job to gcc-16, and ubuntu-26.04
vszakats Jun 18, 2026
b71d3d9
CURLMOPT_SOCKETFUNCTION.md: this sends *all* file descriptors
bagder Jun 18, 2026
39628c5
openssl: do not mix OpenSSL int result with `CURLcode` variable
vszakats Jun 18, 2026
595d052
curl_multi_assign.md: clarify lifetime
bagder Jun 18, 2026
adb4edd
GHA: bump analyzer/sanitizer jobs to clang-22, and ubuntu-26.04
vszakats Jun 18, 2026
c972583
MANUAL.md: update `apt-key` example
vszakats Jun 18, 2026
950a30d
GHA/http3-linux: bump to ubuntu-26.04
vszakats Jun 18, 2026
e44f1a1
smb: constify `strchr()` result variable
vszakats Jun 18, 2026
fdd6ba3
cookie: check __Secure- and __Host- case sensitively when read from file
alhudz Jun 18, 2026
139ce4d
GHA: separate pytype from other checkers and pips
vszakats Jun 18, 2026
8f5e4f0
GHA: fix Linux triplet passed to `CMAKE_C_COMPILER_TARGET`
vszakats Jun 18, 2026
2a993e2
GHA: re-sync Linux CMake triplet with autotools builds
vszakats Jun 18, 2026
04305a3
runtests: drop orphaned, no-op `-k` option
vszakats Jun 19, 2026
93e2341
vquic: fix `-Wunused-parameter` with proxies disabled
vszakats Jun 19, 2026
94962a9
GHA: update dependency cloudflare/quiche to v0.29.2
renovate[bot] Jun 19, 2026
acdeb7f
KNOWN_BUGS.md: drop outdated CMake issues
vszakats Jun 19, 2026
52fa8d9
setopt: refactor setopt_cptr into smaller helper functions
bagder Jun 18, 2026
372401f
INSTALL-CMAKE.md: document CMake environment variables
vszakats Jun 20, 2026
0d6e594
setopt: make CURLOPT_KEYPASSWD work for SSH-only builds
bagder Jun 21, 2026
cb7efe1
cd2nroff: handle TLS together with other protocols
bagder Jun 21, 2026
810d953
proxy: fix automatic tunnel mode with "connect to host"
mkauf Jun 19, 2026
8ed285f
websockets: buffer ugprade data at connection level
icing Jun 19, 2026
e8e3af2
doh: cap the maximum TTL to 24 hours
bagder Jun 21, 2026
ab779d4
doh: stricter HTTPS RNAME parsing
bagder Jun 22, 2026
d638eac
libssh2: code and infof/trace cleanups
icing Jun 19, 2026
c5d0e93
HTTP3.md: update quiche build
icing Jun 19, 2026
c35e2cb
setopt: cleanup the length check for COPYPOSTFIELDS handling
bagder Jun 22, 2026
2735ef3
libssh2: fix to return error code on missing parameter
vszakats Jun 22, 2026
b3675fe
libssh2: drop stray double-negative from `strncmp()` result
vszakats Jun 22, 2026
f7d4e11
setopt: return error if received `curl_blob->data` is NULL
vszakats Jun 22, 2026
d824266
appveyor: pass `--proto-redir =https` option
vszakats Jun 22, 2026
be1d976
peer: fix ipv6 detection
icing Jun 22, 2026
5735540
CURLOPT_SSLVERSION.md: drop stray space from 'SSLv*', 'TLSv*'
vszakats Jun 22, 2026
b0d0f16
tidy-up: make 'CA' uppercase, where missing
vszakats Jun 22, 2026
560dc29
doh: drop redundant `curlx_dyn_free()` call in `doh_probe_done()`
vszakats Jun 22, 2026
364d6c1
cmake: add pre-fills for DragonFly BSD and MidnightBSD
vszakats Jun 22, 2026
621176c
GHA/windows: settle on windows-2025 image name
vszakats Jun 22, 2026
7e37510
RELEASE-PROCEDURE.md: typo
bagder Jun 23, 2026
7826739
GHA/linux: bump pizlonator/fil-c to v0.680, fixup quoting
vszakats Jun 23, 2026
9adc32a
test 679: add a quoted string name in a netrc test
bagder Jun 23, 2026
bf29c3e
GHA/non-native: BSD overhaul, test more autotools, bump versions
vszakats Jun 23, 2026
ec37b02
THANKS: added names from 8.21.0 release
bagder Jun 24, 2026
9187ef7
VERSIONS: 8.21.0 release
bagder Jun 24, 2026
68720b4
RELEASE-NOTES: synced
bagder Jun 24, 2026
310f165
Merge upstream curl-8_21_0 into master
Aug 6, 2026
b316b76
unitytls: follow curl 8.21.0 ssl_primary_config / ssl_peer changes
Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,17 @@ body:

**SECURITY RELATED?** Submit here: https://hackerone.com/curl

- type: markdown
attributes:
value: "
> [!IMPORTANT]

> If you cannot understand or explain your work without using
Artificial Intelligence (AI) then do not file here. Do not paste
massive AI generated explanations. We accept the use of AI as long as
it is digestible. Please explain your issues or improvements briefly
and clearly in your own human voice."

- type: textarea
id: reproducer
attributes:
Expand Down
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ body:

Only file documentation bugs here! Ask questions on the mailing lists https://curl.se/mail/

- type: markdown
attributes:
value: "
> [!IMPORTANT]

> If you cannot understand or explain your work without using
Artificial Intelligence (AI) then do not file here. Do not paste
massive AI generated explanations. We accept the use of AI as long as
it is digestible. Please explain your issues or improvements briefly
and clearly in your own human voice."

- type: textarea
id: source
attributes:
Expand Down
21 changes: 17 additions & 4 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ authentication:
- any-glob-to-all-files: "{\
CMake/FindGSS.cmake,\
CMake/FindLibgsasl.cmake,\
docs/internals/CREDENTIALS.md,\
docs/libcurl/opts/CURLINFO_HTTPAUTH*,\
docs/libcurl/opts/CURLINFO_PROXYAUTH*,\
docs/libcurl/opts/CURLOPT_KRB*,\
Expand All @@ -49,10 +50,13 @@ authentication:
docs/libcurl/opts/CURLOPT_XOAUTH*,\
lib/*gssapi*,\
lib/*ntlm*,\
lib/creds.*,\
lib/curl_ntlm*,\
lib/curl_sasl.*,\
lib/http_aws*,\
lib/http_digest.*,\
lib/http_negotiate.*,\
lib/http_ntlm.*,\
lib/vauth/**\
}"

Expand Down Expand Up @@ -129,16 +133,19 @@ connecting & proxies:
docs/libcurl/opts/CURLOPT_SOCKS*,\
docs/libcurl/opts/CURLOPT_TCP*,\
docs/libcurl/opts/CURLOPT_TIMEOUT*,\
lib/cf-https-connect.*,\
lib/cf-ip-happy.*,\
lib/cf-*proxy.*,\
lib/cf-socket.*,\
lib/cfilters.*,\
lib/conncache.*,\
lib/connect.*,\
lib/http_proxy.*,\
lib/if2ip.*,\
lib/noproxy.*,\
lib/proxy.*,\
lib/socks.*,\
src/tool_cb_soc.*,\
tests/http/*proxy*,\
tests/http/*socks*,\
tests/server/socksd.c\
}"
Expand Down Expand Up @@ -295,11 +302,14 @@ HTTP/3:
.github/workflows/http3-linux.yml,\
CMake/FindNGHTTP3.cmake,\
CMake/FindNGTCP2.cmake,\
docs/cmdline-opts/proxy-http3.md,\
docs/HTTP3.md,\
docs/examples/http3*,\
lib/cf-h3-proxy.*,\
lib/vquic/**,\
tests/http3-server.pl,\
tests/nghttpx.conf\
tests/nghttpx.conf,\
tests/http/*httpsrr*\
}"

IMAP:
Expand Down Expand Up @@ -381,6 +391,8 @@ name lookup:
lib/socketpair*,\
lib/thrdpool.*,\
lib/thrdqueue.*,\
tests/http/testenv/dnsd.*,\
tests/http/*httpsrr*,\
tests/http/*resolve.py,\
tests/server/dnsd.c,\
tests/server/resolve.c\
Expand Down Expand Up @@ -458,6 +470,7 @@ tests:
- all:
- changed-files:
- any-glob-to-any-file:
- 'docs/tests/**'
- 'tests/**'

TFTP:
Expand Down Expand Up @@ -548,9 +561,9 @@ Windows:
lib/curlx/fopen.*,\
lib/curlx/multibyte.*,\
lib/curlx/winapi.*,\
lib/libcurl.def,\
lib/vtls/schannel*,\
m4/curl-schannel.m4,\
projects/Windows/**,\
src/tool_doswin.c,\
lib/libcurl.def\
src/tool_doswin.c\
}"
8 changes: 8 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<!--
IMPORTANT:
If you cannot understand or explain your work without using
Artificial Intelligence (AI) then do not file here. Do not paste
massive AI generated explanations. We accept the use of AI as long as
it is digestible. Please explain your issues or improvements briefly
and clearly in your own human voice.
-->
6 changes: 3 additions & 3 deletions .github/scripts/cleancmd.pl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
my @asyms;

open(S, "<./docs/libcurl/symbols-in-versions")
|| die "cannot find symbols-in-versions";
or die "cannot find symbols-in-versions";
while(<S>) {
if(/^([^ ]*) /) {
push @asyms, $1;
Expand All @@ -30,7 +30,7 @@
);

open(O, "<./docs/options-in-versions")
|| die "cannot find options-in-versions";
or die "cannot find options-in-versions";
while(<O>) {
chomp;
if(/^([^ ]+)/) {
Expand All @@ -50,7 +50,7 @@
close(O);

open(C, "<./.github/scripts/spellcheck.curl")
|| die "cannot find spellcheck.curl";
or die "cannot find spellcheck.curl";
while(<C>) {
if(/^\#/) {
next;
Expand Down
3 changes: 1 addition & 2 deletions .github/scripts/cmp-config.pl
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@
exit;
}

# this lists complete lines that will be removed from the output if
# matching
# this lists complete lines that are removed from the output if matching
my %remove = (
'#define CURL_EXTERN_SYMBOL' => 1,
'#define CURL_OS "Linux"' => 1,
Expand Down
5 changes: 5 additions & 0 deletions .github/scripts/pyspelling.words
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,10 @@ CWE
cyassl
Cygwin
daniel
datagrams
datatracker
dbg
decapsulation
Debian
DEBUGBUILD
decrypt
Expand Down Expand Up @@ -234,6 +236,7 @@ EGD
EHLO
EINTR
else's
encapsulation
encodings
enctype
endianness
Expand Down Expand Up @@ -896,6 +899,7 @@ trustless
Tse
Tsujikawa
TTL
tty
tvOS
txt
typedef
Expand Down Expand Up @@ -1010,6 +1014,7 @@ Youtube
YYYY
YYYYMMDD
Zakrzewski
Zeropath
Zitzmann
zlib
zsh
Expand Down
10 changes: 5 additions & 5 deletions .github/scripts/randcurl.pl
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ sub storedata {
}

sub getoptions {
my @all = `$curl --help all`;
my @all = qx($curl --help all);
for my $o (@all) {
chomp $o;
if($o =~ /^ -(.), --([^ ]*) (.*)/) {
Expand Down Expand Up @@ -142,7 +142,7 @@ sub runone {
$a .= " ".addarg();
}

my $cmd="$curl$a $url";
my $cmd = "$curl$a $url";

my $rc = system("$cmd >curl-output 2>&1 </dev/null -M 0.1") >> 8;
#my $rc = system("valgrind -q $cmd >/dev/null 2>&1 </dev/null -M 0.1") >> 8;
Expand Down Expand Up @@ -194,7 +194,7 @@ sub runconfig {
print C "$a\n";
close(C);

my $cmd="$curl -K config $url";
my $cmd = "$curl -K config $url";

my $rc = system("$cmd >curl-output 2>&1 </dev/null -M 0.1") >> 8;

Expand All @@ -218,7 +218,7 @@ sub runconfig {
}

# run curl command lines using -K
my $end = time() + $seconds/2;
my $end = time() + $seconds / 2;
my $c = 0;
print "Running command lines\n";
do {
Expand All @@ -228,7 +228,7 @@ sub runconfig {
print "$c command lines\n";

# run curl command lines
$end = time() + $seconds/2;
$end = time() + $seconds / 2;
$c = 0;
print "Running config lines\n";
do {
Expand Down
3 changes: 1 addition & 2 deletions .github/scripts/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@

cmakelang==0.6.13
codespell==2.4.2
pytype==2024.10.11
reuse==6.2.0
ruff==0.15.10
ruff==0.15.16
2 changes: 1 addition & 1 deletion .github/scripts/typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
extend-ignore-identifiers-re = [
"^(ba|fo|pn|PN|UE)$",
"^(CNA|cpy|ser)$",
"^(ECT0|ECT1|HELO|htpts|PASE)$",
"^(ECT0|ECT1|HELO|htpts|mport|PASE)$",
"^[A-Za-z0-9_-]*(EDE|GOST)[A-Z0-9_-]*$", # ciphers
"^0x[0-9a-fA-F]+FUL$", # unsigned long hex literals ending with 'F'
"^[0-9a-zA-Z+]{64,}$", # possibly base64
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/verify-examples.pl
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ sub extract {
print O "/* !checksrc! disable BANNEDFUNC all */\n"; # for fopen()
print O "/* !checksrc! disable COPYRIGHT all */\n";
print O "/* !checksrc! disable UNUSEDIGNORE all */\n";
printf O "#line %d \"$f\"\n", $iline+1;
printf O "#line %d \"$f\"\n", $iline + 1;
}
}
elsif($syn == 2) {
Expand Down
2 changes: 1 addition & 1 deletion .github/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
recent activity. It is closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
50 changes: 37 additions & 13 deletions .github/workflows/checksrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ jobs:
- name: 'typos'
timeout-minutes: 2
run: |
HOMEBREW_NO_AUTO_UPDATE=1 /home/linuxbrew/.linuxbrew/bin/brew install typos-cli
/home/linuxbrew/.linuxbrew/bin/brew install typos-cli
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
typos --version
.github/scripts/typos.sh
Expand All @@ -88,18 +88,34 @@ jobs:
run: |
scripts/perlcheck.sh

- name: 'pytype'
- name: 'ruff'
run: |
source ~/venv/bin/activate
find . -name '*.py' -exec pytype -j auto -k -- {} +
scripts/pythonlint.sh

- name: 'ruff'
pytype:
name: 'pytype'
runs-on: ubuntu-24.04-arm # pytype is discontinued and requires python 3.8-3.12
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: 'install prereqs'
run: |
python3 -m venv ~/venv
~/venv/bin/pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary pytype==2024.10.11 \
-r .github/scripts/requirements.txt \
-r tests/http/requirements.txt \
-r tests/requirements.txt

- name: 'check'
run: |
source ~/venv/bin/activate
scripts/pythonlint.sh
find . -name '*.py' -exec pytype -j auto -k -- {} +

complexity:
name: 'complexity'
name: 'complexity and function sizes'
runs-on: ubuntu-slim
timeout-minutes: 3
steps:
Expand All @@ -110,16 +126,18 @@ jobs:
sudo find /etc/apt/sources.list.d -type f -not -name 'ubuntu.sources' -delete -print
sudo sed -i 's/priority:1/priority:9/' /etc/apt/apt-mirrors.txt; cat /etc/apt/apt-mirrors.txt
sudo apt-get -o Dpkg::Use-Pty=0 update
sudo apt-get -o Dpkg::Use-Pty=0 install \
pmccabe
sudo apt-get -o Dpkg::Use-Pty=0 install pmccabe

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: 'check scores'
- name: 'check function complexity'
run: ./scripts/top-complexity

- name: 'check function lengths'
run: ./scripts/top-length

xmllint:
name: 'xmllint'
runs-on: ubuntu-slim
Expand All @@ -131,8 +149,7 @@ jobs:
sudo find /etc/apt/sources.list.d -type f -not -name 'ubuntu.sources' -delete -print
sudo sed -i 's/priority:1/priority:9/' /etc/apt/apt-mirrors.txt; cat /etc/apt/apt-mirrors.txt
sudo apt-get -o Dpkg::Use-Pty=0 update
sudo apt-get -o Dpkg::Use-Pty=0 install \
libxml2-utils
sudo apt-get -o Dpkg::Use-Pty=0 install libxml2-utils

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
Expand All @@ -148,7 +165,7 @@ jobs:
steps:
- name: 'install prereqs'
timeout-minutes: 2
run: HOMEBREW_NO_AUTO_UPDATE=1 /home/linuxbrew/.linuxbrew/bin/brew install actionlint shellcheck zizmor
run: /home/linuxbrew/.linuxbrew/bin/brew install actionlint shellcheck zizmor

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
Expand All @@ -161,12 +178,19 @@ jobs:
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
zizmor --persona pedantic .github/workflows/*.yml .github/dependabot.yml

- name: 'zizmor GHA (auditor, warning-only)'
env:
GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
run: |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
zizmor --persona auditor .github/workflows/*.yml .github/dependabot.yml || true

- name: 'actionlint'
run: |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
export SHELLCHECK_OPTS='--exclude=1090,1091,2086,2153 --enable=avoid-nullary-conditions,deprecate-which'
actionlint --version
actionlint --ignore matrix .github/workflows/*.yml
actionlint --ignore matrix --ignore ubuntu-26.04 .github/workflows/*.yml

- name: 'shellcheck CI'
run: |
Expand Down
Loading
Loading