8.14.0Desktop
Added 6
- MQTT to send ping at upkeep interval
- Schannel to handle PKCS12 client certificates containing CA certificates
- CURLOPT_SSL_SIGNATURE_ALGORITHMS option and --sigalgs command-line flag for TLS
- NGTCP2 with OpenSSL support in vquic
- Websocket option to disable auto-pong reply
- CURLOPT_PROTOCOLS to accept a long argument in DoH
Changed 3
- Headers to enforce a maximum number of response headers to accept
- AWS SigV4 to improve URL encoding and canonicalization
- Build system improvements for cmake including detection of wolfSSL and ngtcp2 features
Fixed 8
- Async-threaded resolver using reference counter
- DNS resolver improvements for threaded and DoH configurations
- FTP accept connect in cf-socket
- HTTP/2 stream window size after unpausing
- Race condition in FTP upload handling
- Memory leak when -h is used in config file
- Transfer-Encoding parser improvements
- HTTP/2 handling of TE request header using trailers
Removed 2
- Support for VS2008 as noted in DEPRECATE.md
- Windows CE support as noted in DEPRECATE.md
curl / Docs / Releases / Changes in 8.14.0 Related: Daily Snapshots Source repo Release log Pending Release 🠰 8.13.0 all changes 8.14.1 🠲
Changes in 8.14.0 - May 28 2025
8.14.0 8.14.0 Changes:
- mqtt: send ping at upkeep interval
- schannel: handle pkcs12 client certificates containing CA certificates
- TLS: add CURLOPT_SSL_SIGNATURE_ALGORITHMS and --sigalgs
- vquic: ngtcp2 + openssl support
- wcurl: import v2025.04.20 script + docs
- websocket: add option to disable auto-pong reply Bugfixes:
- _SEEALSO.md: remove spaces around command and man page section
- asyn-thrdd: fix detach from running thread
- asyn-thrdd: explain how this is okay with a comment
- asyn resolver code improvements
- async-threaded resolver: use ref counter
- async: DoH improvements
- autotools: detect
wolfSSL_set_quic_use_legacy_codelike cmake does - autotools: install shell completion files on cross build
- aws-sigv4: allow a blank string
- build: check required rustls-ffi version
- build: enable gcc-12/13+, clang-10+ picky warnings
- build: enable gcc-15 picky warnings
- certs: drop unused
default_bitsfrom.prmfiles - cf-https-connect: use the passed in dns struct pointer
- cf-socket: fix FTP accept connect
- cfilters: remove assert
- cmake/FindNGTCP2: simplify multi-pkg-config detection
- cmake: append picky warnings to
CMAKE_REQUIRED_FLAGSas string - cmake: avoid 'target is imported but not globally visible' when consuming libcurl with old cmake
- cmake: do not install
mk-ca-bundlescript and man page - cmake: enable
-Wallfor MSVC whenPICKY_COMPILER=ON - cmake: extend integration tests
- cmake: fix
fishinstall directory detection viapkg-config - cmake: fix nghttp3 static linking with
USE_OPENSSL_QUIC=ON - cmake: fix option() and mark_as_advanced() mixed order
- cmake: fix shell completion install when only one flavor is enabled
- cmake: honor individual picky option overrides found in
CMAKE_C_FLAGS - cmake: install shell completions for cross-builds
- cmake: link
crypt32for OpenSSL feature detection - cmake: merge
CURL_WERRORlogic intoPickyWarnings.cmake - cmake: prefer
COMPILE_OPTIONSoverCMAKE_C_FLAGSfor custom C options - cmake: quotes, whitespace, use
VERSION_GREATER_EQUAL - cmake: revert
CURL_LTObehavior for multi-config generators - cmake: set
BUILDING_LIBCURLdirectly for unit test targets - cmake: stop deleting
-W<n>fromCMAKE_C_FLAGS(MSVC) - cmake: tidy up and document feature detections in dependencies
- cmake: use
CMAKE_COMPILE_WARNING_AS_ERRORif available - cmake: use
INCLUDE_DIRECTORIESprop to specify local header dirs - cmake: use
LIB_NAMEincurl-config.cmake.in - cmake: use absolute paths for completion targets
- cmake: use the
LINK_OPTIONSproperty with CMake 3.13+ - configure: catch asking for double resolver without https-rr
- configure: fix --disable-rt
- configure: restore link checks
- configure: suppress command not found for brew
- conncache: make Curl_cpool_init return void
- connect: shutdown timer fix
- content_encoding: Transfer-Encoding parser improvements
- CONTRIBUTE: add project guidelines for AI use
- contrithanks.sh: drop set -e
- cpool/cshutdown: force close connections under pressure
- curl: fix memory leak when -h is used in config file
- curl: only warn once for --manual in manual-disabled build
- curl_get_line: handle lines ending on the buffer boundary
- curl_krb5: only use functions if FTP is still enabled
- curl_multibyte: fixup low-level calls, include in unity builds
- curl_osslq: remove a leftover debug fprintf() call
- curl_version_info.md: clarify ssl_version for MultiSSL
- CURLMOPT_TIMERFUNCTION.md: correct the example
- CURLOPT_ERRORBUFFER.md: buffer is read only after curl takes ownership
- CURLOPT_FOLLOWLOCATION.md: switch to GET => no body
- CURLOPT_READFUNCTION.md: mention the seek callback
- CURLOPT_XFERINFOFUNCTION.md: fix the callback return type in example
- curlx: move the docs to docs/internals/
- DEPRECATE.md: drop support for VS2008
- DEPRECATE.md: drop Windows CE support
- dist: drop duplicate entry from
CMAKE_DIST - dns_entry: move from conn to data->state
- Dockerfile: update debian:bookworm-slim Docker digest to 90522ee
- docs/INSTALL.md: drop reference to removed configure option
- docs/libcurl: fix type and prototype problems in examples
- docs/libcurl: make examples build with picky compiler options
- docs/libcurl: mention sensitive data/headers
- docs: add missing return statement in examples
- docs: fix incorrect shell substitution in docker run example command
- docs: fix typo in retry.md
- docs: update distros links
- doh: httpsrr fix
- doh: make sure CURLOPT_PROTOCOLS is set a with a "long" arg
- doh: reduce the DNS request buffer size
- easy_reset: fix dohfor_mid member
- ECH: reference the OpenSSL ECH feature branch
- etag-save.md: mention how using both options is a good idea
- eventfd: fix feature guards
- formdata: cleanups
- ftp: fix bug in failed init
- ftp: fix race in upload handling
- ftplistparser: add two overflow preventions
- ftplistparser: split up into more functions
- generate.bat: exclude curlinfo.c from legacy VS projects
- genserv.pl: fail with a message if
opensslis missing or failing - headers: enforce a max number of response header to accept
- headers: set an error message on illegal response headers
- hostip: fix build without threaded-resolver and without DoH
- hostip: show the correct name on proxy resolve error
- http2: fix stream window size after unpausing
- HTTP3.md: fix incorrect variable placeholders
- http: fix a build error when all auths are disabled
- http: fix HTTP/2 handling of TE request header using "trailers"
- http: in alt-svc negotiation only allow supported HTTP versions
- http_aws_sigv4: add additional verbose log statements
- http_aws_sigv4: improve sigv4 URL encoding and canonicalization
- http_chunks: narrow variable scope for 'trlen'
- http_negotiate: fix non-SSL build with GSSAPI
- https-connect: fix httpsrr target check
- HTTPSRR.md: clarify somewhat
- if2ip: build the function also if FTP is present
- imap: remove redundant condition
- INSTALL-CMAKE.md: fix typo
- INSTALL.md: update the minimal libcurl size example
- KNOWN_BUGS: fix link in sivg4 issue 16.3
- lib/src/docs/test: improve curl_easy_setopt() calls
- lib1560: use hex notation, drop non-ASCII exception
- lib3026: drop DLL pre-load perf mitigation for old mingw
- lib: add const to clientwriter tables
- lib: drop curlx_getpid, use fake pid in SMB
- lib: include files using known path
- lib: make Curl_easyopts const
- lib: unify conversions to/from hex
- libcurl-tutorial.md: fix read callback explanation
- libssh: add NULL check for Curl_meta_get()
- libssh: fix memory leak
- libssh: remove a condition that always equals false
- libtest/first: stop defining MEMDEBUG_NODEFINES
- libtests: define CURL_DISABLE_DEPRECATION first
- make: clean tests better
- mbedtls: TLS 1.3 is max when mbedtls has 1.3 support
- metahash: add asserts to help analyzers
- mk-ca-bundle.pl: follow redirects
- mk-ca-bundle: switch URLs to GitHub versions
- mkhelp: fix to not generate a line-ending space in some cases
- mqtt: use conn/easy meta hash
- multi: do transfer book keeping using mid
- multi: init_do(): check result
- netrc: avoid NULL deref on weird input
- netrc: avoid strdup NULL
- netrc: deal with null token better
- ngtcp2: clarify ignoring of result
- openssl-quic: avoid potential
-Wnull-dereference, add assert - openssl-quic: fix printf mask
- openssl-quic: fix shutdown when stream not open
- openssl: enable builds for both engines and providers
- openssl: set the cipher string before doing private cert
- parsedate: provide Curl_wkday also for GnuTLS builds
- processhelp.pm: always call
taskkillwith-f(force) - processhelp.pm: avoid potential endless loop, log more (Windows)
- progress: avoid integer overflow when gathering total transfer size
- pytest tls: extend coverage
- pytest-xdist: pytest in parallel
- pytest: add pinnedpubkey test cases
- pytest: give parameterised tests better ids for read- and parsability
- pytest: make test_07_22 more lenient to exit codes
- quic: no local idle connection timeout, ngtcp2 keep-alive
- rand: update comment on Curl_rand_bytes weak random
- RELEASE-PROCEDURE.md: release candidate git tagging explained
- rtsp: remove redundant condition
- runtests: add retry option to reduce flakiness
- runtests: fix indentation
- runtests: recognize lowercase
windowsincurl -V - runtests: remove server verification after start
- runtests: split
SSH_PWDintoSCP_PWDandSFTP_PWD, and more - rustls: make max size of cert and key reasonable
- sasl: give help when unable to select AUTH
- scripts: completion.pl: sort the completion file for all shells
- scripts: drop unused import, formatting
- scripts: fix --opts-dir help in completion.pl
- scripts: fix perl indentation, whitespace, semicolons
- sectransp: fix building for macOS Sierra and older
- setopt: provide info for CURLE_BAD_FUNCTION_ARGUMENT
- smb: avoid integer overflow on weird input date
- socket: use accept4 when available
- socketpair: support pipe2 where available
- spacecheck.pl: check for non-ASCII chars, fix fallouts
- spacecheck.pl: verify
tests/data/test*for non-ASCII chars - src: drop strcase.[ch] from tool builds
- src: include memdebug.h consistently with angle brackets <>
- src: rename curlx_safefree to tool_safefree
- test1173.pl: whitelist some option-looking names that aren't options
- test1658: add unit test for the HTTPS RR decoder
- test: make unittest 1308 into a libtest
- tests/ech_tests.sh: sync shebang with rest of bash scripts
- tests/FILEFORMAT.md: clarify %hex[] formatting
- tests/FILEFORMAT.md: document the aws feature
- tests/README.md: document --test-duphandle
- tests/README.md: list the openssl tool among the prerequisites
- tests/server/dnsd: basic DNS server for test suite
- tests/server: check for
stream != NULLin mqttd - tests/server: fix typo in comment
- tests/server: stop using libcurl string comparisons
- tests/server: stop using libcurl's printf functions
- tests/serverhelp: remove last remnants of http-pipe server
- tests/tunit: make a separate directory for tool-based unit tests
- tests: add aws feature to the related tests
- tests: Add https-mtls server to force client auth
- tests: fix some test tag mismatches
- tests: mark ipfs tests to require ipfs
- tests: move a boolean variable out of the path section
- tests: prefer
--insecureover-k - tests: provide all non-ascii data hex encoded
- tests: remove some unused test case sections
- tests: require IPv6 for 1265, 1324, 2086
- tests: separate tunit tests from unit tests more
- tests: stop using libcurl's strdup
- tests: unify test case keywords
- tests: use a more portable null device path
- TODO: remove "nicer lacking perl message"
- tool_cb_write.c: handle EINTR on flush
- tool_getparam: clear argument only when needed
- tool_operate: make retrycheck() a separate function
- tool_operate: when retrying, only truncate regular files
- tool_paramhlp: avoid integer overflow in secs2ms()
- tool_parsecfg: make get_line handle lines ending on the buffer boundary
- typecheck-gcc.h: fix the typechecks
- urlapi: redirecting to "" is considered fine
- urlapi: remove unneeded guards around PUNY2IDN
- urldata: remove the unused struct field 'hide_progress'
- VERSIONS: list all past releases
- vquic: consistent name for the stream struct across backends
- vquic: init for every call to recvmsg
- vtls: avoid NULL deref on bad PEM input
- vtls: fix build with ssl but without http
- VULN-DISCLOSURE-POLICY: use of weak algos
- winbuild: add the deprecation warning to the README
- winbuild: curl_get_line is not used for tool builds
- windows: fix builds targeting WinXP, test it in CI
- wolfssl: fix to enable ALPN when available
- ws: fix the header replace check
- ws: store protocol context as connection meta data
Further
…