Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
27a7cf4
GHA: update dependency wolfSSL/wolfssl to v5.8.4
renovate[bot] Nov 21, 2025
fdacf34
GHA/codeql: add tweak to successfully build libtests for CodeQL
vszakats Nov 21, 2025
b4220bd
GHA/checksrc: switch xmllint job to Linux (from macOS)
vszakats Nov 21, 2025
fd23d95
src: move `memdebug.h` to be the last include
vszakats Nov 20, 2025
529f613
gnutls: implement CURLOPT_CAINFO_BLOB
Marc-Aldorasi-Imprivata Nov 19, 2025
49ab46c
gtls: drop support for GnuTLS < 3.6.5
bagder Nov 19, 2025
de7ee1c
GHA: disable TLS in the linux-old build
bagder Nov 21, 2025
dd36dac
openssl: no verify failf message unless strict
icing Nov 20, 2025
3561f2c
lib: cleanup some whitespace nits
x2018 Nov 19, 2025
eaa7651
lib: replace `_tcsncpy`/`wcsncpy`/`wcscpy` with `_s` counterparts (Wi…
vszakats Nov 17, 2025
9e6f1c5
build: add build-level `CURL_DISABLE_TYPECHECK` options
vszakats Nov 21, 2025
6aa8fa3
apple-sectrust: always ask when `native_ca_store` is in use
icing Nov 21, 2025
047b36d
smb: fix a size check to be overflow safe
bagder Nov 21, 2025
e2be568
multi: make max_total_* members size_t
icing Nov 20, 2025
a439fc0
GHA: update gnutls/gnutls to 3.8.11 from 3.8.10
renovate[bot] Nov 20, 2025
acfcc2b
checksrc: ban `_tcsncpy`, `wcscpy`, `wcsncpy`
vszakats Nov 21, 2025
18b9429
curlx: replace `mbstowcs`/`wcstombs` with `_s` counterparts (Windows)
vszakats Nov 18, 2025
905b718
Revert "GHA: update gnutls/gnutls to 3.8.11 from 3.8.10"
bagder Nov 21, 2025
7d75c72
KNOWN_RISKS: known risks when running and using curl and libcurl
bagder Nov 20, 2025
4ebef2f
tool_operate: fix case of ignoring return code in single_transfer
bagder Nov 22, 2025
36b9987
tool_operate: fix a case of ignoring return code in operate()
bagder Nov 22, 2025
f13f320
tool_msgs: make voutf() use stack instead of heap
bagder Nov 22, 2025
74f7505
asyn-ares: remove hostname free on OOM
bagder Nov 23, 2025
29b3b1a
wolfssl: fix cipher list, skip 5.8.4 regression
icing Nov 23, 2025
74cf772
GHA: update ngtcp2/ngtcp2 to v1.18.0 from v1.17.0
renovate[bot] Nov 23, 2025
4d04a03
GHA: update ngtcp2/nghttp3 to v1.13.0 from v1.12.0
renovate[bot] Nov 23, 2025
b5265b2
speedcheck: do not trigger low speed cancel on transfers with CURL_RE…
bttrfl Nov 23, 2025
c77bed8
memdebug: produce stack trace dump with libbacktrace
bagder Nov 18, 2025
039fb84
tool_writeout: bail out proper on OOM
bagder Nov 24, 2025
d037121
cmake: add support for libbacktrace, fix two build issues
vszakats Nov 24, 2025
537987d
curl_fopen: do not pass invalid mode flags to `open()` on Windows
vszakats Nov 22, 2025
8201306
file: do not pass invalid mode flags to `open()` on upload (Windows)
vszakats Nov 22, 2025
1eca08a
curlx/strerr: use `strerror_s()` on Windows
vszakats Nov 21, 2025
3696ac4
GHA: update dependency ngtcp2/nghttp3 to v1.13.1
renovate[bot] Nov 24, 2025
fa1270a
vquic: do not pass invalid mode flags to `open()` (Windows)
vszakats Nov 24, 2025
2b7515a
tftpd: fix/tidy up `open()` mode flags
vszakats Nov 24, 2025
2b57d41
content_encoding: drop a guard for brotli 1.0.0+ macro
vszakats Nov 24, 2025
be4462a
INTERNALS.md: add brotli and zstd version info
bagder Nov 24, 2025
bfde781
RELEASE-NOTES: synced
bagder Nov 24, 2025
24b36fd
ratelimit: redesign
icing Nov 11, 2025
56f2479
manage: expand the 'libcurl support required' message
bagder Nov 24, 2025
3887069
lib: rename internal header `share.h` to `curl_share.h` to avoid coll…
vszakats Nov 21, 2025
56bfde6
INTERNALS.md: add release dates to build dependencies
vszakats Nov 24, 2025
ee97c2a
tests/server: use curlx file open/close functions
vszakats Nov 24, 2025
1e7d0ba
curlx/fopen: replace open CRT functions their with `_s` counterparts …
vszakats Nov 18, 2025
a075d1c
examples: fix minor typo
TheLastZombie Nov 25, 2025
ce06fe7
hostip: make more functions return CURLcode
bagder Nov 24, 2025
729f36e
sendf: fix uninitialized variable in trace output
bagder Nov 25, 2025
d0ad652
progress: remove two redundant variable checks
bagder Nov 25, 2025
b8f8373
asyn-ares: handle Curl_dnscache_mk_entry() OOM error
bagder Nov 25, 2025
6069c34
tool_doswin: clear pointer when thread takes ownership
bagder Nov 25, 2025
ba65073
speedlimit: also reset on send unpausing
icing Nov 25, 2025
92e6782
doc: some returned in-memory data may not be altered
monnerat Nov 24, 2025
74bd3e2
slist: constify Curl_slist_append_nodup() string argument
monnerat Nov 24, 2025
62683ad
curlx: replace `sprintf` with `snprintf`
vszakats Nov 25, 2025
4f807db
INTERNALS.md: add more dependency versions and dates
vszakats Nov 25, 2025
2b0ca15
ratelimit: remove a debug mprintf
icing Nov 25, 2025
fc09a2d
tool: log when loading .curlrc in verbose mode
yedayak Nov 23, 2025
208a6ae
lib: timer stats improvements
icing Nov 25, 2025
16b44f6
multi: simplify admin handle processing
icing Nov 19, 2025
7e5f379
bufq: use uint8_t
icing Nov 25, 2025
0f6ad5a
ngtcp2: use stdint types
icing Nov 25, 2025
ef4f791
quiche: use stdint types
icing Nov 25, 2025
bb63518
openssl-quic: use stdint types
icing Nov 25, 2025
4701a6d
lib: change uint sets to operate on uint32_t
icing Nov 25, 2025
31b1527
hostip: only store negative response for CURLE_COULDNT_RESOLVE_HOST
bagder Nov 25, 2025
4041eea
GHA/http3-linux: build nettle manually for GnuTLS 3.8.11+
vszakats Nov 25, 2025
ea7df8d
docs: spell it Rustls with a capital R
bagder Nov 25, 2025
cb722b3
urlapi: handle OOM properly when setting URL
bagder Nov 26, 2025
0d2bb9c
http: fix OOM exit in Curl_http_follow
bagder Nov 26, 2025
2acdc4f
autotools: add nettle library detection via pkg-config (for GnuTLS)
vszakats Nov 26, 2025
c722346
examples/multi-uv: fix invalid req->data access
BANADDA Nov 15, 2025
0b09ad8
examples/multi-uv: simplify passing `uv` struct
vszakats Nov 26, 2025
94ce87c
types: remove curl_int64_t/curl_uint64_t
icing Nov 26, 2025
9ea6f2b
docs: add rustls to supported backends for CERT and KEY
yedayak Nov 26, 2025
c273de1
test433: verify "Note: Read config file from..."
bagder Nov 25, 2025
9bb5c05
ngtcp2+openssl: fix leak of session
icing Nov 27, 2025
a9e7a02
vquic: do_sendmsg full init
icing Nov 27, 2025
feea968
conncontrol: reuse handling
icing Nov 3, 2025
c4f29cc
ip_quadruple/proxy: make port uint16_t
icing Nov 26, 2025
fd5a117
ws: use uint8_t
icing Nov 27, 2025
bbb9291
curlx_base64_encode: use uint8_t* for input
icing Nov 27, 2025
71e9920
GHA: add timeouts to mitigate hung brew install step
vszakats Nov 27, 2025
eae2df8
runtests: fix showing `nghttpx-h3` in the `Env:` log when detected
vszakats Nov 27, 2025
7a10f49
badwords: make some words match case-insensitively
vszakats Nov 21, 2025
0081c5b
pytest: disable two H3 earlydata tests for all platforms (was: macOS)
vszakats Nov 27, 2025
c8b76ff
GHA/http3-linux: fix broken h3 server in non-openssl jobs, for more p…
vszakats Nov 27, 2025
a59a3cc
cfilters: make conn_forget_socket a private libssh function
bagder Nov 27, 2025
1e048e9
ngtcp2: remove the unused Curl_conn_is_ngtcp2 function
bagder Nov 27, 2025
56e88e7
cfilter: send uint8_t bytes
icing Nov 27, 2025
c1deea4
GHA/http3-linux: add H3 valgrind tests
vszakats Nov 27, 2025
53775ba
tests: allow 2500-2503 to use ~2MB malloc
bagder Nov 27, 2025
aa93420
RELEASE-NOTES: synced
bagder Nov 27, 2025
5c22bd5
mbedtls_threadlock: avoid calloc, use array
bagder Nov 27, 2025
986e6d4
CODE_STYLE.md: sync banned function list with checksrc.pl
vszakats Nov 27, 2025
63eb062
curl_setup.h: drop superfluous parenthesis from `Curl_safefree` macro
vszakats Nov 27, 2025
6dc82c8
memdebug: replace `(fwrite)` with `fwrite`
vszakats Nov 20, 2025
376c7bd
unit1653: replace local macro with `Curl_safefree()`
vszakats Nov 27, 2025
c9e50e9
appveyor: add support for using custom CMake versions
vszakats Nov 27, 2025
5c275f7
GHA/linux-old: stop installing `groff`, it is unused
vszakats Nov 28, 2025
e7c2f5b
GHA: update dependency google/boringssl to v0.20251124.0
renovate[bot] Nov 26, 2025
9d059e2
GHA: update dependency pyspelling to v2.12.1
renovate[bot] Nov 27, 2025
48939a4
GHA/linux-old: add support for using custom CMake versions
vszakats Nov 28, 2025
bfc3d13
http: add asserts for null terminator for input strings
bagder Nov 28, 2025
193cb00
build: stop overriding standard memory allocation functions
vszakats Oct 8, 2025
c10dda9
curlx/fopen: fix typo in copyright
yedayak Nov 28, 2025
aad3c2e
example: fix formatting nits
vszakats Nov 28, 2025
e25a3c6
GHA/curl-for-win: drop WINE install, do not run curl after build
vszakats Nov 28, 2025
12a3182
ssh: tracing and better pollset handling
icing Nov 28, 2025
b06cd92
libssh: fix state machine loop to progress as it should
icing Nov 28, 2025
8c68887
http1: parse header from uint8_t buffer
icing Nov 28, 2025
3896152
connection: give send methods/prototypes an uint8_t buffer
icing Nov 28, 2025
02aa75a
runtests: allow a test to switch off memdebug
bagder Nov 28, 2025
4be6707
curlx/multibyte: stop setting macros for non-Windows
vszakats Nov 28, 2025
d73efc6
tests: fix formatting nits
vszakats Nov 28, 2025
06e1616
memdebug: buffer output data
bagder Nov 28, 2025
16f073e
cmake: define dependencies as `IMPORTED` interface targets
vszakats Mar 27, 2025
ed331ce
cmake: save and restore `CMAKE_MODULE_PATH` in `curl-config.cmake`
vszakats Nov 29, 2025
545f2f3
lib/sendf.h: forward declare two structs
vszakats Nov 29, 2025
db32c07
rustls: verify that verifier_builder is not NULL
bagder Nov 28, 2025
985f86f
rustls: simplify init err path
cpu Nov 29, 2025
c3add71
mbedtls: replace macro constant with `CURL_ARRAYSIZE()`
vszakats Nov 29, 2025
0eed8b7
tool_operatate: return error for OOM in append2query
bagder Nov 29, 2025
2253bc3
lib/subdirs: fix formatting nits
vszakats Nov 29, 2025
47a1ab2
lib: fix formatting nits (part 1)
vszakats Nov 29, 2025
6d156bc
tests/data: replace Perl `&&` with `and` for XML-compliance
vszakats Nov 30, 2025
2d2d70b
test613.pl: integrate mtime check for test 1445, 1446
vszakats Nov 30, 2025
0180af2
tests/data: add `%PERL` to postcheck commands where missing
vszakats Nov 30, 2025
fdf9937
rtmp: stop redefining `setsockopt` system symbol on Windows
vszakats Nov 30, 2025
003689c
cf-socket: drop feature check for `IPV6_V6ONLY` on Windows
vszakats Nov 30, 2025
815bf76
autotools: delete idle `AM_CFLAGS`, `AM_LDFLAGS` variables
vszakats Nov 30, 2025
4e8d5da
vtls: drop interim ECH feature macros (OpenSSL, wolfSSL)
vszakats Nov 30, 2025
f553bff
cmakelint: also lint CMake `.in` files, fix a long line
vszakats Nov 30, 2025
7799d15
cmake: fix `ws2_32` reference in `curl-config.cmake`
vszakats Nov 30, 2025
bf58ca6
cmake: narrow scope of custom `CMAKE_MODULE_PATH` in `curl-config.cmake`
vszakats Dec 1, 2025
41931f1
imap: make sure Curl_pgrsSetDownloadSize() does not overflow
bagder Nov 30, 2025
cffc912
url: fix return code for OOM in parse_proxy()
bagder Dec 1, 2025
729316a
http: handle oom error from Curl_input_digest()
bagder Dec 1, 2025
dabfae8
cmake: namespace all local variables in `curl-config.cmake`
vszakats Dec 1, 2025
4aed2dc
krb5: fix detecting channel binding feature
vszakats Nov 29, 2025
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
  •  
  •  
  •  
10 changes: 5 additions & 5 deletions .github/scripts/badwords.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ could've:could have
couldn't:could not
didn't:did not
doesn't:does not
don't=do not
don't:do not
haven't:have not
i'd:I would
i'll:I will
Expand Down Expand Up @@ -74,10 +74,10 @@ file names\b:filenames
\buser names\b:usernames
\bpass phrase:passphrase
\bwill\b:rewrite to present tense
\b32bit=32-bit
\b64bit=64-bit
32 bit\b=32-bit
64 bit\b=64-bit
\b32bit:32-bit
\b64bit:64-bit
32 bit\b:32-bit
64 bit\b:64-bit
64-bits:64 bits or 64-bit
32-bits:32 bits or 32-bit
\bvery\b:rephrase using an alternative word
Expand Down
1 change: 1 addition & 0 deletions .github/scripts/pyspelling.words
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,7 @@ LDAPS
ldaps
LF
LGTM
libbacktrace
libbrotlidec
libc
libcurl
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/requirements-docs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
#
# SPDX-License-Identifier: curl

pyspelling==2.12
pyspelling==2.12.1
12 changes: 11 additions & 1 deletion .github/workflows/checksrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ jobs:
.github/scripts/codespell.sh

- name: 'typos'
timeout-minutes: 2
run: |
HOMEBREW_NO_AUTO_UPDATE=1 /home/linuxbrew/.linuxbrew/bin/brew install typos-cli
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
Expand Down Expand Up @@ -120,9 +121,17 @@ jobs:

xmllint:
name: 'xmllint'
runs-on: macos-latest
runs-on: ubuntu-latest
timeout-minutes: 1
steps:
- name: 'install prereqs'
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get -o Dpkg::Use-Pty=0 update
sudo rm -f /var/lib/man-db/auto-update
sudo apt-get -o Dpkg::Use-Pty=0 install \
libxml2-utils

- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
Expand All @@ -140,6 +149,7 @@ jobs:
timeout-minutes: 5
steps:
- name: 'install prereqs'
timeout-minutes: 2
run: HOMEBREW_NO_AUTO_UPDATE=1 /home/linuxbrew/.linuxbrew/bin/brew install actionlint shellcheck zizmor

- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
Expand Down
12 changes: 5 additions & 7 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,25 +108,23 @@ jobs:

# MultiSSL
export PKG_CONFIG_PATH; PKG_CONFIG_PATH="$(brew --prefix c-ares)/lib/pkgconfig:$(brew --prefix mbedtls)/lib/pkgconfig:$(brew --prefix rustls-ffi)/lib/pkgconfig:$(brew --prefix gsasl)/lib/pkgconfig"
cmake -B _bld1 -G Ninja -DENABLE_DEBUG=ON \
cmake -B _bld1 -G Ninja -DCURL_DISABLE_TYPECHECK=ON -DENABLE_DEBUG=ON \
-DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON -DCURL_USE_WOLFSSL=ON \
-DUSE_LIBRTMP=ON -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON -DUSE_ECH=ON -DENABLE_ARES=ON \
-DCURL_DISABLE_VERBOSE_STRINGS=ON
cmake --build _bld1
cmake --build _bld1 --target curlinfo
cmake --build _bld1 --target servers
cmake --build _bld1 --target tunits
cmake --build _bld1 --target units
cmake --build _bld1 --target testdeps
cmake --build _bld1 --target curl-examples-build

# HTTP/3
export PKG_CONFIG_PATH; PKG_CONFIG_PATH="$(brew --prefix libnghttp3)/lib/pkgconfig:$(brew --prefix libngtcp2)/lib/pkgconfig:$(brew --prefix gsasl)/lib/pkgconfig"
cmake -B _bld2 -G Ninja \
cmake -B _bld2 -G Ninja -DCURL_DISABLE_TYPECHECK=ON \
-DCURL_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR="$(brew --prefix openssl)" -DUSE_NGTCP2=ON \
-DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON \
-DUSE_LIBRTMP=ON -DCURL_USE_GSASL=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON
cmake --build _bld2
cmake --build _bld2 --target servers
cmake --build _bld2 --target testdeps
cmake --build _bld2 --target curl-examples-build

_bld1/src/curl --disable --version
_bld2/src/curl --disable --version
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/configure-vs-cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ jobs:
runs-on: macos-latest
steps:
- name: 'install packages'
timeout-minutes: 2
run: |
# shellcheck disable=SC2181,SC2034
while [[ $? == 0 ]]; do for i in 1 2 3; do if brew update && brew install automake libtool; then break 2; else echo Error: wait to try again; sleep 10; fi; done; false Too many retries; done
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/curl-for-win.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ jobs:
run: |
git clone --depth 1 https://github.com/curl/curl-for-win
mv curl-for-win/* .
export CW_CONFIG='-main-werror-unitybatch-win-x64'
export CW_CONFIG='-main-werror-unitybatch-win-x64-noWINE'
export CW_REVISION="${GITHUB_SHA}"
. ./_versions.sh
sudo podman image trust set --type reject default
Expand All @@ -186,7 +186,7 @@ jobs:
run: |
git clone --depth 1 https://github.com/curl/curl-for-win
mv curl-for-win/* .
export CW_CONFIG='-main-werror-unitybatch-win-x64-gcc-zlibold'
export CW_CONFIG='-main-werror-unitybatch-win-x64-gcc-zlibold-noWINE'
export CW_REVISION="${GITHUB_SHA}"
. ./_versions.sh
sudo podman image trust set --type reject default
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/distcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ jobs:
mingw-w64-x86_64-zlib mingw-w64-x86_64-zstd mingw-w64-x86_64-libpsl mingw-w64-x86_64-libssh2 mingw-w64-x86_64-nghttp2 mingw-w64-x86_64-openssl

- name: 'install prereqs'
timeout-minutes: 3
run: |
if [[ "${MATRIX_IMAGE}" = *'windows'* ]]; then
cd ~
Expand Down
101 changes: 74 additions & 27 deletions .github/workflows/http3-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,17 @@ env:
# renovate: datasource=github-tags depName=awslabs/aws-lc versioning=semver registryUrl=https://github.com
AWSLC_VERSION: 1.63.0
# renovate: datasource=github-tags depName=google/boringssl versioning=semver registryUrl=https://github.com
BORINGSSL_VERSION: 0.20251110.0
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver registryUrl=https://github.com
GNUTLS_VERSION: 3.8.10
BORINGSSL_VERSION: 0.20251124.0
# renovate: datasource=github-tags depName=gnutls/nettle versioning=semver registryUrl=https://github.com
NETTLE_VERSION: 3.10.2
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver extractVersion=^nettle_?(?<version>.+)_release_.+$ registryUrl=https://github.com
GNUTLS_VERSION: 3.8.11
# renovate: datasource=github-tags depName=wolfSSL/wolfssl versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
WOLFSSL_VERSION: 5.8.2
WOLFSSL_VERSION: 5.8.4
# renovate: datasource=github-tags depName=ngtcp2/nghttp3 versioning=semver registryUrl=https://github.com
NGHTTP3_VERSION: 1.12.0
NGHTTP3_VERSION: 1.13.1
# renovate: datasource=github-tags depName=ngtcp2/ngtcp2 versioning=semver registryUrl=https://github.com
NGTCP2_VERSION: 1.17.0
NGTCP2_VERSION: 1.18.0
# renovate: datasource=github-tags depName=nghttp2/nghttp2 versioning=semver registryUrl=https://github.com
NGHTTP2_VERSION: 1.68.0
# renovate: datasource=github-tags depName=cloudflare/quiche versioning=semver registryUrl=https://github.com
Expand Down Expand Up @@ -101,14 +103,23 @@ jobs:
path: ~/boringssl/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.BORINGSSL_VERSION }}

- name: 'cache nettle'
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: cache-nettle
env:
cache-name: cache-nettle
with:
path: ~/nettle/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NETTLE_VERSION }}

- name: 'cache gnutls'
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: cache-gnutls
env:
cache-name: cache-gnutls
with:
path: ~/gnutls/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}-${{ env.NETTLE_VERSION }}

- name: 'cache wolfssl'
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
Expand All @@ -135,7 +146,7 @@ jobs:
cache-name: cache-ngtcp2
with:
path: ~/ngtcp2/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.NETTLE_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}

- name: 'cache ngtcp2 boringssl'
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
Expand All @@ -161,6 +172,7 @@ jobs:
steps.cache-libressl.outputs.cache-hit != 'true' ||
steps.cache-awslc.outputs.cache-hit != 'true' ||
steps.cache-boringssl.outputs.cache-hit != 'true' ||
steps.cache-nettle.outputs.cache-hit != 'true' ||
steps.cache-gnutls.outputs.cache-hit != 'true' ||
steps.cache-wolfssl.outputs.cache-hit != 'true' ||
steps.cache-nghttp3.outputs.cache-hit != 'true' ||
Expand All @@ -181,7 +193,7 @@ jobs:
libbrotli-dev libzstd-dev zlib1g-dev \
libev-dev \
libc-ares-dev \
nettle-dev libp11-kit-dev autopoint bison gperf gtk-doc-tools libtasn1-bin # for GnuTLS
libp11-kit-dev autopoint bison gperf gtk-doc-tools libtasn1-bin # for GnuTLS
echo 'CC=gcc-12' >> "$GITHUB_ENV"
echo 'CXX=g++-12' >> "$GITHUB_ENV"

Expand Down Expand Up @@ -228,19 +240,30 @@ jobs:
cmake --build .
cmake --install .

- name: 'build nettle'
if: ${{ steps.cache-nettle.outputs.cache-hit != 'true' }}
run: |
cd ~
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 6 --retry-connrefused \
--location "https://ftpmirror.gnu.org/nettle/nettle-${NETTLE_VERSION}.tar.gz" | tar -xz
cd "nettle-${NETTLE_VERSION}"
./configure --disable-dependency-tracking --prefix=/home/runner/nettle/build \
--disable-silent-rules --disable-static --disable-openssl --disable-documentation
make install

- name: 'build gnutls'
if: ${{ steps.cache-gnutls.outputs.cache-hit != 'true' }}
run: |
cd ~
git clone --quiet --depth 1 -b "${GNUTLS_VERSION}" https://github.com/gnutls/gnutls
cd gnutls
# required: nettle-dev libp11-kit-dev libev-dev autopoint bison gperf gtk-doc-tools libtasn1-bin
./bootstrap
./configure --disable-dependency-tracking --prefix="$PWD"/build \
LDFLAGS="-Wl,-rpath,$PWD/build/lib -L$PWD/build/lib" \
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 6 --retry-connrefused \
"https://www.gnupg.org/ftp/gcrypt/gnutls/v${GNUTLS_VERSION%.*}/gnutls-${GNUTLS_VERSION}.tar.xz" | tar -xJ
cd "gnutls-${GNUTLS_VERSION}"
# required: libp11-kit-dev libev-dev autopoint bison gperf gtk-doc-tools libtasn1-bin
./configure --disable-dependency-tracking --prefix=/home/runner/gnutls/build \
PKG_CONFIG_PATH=/home/runner/nettle/build/lib64/pkgconfig \
LDFLAGS=-Wl,-rpath,/home/runner/nettle/build/lib64 \
--with-included-libtasn1 --with-included-unistring \
--disable-guile --disable-doc --disable-tests --disable-tools
make
make install

- name: 'build wolfssl'
Expand Down Expand Up @@ -280,7 +303,7 @@ jobs:
make install
make clean
./configure --disable-dependency-tracking --prefix="$PWD"/build \
PKG_CONFIG_PATH=/home/runner/openssl/build/lib/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/wolfssl/build/lib/pkgconfig \
PKG_CONFIG_PATH=/home/runner/openssl/build/lib/pkgconfig:/home/runner/nettle/build/lib64/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/wolfssl/build/lib/pkgconfig \
--enable-lib-only --with-openssl --with-gnutls --with-wolfssl --with-boringssl \
BORINGSSL_LIBS='-L/home/runner/awslc/build/lib -lssl -lcrypto' \
BORINGSSL_CFLAGS='-I/home/runner/awslc/build/include'
Expand Down Expand Up @@ -383,16 +406,17 @@ jobs:
-DCMAKE_UNITY_BUILD=ON

- name: 'gnutls'
install_packages: nettle-dev libp11-kit-dev
install_packages: libp11-kit-dev
install_steps: skipall
PKG_CONFIG_PATH: /home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
PKG_CONFIG_PATH: /home/runner/nettle/build/lib64/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
LDFLAGS: -Wl,-rpath,/home/runner/gnutls/build/lib -Wl,-rpath,/home/runner/nettle/build/lib64 -Wl,-rpath,/home/runner/ngtcp2/build/lib
configure: >-
LDFLAGS=-Wl,-rpath,/home/runner/gnutls/build/lib
--with-gnutls=/home/runner/gnutls/build --with-ngtcp2 --enable-ssls-export

- name: 'gnutls'
install_packages: nettle-dev libp11-kit-dev
PKG_CONFIG_PATH: /home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
install_packages: libp11-kit-dev
PKG_CONFIG_PATH: /home/runner/nettle/build/lib64/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
LDFLAGS: -Wl,-rpath,/home/runner/gnutls/build/lib
generate: >-
-DCURL_USE_GNUTLS=ON -DUSE_NGTCP2=ON
-DCMAKE_UNITY_BUILD=ON
Expand Down Expand Up @@ -455,14 +479,13 @@ jobs:
sudo rm -f /var/lib/man-db/auto-update
sudo apt-get -o Dpkg::Use-Pty=0 install \
libtool autoconf automake pkgconf \
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libidn2-0-dev libldap-dev libuv1-dev \
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libidn2-0-dev libldap-dev libuv1-dev valgrind \
${INSTALL_PACKAGES} \
${MATRIX_INSTALL_PACKAGES}
echo 'CC=gcc-12' >> "$GITHUB_ENV"
echo 'CXX=g++-12' >> "$GITHUB_ENV"

- name: 'cache openssl'
if: ${{ matrix.build.name == 'openssl' || matrix.build.name == 'openssl-quic' }}
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: cache-openssl-http3-no-deprecated
env:
Expand Down Expand Up @@ -502,6 +525,17 @@ jobs:
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.BORINGSSL_VERSION }}
fail-on-cache-miss: true

- name: 'cache nettle'
if: ${{ matrix.build.name == 'gnutls' }}
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: cache-nettle
env:
cache-name: cache-nettle
with:
path: ~/nettle/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NETTLE_VERSION }}
fail-on-cache-miss: true

- name: 'cache gnutls'
if: ${{ matrix.build.name == 'gnutls' }}
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
Expand All @@ -510,7 +544,7 @@ jobs:
cache-name: cache-gnutls
with:
path: ~/gnutls/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}-${{ env.NETTLE_VERSION }}
fail-on-cache-miss: true

- name: 'cache wolfssl'
Expand Down Expand Up @@ -541,7 +575,7 @@ jobs:
cache-name: cache-ngtcp2
with:
path: ~/ngtcp2/build
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.NETTLE_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
fail-on-cache-miss: true

- name: 'cache ngtcp2 boringssl'
Expand Down Expand Up @@ -604,6 +638,7 @@ jobs:

- name: 'configure'
env:
LDFLAGS: '${{ matrix.build.LDFLAGS }}'
MATRIX_CONFIGURE: '${{ matrix.build.configure }}'
MATRIX_GENERATE: '${{ matrix.build.generate }}'
MATRIX_PKG_CONFIG_PATH: '${{ matrix.build.PKG_CONFIG_PATH }}'
Expand Down Expand Up @@ -666,6 +701,18 @@ jobs:
- name: 'run tests'
if: ${{ !contains(matrix.build.install_steps, 'skipall') && !contains(matrix.build.install_steps, 'skiprun') }}
run: |
export TFLAGS='-n'
source ~/venv/bin/activate
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
cmake --build bld --verbose --target test-ci
else
make -C bld V=1 test-ci
fi

- name: 'run tests (valgrind)'
if: ${{ !contains(matrix.build.install_steps, 'skipall') && !contains(matrix.build.install_steps, 'skiprun') }}
run: |
export TFLAGS='-j6 HTTP/3'
source ~/venv/bin/activate
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
cmake --build bld --verbose --target test-ci
Expand All @@ -679,7 +726,7 @@ jobs:
[ -d ~/venv ] || python3 -m venv ~/venv
~/venv/bin/pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary -r tests/http/requirements.txt

- name: 'run pytest event based'
- name: 'run pytest (event based)'
if: ${{ !contains(matrix.build.install_steps, 'skipall') && !contains(matrix.build.install_steps, 'skiprun') }}
env:
CURL_TEST_EVENT: 1
Expand Down
Loading