]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
2 years agotool: add "variable" support
Daniel Stenberg [Mon, 31 Jul 2023 09:50:28 +0000 (11:50 +0200)] 
tool: add "variable" support

Add support for command line variables. Set variables with --variable
name=content or --variable name@file (where "file" can be stdin if set
to a single dash (-)).

Variable content is expanded in option parameters using "{{name}}"
(without the quotes) if the option name is prefixed with
"--expand-". This gets the contents of the variable "name" inserted, or
a blank if the name does not exist as a variable. Insert "{{" verbatim
in the string by prefixing it with a backslash, like "\\{{".

Import an environment variable with --variable %name. It makes curl exit
with an error if the environment variable is not set. It can also rather
get a default value if the variable does not exist, using =content or
@file like shown above.

Example: get the USER environment variable into the URL:

 --variable %USER
 --expand-url = "https://example.com/api/{{USER}}/method"

When expanding variables, curl supports a set of functions that can make
the variable contents more convenient to use. It can trim leading and
trailing white space with "trim", output the contents as a JSON quoted
string with "json", URL encode it with "url" and base 64 encode it with
"b64". To apply functions to a variable expansion, add them colon
separated to the right side of the variable. They are then performed in
a left to right order.

Example: get the contents of a file called $HOME/.secret into a variable
called "fix". Make sure that the content is trimmed and percent-encoded
sent as POST data:

  --variable %HOME=/home/default
  --expand-variable fix@{{HOME}}/.secret
  --expand-data "{{fix:trim:url}}"
  https://example.com/

Documented. Many new test cases.

Co-brainstormed-by: Emanuele Torre
Assisted-by: Jat Satiro
Closes #11346

2 years agoKNOWN_BUGS: cygwin: make install installs curl-config.1 twice
Daniel Stenberg [Mon, 31 Jul 2023 06:55:26 +0000 (08:55 +0200)] 
KNOWN_BUGS: cygwin: make install installs curl-config.1 twice

Closes #8839

2 years agoKNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14
Daniel Stenberg [Mon, 31 Jul 2023 06:53:55 +0000 (08:53 +0200)] 
KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14

Closes #11215

2 years agoKNOWN_BUGS: cmake outputs: no version information available
Daniel Stenberg [Mon, 31 Jul 2023 06:51:32 +0000 (08:51 +0200)] 
KNOWN_BUGS: cmake outputs: no version information available

Closes #11158

2 years agoKNOWN_BUGS: APOP authentication fails on POP3
Daniel Stenberg [Mon, 31 Jul 2023 06:47:22 +0000 (08:47 +0200)] 
KNOWN_BUGS: APOP authentication fails on POP3

Closes #10073

2 years agoKNOWN_BUGS: hyper is slow
Daniel Stenberg [Mon, 31 Jul 2023 06:45:33 +0000 (08:45 +0200)] 
KNOWN_BUGS: hyper is slow

Closes #11203

2 years agoconfigure, cmake, lib: more form api deprecation
Patrick Monnerat [Tue, 15 Nov 2022 16:50:22 +0000 (17:50 +0100)] 
configure, cmake, lib: more form api deprecation

Introduce a --enable-form-api configure option to control its inclusion
in builds. The condition name defined for it is CURL_DISABLE_FORM_API.

Form api code is dependent of MIME: configure and CMake handle this
dependency automatically: CMake by making it a dependent option
explicitly, configure by inheriting the MIME value by default and
rejecting explicit incompatible values.

"form-api" is now a new hidden test feature.

Update libcurl modules to respect this option and adjust tests
accordingly.

Closes #9621

2 years agomailmap: add Derzsi Dániel
Daniel Stenberg [Mon, 31 Jul 2023 06:29:16 +0000 (08:29 +0200)] 
mailmap: add Derzsi Dániel

2 years agowolfssl: support loading system CA certificates
Disyer [Mon, 17 Jul 2023 13:46:34 +0000 (16:46 +0300)] 
wolfssl: support loading system CA certificates

Closes #11452

2 years agonss: delete more NSS references
Viktor Szakats [Sun, 30 Jul 2023 19:12:52 +0000 (19:12 +0000)] 
nss: delete more NSS references

Fix the distcheck CI failure and delete more NSS references.

Follow-up to 7c8bae0d9c9b2dfeeb008b9a316117d7b9675175

Reviewed-by: Marcel Raad
Reviewed-by: Daniel Stenberg
Closes #11548

2 years agonss: remove support for this TLS library
Daniel Stenberg [Sat, 29 Jul 2023 21:44:28 +0000 (23:44 +0200)] 
nss: remove support for this TLS library

Closes #11459

2 years agomacOS: fix target detection more
Ryan Schmidt [Tue, 25 Jul 2023 09:32:59 +0000 (04:32 -0500)] 
macOS: fix target detection more

Now SCDynamicStoreCopyProxies is called (and the required frameworks are
linked in) on all versions of macOS and only on macOS. Fixes crash due
to undefined symbol when built with the macOS 10.11 SDK or earlier.

CURL_OSX_CALL_COPYPROXIES is renamed to CURL_MACOS_CALL_COPYPROXIES and
is now only defined when SCDynamicStoreCopyProxies will actually be
called. Previously, it was defined when ENABLE_IPV6 was not defined but
SCDynamicStoreCopyProxies is not called in that case.

TARGET_OS_OSX is only defined in the macOS 10.12 SDK and later and only
when dynamic targets are enabled. TARGET_OS_MAC is always defined but
means any Mac OS or derivative including macOS, iOS, tvOS, and watchOS.
TARGET_OS_IPHONE means any Darwin OS other than macOS.

Follow-up to c73b2f82

Fixes #11502
Closes #11516

2 years agotool_operate: allow SSL_CERT_FILE and SSL_CERT_DIR
Daniel Stenberg [Thu, 27 Jul 2023 21:36:36 +0000 (23:36 +0200)] 
tool_operate: allow SSL_CERT_FILE and SSL_CERT_DIR

... used at once.

Reported-by: Gabriel Corona
Fixes #11325
Closes #11531

2 years agoCI: remove Lift's configuration
Thomas M. DuBuisson [Sat, 29 Jul 2023 15:11:06 +0000 (08:11 -0700)] 
CI: remove Lift's configuration

The Lift tool is being retired. Their site reads:

"Sonatype Lift will be retiring on Sep 12, 2023, with its analysis
stopping on Aug 12, 2023."

Closes #11541

2 years agoRevert "schannel: reverse the order of certinfo insertions"
Nathan Moinvaziri [Fri, 28 Jul 2023 19:20:09 +0000 (12:20 -0700)] 
Revert "schannel: reverse the order of certinfo insertions"

This reverts commit 8986df802db9b5338d9d50a54232ebae4dbcf6dd.

Windows does not guarantee a particular certificate ordering, even
though TLS may have its own ordering/relationship guarantees. Recent
versions of Windows 11 reversed the ordering of ceritifcates returned by
CertEnumCertificatesInStore, therefore this commit no longer works as
initially intended. libcurl makes no guarantees about certificate
ordering if the operating system can't.

Ref: https://github.com/curl/curl/issues/9706

Closes https://github.com/curl/curl/pull/11536

2 years agowinbuild: improve check for static zlib
wangzhikun [Fri, 28 Jul 2023 03:00:06 +0000 (11:00 +0800)] 
winbuild: improve check for static zlib

- Check for zlib static library name zlibstatic.lib.

zlib's static library has a different name depending on how it was
built. zlibstatic.lib is output by cmake. zlibstat.lib is output by
their pre-generated Visual Studio project files (in the contrib
directory) and defines ZLIB_WINAPI (ie it's meant to use stdcall
instead of cdecl if you end up exporting the zlib functions).

Prior to this change the makefile only checked for the latter.

Closes https://github.com/curl/curl/pull/11521

2 years agoconfigure: use the pkg-config --libs-only-l flag for libssh2
Daniel Stenberg [Fri, 28 Jul 2023 21:27:20 +0000 (23:27 +0200)] 
configure: use the pkg-config --libs-only-l flag for libssh2

... instead of --libs, as that one also returns -L flags.

Reported-by: Wilhelm von Thiele
Fixes #11538
Closes #11539

2 years agocmake: support building static and shared libcurl in one go
Viktor Szakats [Thu, 22 Jun 2023 09:24:37 +0000 (09:24 +0000)] 
cmake: support building static and shared libcurl in one go

This patch adds the ability to build a static and shared libcurl library
in a single build session. It also adds an option to select which one to
use when building the curl executable.

New build options:
- `BUILD_STATIC_LIBS`. Default: `OFF`.
  Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`.
- `BUILD_STATIC_CURL`. Default: `OFF`.
  Requires `BUILD_STATIC_LIBS` enabled.
  Enabled automatically if building static libcurl only.
- `STATIC_LIB_SUFFIX`. Default: empty.
- `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide
  with static lib name (typically with MSVC) in Windows builds.
  Otherwise empty.

Also:

- Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass
  it directly to the compiler. This also allows to delete a condition
  from `tests/server/CMakeLists.txt`.

- Complete a TODO by following the logic used in autotools (also for
  `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of
  `libcurl.pc` for _static-only_ curl builds.

- Convert an existing CI test to build both shared and static libcurl.

Closes #11505

2 years agoCI/awslc: add cache for build awslc library
Stefan Eissing [Fri, 28 Jul 2023 10:46:42 +0000 (12:46 +0200)] 
CI/awslc: add cache for build awslc library

Closes #11535

2 years agoGHA/linux.yml: add caching
Stefan Eissing [Fri, 28 Jul 2023 06:56:50 +0000 (08:56 +0200)] 
GHA/linux.yml: add caching

Closes #11532

2 years agoRELEASE-NOTES: synced
Daniel Stenberg [Thu, 27 Jul 2023 21:58:06 +0000 (23:58 +0200)] 
RELEASE-NOTES: synced

Bump working version to 8.3.0

2 years agourl: remove infof() output for "still name resolving"
Daniel Stenberg [Thu, 27 Jul 2023 15:41:54 +0000 (17:41 +0200)] 
url: remove infof() output for "still name resolving"

The message does not help and might get spewed a lot during times.

Reported-by: yushicheng7788 on github
Fixes #11394
Closes #11529

2 years agoKNOWN_BUGS: cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
Daniel Stenberg [Thu, 27 Jul 2023 21:43:28 +0000 (23:43 +0200)] 
KNOWN_BUGS: cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"

Closes #11244

2 years agoCI: quiche updates
Stefan Eissing [Thu, 27 Jul 2023 12:26:39 +0000 (14:26 +0200)] 
CI: quiche updates

- remove quiche from standard `linux` workflow
- add mod_h2 caching to quiche workflow
- rename quiche to quiche-linux
- move version definitions into env section

Closes #11528

2 years agohttp2: disable asssertion blocking OSSFuzz testing
Stefan Eissing [Tue, 25 Jul 2023 15:14:21 +0000 (17:14 +0200)] 
http2: disable asssertion blocking OSSFuzz testing

- not clear how this triggers and it blocks OSSFuzz testing other
  things. Since we handle the case with an error return, disabling the
  assertion for now seems the best way forward.

Fixes #11500
Closes #11519

2 years agohttp2: fix in h2 proxy tunnel: progress in ingress on sending
Stefan Eissing [Thu, 27 Jul 2023 10:59:03 +0000 (12:59 +0200)] 
http2: fix in h2 proxy tunnel: progress in ingress on sending

- depending on what is tunneled, the proxy may never get invoked for
  receiving data explicitly. Not progressing ingress may lead to stalls
  due to missed WINDOW_UPDATEs.

CI:
- add a chache for building mod_h2

Closes #11527

2 years agoCI ngtcp2+quictls: use nghttpx cache as in quiche build
Stefan Eissing [Thu, 27 Jul 2023 07:55:36 +0000 (09:55 +0200)] 
CI ngtcp2+quictls: use nghttpx cache as in quiche build

2 years agobearssl: don't load CA certs when peer verification is disabled
Jay Satiro [Fri, 21 Jul 2023 07:26:14 +0000 (03:26 -0400)] 
bearssl: don't load CA certs when peer verification is disabled

We already do this for other SSL backends.

Bug: https://github.com/curl/curl/pull/11457#issuecomment-1644587473
Reported-by: kyled-dell@users.noreply.github.com
Closes https://github.com/curl/curl/pull/11497

2 years agoeasy: remove #ifdefs to make code easier on the eye
Daniel Stenberg [Wed, 26 Jul 2023 16:23:52 +0000 (18:23 +0200)] 
easy: remove #ifdefs to make code easier on the eye

Closes #11525

2 years agoGHA: adding quiche workflow
Stefan Eissing [Tue, 25 Jul 2023 13:38:42 +0000 (15:38 +0200)] 
GHA: adding quiche workflow

- adding separate quiche workflow to also build nghttpx server for testing

Closes #11517

2 years agoRELEASE-NOTES: synced curl-8_2_1
Daniel Stenberg [Wed, 26 Jul 2023 06:10:40 +0000 (08:10 +0200)] 
RELEASE-NOTES: synced

curl 8.2.1 release

2 years agoTHANKS: add contributors from 8.2.1
Daniel Stenberg [Wed, 26 Jul 2023 06:10:40 +0000 (08:10 +0200)] 
THANKS: add contributors from 8.2.1

2 years agodocs: provide more see also for cipher options
Daniel Stenberg [Tue, 25 Jul 2023 08:28:18 +0000 (10:28 +0200)] 
docs: provide more see also for cipher options

More cross references. Hide nroff errors.

Closes #11513

2 years agodocs: mark two TLS options for TLS, not SSL
Daniel Stenberg [Tue, 25 Jul 2023 08:31:42 +0000 (10:31 +0200)] 
docs: mark two TLS options for TLS, not SSL

Closes #11514

2 years agocurl_multi_wait.3: fix arg quoting to doc macro .BR
bch [Mon, 24 Jul 2023 22:31:50 +0000 (15:31 -0700)] 
curl_multi_wait.3: fix arg quoting to doc macro .BR

Closes #11511

2 years agoRELEASE-NOTES: synced
Daniel Stenberg [Mon, 24 Jul 2023 21:03:23 +0000 (23:03 +0200)] 
RELEASE-NOTES: synced

2 years agocmake: update ngtcp2 detection
Viktor Szakats [Mon, 24 Jul 2023 12:42:56 +0000 (12:42 +0000)] 
cmake: update ngtcp2 detection

Replace `OpenSSL` with `quictls` to follow the same change
in the v0.17.0 ngtcp2 release.

Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed

Closes #11508

2 years agohttp: VLH, very large header test and fixes
Stefan Eissing [Mon, 24 Jul 2023 13:38:04 +0000 (15:38 +0200)] 
http: VLH, very large header test and fixes

- adding tests using very large passwords in auth
- fixes general http sending to treat h3 like h2, and
  not like http1.1
- eliminate H2_HEADER max definitions and use the commmon
  DYN_HTTP_REQUEST everywhere, different limits do not help
- fix http2 handling of requests denied by nghttp2 on send
  to immediately report the refused stream

Closes #11509

2 years agoCONTRIBUTE: drop mention of copyright year ranges
Andrei Rybak [Sun, 23 Jul 2023 21:33:45 +0000 (23:33 +0200)] 
CONTRIBUTE: drop mention of copyright year ranges

Year ranges in copyrights were dropped in commits [1] and [2].
Verification of year ranges in copyrights was dropped from script
'scripts/copyright.pl' in commit [3].  However, the corresponding
passages in file 'docs/CONTRIBUTE.md' weren't updated.

Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'.

[1] 2bc1d775f (copyright: update all copyright lines and remove year
    ranges, 2023-01-02)
[2] c46761bd8 (tests/http: remove year ranges from copyrights,
    2023-03-14)
[3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28)

Closes #11504

2 years agoCONTRIBUTE: fix syntax in commit message description
Andrei Rybak [Sun, 23 Jul 2023 21:32:45 +0000 (23:32 +0200)] 
CONTRIBUTE: fix syntax in commit message description

File 'docs/CONTRIBUTE.md' includes a description of how one should write
commit messages in the curl project.  Different possible parts of the
message are enclosed in square brackets.  One exception is the section
describing how the curl project doesn't use "Signed-off-by" commit
trailers [1], which is enclosed in an opening curly brace paired with a
closing square bracket.

Fix the enclosing square brackets in description of "Signed-off-by"
trailers in commit messages in file 'docs/CONTRIBUTE.md'.

[1] See description of option '--signoff' in Git documentation:
    https://git-scm.com/docs/git-commit

Closes #11504

2 years agosrc/mkhelp: strip off escape sequences
Daniel Stenberg [Sun, 23 Jul 2023 14:27:57 +0000 (16:27 +0200)] 
src/mkhelp: strip off escape sequences

At some point the nroff command stopped stripping off escape sequences,
so then this script needs to do the job instead.

Reported-by: VictorVG on github
Fixes #11501
Closes #11503

2 years agoKNOWN_BUGS: building for old macOS fails with gcc
Daniel Stenberg [Sun, 23 Jul 2023 15:00:29 +0000 (17:00 +0200)] 
KNOWN_BUGS: building for old macOS fails with gcc

Closes #11441

2 years agorustls: update rustls-ffi 0.10.0
Jacob Hoffman-Andrews [Wed, 29 Mar 2023 21:01:55 +0000 (14:01 -0700)] 
rustls: update rustls-ffi 0.10.0

This brings in version 0.21.0 of the upstream rustls implementation,
which notable includes support for IP address certificates.

Closes #10865

2 years agowebsocket: rename arguments/variables to match docs
bch [Thu, 20 Jul 2023 22:03:16 +0000 (15:03 -0700)] 
websocket: rename arguments/variables to match docs

Pedantry/semantic-alignment between functions, docs, comments with
respect to websocket protocol code; No functional change intended.

* "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments).

* "sendflags" becomes "flags"

* use canonical CURL *handle

Closes #11493

2 years agobug_report: use issue forms instead of markdown template
Jan Macku [Wed, 19 Jul 2023 14:31:11 +0000 (16:31 +0200)] 
bug_report: use issue forms instead of markdown template

Issue forms allow you to define web-like input forms using YAML
syntax. It allows you to guide the reporter to get the required
information.

Signed-off-by: Jan Macku <jamacku@redhat.com>
Closes #11474

2 years agoTODO: Obey Retry-After in redirects
Daniel Stenberg [Fri, 21 Jul 2023 11:53:47 +0000 (13:53 +0200)] 
TODO: Obey Retry-After in redirects

(remove "Set custom client ip when using haproxy protocol" which was
shipped in 8.2.0)

Mentioned-by: Yair Lenga
Closes #11447

2 years agoRELEASE-NOTES: synced
Daniel Stenberg [Fri, 21 Jul 2023 10:47:47 +0000 (12:47 +0200)] 
RELEASE-NOTES: synced

2 years agoamissl: fix AmiSSL v5 detection
Futaura [Wed, 19 Jul 2023 18:49:09 +0000 (19:49 +0100)] 
amissl: fix AmiSSL v5 detection

Due to changes in the AmiSSL SDK, the detection needed adjusting.

Closes #11477

2 years agounittest/makefile: remove unneeded unit1621_LDADD
Alois Klink [Thu, 20 Jul 2023 00:10:02 +0000 (01:10 +0100)] 
unittest/makefile: remove unneeded unit1621_LDADD

The `unit1621_LDADD` variable has the exact same value as the `LDADD`
flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`.

This was originally added by [98e6629][], but I can't see any reason
why it exists, so we should remove it to clean things up.

[98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7ebcb131e88

Closes #11494

2 years agounittest/makefile: remove unneeded unit1394_LDADD
Alois Klink [Wed, 19 Jul 2023 23:42:38 +0000 (00:42 +0100)] 
unittest/makefile: remove unneeded unit1394_LDADD

These custom `unit1394_LDADD` and similar automake overrides are no
longer neded. They were originally added by added by [8dac7be][] for
metalink support, but are no longer after [265b14d][] removed metalink.

[8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bdfdcac1ed8c
[265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37d36f911693

Closes #11494

2 years agocmake: add `libcurlu`/`libcurltool` for unit tests
Alois Klink [Sun, 16 Jul 2023 05:32:45 +0000 (06:32 +0100)] 
cmake: add `libcurlu`/`libcurltool` for unit tests

Add a `libcurlu`/`libcurltool` static library that is compiled only for
unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not
built by default, they're only built if unit tests are built.

These libraries allow us to compile every unit test with CMake.

Closes #11446

2 years agotest979: test -u with redirect to (the same) absolute host
Daniel Stenberg [Thu, 20 Jul 2023 21:20:50 +0000 (23:20 +0200)] 
test979: test -u with redirect to (the same) absolute host

Verifies #11492

2 years agotransfer: do not clear the credentials on redirect to absolute URL
Daniel Stenberg [Thu, 20 Jul 2023 21:28:19 +0000 (23:28 +0200)] 
transfer: do not clear the credentials on redirect to absolute URL

Makes test 979 work. Regression shipped in 8.2.0 from commit
dd4d1a26959f63a2c

Fixes #11486
Reported-by: Cloudogu Siebels
Closes #11492

2 years agoos400: correct EXPECTED_STRING_LASTZEROTERMINATED
Jon Rumsey [Wed, 19 Jul 2023 13:49:34 +0000 (14:49 +0100)] 
os400: correct EXPECTED_STRING_LASTZEROTERMINATED

Correct EXPECTED_STRING_LASTZEROTERMINATED to account for
CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when
passed into curl_easy_setopt().

Closes #11476

2 years agoamissl: add missing signal.h include
Futaura [Wed, 19 Jul 2023 18:54:40 +0000 (19:54 +0100)] 
amissl: add missing signal.h include

In some environments, signal.h is already included, but not in others
which cause compilation to fail, so explictly include it.

Closes #11478

2 years agoamigaos: fix sys/mbuf.h m_len macro clash
Futaura [Wed, 19 Jul 2023 18:58:44 +0000 (19:58 +0100)] 
amigaos: fix sys/mbuf.h m_len macro clash

The updated Curl_http_req_make and Curl_http_req_make2 functions spawned
a parameter called m_len. The AmigaOS networking headers, derived from
NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with
this. Since we do not actually use mbuf, force the include file to be
ignored, removing the clash.

Closes #11479

2 years agosocks: print ipv6 address within brackets
Daniel Stenberg [Thu, 20 Jul 2023 09:14:37 +0000 (11:14 +0200)] 
socks: print ipv6 address within brackets

Fixes #11483
Closes #11484

2 years agolibcurl-errors.3: add CURLUE_OK
MonkeybreadSoftware [Thu, 20 Jul 2023 11:45:14 +0000 (13:45 +0200)] 
libcurl-errors.3: add CURLUE_OK

Closes #11488

2 years agocfilters: rename close/connect functions to avoid clashes
Futaura [Thu, 20 Jul 2023 17:07:49 +0000 (18:07 +0100)] 
cfilters: rename close/connect functions to avoid clashes

Rename `close` and `connect` in `struct Curl_cftype` for
consistency and to avoid clashes with macros of the same name
(the standard AmigaOS networking connect() function is implemented
via a macro).

Closes #11491

2 years agohttp2: fix regression on upload EOF handling
Stefan Eissing [Thu, 20 Jul 2023 11:08:00 +0000 (13:08 +0200)] 
http2: fix regression on upload EOF handling

- a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5
  where optimization of small POST bodies leads to a new code path
  for such uploads that did not trigger the "done sending" event
- add triggering this event for early "upload_done" situations

Fixes #11485
Closes #11487
Reported-by: Aleksander Mazur
2 years agoconfigure: check for nghttp2_session_get_stream_local_window_size
Daniel Stenberg [Wed, 19 Jul 2023 13:48:05 +0000 (15:48 +0200)] 
configure: check for nghttp2_session_get_stream_local_window_size

The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016)

Fixes #11470
Reported-by: Paul Howarth
Closes #11473

2 years agoquiche: fix segfault and other things
Stefan Eissing [Wed, 19 Jul 2023 08:42:07 +0000 (10:42 +0200)] 
quiche: fix segfault and other things

- refs #11449 where a segfault is reported when IP Eyeballing did
  not immediately connect but made several attempts
- The transfer initiating the eyeballing was initialized  too early,
  leadding to references to the filter instance that was then
  replaced in the subsequent eyeball attempts. That led to a use
  after free in the buffer handling for the transfer
- transfers are initiated now more lazy (like in the ngtcp2 filter),
  when the stream is actually opened
- suppress reporting on quiche event errors for "other" transfers
  than the current one to not fail a transfer due to faults in
  another one.
- revert recent return value handling for quiche_h3_recv_body()
  to not indicate an error but an EAGAIN situation. We wish quiche
  would document what functions return.

Fixes #11449
Closes #11469
Reported-by: ウさん
2 years agohostip: return IPv6 first for localhost resolves
Daniel Stenberg [Wed, 19 Jul 2023 07:17:15 +0000 (09:17 +0200)] 
hostip: return IPv6 first for localhost resolves

Fixes #11465
Reported-by: Chilledheart on github
Closes #11466

2 years agotool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T
Harry Sintonen [Wed, 19 Jul 2023 08:22:15 +0000 (11:22 +0300)] 
tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T

- a variable was renamed, and some use of it wasn't. this fixes the
  build.

Closes #11468

2 years agoquiche: fix lookup of transfer at multi
Stefan Eissing [Tue, 18 Jul 2023 15:37:58 +0000 (17:37 +0200)] 
quiche: fix lookup of transfer at multi

- refs #11449 where weirdness in quiche multi connection tranfers was
  observed
- fixes lookup of transfer for a quiche event to take the connection
  into account
- formerly, a transfer with the same stream_id, but on another connection
  could be found

Closes #11462

2 years agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 19 Jul 2023 07:26:46 +0000 (09:26 +0200)] 
RELEASE-NOTES: synced

bump to 8.2.1

2 years agociphers.d: put URL in first column
John Haugabook [Tue, 18 Jul 2023 21:39:08 +0000 (17:39 -0400)] 
ciphers.d: put URL in first column

This makes the URL turn into a link properly when "webified".

Fixes https://github.com/curl/curl-www/issues/270
Closes #11464

2 years agoRELEASE-NOTES: synced curl-8_2_0
Daniel Stenberg [Wed, 19 Jul 2023 06:12:46 +0000 (08:12 +0200)] 
RELEASE-NOTES: synced

8.2.0 release

2 years agoTHANKS-filter: strip out "GitHub"
Daniel Stenberg [Wed, 19 Jul 2023 06:12:46 +0000 (08:12 +0200)] 
THANKS-filter: strip out "GitHub"

2 years agoTHANKS: add contributors from 8.2.0
Daniel Stenberg [Wed, 19 Jul 2023 06:12:46 +0000 (08:12 +0200)] 
THANKS: add contributors from 8.2.0

2 years agoRELEASE-PROCEDURE.md: adjust the release dates
Daniel Stenberg [Tue, 18 Jul 2023 10:06:50 +0000 (12:06 +0200)] 
RELEASE-PROCEDURE.md: adjust the release dates

2 years agoquiche: fix defects found in latest coverity report
Stefan Eissing [Mon, 17 Jul 2023 18:59:16 +0000 (20:59 +0200)] 
quiche: fix defects found in latest coverity report

Closes #11455

2 years agoquiche: avoid NULL deref in debug logging
Daniel Stenberg [Mon, 17 Jul 2023 18:51:17 +0000 (20:51 +0200)] 
quiche: avoid NULL deref in debug logging

Coverity reported "Dereference after null check"

If stream is NULL and the function exits, the logging must not deref it.

Closes #11454

2 years agohttp2: treat initial SETTINGS as a WINDOW_UPDATE
Stefan Eissing [Mon, 17 Jul 2023 10:38:28 +0000 (12:38 +0200)] 
http2: treat initial SETTINGS as a WINDOW_UPDATE

- refs #11426 where spurious stalls on large POST requests
  are reported
- the issue seems to involve the following
  * first stream on connection adds up to 64KB of POST
    data, which is the max default HTTP/2 stream window size
    transfer is set to HOLD
  * initial SETTINGS from server arrive, enlarging the stream
    window. But no WINDOW_UPDATE is received.
  * curl stalls
- the fix un-HOLDs a stream on receiving SETTINGS, not
  relying on a WINDOW_UPDATE from lazy servers

Closes #11450

2 years agongtcp2: assigning timeout, but value is overwritten before used
Daniel Stenberg [Mon, 17 Jul 2023 18:23:22 +0000 (20:23 +0200)] 
ngtcp2: assigning timeout, but value is overwritten before used

Reported by Coverity

Closes #11453

2 years agokrb5: add typecast to please Coverity
Daniel Stenberg [Mon, 17 Jul 2023 18:10:38 +0000 (20:10 +0200)] 
krb5: add typecast to please Coverity

2 years agowolfssl: support setting CA certificates as blob
Derzsi Dániel [Sun, 16 Jul 2023 19:09:36 +0000 (22:09 +0300)] 
wolfssl: support setting CA certificates as blob

Closes #11445

2 years agowolfssl: detect when TLS 1.2 support is not built into wolfssl
Derzsi Dániel [Sun, 16 Jul 2023 10:20:23 +0000 (10:20 +0000)] 
wolfssl: detect when TLS 1.2 support is not built into wolfssl

Closes #11444

2 years agoCI: bump nghttp2 from 1.55.0 to 1.55.1
Graham Campbell [Sat, 15 Jul 2023 18:47:37 +0000 (19:47 +0100)] 
CI: bump nghttp2 from 1.55.0 to 1.55.1

Closes #11442

2 years agocurl: return error when asked to use an unsupported HTTP version
Daniel Stenberg [Sat, 15 Jul 2023 12:00:09 +0000 (14:00 +0200)] 
curl: return error when asked to use an unsupported HTTP version

When one of the following options are used but the libcurl in use does
not support it:

--http2
--http2-prior-knowledge
--proxy-http2

Closes #11440

2 years agocf-socket: don't bypass fclosesocket callback if cancelled before connect
Chris Paulson-Ellis [Fri, 14 Jul 2023 12:15:56 +0000 (13:15 +0100)] 
cf-socket: don't bypass fclosesocket callback if cancelled before connect

After upgrading to 8.1.2 from 7.84.0, I found that sockets were being
closed without calling the fclosesocket callback if a request was
cancelled after the associated socket was created, but before the socket
was connected. This lead to an imbalance of fopensocket & fclosesocket
callbacks, causing problems with a custom event loop integration using
the multi-API.

This was caused by cf_socket_close() calling sclose() directly instead
of calling socket_close() if the socket was not active. For regular TCP
client connections, the socket is activated by cf_socket_active(), which
is only called when the socket completes the connect.

As far as I can tell, this issue has existed since 7.88.0. That is,
since the code in question was introduced by:
    commit 71b7e0161032927cdfb4e75ea40f65b8898b3956
    Author: Stefan Eissing <stefan@eissing.org>
    Date:   Fri Dec 30 09:14:55 2022 +0100

        lib: connect/h2/h3 refactor

Closes #11439

2 years agotool_parsecfg: accept line lengths up to 10M
Daniel Stenberg [Thu, 13 Jul 2023 06:49:20 +0000 (08:49 +0200)] 
tool_parsecfg: accept line lengths up to 10M

Bumped from 100K set in 47dd957daff9

Reported-by: Antoine du Hamel
Fixes #11431
Closes #11435

2 years agoCI: brew fix for openssl in default path
Stefan Eissing [Thu, 13 Jul 2023 09:40:09 +0000 (11:40 +0200)] 
CI: brew fix for openssl in default path

If brew install/update links openssl into /usr/local, it will be found
before anything we add with `-isystem path` to CPP/LDLFAGS.  Get rid of
that by unlinking the keg.

Fixes #11413
Closes #11436

2 years agoRELEASE-NOTES: synced
Daniel Stenberg [Thu, 13 Jul 2023 12:58:59 +0000 (14:58 +0200)] 
RELEASE-NOTES: synced

2 years agosectransp: fix EOF handling
Ondřej Koláček [Wed, 12 Jul 2023 03:59:18 +0000 (05:59 +0200)] 
sectransp: fix EOF handling

Regression since the large refactor from 2022

Closes #11427

2 years agochecksrc: quote the file name to work with "funny" letters
Daniel Stenberg [Thu, 13 Jul 2023 11:50:31 +0000 (13:50 +0200)] 
checksrc: quote the file name to work with "funny" letters

Closes #11437

2 years agoHTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0
Karthikdasari0423 [Thu, 13 Jul 2023 05:14:03 +0000 (10:44 +0530)] 
HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0

Follow-up to e0093b4b732f6

Closes #11433

2 years agoCURLOPT_MIMEPOST.3: clarify what setting to NULL means
Daniel Stenberg [Wed, 12 Jul 2023 12:55:10 +0000 (14:55 +0200)] 
CURLOPT_MIMEPOST.3: clarify what setting to NULL means

Follow-up to e08382a208d4e480

Closes #11430

2 years agongtcp2: build with 0.17.0 and nghttp3 0.13.0
Tatsuhiro Tsujikawa [Wed, 12 Jul 2023 09:26:28 +0000 (18:26 +0900)] 
ngtcp2: build with 0.17.0 and nghttp3 0.13.0

- ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls.

Closes #11428

2 years agoCI: Bump ngtcp2, nghttp3, and nghttp2
Tatsuhiro Tsujikawa [Wed, 12 Jul 2023 09:26:02 +0000 (18:26 +0900)] 
CI: Bump ngtcp2, nghttp3, and nghttp2

Closes #11428

2 years agoexample/maxconnects: set maxconnect example
James Fuller [Mon, 19 Jun 2023 09:06:57 +0000 (11:06 +0200)] 
example/maxconnects: set maxconnect example

Closes #11343

2 years agohttp2: send HEADER & DATA together if possible
Pontakorn Prasertsuk [Tue, 11 Jul 2023 08:00:29 +0000 (16:00 +0800)] 
http2: send HEADER & DATA together if possible

Closes #11420

2 years agoCI: use wolfSSL 5.6.3 in builds
Daniel Stenberg [Tue, 11 Jul 2023 15:20:31 +0000 (17:20 +0200)] 
CI: use wolfSSL 5.6.3 in builds

No using master anymore

Closes #11424

2 years agofopen: optimize
SaltyMilk [Mon, 10 Jul 2023 19:43:28 +0000 (21:43 +0200)] 
fopen: optimize

Closes #11419

2 years agocmake: make use of snprintf
Daniel Stenberg [Tue, 11 Jul 2023 14:58:58 +0000 (16:58 +0200)] 
cmake: make use of snprintf

Follow-up to 935b1bd4544a23a91d68

Closes #11423

2 years agomacOS: fix taget detection
Stefan Eissing [Mon, 10 Jul 2023 07:39:19 +0000 (09:39 +0200)] 
macOS: fix taget detection

- TARGET_OS_OSX is not always defined on macOS
- this leads to missing symbol Curl_macos_init()
- TargetConditionals.h seems to define these only when
  dynamic targets are enabled (somewhere?)
- this PR fixes that on my macOS 13.4.1
- I have no clue why CI builds worked without it

Follow-up to c7308592fb8ba213fc2c1
Closes #11417

2 years agohostip.c: Move macOS-specific calls into global init call
Stan Hu [Mon, 5 Jun 2023 17:05:48 +0000 (10:05 -0700)] 
hostip.c: Move macOS-specific calls into global init call

https://github.com/curl/curl/pull/7121 introduced a macOS system call
to `SCDynamicStoreCopyProxies`, which is invoked every time an IP
address needs to be resolved.

However, this system call is not thread-safe, and macOS will kill the
process if the system call is run first in a fork. To make it possible
for the parent process to call this once and prevent the crash, only
invoke this system call in the global initialization routine.

In addition, this change is beneficial because it:

1. Avoids extra macOS system calls for every IP lookup.
2. Consolidates macOS-specific initialization in a separate file.

Fixes #11252
Closes #11254

2 years agodocs: use a space after RFC when spelling out RFC numbers
Daniel Stenberg [Sun, 25 Jun 2023 08:50:17 +0000 (10:50 +0200)] 
docs: use a space after RFC when spelling out RFC numbers

Closes #11382

2 years agoimap-append.c: update to make it more likely to work
Margu [Fri, 30 Jun 2023 06:32:13 +0000 (08:32 +0200)] 
imap-append.c: update to make it more likely to work

Fixes #10300
Closes #11397

2 years agotool_writeout_json: fix encoding of control characters
Emanuele Torre [Sun, 9 Jul 2023 14:45:39 +0000 (16:45 +0200)] 
tool_writeout_json: fix encoding of control characters

Control characters without a special escape sequence e.g. %00 or %06
were being encoded as "u0006" instead of "\u0006".

Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858
Closes #11414