• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1                                  _   _ ____  _
2                              ___| | | |  _ \| |
3                             / __| | | | |_) | |
4                            | (__| |_| |  _ <| |___
5                             \___|\___/|_| \_\_____|
6
7                                  Changelog
8
9Version 8.4.0 (11 Oct 2023)
10
11Daniel Stenberg (11 Oct 2023)
12
13- RELEASE-NOTES: synced
14
15- THANKS: add contributors from 8.4.0
16
17Jay Satiro (11 Oct 2023)
18
19- socks: return error if hostname too long for remote resolve
20
21  Prior to this change the state machine attempted to change the remote
22  resolve to a local resolve if the hostname was longer than 255
23  characters. Unfortunately that did not work as intended and caused a
24  security issue.
25
26  Bug: https://curl.se/docs/CVE-2023-38545.html
27
28Stefan Eissing (10 Oct 2023)
29
30- CI: remove slowed-network tests
31
32  - remove these tests as they are currently not reliable in our CI
33    setups.
34
35  curl handles the test cases, but CI sometimes fails on these due to
36  additional conditions. Rather than mix them in, an additional CI job
37  will be added in the future that is specific to them.
38
39  Closes https://github.com/curl/curl/pull/12075
40
41Jay Satiro (10 Oct 2023)
42
43- libcurl-env-dbg.3: move debug variables from libcurl-env.3
44
45  - Move documentation of libcurl environment variables used only in debug
46    builds from libcurl-env into a separate document libcurl-env-dbg.
47
48  - Document more debug environment variables.
49
50  Previously undocumented or missing a description:
51
52  CURL_ALTSVC_HTTP, CURL_DBG_SOCK_WBLOCK, CURL_DBG_SOCK_WPARTIAL,
53  CURL_DBG_QUIC_WBLOCK, CURL_DEBUG, CURL_DEBUG_SIZE, CURL_GETHOSTNAME,
54  CURL_HSTS_HTTP, CURL_FORCETIME, CURL_SMALLREQSEND, CURL_SMALLSENDS,
55  CURL_TIME.
56
57  Closes https://github.com/curl/curl/pull/11811
58
59Dan Fandrich (9 Oct 2023)
60
61- test670: increase the test timeout
62
63  This should make it more immune to loaded servers.
64
65  Ref: #11328
66
67Stefan Eissing (9 Oct 2023)
68
69- MQTT: improve receive of ACKs
70
71  - add `mq->recvbuf` to provide buffering of incomplete
72    ACK responses
73  - continue ACK reading until sufficient bytes available
74  - fixes test failures on low network receives
75
76  Closes #12071
77
78Viktor Szakats (9 Oct 2023)
79
80- quic: fix BoringSSL build
81
82  Add guard around `SSL_CTX_set_ciphersuites()` use.
83
84  Bug: https://github.com/curl/curl/pull/12065#issuecomment-1752171885
85
86  Follow-up to aa9a6a177017e4b74d33cdf85a3594900f4a7f81
87
88  Co-authored-by: Jay Satiro
89  Reviewed-by: Daniel Stenberg
90  Closes #12067
91
92Stefan Eissing (9 Oct 2023)
93
94- test1540: improve reliability
95
96  - print that bytes have been received on pausing, but not how many
97
98  Closes #12069
99
100- test2302: improve reliability
101
102  - make result print collected write data, unless
103    change in meta flags is detected
104  - will show same result even when data arrives via
105    several writecb invocations
106
107  Closes #12068
108
109Daniel Stenberg (9 Oct 2023)
110
111- curl_easy_pause: set "in callback" true on exit if true
112
113  Because it might have called another callback in the mean time that then
114  set the bit FALSE on exit.
115
116  Reported-by: Jay Satiro
117  Fixes #12059
118  Closes #12061
119
120Viktor Szakats (8 Oct 2023)
121
122- h3: add support for ngtcp2 with AWS-LC builds
123
124  ```
125  curl 8.4.0-DEV (x86_64-apple-darwin) libcurl/8.4.0-DEV (SecureTransport) AWS-
126  LC/1.15.0 nghttp2/1.56.0 ngtcp2/0.19.1 nghttp3/0.15.0
127  Release-Date: [unreleased]
128  Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps
129   mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss
130  Features: alt-svc AsynchDNS HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile Multi
131  SSL NTLM SSL threadsafe UnixSockets
132  ```
133
134  Also delete an obsolete GnuTLS TODO and update the header comment in
135  `FindNGTCP2.cmake`.
136
137  Reviewed-by: Daniel Stenberg
138  Closes #12066
139
140- build: do not publish `HAVE_BORINGSSL`, `HAVE_AWSLC` macros
141
142  Syncing this up with CMake.
143
144  Source code uses the built-in `OPENSSL_IS_AWSLC` and
145  `OPENSSL_IS_BORINSSL` macros to detect BoringSSL and AWS-LC. No help is
146  necessary from the build tools.
147
148  The one use of `HAVE_BORINGSSL` in the source turned out to be no longer
149  necessary for warning-free BoringSSL + Schannel builds. Ref: #1610 #2634
150
151  autotools detects this anyway for display purposes.
152  CMake detects this to decide whether to use the BoringSSL-specific
153  crypto lib with ngtcp2. It detects AWS-LC, but doesn't use the detection
154  result just yet (planned in #12066).
155
156  Ref: #11964
157
158  Reviewed-by: Daniel Stenberg
159  Reviewed-by: Jay Satiro
160  Closes #12065
161
162Marc Hoersken (8 Oct 2023)
163
164- CI: move distcheck job from Azure Pipelines to GitHub Actions
165
166  This will allow for more trigger excludes within Azure Pipelines.
167
168  Also fixes seemingly broken check with scripts/installcheck.sh.
169  Ref: 190374c74ec4e5247d9066544c86e8d095e1d7b5
170
171  Assisted-by: Philip Heiduck
172  Closes #9532
173
174Daniel Stenberg (8 Oct 2023)
175
176- url: fall back to http/https proxy env-variable if ws/wss not set
177
178  Reported-by: Craig Andrews
179  Fixes #12031
180  Closes #12058
181
182Stefan Eissing (8 Oct 2023)
183
184- cf-socket: simulate slow/blocked receives in debug
185
186  add 2 env variables for non-UDP sockets:
187  1. CURL_DBG_SOCK_RBLOCK: percentage of receive calls that randomly
188     should return EAGAIN
189  2. CURL_DBG_SOCK_RMAX: max amount of bytes read from socket
190
191  Closes #12035
192
193- http2: refused stream handling for retry
194
195  - answer HTTP/2 streams refused via a GOAWAY from the server to
196    respond with CURLE_RECV_ERROR in order to trigger a retry
197    on another connection
198
199  Reported-by: black-desk on github
200  Ref #11859
201  Closes #12054
202
203Jay Satiro (8 Oct 2023)
204
205- CURLOPT_DEBUGFUNCTION.3: warn about internal handles
206
207  - Warn that the user's debug callback may be called with the handle
208    parameter set to an internal handle.
209
210  Without this warning the user may assume that the only handles their
211  debug callback receives are the easy handles on which they set
212  CURLOPT_DEBUGFUNCTION.
213
214  This is a follow-up to f8cee8cc which changed DoH handles to inherit
215  the debug callback function set in the user's easy handle. As a result
216  those handles are now passed to the user's debug callback function.
217
218  Closes https://github.com/curl/curl/pull/12034
219
220- url: fix typo
221
222Daniel Stenberg (8 Oct 2023)
223
224- test458: verify --expand-output, expanding a file name accepting option
225
226  Verifies the fix in #12055 (commit f2c8086ff15e6e995e1)
227
228- tool_getparam: accept variable expansion on file names too
229
230  Reported-by: PBudmark on github
231  Fixes #12048
232  Closes #12055
233
234- RELEASE-NOTES: synced
235
236- multi: do CURLM_CALL_MULTI_PERFORM at two more places
237
238  ... when it does a state transition but there is no particular socket or
239  timer activity. This was made apparent when commit b5bb84c removed a
240  superfluous timer expiry.
241
242  Reported-by: Dan Fandrich.
243  Fixes #12033
244  Closes #12056
245
246Viktor Szakats (7 Oct 2023)
247
248- GHA/linux: mbedtls 3.5.0 + minor dep bumps
249
250  Closes #12057
251
252Dan Fandrich (7 Oct 2023)
253
254- CI: bump OpenLDAP package version on FreeBSD
255
256  The old one is no longer available.
257
258Marc Hoersken (7 Oct 2023)
259
260- docs/libcurl/opts/Makefile.inc: add missing manpage files
261
262  Detected with #9532
263
264Dan Fandrich (7 Oct 2023)
265
266- tests: fix a race condition in ftp server disconnect
267
268  If a client disconnected and reconnected quickly, before the ftp server
269  had a chance to respond, the protocol message/ack (ping/pong) sequence
270  got out of sync, causing messages sent to the old client to be delivered
271  to the new.  A disconnect must now be acknowledged and intermediate
272  requests thrown out until it is, which ensures that such synchronization
273  problems can't occur. This problem could affect ftp, pop3, imap and smtp
274  tests.
275
276  Fixes #12002
277  Closes #12049
278
279Viktor Szakats (7 Oct 2023)
280
281- appveyor: bump mingw-w64 job to gcc 13 (was: 8)
282
283  This sets gcc 6, 7, 9, 13 in our test mix (was: 6, 7, 8, 9).
284  Adding a modern gcc version to the tests.
285
286  (The gcc 8 job used to take around 50 minutes. The new image with gcc 13
287  finished in 32, 35, 34 minutes in the 3 test runs so far.)
288
289  It also adds a modern CMake version and OS env to our mingw-w64 builds.
290
291  Closes #12051
292
293David Benjamin (6 Oct 2023)
294
295- openssl: use X509_ALGOR_get0 instead of reaching into X509_ALGOR
296
297  While the struct is still public in OpenSSL, there is a (somewhat
298  inconvenient) accessor. Use it to remain compatible if it becomes opaque
299  in the future.
300
301  Closes #12038
302
303Daniel Stenberg (6 Oct 2023)
304
305- curl_easy_pause.3: mention it works within callbacks
306
307  Reported-by: Maxim Dzhura
308  Bug: https://curl.se/mail/lib-2023-10/0010.html
309  Closes #12046
310
311- curl_easy_pause.3: mention h2/h3 buffering
312
313  Asked-by: Maxim Dzhura
314  Ref: https://curl.se/mail/lib-2023-10/0011.html
315
316  Closes #12045
317
318Viktor Szakats (6 Oct 2023)
319
320- cmake: re-add missed C89 headers for specific detections
321
322  We removed C89 `setjmp.h` and `signal.h` detections and excluded them
323  from the global header list we use when detecting functions [1]. Then
324  missed to re-add these headers to the specific functions which need
325  them to be detected [2]. Fix this omission in this patch.
326
327  [1] Follow-up to 3795fcde995d96db641ddbcc8a04f9f0f03bef9f #11951
328  [2] Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940
329
330  Closes #12043
331
332Daniel Stenberg (6 Oct 2023)
333
334- multi: set CURLM_CALL_MULTI_PERFORM after switch to DOING_MORE
335
336  Since there is nothing to wait for there. Avoids the test 1233 hang
337  reported in #12033.
338
339  Reported-by: Dan Fandrich
340  Closes #12042
341
342Dan Fandrich (5 Oct 2023)
343
344- test1903: actually verify the cookies after the test
345
346  The test otherwise could do just about anything (except leak memory in
347  debug mode) and its bad behaviour wouldn't be detected. Now, check the
348  resulting cookie file to ensure the cookies are still there.
349
350  Closes #12041
351
352- test: add missing <feature>s
353
354  The tests will otherwise fail if curl has them disabled.
355
356- test1906: set a lower timeout since it's hit on Windows
357
358  msys2 builds actually hit the connect timeout in normal operation, so
359  lower the timeout from 5 minutes to 5 seconds to reduce test time.
360
361  Ref: #11328
362  Closes #12036
363
364Daniel Stenberg (5 Oct 2023)
365
366- RELEASE-NOTES: synced
367
368Jay Satiro (5 Oct 2023)
369
370- idn: fix WinIDN null ptr deref on bad host
371
372  - Return CURLE_URL_MALFORMAT if IDN hostname cannot be converted from
373    UTF-8 to UTF-16.
374
375  Prior to this change a failed conversion erroneously returned CURLE_OK
376  which meant 'decoded' pointer (what would normally point to the
377  punycode) would not be written to, remain NULL and be dereferenced
378  causing an access violation.
379
380  Closes https://github.com/curl/curl/pull/11983
381
382Dan Fandrich (4 Oct 2023)
383
384- tests: close the shell used to start sshd
385
386  This shell isn't needed once sshd starts, so use "exec" so it doesn't
387  stick around.
388
389  Closes #12032
390
391Daniel Stenberg (4 Oct 2023)
392
393- base64: also build for curl
394
395  Since the tool itself now uses the base64 code using the curlx way, it
396  needs to build also when the tool needs it. Starting now, the tool build
397  defines BULDING_CURL to allow lib-side code to use it.
398
399  Follow-up to 2e160c9c6525
400
401  Closes #12010
402
403Eduard Strehlau (4 Oct 2023)
404
405- tests: Fix zombie processes left behind by FTP tests.
406
407  ftpserver.pl correctly cleans up spawned server processes,
408  but forgets to wait for the shell used to spawn them.
409  This is barely noticeable during a normal testrun,
410  but causes process exhaustion and test failure
411  during a complete torture run of the FTP tests.
412
413  Fixes #12018
414  Closes #12020
415
416Dan Fandrich (4 Oct 2023)
417
418- github/labeler: improve labeler matches
419
420- test574: add a timeout to the test
421
422  This one hangs occasionally, so this will speed up a test run and allow
423  logs to be seen when it does.
424
425  Closes #12025
426
427- tests: propagate errors in libtests
428
429  Use the test macros to automatically propagate some errors, and check
430  and log others while running the tests. This can help in debugging
431  exactly why a test has failed.
432
433- tests: set --expect100-timeout to improve test reliability
434
435  On an overloaded server, the default 1 second timeout can go by without
436  the test server having a chance to respond with the expected headers,
437  causing tests to fail. Increase the 1 second timeout to 99 seconds so
438  this failure mode is no longer a problem on test 1129. Some other tests
439  already set a high value, but make them consistently 99 seconds so if
440  something goes wrong the test is stalled for less time.
441
442  Ref: #11328
443
444- CI: ignore the "flaky" and "timing-dependent" test results in CMake
445
446  This was already done for automake builds but CMake builds were missed.
447  Test 1086 actually causes the test harness to crash with:
448
449  Warning: unable to close filehandle DWRITE properly: Broken pipe at C:/projec
450  ts/curl/tests/ftpserver.pl line 527
451
452  Rather than fix it now, this change leaves test 1086 entirely skipped on
453  those builds that show this problem.
454
455  Follow-up to 589dca761
456
457  Ref: #11865
458
459Viktor Szakats (4 Oct 2023)
460
461- cmake: improve OpenLDAP builds
462
463  - cmake: detect OpenLDAP based on function `ldap_init_fd`.
464    autotools does this. autotools also publishes this detection result
465    in `HAVE_LDAP_INIT_FD`. We don't mimic that with CMake as the source
466    doesn't use this value. (it might need to be remove-listed in
467    `scripts/cmp-config.pl` for future OpenLDAP test builds.)
468    This also deletes existing self-declaration method via the
469    CMake-specific `CURL_USE_OPENLDAP` configuration.
470
471  - cmake: define `LDAP_DEPRECATED=1` for OpenLDAP.
472    Like autotools does. This fixes a long list of these warnings:
473    ```
474    /usr/local/opt/openldap/include/ldap.h:1049:5: warning: 'LDAP_DEPRECATED' i
475  s not defined, evaluates to 0 [-Wundef]
476    ```
477
478  - cmake: delete LDAP TODO comment no longer relevant.
479
480  Also:
481
482  - autotools: replace domain name `dummy` with `0.0.0.0` in LDAP feature
483    detection functions.
484
485  Ref: #11964 (effort to sync cmake detections with autotools)
486
487  Closes #12024
488
489- cmake: fix unity builds for more build combinations
490
491  By using unique static function/variable names in source files
492  implementing these interfaces.
493
494  - OpenLDAP combined with any SSH backend.
495
496  - MultiSSL with mbedTLS, OpenSSL, wolfSSL, SecureTransport.
497
498  Closes #12027
499
500Daniel Stenberg (4 Oct 2023)
501
502- tests: remove leading spaces from some tags
503
504  The threee tags `<name>`, `</name>` and `<command>` were frequently used
505  with a leading space that this removes. The reason this habbit is so
506  widespread in testcases is probably that they have been copy and pasted.
507
508  Hence, fixing them all now might curb this practice from now on.
509
510  Closes #12028
511
512Viktor Szakats (4 Oct 2023)
513
514- GHA: bump actions/checkout
515
516  Follow-up to 2e0fa50fc16b9339f51e0a7bfff0352829323acb #11964
517  Follow-up to c39585d9b7ef3cbfc1380812dec60e7b275b6af3 #12000
518
519  Closes #12023
520
521- spelling: fix codespell 2.2.6 typos
522
523  Closes #12019
524
525Daniel Stenberg (3 Oct 2023)
526
527- GHA: add workflow to compare configure vs cmake outputs
528
529  Uses scripts/cmp-config.pl two compare two curl_config.h files,
530  presumbly generated with configure and cmake. It displays the
531  differences and filters out a lot of known lines we ignore.
532
533  The script also shows the matches that were *not* used. Possibly
534  subjects for removal.
535
536  Closes #11964
537
538- appveyor: enable test 571
539
540  Follow-up from 8a940fd55c175f7 / #12013
541
542  Closes #12017
543
544Viktor Szakats (3 Oct 2023)
545
546- build: alpha-sort source files for lib and src
547
548  Closes #12014
549
550- cmake: delete old `HAVE_LDAP_URL_PARSE` logic
551
552  Left there by accident after adding proper detection for this.
553
554  Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006
555
556  Ref: #11964 (effort to sync cmake detections with autotools)
557
558  Closes #12015
559
560Stefan Eissing (3 Oct 2023)
561
562- tests: increase lib571 timeout from 3s to 30s
563
564  - 3s is too short for our CI, making this test fail occasionally
565  - test usually experiences no delay run locally, so 30s wont hurt
566
567  Closes #12013
568
569Viktor Szakats (3 Oct 2023)
570
571- cmake: fix unity with Windows Unicode + TrackMemory
572
573  Found the root cause of the startup crash in unity builds with Unicode
574  and TrackMemory enabled at the same time.
575
576  We must make sure that the `memdebug.h` header doesn't apply to
577  `lib/curl_multibyte.c` (as even noted in a comment there.) In unity
578  builds all headers apply to all sources, including `curl_multibyte.c`.
579  This probably resulted in an infinite loop on startup.
580
581  Exclude this source from unity compilation with TrackMemory enabled,
582  in both libcurl and curl tool. Enable unity mode for a debug Unicode
583  CI job to keep it tested. Also delete the earlier workaround that
584  fully disabled unity for affected builds.
585
586  Follow-up to d82b080f6374433ce7c98241329189ad2d3976f8 #12005
587  Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095
588
589  Closes #11928
590
591- cmake: disable unity mode with Windows Unicode + TrackMemory
592
593  "TrackMemory" is `ENABLE_DEBUG=ON` (aka `ENABLE_CURLDEBUG=ON`,
594  aka `-DCURLDEBUG`).
595
596  There is an issue with memory tracking and Unicode when built in "unity"
597  mode, which results in the curl tool crashing right on startup, even
598  without any command-line option. Interestingly this doesn't happen under
599  WINE (at least on the system I tested this on), but consistenly happens
600  on real Windows machines. Crash is 0xC0000374 heap corruption. Both
601  shared and static curl executables are affected.
602
603  This limitation probably won't hit too many people, but it remains
604  a TODO to find and fix the root cause and drop this workaround.
605
606  Example builds and runs:
607  https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/17cptxhtpubd
608  7iwj#L313 (static)
609  https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/76e1ge758tby
610  qu9c#L317 (shared)
611
612  Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095
613
614  Ref: #11928
615  Closes #12005
616
617- cmake: tidy-up `NOT_NEED_LBER_H` detection
618
619  Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006
620
621- appveyor: rewrite batch in PowerShell + CI improvements
622
623  1. Rewrite in PowerShell:
624
625  - rewrite MS-DOS batch build script in PowerShell.
626  - move some bash operations into native PowerShell.
627  - fixups for PowerShell insisting on failure when a command outputs
628    something to stderr.
629  - fix to actually run `curl -V` after every build.
630    (and exclude ARM64 builds.)
631  - also say why we skipped `curl -V` if we had to skip.
632  - fix CMake warnings about unused configuration variables, by adapting
633    these dynamically for build cases.
634  - dedupe OpenSSL path into a variable.
635  - disable `test1451` failing with a warning anyway due to missing python
636    impacket. (after trying and failing to install impacket)
637    PowerShell promotes these warnings to errors by PowerShell. We can also
638    suppress they wholesale if they start causing issues in the future,
639    like we already to with `autoreconf` and `./configure`.
640
641  PowerShell is better than MS-DOS batches, so the hope is this makes it
642  easier to extend and maintain the AppVeyor build logic. POSIX/bash isn't
643  supported inline by AppVeyor on Windows build machines, but we are okay
644  to keep it in an external script, so it's also an option.
645
646  2. CI improvements:
647
648  - enable tests for a "unity" build job.
649  - speed-up CI initialization by using shallow clones of the curl repo.
650  - speed-up CMake MSVC jobs with `TrackFileAccess=false`.
651  - enable parallelism in `VisualStudioSolution` builds.
652  - display CMake version before builds.
653  - always show the CPU in job names.
654  - tell which jobs are build-only in job names.
655  - move `TESTING:` value next to `DISABLED_TESTS:` in two jobs.
656  - add `config.log` (autotools) to dumped logs (need to enable manually).
657
658  3. Style:
659
660  - use single-quotes in YAML like we do in other CI YAML files.
661    It also allows to drop quoting characters and lighter to write/read.
662    (keep double quotes for PowerShell strings needing expansion.)
663
664  Closes #11999
665
666- cmake: fix `HAVE_LDAP_SSL`, `HAVE_LDAP_URL_PARSE` on non-Windows
667
668  - set `HAVE_LDAP_URL_PARSE` if `ldap_url_parse` function exists.
669    Before this patch we set it based it on the presence of `stricmp`,
670    which correctly enabled it on e.g. Windows, but was inaccurate for
671    other platforms.
672
673  - always set `HAVE_LDAP_SSL` if an LDAP backend is detected and
674    LDAPS is not explicitly disabled. This mimics autotools behaviour.
675    Previously we set it only for Windows LDAP. After this fix, LDAPS is
676    correctly enabled in default macOS builds.
677
678  - enable LDAP[S] for a CMake macOS CI job. Target OS X 10.9 (Mavericks)
679    to avoid deprecation warnings for LDAP API.
680
681  - always detect `HAVE_LDAP_SSL_H`, even with LDAPS explicitly disabled.
682    This doesn't make much sense, but let's do it to sync behaviour with
683    autotools.
684
685  - fix benign typo in variable name.
686
687  Ref: #11964 (effort to sync cmake detections with autotools)
688
689  Closes #12006
690
691- autotools: restore `HAVE_IOCTL_*` detections
692
693  This restores `CURL_CHECK_FUNC_IOCTL` detection. I deleted it in
694  4d73854462f30948acab12984b611e9e33ee41e6 and
695  c3456652a0c72d1845d08df9769667db7e159949 (2022-08), because the
696  `HAVE_IOCTL` result it generated was unused in the source. But,
697  I did miss the fact that this had two dependent checks:
698  `CURL_CHECK_FUNC_IOCTL_FIONBIO`,
699  `CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR` that we do actually need:
700  `HAVE_IOCTL_FIONBIO`, `HAVE_IOCTL_SIOCGIFADDR`.
701
702  Regression from 4d73854462f30948acab12984b611e9e33ee41e6
703
704  Ref: #11964 (effort to sync cmake detections with autotools)
705
706  Closes #12008
707
708Daniel Stenberg (2 Oct 2023)
709
710- RELEASE-PROCEDURE.md: updated coming release dates
711
712- RELEASE-NOTES: synced
713
714Viktor Szakats (1 Oct 2023)
715
716- cmake: pre-cache `HAVE_POLL_FINE` on Windows
717
718  Windows doesn't support `poll()`, so we can safely skip checking for
719  fine poll.
720
721  Closes #12003
722
723- gha: bump actions to latest versions
724
725  - actions@checkout@v4 (from v3 and v2)
726
727  - fsfe/reuse-action@v2 (from v1)
728
729  Closes #12000
730
731Stefan Eissing (30 Sep 2023)
732
733- h2: testcase and fix for pausing h2 streams
734
735  - refs #11982 where it was noted that paused transfers may
736    close successfully without delivering the complete data
737  - made sample poc into tests/http/client/h2-pausing.c and
738    added test_02_27 to reproduce
739
740  Closes #11989
741  Fixes #11982
742  Reported-by: Harry Sintonen
743
744Viktor Szakats (30 Sep 2023)
745
746- cmake: validate `CURL_DEFAULT_SSL_BACKEND` config value
747
748  Before this patch CMake builds accepted any value and it was used at
749  runtime as-is. This patch make sure that the selected default backend
750  is also enabled in the build. It also enforces a full lowercase value.
751
752  This improves reproducibility and brings CMake in sync with autotools
753  which already worked like described above.
754
755  Follow-up to 26c7feb8b9d51a57fab3325571b4bbfa03b11af0 #11774
756
757  Closes #11998
758
759- autotools: adjust `CURL_CA_PATH` value to CMake
760
761  autotools was using the same value as CMake, but with an ending
762  slash. Delete the ending slash to match configurations.
763
764  Ref: #11964 (effort to sync cmake detections with autotools)
765
766  Closes #11997
767
768- cmake: detect `sys/wait.h` and `netinet/udp.h`
769
770  Ref: #11964 (effort to sync cmake detections with autotools)
771
772  Closes #11996
773
774Daniel Stenberg (30 Sep 2023)
775
776- lib: provide and use Curl_hexencode
777
778  Generates a lower case ASCII hex output from a binary input.
779
780  Closes #11990
781
782- configure: check for the capath by default
783
784  ... if the chosen TLS backend supports it: OpenSSL, GnuTLS, mbedTLS or wolfSS
785  L
786
787  cmake: synced
788
789  Assisted-by: Viktor Szakats
790  Closes #11987
791
792- wolfssl: ignore errors in CA path
793
794  The default wolfSSL_CTX_load_verify_locations() function is quite picky
795  with the certificates it loads and will for example return error if just
796  one of the certs has expired.
797
798  With the *_ex() function and its WOLFSSL_LOAD_FLAG_IGNORE_ERR flag, it
799  behaves more similar to what OpenSSL does by default.
800
801  Even the set of default certs on my Debian unstable has several expired
802  ones.
803
804  Assisted-by: Juliusz Sosinowicz
805  Assisted-by: Michael Osipov
806
807  Closes #11987
808
809- create-dirs.d: clarify it also uses --output-dirs
810
811  Reported-by: Robert Simpson
812  Fixes #11991
813  Closes #11995
814
815Viktor Szakats (30 Sep 2023)
816
817- appveyor: fix yamlint issues, indent
818
819  Also:
820  - use double quotes in all batch if statements.
821
822  Closes #11994
823
824- cmake: detect `HAVE_CLOCK_GETTIME_MONOTONIC_RAW`
825
826  Based on existing autotools logic.
827
828  Ref: #11964 (effort to sync cmake detections with autotools)
829
830  Closes #11981
831
832- cmake: detect `HAVE_GETADDRINFO_THREADSAFE`
833
834  Based on existing autotools logic.
835
836  autotools checks for old versions of the allowlisted target OSes and
837  disables this feature when seeing them. In CMake we assume we're running
838  on newer systems and enable regardless of OS version.
839
840  autotools always runs all 3 probes for non-fast-tracked systems and
841  enables this feature if any one of them was successful. To save
842  configuration time,  CMake stops at the first successful check.
843
844  OpenBSD is not fast-tracked and then gets blocklisted as a generic BSD
845  system. I haven't double-checked if this is correct, but looks odd.
846
847  Ref: #11964 (effort to sync cmake detections with autotools)
848
849  Closes #11979
850
851- cmake: fix `HAVE_WRITABLE_ARGV` detection
852
853  Move detection before the creation of detection results in
854  `curl_config.h`.
855
856  Ref: #11964 (effort to sync cmake detections with autotools)
857
858  Closes #11978
859
860- appveyor: minor improvements
861
862  - run `curl -V` after builds to see if they run and with what features.
863    Except for one job where a CRT DLL is missing. And ARM64 which should
864    fail, but is silently not launched instead.
865
866  - copy libcurl DLL next to curl tool and tests binaries in shared mode.
867    This makes it possible to run the tests. (We don't run tests after
868    these builds yet.)
869
870  - list the DLLs and EXEs present after the builds.
871
872  - add `DEBUG` variable for CMake builds to allow disabling it, for
873    testing non-debug builds. (currently enabled for all)
874
875  - add commented lines that dump CMake configuration logs for debugging
876    build/auto-detection issues.
877
878  - add gcc version to jobs where missing.
879
880  - switch a job to the native MSYS2 mingw-w64 toolchain. This adds gcc 9
881    to the build mix.
882
883  - make `SHARED=OFF` and `OPENSSL=OFF` defaults global.
884
885  - delete a duplicate backslash.
886
887  Closes #11976
888
889- configure: replace adhoc domain with `localhost` in tests
890
891  Reviewed-by: Daniel Stenberg
892  Closes #11988
893
894- tidy-up: use more example domains
895
896  Also make use of the example TLD:
897  https://en.wikipedia.org/wiki/.example
898
899  Reviewed-by: Daniel Stenberg
900  Closes #11992
901
902Dan Fandrich (29 Sep 2023)
903
904- runtests: display the test status if tests appear hung
905
906  It sometimes happens that a test hangs during a test run and never
907  returns. The test harness will wait indefinitely for the results and on
908  CI servers the CI job will eventually be killed after an hour or two.
909  At the end of a test run, if results haven't come in within a couple of
910  minutes, display the status of all test runners and what tests they're
911  running to help in debugging the problem.
912
913  This feature is really only kick in with parallel testing enabled, which
914  is fine because without parallel testing it's usually easy to tell what
915  test has hung.
916
917  Closes #11980
918
919- github/labeler: remove workaround for labeler
920
921  This was added due to what seemed to be a bug regarding the sync-labels:
922  config option, but it looks like it wasn't necessary.
923
924  Follow-up to b2b0534e7
925
926Viktor Szakats (29 Sep 2023)
927
928- docs: upgrade an URL to HTTPS in `BINDINGS.md` [ci skip]
929
930Daniel Stenberg (29 Sep 2023)
931
932- docs: replace made up domains with example.com
933
934  in FAQ and MANUAL.md
935
936  - example.com was made for this purpose.
937
938  - reduces the risk that one of those domains suddenly start hosting
939    something nasty and we provide links to them
940
941  Closes #11986
942
943Michael Osipov (29 Sep 2023)
944
945- acinclude.m4: Document proper system truststore on FreeBSD
946
947  The default system truststore on FreeBSD has been /etc/ssl/certs for many
948  years now. It is managed canonically through certctl(8) and contains hashed
949  symlinks for OpenSSL and other TLS providers.
950  The previous ones require security/ca_root_nss which might not be installed o
951  r
952  will not contain any custom CA certificates.
953
954  Closes #11985
955
956Daniel Stenberg (29 Sep 2023)
957
958- FAQ: How do I upgrade curl.exe in Windows?
959
960  This is a growing question, better answer it here to get somewhere to
961  point users to.
962
963  Closes #11984
964
965Viktor Szakats (28 Sep 2023)
966
967- cmake: pre-cache `HAVE_BASENAME` for mingw-w64 and MSVC
968
969  `basename` is present in mingw-w64, missing from MSVC. Pre-cache
970  accordingly to make configure faster.
971
972  Notice that `basename` has a bug so we later disable it even with
973  mingw-w64:
974  https://github.com/curl/curl/blob/781242ffa44a9f9b95b6da5ac5a1bf6372ec6257/li
975  b/curl_setup.h#L820-L825
976
977  Closes #11974
978
979Daniel Stenberg (28 Sep 2023)
980
981- cmake: add missing checks
982
983  - check for arc4random. To make rand.c use it accordingly.
984  - check for fcntl
985  - fix fseek detection
986  - add SIZEOF_CURL_SOCKET_T
987  - fix USE_UNIX_SOCKETS
988  - define HAVE_SNPRINTF to 1
989  - check for fnmatch
990  - check for sched_yield
991  - remove HAVE_GETPPID duplicate from curl_config.h
992  - add HAVE_SENDMSG
993
994  Ref: #11964
995
996  Co-authored-by: Viktor Szakats
997  Closes #11973
998
999- configure: remove unused checks
1000
1001  - for sys/uio.h
1002  - for fork
1003  - for connect
1004
1005  Ref: #11964
1006
1007  Closes #11973
1008
1009- lib: remove TIME_WITH_SYS_TIME
1010
1011  It is not used in any code anywhere.
1012
1013  Ref: #11964
1014  Closes #11975
1015
1016- docs: update curl man page references
1017
1018  Detected by the manpage-syntax update
1019
1020  Closes #11963
1021
1022- manpage-syntax: verify curl man page references
1023
1024  1. References to curl symbols are now checked that they indeed exist as
1025     man pages. This for \f references as well as the names referenced in the
1026     SEE ALSO section.
1027
1028     Allowlist curl.1 since it is not always built in builds
1029
1030  2. References to curl symbols that lack section now causes warning, since tha
1031  t
1032     will prevent them from getting linked properly
1033
1034  3. Check for "bare" references to curl functions and warn, they should be
1035     references
1036
1037  Closes #11963
1038
1039- cmake: add check for suseconds_t
1040
1041  And fix the HAVE_LONGLONG define
1042
1043  Ref: #11964
1044  Closes #11977
1045
1046Viktor Szakats (28 Sep 2023)
1047
1048- tidy-up: whitespace fixes
1049
1050  Closes #11972
1051
1052- cmake: detect TLS-SRP in OpenSSL/wolfSSL/GnuTLS
1053
1054  With new option `CURL_DISABLE_SRP=ON` to force-disable it.
1055  To match existing option and detection logic in autotools.
1056
1057  Also:
1058  - fix detecting GnuTLS.
1059    We assume `nettle` as a GnuTLS dependency.
1060  - add CMake GnuTLS CI job.
1061  - bump AppVeyor CMake OpenSSL MSVC job to OpenSSL 1.1.1 (from 1.0.2)
1062    TLS-SRP fails to detect with 1.0.2 due to an OpenSSL header bug.
1063  - fix compiler warning when building with GnuTLS and disabled TLS-SRP.
1064  - fix comment typos, whitespace.
1065
1066  Ref: #11964
1067
1068  Closes #11967
1069
1070- tool: use our own stderr variable
1071
1072  Earlier this year we changed our own stderr variable to use the standard
1073  name `stderr` (to avoid bugs where someone is using `stderr` instead of
1074  the curl-tool specific variable). This solution needed to override the
1075  standard `stderr` symbol via the preprocessor. This in turn didn't play
1076  well with unity builds and caused curl tool to crash or stay silent due
1077  to an uninitialized stderr. This was a hard to find issue, fixed by
1078  manually breaking out one file from the unity sources.
1079
1080  To avoid two these two tricks, this patch implements a different
1081  solution: Restore using our own local variable for our stderr output and
1082  leave `stderr` as-is. To avoid using `stderr` by mistake, add a
1083  `checksrc` rule (based on logic we already used in lib for `strerror`)
1084  that detects any `stderr` use in `src` and points to using our own
1085  variable instead: `tool_stderr`.
1086
1087  Follow-up to 06133d3e9b8aeb9e9ca0b3370c246bdfbfc8619e
1088  Follow-up to 2f17a9b654121dd1ecf4fc043c6d08a9da3522db
1089
1090  Closes #11958
1091
1092Loïc Yhuel (28 Sep 2023)
1093
1094- connect: only start the happy eyeballs timer when needed
1095
1096  The timeout is only used when there is a second address family, for the
1097  delayed eyeballer.
1098
1099  Closes #11939
1100
1101Daniel Stenberg (28 Sep 2023)
1102
1103- tool_operate: free 'gateway' correctly
1104
1105  Pointed out by Coverity. The fix in 93885cf3a8d4e was incomplete.
1106
1107  Also removed repeated wording in IPFS related error messages.
1108
1109  Closes #11969
1110
1111Stefan Eissing (28 Sep 2023)
1112
1113- lib: move handling of `data->req.writer_stack` into Curl_client_write()
1114
1115  - move definitions from content_encoding.h to sendf.h
1116  - move create/cleanup/add code into sendf.c
1117  - installed content_encoding writers will always be called
1118    on Curl_client_write(CLIENTWRITE_BODY)
1119  - Curl_client_cleanup() frees writers and tempbuffers from
1120    paused transfers, irregardless of protocol
1121
1122  Closes #11908
1123
1124Loïc Yhuel (28 Sep 2023)
1125
1126- multi: round the timeout up to prevent early wakeups
1127
1128  Curl_timediff rounds down to the millisecond, so curl_multi_perform can
1129  be called too early, then we get a timeout of 0 and call it again.
1130
1131  The code already handled the case of timeouts which expired less than
1132  1ms in the future.  By rounding up, we make sure we will never ask the
1133  platform to wake up too early.
1134
1135  Closes #11938
1136
1137Daniel Stenberg (28 Sep 2023)
1138
1139- RELEASE-NOTES: spell out that IPFS is via gateway
1140
1141- RELEASE-NOTES: synced
1142
1143- tool_operate: avoid strlen() -1 on zero length content from file
1144
1145  Follow-up to 65b563a96a226649ba12cb1e
1146
1147  Closes #11959
1148
1149- tool_operate: fix memory mixups
1150
1151  Switch to plain getenv() from curl_getenv() to avoid the allocation and
1152  having to keep track of which free() or curl_free() that need to be
1153  used.
1154
1155  Coverity found issues and a memory leak.
1156
1157  Follow-up to 65b563a96a226649ba12cb1e
1158
1159  Closes #11959
1160
1161Viktor Szakats (27 Sep 2023)
1162
1163- curl-functions.m4: fixup recent bad edits
1164
1165  Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940
1166
1167  Closes #11966
1168
1169Daniel Stenberg (27 Sep 2023)
1170
1171- curl-functions.m4: fix include line
1172
1173  This made the getaddrinfo detection fail, but we did not spot it in the
1174  CI because it graciously falled back to using legacy functions instead!
1175
1176  Follow-up to 96c29900bcec (#11940)
1177
1178  Closes #11965
1179
1180- inet_ntop: add typecast to silence Coverity
1181
1182  CID 1024653:  Integer handling issues  (SIGN_EXTENSION)
1183
1184  Suspicious implicit sign extension: "src[i]" with type "unsigned char
1185  const" (8 bits, unsigned) is promoted in "src[i] << (1 - i % 2 << 3)" to
1186  type "int" (32 bits, signed), then sign-extended to type "unsigned long"
1187  (64 bits, unsigned).  If "src[i] << (1 - i % 2 << 3)" is greater than
1188  0x7FFFFFFF, the upper bits of the result will all be 1.
1189
1190  111         words[i/2] |= (src[i] << ((1 - (i % 2)) << 3));
1191
1192  The value will not be greater than 0x7FFFFFFF so this still cannot
1193  happen.
1194
1195  Also, switch to ints here instead of longs. The values stored are 16 bit
1196  so at least no need to use 64 bit variables. Also, longs are 32 bit on
1197  some platforms so this logic still needs to work with 32 bits.
1198
1199  Closes #11960
1200
1201- docs: adapt SEE ALSO sections to new requirements
1202
1203  To please manpage-syntax.pl used by test 1173
1204
1205  Closes #11957
1206
1207- manpage-syntax.pl: verify SEE ALSO syntax
1208
1209  - Enforce a single reference per .BR line
1210  - Skip the quotes around the section number for example (3)
1211  - Insist on trailing commas on all lines except the last
1212  - Error on comma on the last SEE ALSO entry
1213
1214  - List the entries alpha-sorted, not enforced just recommended
1215
1216  Closes #11957
1217
1218- connect: expire the timeout when trying next
1219
1220  ... so that it gets called again immediately and can continue trying
1221  addresses to connect to. Otherwise it might unnecessarily wait for a
1222  while there.
1223
1224  Fixes #11920
1225  Reported-by: Loïc Yhuel
1226  Closes #11935
1227
1228- http: remove wrong comment for http_should_fail
1229
1230  Reported-by: Christian Schmitz
1231  Ref: #11936
1232  Closes #11941
1233
1234Dan Fandrich (26 Sep 2023)
1235
1236- tool_setopt: remove unused function tool_setopt_flags
1237
1238  This function is identical to tool_setopt_bitmask except that it treats
1239  the argument as unsigned.
1240
1241  Closes #11943
1242
1243Viktor Szakats (26 Sep 2023)
1244
1245- cmake: add feature checks for `memrchr` and `getifaddrs`
1246
1247  - `HAVE_MEMRCHR` for `memrchr`.
1248  - `HAVE_GETIFADDRS` for `getifaddrs`.
1249    This was present in `lib/curl_config.h.cmake` but missed the detection
1250    logic.
1251
1252  To match existing autotools feature checks.
1253
1254  Closes #11954
1255
1256- cmake: move global headers to specific checks
1257
1258  Before this patch we added standard headers unconditionally to the
1259  global list of headers used for feature checks. This is unnecessary
1260  and also doesn't help CMake 'Generate' performance. This patch moves
1261  these headers to each feature check where they are actually needed.
1262  Stop using `stddef.h`, as it seems unnecessary.
1263
1264  I've used autotools' `m4/curl-functions.m4` to figure out these
1265  dependencies.
1266
1267  Also delete checking for the C89 standard header `time.h`, that I
1268  missed in the earlier commit.
1269
1270  Ref: 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940
1271
1272  Closes #11951
1273
1274- src/mkhelp: make generated code pass `checksrc`
1275
1276  Closes #11955
1277
1278- tests: show which curl tool `runtests.pl` is using
1279
1280  To help debugging when there is issue finding or running it.
1281
1282  Closes #11953
1283
1284- CI/azure: make `MAKEFLAGS` global to parallelize all jobs
1285
1286  https://dev.azure.com/daniel0244/curl/_build/results?buildId=17528 (before)
1287  https://dev.azure.com/daniel0244/curl/_build/results?buildId=17545 (after, wi
1288  th -j3)
1289
1290  Closes #11952
1291
1292- CI/azure: migrate old mingw MSYS1 jobs to MSYS2
1293
1294  Also delete an accidental variable reference.
1295
1296  Follow-up to 38029101e2d78ba125732b3bab6ec267b80a0e72
1297
1298  Closes #11945
1299
1300Daniel Stenberg (26 Sep 2023)
1301
1302- docs: add see also curl_multi_get_handles to some man pages
1303
1304  Assisted-by: Jay Satiro
1305
1306  Closes #11942
1307
1308Viktor Szakats (26 Sep 2023)
1309
1310- cmake: assume `_fseeki64` and no `fseeko` on Windows
1311
1312  `_fseeki64` is present in mingw-w64 1.0 (2011-09-26) headers, and
1313  at least Watcom C 1.9 (2010) headers and MSVS 2008 [1].
1314
1315  `fseeko` is not present in any of these.
1316
1317  (mingw-w64 1.0 also offers `fseeko64`.)
1318
1319  [1] https://github.com/curl/curl/pull/11944#issuecomment-1734995004
1320
1321  Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918
1322
1323  Closes #11950
1324
1325- build: delete checks for C89 standard headers
1326
1327  Delete checks and guards for standard C89 headers and assume these are
1328  available: `stdio.h`, `string.h`, `time.h`, `setjmp.h`, `stdlib.h`,
1329  `stddef.h`, `signal.h`.
1330
1331  Some of these we already used unconditionally, some others we only used
1332  for feature checks.
1333
1334  Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 (for `stdio.h` i
1335  n CMake)
1336
1337  Closes #11940
1338
1339Stefan Eissing (26 Sep 2023)
1340
1341- multiif.h: remove Curl_multi_dump declaration
1342
1343  Follow-up to d850eea2 which removed the Curl_multi_dump definition.
1344
1345  Closes https://github.com/curl/curl/pull/11946
1346
1347Jay Satiro (26 Sep 2023)
1348
1349- config-win32: define HAVE__FSEEKI64
1350
1351  Follow-up to 9c7165e9 which added an fseeko wrapper to the lib that
1352  calls _fseeki64 if it is available.
1353
1354  Closes https://github.com/curl/curl/pull/11944
1355
1356- docs: explain how PINNEDPUBLICKEY is independent of VERIFYPEER
1357
1358  - Explain that peer verification via CURLOPT_PINNEDPUBLICKEY takes place
1359    even if peer verification via CURLOPT_SSL_VERIFYPEER is turned off.
1360
1361  The behavior is verified by test2048.
1362
1363  Bug: https://github.com/curl/curl/issues/2935#issuecomment-418371872
1364  Reported-by: claudiusaiz@users.noreply.github.com
1365
1366  Bug: https://github.com/curl/curl/discussions/11910
1367  Reported-by: Hakan Sunay Halil
1368
1369  Closes https://github.com/curl/curl/pull/11930
1370
1371Stefan Eissing (26 Sep 2023)
1372
1373- openssl: improve ssl shutdown handling
1374
1375  - If SSL shutdown is not finished then make an additional call to
1376    SSL_read to gather additional tracing.
1377
1378  - Fix http2 and h2-proxy filters to forward do_close() calls to the next
1379    filter.
1380
1381  For example h2 and SSL shutdown before and after this change:
1382
1383  Before:
1384
1385  Curl_conn_close -> cf_hc_close -> Curl_conn_cf_discard_chain ->
1386  ssl_cf_destroy
1387
1388  After:
1389
1390  Curl_conn_close -> cf_hc_close -> cf_h2_close -> cf_setup_close ->
1391  ssl_cf_close
1392
1393  Note that currently the tracing does not show output on the connection
1394  closure handle. Refer to discussion in #11878.
1395
1396  Ref: https://github.com/curl/curl/discussions/11878
1397
1398  Closes https://github.com/curl/curl/pull/11858
1399
1400Loïc Yhuel (26 Sep 2023)
1401
1402- multi: fix small timeouts
1403
1404  Since Curl_timediff rounds down to the millisecond, timeouts which
1405  expire in less than 1ms are considered as outdated and removed from the
1406  list. We can use Curl_timediff_us instead, big timeouts could saturate
1407  but this is not an issue.
1408
1409  Closes #11937
1410
1411Viktor Szakats (25 Sep 2023)
1412
1413- cmake: fix stderr initialization in unity builds
1414
1415  Before this patch, in certain build configurations the curl tool may
1416  not have displayed anything (debug, macOS), or crashed at startup
1417  (debug, Windows).
1418
1419  Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719
1420  Necessary after 2f17a9b654121dd1ecf4fc043c6d08a9da3522db
1421
1422  Closes #11929
1423
1424- cmake: fix missing `zlib.h` when compiling `libcurltool`
1425
1426  Came up while testing debug/testing build for Windows. I'm not sure why
1427  it didn't come up in earlier tests with similar config.
1428  `tool_hugehelp.c` might indeed require `zlib.h` and without linking
1429  `CURL_LIBS` to the `curltool` target, CMake doesn't seem to add detected
1430  dependency headers to the compiler command.
1431
1432  ```
1433  [ 25%] Building C object src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj
1434  cd .../curl/bld-cmake-llvm-x64/src && /usr/local/opt/llvm/bin/clang
1435    --target=x86_64-w64-mingw32 --sysroot=/usr/local/opt/mingw-w64/toolchain-x8
1436  6_64
1437    -DCURLDEBUG -DCURL_STATICLIB -DHAVE_CONFIG_H -DUNICODE -DUNITTESTS -D_UNICO
1438  DE
1439    -I.../curl/include -I.../curl/lib -I.../curl/bld-cmake-llvm-x64/lib
1440    -I.../curl/bld-cmake-llvm-x64/include -I.../curl/src -Wno-unused-command-li
1441  ne-argument
1442    -D_UCRT -DDEBUGBUILD -DHAS_ALPN -DUSE_MANUAL=1  -fuse-ld=lld -Wl,-s -static
1443  -libgcc
1444    -lucrt [...] -O3 -DNDEBUG -municode -MD
1445    -MT src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj
1446    -MF CMakeFiles/curltool.dir/tool_hugehelp.c.obj.d
1447    -o CMakeFiles/curltool.dir/tool_hugehelp.c.obj -c .../curl/bld-cmake-llvm-x
1448  64/src/tool_hugehelp.c
1449  .../curl/bld-cmake-llvm-x64/src/tool_hugehelp.c:6:10: fatal error: 'zlib.h' f
1450  ile not found
1451      6 | #include <zlib.h>
1452        |          ^~~~~~~~
1453  ```
1454
1455  Follow-up to 39e7c22bb459c2e818f079984989a26a09741860
1456
1457  Closes #11927
1458
1459- cmake: fix duplicate symbols when linking tests
1460
1461  The linker resolves this automatically in non-unity builds. In unity
1462  builds the linker cannot drop a single object with the duplicates,
1463  resulting in these errors. The root issue is that we started including
1464  certain objects both via both libcurlu and libcurltool libs.
1465
1466  Regression from 39e7c22bb459c2e818f079984989a26a09741860
1467
1468  Windows errors:
1469  ```
1470  [  3%] Linking C executable unit1303.exe
1471  [  3%] Building C object tests/server/CMakeFiles/rtspd.dir/__/__/lib/curl_mul
1472  tibyte.c.obj
1473  ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_UTF8_to_wch
1474  ar':
1475  C:/projects/curl/lib/curl_multibyte.c:44: multiple definition of `curlx_conve
1476  rt_UTF8_to_wchar'
1477  ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.
1478  c:44: first defined here
1479  ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_wchar_to_UT
1480  F8':
1481  C:/projects/curl/lib/curl_multibyte.c:66: multiple definition of `curlx_conve
1482  rt_wchar_to_UTF8'
1483  ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.
1484  c:66: first defined here
1485  ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_open':
1486  C:/projects/curl/lib/curl_multibyte.c:92: multiple definition of `curlx_win32
1487  _open'
1488  ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.
1489  c:92: first defined here
1490  ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_fopen':
1491  C:/projects/curl/lib/curl_multibyte.c:120: multiple definition of `curlx_win3
1492  2_fopen'
1493  ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte.
1494  c:120: first defined here
1495  ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_stat':
1496  [...]
1497  ```
1498  Ref: https://ci.appveyor.com/project/curlorg/curl/builds/48110107/job/nvlhpt9
1499  aa4ehny5q#L247
1500
1501  macOS errors:
1502  ```
1503  [ 56%] Linking C executable unit1302
1504  duplicate symbol '_curlx_sotouz' in:
1505      ../../lib/libcurlu.a(unity_0_c.c.o)
1506      ../../src/libcurltool.a(unity_0_c.c.o)
1507  duplicate symbol '_curlx_sitouz' in:
1508      ../../lib/libcurlu.a(unity_0_c.c.o)
1509      ../../src/libcurltool.a(unity_0_c.c.o)
1510  duplicate symbol '_curlx_uztosz' in:
1511      ../../lib/libcurlu.a(unity_0_c.c.o)
1512      ../../src/libcurltool.a(unity_0_c.c.o)
1513  [...]
1514  ```
1515  with config:
1516  ```
1517    -DCMAKE_UNITY_BUILD=ON \
1518    -DENABLE_DEBUG=ON -DBUILD_TESTING=ON -DCMAKE_C_FLAGS=-DDEBUGBUILD \
1519    -DBUILD_SHARED_LIBS=ON \
1520    -DBUILD_STATIC_LIBS=OFF
1521  ```
1522
1523  Closes #11926
1524
1525- cmake: lib `CURL_STATICLIB` fixes (Windows)
1526
1527  - always define `CURL_STATICLIB` when building libcurl for Windows.
1528
1529    This disables `__declspec(dllexport)` for exported libcurl symbols.
1530    In normal mode (hide symbols) these exported symbols are specified
1531    via `libcurl.def`. When not hiding symbols, all symbols are exported
1532    by default.
1533
1534    Regression from 1199308dbc902c52be67fc805c72dd2582520d30
1535
1536    Fixes #11844
1537
1538  - fix to omit `libcurl.def` when not hiding private symbols.
1539
1540    Regression from 2ebc74c36a19a1700af394c16855ce144d9878e3
1541
1542  - fix `ENABLED_DEBUG=ON` + shared curl tool Windows builds by also
1543    omitting `libcurl.def` in this case, and exporting all symbols
1544    instead. This ensures that a shared curl tool can access all debug
1545    functions which are not normally exported from libcurl DLL.
1546
1547  - delete `INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB"` for "objects"
1548    target.
1549
1550    Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3
1551
1552  - delete duplicate `BUILDING_LIBCURL` definitions.
1553
1554  - fix `HIDES_CURL_PRIVATE_SYMBOLS` to not overwrite earlier build settings.
1555
1556    Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30
1557
1558  Closes #11914
1559
1560Daniel Stenberg (25 Sep 2023)
1561
1562- RELEASE-NOTES: synced
1563
1564Dan Fandrich (25 Sep 2023)
1565
1566- tests: fix log directory path in IPFS tests
1567
1568  Hard-coding the log directory name fails with parallel tests.
1569
1570  Follow-up to 65b563a96
1571
1572  Ref: #8805
1573
1574Daniel Stenberg (25 Sep 2023)
1575
1576- curl_multi_get_handles: get easy handles from a multi handle
1577
1578  Closes #11750
1579
1580Stefan Eissing (25 Sep 2023)
1581
1582- http: h1/h2 proxy unification
1583
1584  - use shared code for setting up the CONNECT request
1585    when tunneling, used in HTTP/1.x and HTTP/2 proxying
1586  - eliminate use of Curl_buffer_send() and other manipulations
1587    of `data->req` or `data->state.ulbuf`
1588
1589  Closes #11808
1590
1591Natanael Copa (25 Sep 2023)
1592
1593- lib: use wrapper for curl_mime_data fseek callback
1594
1595  fseek uses long offset which does not match with curl_off_t. This leads
1596  to undefined behavior when calling the callback and caused failure on
1597  arm 32 bit.
1598
1599  Use a wrapper to solve this and use fseeko which uses off_t instead of
1600  long.
1601
1602  Thanks to the nice people at Libera IRC #musl for helping finding this
1603  out.
1604
1605  Fixes #11882
1606  Fixes #11900
1607  Closes #11918
1608
1609- configure: sort AC_CHECK_FUNCS
1610
1611  No functional changes.
1612
1613Daniel Stenberg (25 Sep 2023)
1614
1615- warnless: remove unused functions
1616
1617  Previously put there for use with the intel compiler
1618
1619  Closes #11932
1620
1621- GHA/linux: run singleuse to detect single-use global functions
1622
1623  Use --unit for configure --enable-debug builds
1624
1625  Closes #11932
1626
1627- singleuse: add scan for use in other source codes
1628
1629  This should reduce false-positive to almost zero. Checks for presence in
1630  unit tests if --unit is specified, which is intended for debug builds
1631  where unit testing is enabled.
1632
1633  Closes #11932
1634
1635- multi: remove Curl_multi_dump
1636
1637  A debug-only function that is basically never used. Removed to ease the
1638  use of the singleuse script to detect non-static functions not used
1639  outside the file where it is defined.
1640
1641  Closes #11931
1642
1643Viktor Szakats (24 Sep 2023)
1644
1645- tests: fix compiler warnings
1646
1647  Seen with llvm 17 on Windows x64.
1648
1649  ```
1650  .../curl/tests/server/rtspd.c:136:13: warning: no previous extern declaration
1651   for non-static variable 'logdir' [-Wmissing-variable-declarations]
1652    136 | const char *logdir = "log";
1653        |             ^
1654  .../curl/tests/server/rtspd.c:136:7: note: declare 'static' if the variable i
1655  s not intended to be used outside of this translation unit
1656    136 | const char *logdir = "log";
1657        |       ^
1658  .../curl/tests/server/rtspd.c:137:6: warning: no previous extern declaration
1659  for non-static variable 'loglockfile' [-Wmissing-variable-declarations]
1660    137 | char loglockfile[256];
1661        |      ^
1662  .../curl/tests/server/rtspd.c:137:1: note: declare 'static' if the variable i
1663  s not intended to be used outside of this translation unit
1664    137 | char loglockfile[256];
1665        | ^
1666  .../curl/tests/server/fake_ntlm.c:43:13: warning: no previous extern declarat
1667  ion for non-static variable 'logdir' [-Wmissing-variable-declarations]
1668     43 | const char *logdir = "log";
1669        |             ^
1670  .../curl/tests/server/fake_ntlm.c:43:7: note: declare 'static' if the variabl
1671  e is not intended to be used outside of this translation unit
1672     43 | const char *logdir = "log";
1673        |       ^
1674  .../curl/src/tool_doswin.c:350:8: warning: possible misuse of comma operator
1675  here [-Wcomma]
1676    350 |     ++d, ++s;
1677        |        ^
1678  .../curl/src/tool_doswin.c:350:5: note: cast expression to void to silence wa
1679  rning
1680    350 |     ++d, ++s;
1681        |     ^~~
1682        |     (void)( )
1683  ```
1684
1685  ```
1686  .../curl/tests/libtest/lib540.c:146:27: warning: result of comparison 'long'
1687  > 2147483647 is always false [-Wtautological-type-limit-compare]
1688    146 |         int itimeout = (L > (long)INT_MAX) ? INT_MAX : (int)L;
1689        |                         ~ ^ ~~~~~~~~~~~~~
1690  1 warning generated.
1691
1692  .../curl/tests/libtest/libntlmconnect.c:195:31: warning: result of comparison
1693   'long' > 2147483647 is always false [-Wtautological-type-limit-compare]
1694    195 |       int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo
1695  ut;
1696        |                       ~~~~~~~ ^ ~~~~~~~~~~~~~
1697  1 warning generated.
1698
1699  .../curl/tests/libtest/lib591.c:117:31: warning: result of comparison 'long'
1700  > 2147483647 is always false [-Wtautological-type-limit-compare]
1701    117 |       int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo
1702  ut;
1703        |                       ~~~~~~~ ^ ~~~~~~~~~~~~~
1704  1 warning generated.
1705  .../curl/tests/libtest/lib597.c:99:31: warning: result of comparison 'long' >
1706   2147483647 is always false [-Wtautological-type-limit-compare]
1707     99 |       int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo
1708  ut;
1709        |                       ~~~~~~~ ^ ~~~~~~~~~~~~~
1710  1 warning generated.
1711  ```
1712
1713  Seen on macOS Intel:
1714  ```
1715  .../curl/tests/server/sws.c:440:64: warning: field precision should have type
1716   'int', but argument has type 'size_t' (aka 'unsigned long') [-Wformat]
1717            msnprintf(logbuf, sizeof(logbuf), "Got request: %s %.*s HTTP/%d.%d"
1718  ,
1719                                                               ~~^~
1720  1 warning generated.
1721  ```
1722
1723  Closes #11925
1724
1725Jay Satiro (24 Sep 2023)
1726
1727- url: fix netrc info message
1728
1729  - Fix netrc info message to use the generic ".netrc" filename if the
1730    user did not specify a netrc location.
1731
1732  - Update --netrc doc to add that recent versions of curl on Windows
1733    prefer .netrc over _netrc.
1734
1735  Before:
1736  * Couldn't find host google.com in the (nil) file; using defaults
1737
1738  After:
1739  * Couldn't find host google.com in the .netrc file; using defaults
1740
1741  Closes https://github.com/curl/curl/pull/11904
1742
1743Dan Fandrich (23 Sep 2023)
1744
1745- wolfssh: do cleanup in Curl_ssh_cleanup
1746
1747  Closes: #11921
1748
1749Daniel Stenberg (24 Sep 2023)
1750
1751- tool_listhelp: regenerated
1752
1753  Polished the --ipfs-gateway description
1754
1755  Fixed the --trace-config description
1756
1757  The script also fixed some other small mistakes
1758
1759  Closes #11923
1760
1761Viktor Szakats (23 Sep 2023)
1762
1763- Makefile.mk: always set `CURL_STATICLIB` for lib (Windows)
1764
1765  Also fix to export all symbols in Windows debug builds, making
1766  `-debug-dyn` builds work with `-DCURL_STATICLIB` set.
1767
1768  Ref: https://github.com/curl/curl/pull/11914 (same for CMake)
1769
1770  Closes #11924
1771
1772Daniel Stenberg (23 Sep 2023)
1773
1774- quic: set ciphers/curves the same way regular TLS does
1775
1776  for OpenSSL/BoringSSL
1777
1778  Fixes #11796
1779  Reported-by: Karthikdasari0423 on github
1780  Assisted-by: Jay Satiro
1781  Closes #11836
1782
1783- test457: verify --max-filesize with chunked encoding
1784
1785- lib: let the max filesize option stop too big transfers too
1786
1787  Previously it would only stop them from getting started if the size is
1788  known to be too big then.
1789
1790  Update the libcurl and curl docs accordingly.
1791
1792  Fixes #11810
1793  Reported-by: Elliot Killick
1794  Assisted-by: Jay Satiro
1795  Closes #11820
1796
1797Viktor Szakats (23 Sep 2023)
1798
1799- mingw: delete support for legacy mingw.org toolchain
1800
1801  Drop support for "old" / "legacy" / "classic" / "v1" / "mingw32" MinGW:
1802    https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/
1803  Its homepage used to be http://mingw.org/ [no HTTPS], and broken now.
1804  It supported the x86 CPU only and used a old Windows API header and
1805  implib set, often causing issues. It also misses most modern Windows
1806  features, offering old versions of both binutils and gcc (no llvm/clang
1807  support). It was last updated 2 years ago.
1808
1809  curl now relies on toolchains based on the mingw-w64 project:
1810  https://www.mingw-w64.org/  https://sourceforge.net/projects/mingw-w64/
1811  https://www.msys2.org/  https://github.com/msys2/msys2
1812  https://github.com/mstorsjo/llvm-mingw
1813  (Also available via Linux and macOS package managers.)
1814
1815  Closes #11625
1816
1817Mark Gaiser (23 Sep 2023)
1818
1819- curl: add support for the IPFS protocols:
1820
1821  - ipfs://<cid>
1822  - ipns://<cid>
1823
1824  This allows you tu use ipfs in curl like:
1825  curl ipfs://<cid>
1826  and
1827  curl ipns://<cid>
1828
1829  For more information consult the readme at:
1830  https://curl.se/docs/ipfs.html
1831
1832  Closes #8805
1833
1834Daniel Stenberg (23 Sep 2023)
1835
1836- bufq: remove Curl_bufq_skip_and_shift (unused)
1837
1838  Closes #11915
1839
1840- scripts/singleuse.pl: add curl_global_trace
1841
1842Viktor Szakats (22 Sep 2023)
1843
1844- cmake: fix unity symbol collisions in h2 builds
1845
1846  Regression from 331b89a319d0067fa1e6441719307cfef9c7960f
1847
1848  Reviewed-by: Daniel Stenberg
1849  Reviewed-by: Jay Satiro
1850  Closes #11912
1851
1852Daniel Stenberg (22 Sep 2023)
1853
1854- RELEASE-NOTES: synced
1855
1856Dan Fandrich (21 Sep 2023)
1857
1858- github/labeler: improve the match patterns
1859
1860  This includes new rules for setting the appleOS and logging labels and
1861  matches on some example files. Also, enable dot mode for wildcard
1862  matches in the .github directory.
1863
1864Daniel Stenberg (21 Sep 2023)
1865
1866- upload-file.d: describe the file name slash/backslash handling
1867
1868  Closes #11911
1869
1870Jakub Jelen (21 Sep 2023)
1871
1872- libssh: cap SFTP packet size sent
1873
1874  Due to libssh limitations
1875
1876  Signed-off-by: Jakub Jelen <jjelen@redhat.com>
1877
1878  Closes #11804
1879
1880Daniel Stenberg (21 Sep 2023)
1881
1882- curl.h: mark CURLSSLBACKEND_NSS as deprecated since 8.3.0
1883
1884  Closes #11905
1885
1886- mailmap: unify Michael Osipov under a single email
1887
1888Ted Lyngmo (21 Sep 2023)
1889
1890- docs: use CURLSSLBACKEND_NONE
1891
1892  [ssl] use CURLSSLBACKEND_NONE instead of (curl_sslbackend)-1 in
1893  documentation and examples.
1894
1895  Signed-off-by: Ted Lyngmo <ted@lyncon.se>
1896
1897  Closes #11909
1898
1899Dan Fandrich (21 Sep 2023)
1900
1901- github/labeler: give the sync-labels config item a default value
1902
1903  This shouldn't be necessary and is likely a bug with this beta version
1904  of the labeller.
1905
1906  Also, fix the negative matches for the documentation label.
1907
1908  Follow-up to dd12b452a
1909  Closes #11907
1910
1911- github/labeler: fix up more the labeler config format
1912
1913  The new version didn't like the workaround we had for a bug in the
1914  previous labeler version, and it should no longer be needed.
1915
1916  Follow-up to dd12b452a
1917  Closes #11906
1918
1919- github/labeler: fix indenting to try to appease labeller
1920
1921  Follow-up to dd12b452a
1922
1923Jay Satiro (21 Sep 2023)
1924
1925- libssh2: fix error message on failed pubkey-from-file
1926
1927  - If libssh2_userauth_publickey_fromfile_ex returns -1 then show error
1928    message "SSH public key authentication failed: Reason unknown (-1)".
1929
1930  When libssh2_userauth_publickey_fromfile_ex returns -1 it does so as a
1931  generic error and therefore doesn't set an error message. AFAICT that is
1932  not documented behavior.
1933
1934  Prior to this change libcurl retrieved the last set error message which
1935  would be from a previous function failing. That resulted in misleading
1936  auth failed error messages in verbose mode.
1937
1938  Bug: https://github.com/curl/curl/issues/11837#issue-1891827355
1939  Reported-by: consulion@users.noreply.github.com
1940
1941  Closes https://github.com/curl/curl/pull/11881
1942
1943Stefan Eissing (21 Sep 2023)
1944
1945- pytest: exclude test_03_goaway in CI runs due to timing dependency
1946
1947  Closes #11860
1948
1949- lib: disambiguate Curl_client_write flag semantics
1950
1951  - use CLIENTWRITE_BODY *only* when data is actually body data
1952  - add CLIENTWRITE_INFO for meta data that is *not* a HEADER
1953  - debug assertions that BODY/INFO/HEADER is not used mixed
1954  - move `data->set.include_header` check into Curl_client_write
1955    so protocol handlers no longer have to care
1956  - add special in FTP for `data->set.include_header` for historic,
1957    backward compatible reasons
1958  - move unpausing of client writes from easy.c to sendf.c, so that
1959    code is in one place and can forward flags correctly
1960
1961  Closes #11885
1962
1963Patrick Monnerat (21 Sep 2023)
1964
1965- tftpd: always use curl's own tftp.h
1966
1967  Using the system's provided arpa/tftp.h and optimizing, GCC 12 detects
1968  and reports a stringop-overread warning:
1969
1970  tftpd.c: In function ‘write_behind.isra’:
1971  tftpd.c:485:12: warning: ‘write’ reading between 1 and 2147483647 bytes f
1972  rom a region of size 0 [-Wstringop-overread]
1973    485 |     return write(test->ofile, writebuf, count);
1974        |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1975  In file included from tftpd.c:71:
1976  /usr/include/arpa/tftp.h:58:30: note: source object ‘tu_data’ of size 0
1977     58 |                         char tu_data[0];        /* data or error stri
1978  ng */
1979        |                              ^~~~~~~
1980
1981  This occurs because writebuf points to this field and the latter
1982  cannot be considered as being of dynamic length because it is not
1983  the last field in the structure. Thus it is bound to its declared
1984  size.
1985
1986  This commit always uses curl's own version of tftp.h where the
1987  target field is last in its structure, effectively avoiding the
1988  warning.
1989
1990  As HAVE_ARPA_TFTP_H is not used anymore, cmake/configure checks for
1991  arpa/tftp.h are removed.
1992
1993  Closes #11897
1994
1995Dan Fandrich (20 Sep 2023)
1996
1997- test1474: make precheck more robust on non-Solaris systems
1998
1999  If uname -r returns something odd, perl could return an error code and
2000  the test would be erroneously skipped. The qx// syntax avoid this.
2001
2002  Followup to 08f9b2148
2003
2004- github/labeler: switch to the 5 beta version
2005
2006  This version adds an important feature that will allow more PRs to be
2007  labelled. Rather than being limited to labeling PRs with files that
2008  match a single glob, it can now label them if multiple changed files
2009  match any one of a number of globs.
2010
2011Daniel Stenberg (20 Sep 2023)
2012
2013- lib: enable hmac for digest as well
2014
2015  Previously a build that disabled NTLM and aws-sigv4 would fail to build
2016  since the hmac was disabled, but it is also needed for digest auth.
2017
2018  Follow-up to e92edfbef64448ef
2019
2020  Fixes #11890
2021  Reported-by: Aleksander Mazur
2022  Closes #11896
2023
2024- idn: if idn2_check_version returns NULL, return error
2025
2026  ... this avoids a NULL dereference for this unusual case.
2027
2028  Reported-by: s0urc3_ on hackerone
2029  Closes #11898
2030
2031- http: fix CURL_DISABLE_BEARER_AUTH breakage
2032
2033  When bearer auth was disabled, the if/else logic got wrong and caused
2034  problems.
2035
2036  Follow-up to e92edfbef64448ef461
2037  Fixes #11892
2038  Reported-by: Aleksander Mazur
2039  Closes #11895
2040
2041Michael Osipov (20 Sep 2023)
2042
2043- wolfssl: allow capath with CURLOPT_CAINFO_BLOB
2044
2045  Remain consistent with OpenSSL. While CAfile is nulled as documented
2046  with CURLOPT_CAINFO_BLOB, CApath remains intact.
2047
2048  Closes #11886
2049
2050- wolfssl: use ssl_cafile/ssl_capath variables consistent with openssl.c
2051
2052  Closes #11886
2053
2054Dan Fandrich (19 Sep 2023)
2055
2056- test1474: disable test on NetBSD, OpenBSD and Solaris 10
2057
2058  These kernels only send a fraction of the requested amount of the first
2059  large block, invalidating the assumptions of the test and causing it to
2060  fail.
2061
2062  Assisted-by: Christian Weisgerber
2063  Ref: https://curl.se/mail/lib-2023-09/0021.html
2064  Closes #11888
2065
2066Ryan Schmidt (20 Sep 2023)
2067
2068- cmake, configure: also link with CoreServices
2069
2070  When linking with CoreFoundation, also link with CoreServices which is
2071  apparently required to avoid an NSInvalidArgumentException in software
2072  linking with libcurl on macOS Sonoma 14 and later.
2073
2074  Fixes #11893
2075  Closes #11894
2076
2077Marc Hoersken (19 Sep 2023)
2078
2079- CI/azure: remove pip, wheel, cryptography, pyopenssl and impacket
2080
2081  These dependencies are now already included in the Docker image.
2082
2083  Ref: https://github.com/mback2k/curl-docker-winbuildenv/commit/2607a31bcab544
2084  b41d15606e97f38cf312c1ce56
2085
2086  Closes #11889
2087
2088Daniel Stenberg (19 Sep 2023)
2089
2090- wolfssl: if CURLOPT_CAINFO_BLOB is set, ignore the CA files
2091
2092  Ref: #11883
2093  Reported-by: Michael Osipov
2094  Closes #11884
2095
2096- RELEASE-NOTES: synced
2097
2098- test3103: CURLOPT_COOKIELIST test
2099
2100- cookie: set ->running in cookie_init even if data is NULL
2101
2102  This is a regression introduced in b1b326ec500 (shipped in curl 8.1.0)
2103
2104  Test 3103 verifies.
2105
2106  Fixes #11875
2107  Reported-by: wangp on github
2108  Closes #11876
2109
2110- test498: total header size for all redirects is larger than accepted
2111
2112- http: use per-request counter to check too large headers
2113
2114  Not the counter that accumulates all headers over all redirects.
2115
2116  Follow-up to 3ee79c1674fd6
2117
2118  Do a second check for 20 times the limit for the accumulated size for
2119  all headers.
2120
2121  Fixes #11871
2122  Reported-by: Joshix-1 on github
2123  Closes #11872
2124
2125Jay Satiro (18 Sep 2023)
2126
2127- THANKS: add Eric Murphy
2128
2129  He reported #11850 (quiche build error) but I forgot to add a
2130  'reported-by' entry in the fix 267e14f1.
2131
2132Daniel Stenberg (18 Sep 2023)
2133
2134- h2-proxy: remove left-over mistake in drain_tunnel()
2135
2136  Left-over from 331b89a319
2137
2138  Reported-by: 南宫雪珊
2139
2140  Closes https://github.com/curl/curl/pull/11877
2141
2142vvb2060 (18 Sep 2023)
2143
2144- lib: failf/infof compiler warnings
2145
2146  Closes #11874
2147
2148Daniel Stenberg (17 Sep 2023)
2149
2150- rand: fix 'alnum': array is too small to include a terminating null character
2151
2152  It was that small on purpose, but this change now adds the null byte to
2153  avoid the error.
2154
2155  Follow-up to 3aa3cc9b052353b1
2156
2157  Reported-by: Dan Fandrich
2158  Ref: #11838
2159  Closes #11870
2160
2161Mathias Fuchs (16 Sep 2023)
2162
2163- cmake: fix the help text to the static build option in CMakeLists.txt
2164
2165  Closes #11843
2166
2167John Haugabook (16 Sep 2023)
2168
2169- MANUAL.md: change domain to example.com
2170
2171  Closes #11866
2172
2173Daniel Stenberg (16 Sep 2023)
2174
2175- doh: inherit DEBUGFUNCTION/DATA
2176
2177  When creating new transfers for doing DoH, they now inherit the debug
2178  settings from the initiating transfer, so that the application can
2179  redirect and handle the verbose output correctly even for the DoH
2180  transfers.
2181
2182  Reported-by: calvin2021y on github
2183  Fixes #11864
2184  Closes #11869
2185
2186Dan Fandrich (16 Sep 2023)
2187
2188- http_aws_sigv4: fix sorting with empty parts
2189
2190  When comparing with an empty part, the non-empty one is always
2191  considered greater-than. Previously, the two would be considered equal
2192  which would randomly place empty parts amongst non-empty ones. This
2193  showed as a test 439 failure on Solaris as it uses a different
2194  implementation of qsort() that compares parts differently.
2195
2196  Fixes #11855
2197  Closes #11868
2198
2199- CI: ignore the "flaky" and "timing-dependent" test results
2200
2201  CI builds will now run these tests, but will ignore the results if they
2202  fail. The relevant tests are ones that are sensitive to timing or
2203  have edge conditions that make them more likely to fail on CI servers,
2204  which are often heavily overloaded and slow.
2205
2206  This change only adds two additional tests to be ignored, since the
2207  others already had the flaky keyword.
2208
2209  Closes #11865
2210
2211- runtests: eliminate a warning on old perl versions
2212
2213  The warning "Use of implicit split to @_ is deprecated" showed between
2214  perl versions about 5.8 through 5.11.
2215
2216- tests: log the test result code after each libtest
2217
2218  This makes it easier to determine the test status. Also, capitalize
2219  FAILURE and ABORT messages in log lines to make them easier to spot.
2220
2221Harry Sintonen (16 Sep 2023)
2222
2223- misc: better random strings
2224
2225  Generate alphanumerical random strings.
2226
2227  Prior this change curl used to create random hex strings. This was
2228  mostly okay, but having alphanumerical random strings is better: The
2229  strings have more entropy in the same space.
2230
2231  The MIME multipart boundary used to be mere 64-bits of randomness due
2232  to being 16 hex chars. With these changes the boundary is 22
2233  alphanumerical chars, or little over 130 bits of randomness.
2234
2235  Closes #11838
2236
2237Daniel Stenberg (15 Sep 2023)
2238
2239- cookie: reduce variable scope, add const
2240
2241- cookie: do not store the expire or max-age strings
2242
2243  Convert it to an expire time at once and save memory.
2244
2245  Closes #11862
2246
2247- cookie: remove unnecessary struct fields
2248
2249  Plus: reduce the hash table size from 256 to 63. It seems unlikely to
2250  make much of a speed difference for most use cases but saves 1.5KB of
2251  data per instance.
2252
2253  Closes #11862
2254
2255- RELEASE-NOTES: synced
2256
2257  Bumped to 8.4.0, the next presumed version
2258
2259Dan Fandrich (14 Sep 2023)
2260
2261- test2600: remove special case handling for USE_ALARM_TIMEOUT
2262
2263  This was originally added to handle platforms that supported only 1
2264  second granularity in connect timeouts, but after some recent changes
2265  the test currently permafails on several Windows platforms.
2266
2267  The need for this special-case was removed in commit 8627416, which
2268  increased the connect timeout in all cases to well above 1 second.
2269
2270  Fixes #11767
2271  Closes #11849
2272
2273Daniel Stenberg (14 Sep 2023)
2274
2275- SECURITY-PROCESS.md. call it vulnerability disclosure policy
2276
2277  SECURITY-PROCESS.md -> VULN-DISCLOSURE-POLICY.md
2278
2279  This a name commonly used for a document like this. This name helps
2280  users find it.
2281
2282  Closes #11852
2283
2284Junho Choi (14 Sep 2023)
2285
2286- quiche: fix build error with --with-ca-fallback
2287
2288  - Fix build error when curl is built with --with-quiche
2289    and --with-ca-fallback.
2290
2291  - Add --with-ca-fallback to the quiche CI job.
2292
2293  Fixes https://github.com/curl/curl/issues/11850
2294  Closes https://github.com/curl/curl/pull/11847
2295
2296Jay Satiro (14 Sep 2023)
2297
2298- escape: replace Curl_isunreserved with ISUNRESERVED
2299
2300  - Use the ALLCAPS version of the macro so that it is clear a macro is
2301    being called that evaluates the variable multiple times.
2302
2303  - Also capitalize macro isurlpuntcs => ISURLPUNTCS since it evaluates
2304    a variable multiple times.
2305
2306  This is a follow-up to 291d225a which changed Curl_isunreserved into an
2307  alias macro for ISUNRESERVED. The problem is the former is not easily
2308  identified as a macro by the caller, which could lead to a bug.
2309
2310  For example, ISUNRESERVED(*foo++) is easily identifiable as wrong but
2311  Curl_isunreserved(*foo++) is not even though they both are the same.
2312
2313  Closes https://github.com/curl/curl/pull/11846
2314
2315Dan Fandrich (13 Sep 2023)
2316
2317- tests: increase the default server logs lock timeout
2318
2319  This timeout is used to wait for the server to finish writing its logs
2320  before checking them against the expected values. An overloaded machine
2321  could take more than the two seconds previously allocated, so increase
2322  the timeout to 5 seconds.
2323
2324  Ref: #11328
2325  Closes #11834
2326
2327- tests: increase TEST_HANG_TIMEOUT in two tests
2328
2329  These tests had a 5 second timeout compared to 60 seconds for all other
2330  tests. Make these consistent with the others for more reliability on
2331  heavily-loaded machines.
2332
2333  Ref: #11328
2334
2335- test1056: disable on Windows
2336
2337  This test relies on the IPv6 scope field being ignored when connecting to
2338  ipv6-localhost (i.e. [::1%259999] is treated as [::1]). Maybe this is a bit
2339  dodgy, but it works on all our test platforms except Windows. This
2340  test was disabled manually on all Windows CI builds already, so instead
2341  add an incompatible feature and precheck so it's skipped on Windows
2342  everywhere automatically.
2343
2344- test587: add a slight delay after test
2345
2346  This test is designed to connect to the server, then immediately send a
2347  few bytes and disconnect. In some situations, such as on a loaded
2348  server, this doesn't give the server enough time to write its lock file
2349  before its existence is checked. The test harness then fails to find the
2350  server's input log file (because it hasn't been written yet) and fails
2351  the test. By adding a short delay after the test, the HTTP server has
2352  enough time to write its lock file which gives itself more time to write
2353  its remaining files.
2354
2355  Ref: #11328
2356
2357- tests: stop overriding the lock timeout
2358
2359  These tests reduce the server lock wait timeout which can increase
2360  flakiness on loaded machines. Since this is merely an optimization,
2361  eliminate them in favour of reliability.
2362
2363  Ref: #11328
2364
2365- tests: add some --expect100-timeout to reduce timing dependencies
2366
2367  These tests can fail when the test machine is so slow that the test HTTP
2368  server didn't get a chance to complete before the client's one second
2369  100-continue timeout triggered. Increase that 1 second to 999 seconds so
2370  this situation doesn't happen.
2371
2372  Ref: #11328
2373
2374- test661: return from test early in case of curl error
2375
2376- tests: add the timing-dependent keyword on several tests
2377
2378  These are ones likely to fail on heavily-loaded machines that alter the
2379  normal test timing. Most of these tests already had the flaky keyword
2380  since this condition makes them more likely to fail on CI.
2381
2382- test1592: greatly increase the maximum test timeout
2383
2384  It was too short to be reliable on heavily loaded CI machines, and
2385  as a fail-safe only, it didn't need to be short.
2386
2387  Ref: #11328
2388
2389- test: minor test cleanups
2390
2391  Remove an obsolete block of code in tests 2032 & 576.
2392  Add a comment in test 1474.
2393
2394- tests: quadruple the %FTPTIME2 and %FTPTIME3 timeouts
2395
2396  This gives more of a margin for error when running on overloaded CI
2397  servers.
2398
2399  Ref: #11328
2400
2401- tests: improve SLOWDOWN test reliability by reducing sent data
2402
2403  These tests are run in SLOWDOWN mode which adds a 10 msec delay after
2404  each character output, which means it takes at least 1.6 seconds (and
2405  320 kernel calls) just to get through the long welcome banner. On an
2406  overloaded system, this can end up taking much more than 1.6 seconds,
2407  and even more than the 7 or 16 second curl timeout that the tests rely
2408  on, causing them to fail. Reducing the size of the welcome banner drops
2409  the total number of characters sent before the transfer starts by more
2410  than half, which reduces the opportunity for test-breaking slowdowns by
2411  the same amount.
2412
2413  Ref: #11328
2414
2415- test650: fix an end tag typo
2416
2417Jay Satiro (13 Sep 2023)
2418
2419- tool_cb_wrt: fix debug assertion
2420
2421  - Fix off-by-one out-of-bounds array index in Windows debug assertion.
2422
2423  Bug: https://github.com/curl/curl/commit/af3f4e41#r127212213
2424  Reported-by: Gisle Vanem
2425
2426Daniel Stenberg (13 Sep 2023)
2427
2428- ctype: add ISUNRESERVED()
2429
2430  ... and make Curl_isunreserved() use that macro instead of providing a
2431  separate funtion for the purpose.
2432
2433  Closes #11840
2434
2435Version 8.3.0 (13 Sep 2023)
2436
2437Daniel Stenberg (13 Sep 2023)
2438
2439- RELEASE-NOTES: syn ced
2440
2441  curl 8.3.0 release
2442
2443- THANKS: contributors from 8.3.0
2444
2445Thorsten Klein (12 Sep 2023)
2446
2447- cmake: set SIZEOF_LONG_LONG in curl_config.h
2448
2449  in order to support 32bit builds regarding wolfssl CTC_SETTINGS
2450
2451  Closes #11839
2452
2453Jay Satiro (12 Sep 2023)
2454
2455- curl_ngtcp2: fix error message
2456
2457- http_aws_sigv4: handle no-value user header entries
2458
2459  - Handle user headers in format 'name:' and 'name;' with no value.
2460
2461  The former is used when the user wants to remove an internal libcurl
2462  header and the latter is used when the user actually wants to send a
2463  no-value header in the format 'name:' (note the semi-colon is converted
2464  by libcurl to a colon).
2465
2466  Prior to this change the AWS header import code did not special case
2467  either of those and the generated AWS SignedHeaders would be incorrect.
2468
2469  Reported-by: apparentorder@users.noreply.github.com
2470
2471  Ref: https://curl.se/docs/manpage.html#-H
2472
2473  Fixes https://github.com/curl/curl/issues/11664
2474  Closes https://github.com/curl/curl/pull/11668
2475
2476Dan Fandrich (11 Sep 2023)
2477
2478- CI: run pytest with the -v option
2479
2480  This lists of the test cases being run so it can be tracked over time.
2481
2482  Closes #11824
2483
2484Daniel Stenberg (11 Sep 2023)
2485
2486- HTTP3: the msquic backend is not functional
2487
2488  I ask that we do not submit bugs for this backend just yet as we know it
2489  does not fully work.
2490
2491  Closes #11831
2492  Closes #11819
2493
2494- aws_sigv4: the query canon code miscounted URL encoded input
2495
2496  Added some extra ampersands to test 439 to verify "blank" query parts
2497
2498  Follow-up to fc76a24c53b08cdf
2499
2500  Closes #11829
2501
2502vvb2060 (11 Sep 2023)
2503
2504- quic: don't set SNI if hostname is an IP address
2505
2506  We already do this for TLS connections.
2507
2508  RFC 6066 says: Literal IPv4 and IPv6 addresses are not permitted in
2509  "HostName".
2510
2511  Ref: https://www.rfc-editor.org/rfc/rfc6066#section-3
2512
2513  Fixes https://github.com/curl/curl/issues/11827
2514  Closes https://github.com/curl/curl/pull/11828
2515
2516Daniel Stenberg (10 Sep 2023)
2517
2518- RELEASE-NOTES: synced
2519
2520Benoit Pierre (10 Sep 2023)
2521
2522- configure: fix `HAVE_TIME_T_UNSIGNED` check
2523
2524  The syntax was incorrect (need a proper main body), and the test
2525  condition was wrong (resulting in a signed `time_t` detected as
2526  unsigned).
2527
2528  Closes #11825
2529
2530Daniel Stenberg (9 Sep 2023)
2531
2532- THANKS-filter: pszlazak on github
2533
2534pszlazak (9 Sep 2023)
2535
2536- include.d: explain headers not printed with --fail before 7.75.0
2537
2538  Prior to 7.75.0 response headers were not printed if -f/--fail was used
2539  and an error was reported by server.  This was fixed in ab525c0
2540  (precedes 7.75.0).
2541
2542  Closes #11822
2543
2544Daniel Stenberg (8 Sep 2023)
2545
2546- http_aws_sigv4: skip the op if the query pair is zero bytes
2547
2548  Follow-up to fc76a24c53b08cdf
2549
2550  Spotted by OSS-Fuzz
2551
2552  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62175
2553  Closes #11823
2554
2555- cmdline-docs: use present tense, not future
2556
2557  + some smaller cleanups
2558
2559  Closes #11821
2560
2561- cmdline-docs: make sure to phrase it as "added in ...."
2562
2563  References to things that were added or changed in a specific version
2564  should be specified as "(added in [version]) for two reasons:
2565
2566  1 - consistency
2567
2568  2 - to allow gen.pl to strip them out if deemed referring to too old
2569      versions
2570
2571  Closes #11821
2572
2573Jay Satiro (8 Sep 2023)
2574
2575- docs: mark --ssl-revoke-best-effort as Schannel specific
2576
2577  Closes https://github.com/curl/curl/pull/11760
2578
2579Nathan Moinvaziri (8 Sep 2023)
2580
2581- schannel: fix ordering of cert chain info
2582
2583  - Use CERT_CONTEXT's pbCertEncoded to determine chain order.
2584
2585  CERT_CONTEXT from SECPKG_ATTR_REMOTE_CERT_CONTEXT contains
2586  end-entity/server certificate in pbCertEncoded. We can use this pointer
2587  to determine the order of certificates when enumerating hCertStore using
2588  CertEnumCertificatesInStore.
2589
2590  This change is to help ensure that the ordering of the certificate chain
2591  requested by the user via CURLINFO_CERTINFO has the same ordering on all
2592  versions of Windows.
2593
2594  Prior to this change Schannel certificate order was reversed in 8986df80
2595  but that was later reverted in f540a39b when it was discovered that
2596  Windows 11 22H2 does the reversal on its own.
2597
2598  Ref: https://github.com/curl/curl/issues/9706
2599
2600  Closes https://github.com/curl/curl/pull/11632
2601
2602Chris Talbot (8 Sep 2023)
2603
2604- digest: Use hostname to generate spn instead of realm
2605
2606  In https://www.rfc-editor.org/rfc/rfc2831#section-2.1.2
2607
2608  digest-uri-value should be serv-type "/" host , where host is:
2609
2610        The DNS host name or IP address for the service requested.  The
2611        DNS host name must be the fully-qualified canonical name of the
2612        host. The DNS host name is the preferred form; see notes on server
2613        processing of the digest-uri.
2614
2615  Realm may not be the host, so we must specify the host explicitly.
2616
2617  Note this change only affects the non-SSPI digest code. The digest code
2618  used by SSPI builds already uses the hostname to generate the spn.
2619
2620  Ref: https://github.com/curl/curl/issues/11369
2621
2622  Closes https://github.com/curl/curl/pull/11395
2623
2624Daniel Stenberg (7 Sep 2023)
2625
2626- docs: remove use of the word 'very'
2627
2628  It is mostly superfluous. proselint would complain.
2629
2630  Closes #11818
2631
2632- curl_multi_remove_handle.3: clarify what happens with connection
2633
2634  Closes #11817
2635
2636- RELEASE-NOTES: synced
2637
2638- test439: verify query canonization for aws-sigv4
2639
2640- tool_operate: make aws-sigv4 not require TLS to be used
2641
2642  Maybe not used too often, but we want it for testing and it should work.
2643
2644- http_aws_sigv4: canonicalize the query
2645
2646  Percent encoding needs to be done using uppercase, and most
2647  non-alphanumerical must be percent-encoded.
2648
2649  Fixes #11794
2650  Reported-by: John Walker
2651  Closes #11806
2652
2653Wyatt O'Day (7 Sep 2023)
2654
2655- lib: add ability to disable auths individually
2656
2657  Both with configure and cmake
2658
2659  Closes #11490
2660
2661Stefan Eissing (7 Sep 2023)
2662
2663- ngtcp2: fix handling of large requests
2664
2665  - requests >64K are send in parts to the filter
2666  - fix parsing of the request to assemble it correctly
2667    from several sends
2668  - open a QUIC stream only when the complete request has
2669    been collected
2670
2671  Closes #11815
2672
2673- openssl: when CURLOPT_SSL_CTX_FUNCTION is registered, init x509 store before
2674
2675  - we delay loading the x509 store to shorten the handshake time.
2676    However an application callback installed via CURLOPT_SSL_CTX_FUNCTION
2677    may need to have the store loaded and try to manipulate it.
2678  - load the x509 store before invoking the app callback
2679
2680  Fixes #11800
2681  Reported-by: guoxinvmware on github
2682  Cloes #11805
2683
2684Daniel Stenberg (7 Sep 2023)
2685
2686- krb5: fix "implicit conversion loses integer precision" warnings
2687
2688  conversions to/from enum and unsigned chars
2689
2690  Closes #11814
2691
2692Stefan Eissing (7 Sep 2023)
2693
2694- pytest: improvements
2695
2696  - set CURL_CI for pytest runs in CI environments
2697  - exclude timing sensitive tests from CI runs
2698  - for failed results, list only the log and stat of
2699    the failed transfer
2700
2701  - fix type in http.c comment
2702
2703  Closes #11812
2704
2705- CI: move on to ngtcp2 v0.19.1
2706
2707  Closes #11809
2708
2709Dan Fandrich (5 Sep 2023)
2710
2711- CI: run Circle macOS builds on x86 for now
2712
2713  The ARM machines aren't ready for us and requesting them now causes
2714  warnings e-mails to be sent to some PR pushers.
2715
2716  Ref: #11771
2717
2718Viktor Szakats (5 Sep 2023)
2719
2720- http3: adjust cast for ngtcp2 v0.19.0
2721
2722  ngtcp2 v0.19.0 made size of `ecn` member of `ngtcp2_pkt_info`
2723  an `uint8_t` (was: `uint32_t`). Adjust our local cast accordingly.
2724
2725  Fixes:
2726  ```
2727  ./curl/lib/vquic/curl_ngtcp2.c:1912:12: warning: implicit conversion loses in
2728  teger precision: 'uint32_t' (aka 'unsigned int') to 'uint8_t' (aka 'unsigned
2729  char') [-Wimplicit-int-conversion]
2730    pi.ecn = (uint32_t)ecn;
2731           ~ ^~~~~~~~~~~~~
2732  ```
2733
2734  Also bump ngtcp2, nghttp3 and nghttp2 to their latest versions in our
2735  docs and CI.
2736
2737  Ref: https://github.com/ngtcp2/ngtcp2/commit/80447281bbc94af53f8aa7a4cfc19175
2738  782894a3
2739  Ref: https://github.com/ngtcp2/ngtcp2/pull/877
2740  Closes #11798
2741
2742Stefan Eissing (5 Sep 2023)
2743
2744- http: fix sending of large requests
2745
2746  - refs #11342 where errors with git https interactions
2747    were observed
2748  - problem was caused by 1st sends of size larger than 64KB
2749    which resulted in later retries of 64KB only
2750  - limit sending of 1st block to 64KB
2751  - adjust h2/h3 filters to cope with parsing the HTTP/1.1
2752    formatted request in chunks
2753
2754  - introducing Curl_nwrite() as companion to Curl_write()
2755    for the many cases where the sockindex is already known
2756
2757  Fixes #11342 (again)
2758  Closes #11803
2759
2760- pytest: fix check for slow_network skips to only apply when intended
2761
2762  Closes #11801
2763
2764Daniel Stenberg (5 Sep 2023)
2765
2766- curl_url_get/set.3: add missing semicolon in SYNOPSIS
2767
2768- CURLOPT_URL.3: explain curl_url_set() uses the same parser
2769
2770- CURLOPT_URL.3: add two URL API calls in the see-also section
2771
2772Dan Fandrich (4 Sep 2023)
2773
2774- CI: add a 32-bit i686 Linux build
2775
2776  This is done by cross-compiling under regular x86_64 Linux.  Since the
2777  kernel offers backwards compatibility, the binaries can be tested as
2778  normal.
2779
2780  Closes #11799
2781
2782- tests: fix a type warning on 32-bit x86
2783
2784Viktor Szakats (4 Sep 2023)
2785
2786- tests: delete stray `.orig` file
2787
2788  Follow-up to 331b89a319d0067fa1e6441719307cfef9c7960f
2789  Closes #11797
2790
2791Daniel Stenberg (4 Sep 2023)
2792
2793- RELEASE-NOTES: synced
2794
2795Viktor Szakats (4 Sep 2023)
2796
2797- lib: silence compiler warning in inet_ntop6
2798
2799  ```
2800  ./curl/lib/inet_ntop.c:121:21: warning: possible misuse of comma operator her
2801  e [-Wcomma]
2802          cur.base = i, cur.len = 1;
2803                      ^
2804  ./curl/lib/inet_ntop.c:121:9: note: cast expression to void to silence warnin
2805  g
2806          cur.base = i, cur.len = 1;
2807          ^~~~~~~~~~~~
2808          (void)(     )
2809  ```
2810
2811  Closes #11790
2812
2813Daniel Stenberg (4 Sep 2023)
2814
2815- transfer: also stop the sending on closed connection
2816
2817  Previously this cleared the receiving bit only but in some cases it is
2818  also still sending (like a request-body) when disconnected and neither
2819  direction can continue then.
2820
2821  Fixes #11769
2822  Reported-by: Oleg Jukovec
2823  Closes #11795
2824
2825John Bampton (4 Sep 2023)
2826
2827- docs: change `sub-domain` to `subdomain`
2828
2829  https://en.wikipedia.org/wiki/Subdomain
2830
2831  Closes #11793
2832
2833Stefan Eissing (4 Sep 2023)
2834
2835- multi: more efficient pollfd count for poll
2836
2837  - do not use separate pollfds for sockets that have POLLIN+POLLOUT
2838
2839  Closes #11792
2840
2841- http2: polish things around POST
2842
2843  - added test cases for various code paths
2844  - fixed handling of blocked write when stream had
2845    been closed inbetween attempts
2846  - re-enabled DEBUGASSERT on send with smaller data size
2847
2848  - in debug builds, environment variables can be set to simulate a slow
2849    network when sending data. cf-socket.c and vquic.c support
2850    * CURL_DBG_SOCK_WBLOCK: percentage of send() calls that should be
2851      answered with a EAGAIN. TCP/UNIX sockets.
2852      This is chosen randomly.
2853    * CURL_DBG_SOCK_WPARTIAL: percentage of data that shall be written
2854      to the network. TCP/UNIX sockets.
2855      Example: 80 means a send with 1000 bytes would only send 800
2856      This is applied to every send.
2857    * CURL_DBG_QUIC_WBLOCK: percentage of send() calls that should be
2858      answered with EAGAIN. QUIC only.
2859      This is chosen randomly.
2860
2861  Closes #11756
2862
2863Daniel Stenberg (4 Sep 2023)
2864
2865- docs: add curl_global_trace to some SEE ALSO sections
2866
2867  Closes #11791
2868
2869- os400: fix checksrc nits
2870
2871  Closes #11789
2872
2873Nicholas Nethercote (3 Sep 2023)
2874
2875- hyper: remove `hyptransfer->endtask`
2876
2877  `Curl_hyper_stream` needs to distinguish between two kinds of
2878  `HYPER_TASK_EMPTY` tasks: (a) the `foreach` tasks it creates itself, and
2879  (b) background tasks that hyper produces. It does this by recording the
2880  address of any `foreach` task in `hyptransfer->endtask` before pushing
2881  it into the executor, and then comparing that against the address of
2882  tasks later polled out of the executor.
2883
2884  This works right now, but there is no guarantee from hyper that the
2885  addresses are stable. `hyper_executor_push` says "The executor takes
2886  ownership of the task, which should not be accessed again unless
2887  returned back to the user with `hyper_executor_poll`". That wording is a
2888  bit ambiguous but with my Rust programmer's hat on I read it as meaning
2889  the task returned with `hyper_executor_poll` may be conceptually the
2890  same as a task that was pushed, but that there are no other guarantees
2891  and comparing addresses is a bad idea.
2892
2893  This commit instead uses `hyper_task_set_userdata` to mark the `foreach`
2894  task with a `USERDATA_RESP_BODY` value which can then be checked for,
2895  removing the need for `hyptransfer->endtask`. This makes the code look
2896  more like that hyper C API examples, which use userdata for every task
2897  and never look at task addresses.
2898
2899  Closes #11779
2900
2901Dave Cottlehuber (3 Sep 2023)
2902
2903- ws: fix spelling mistakes in examples and tests
2904
2905  Closes #11784
2906
2907Daniel Stenberg (3 Sep 2023)
2908
2909- tool_filetime: make -z work with file dates before 1970
2910
2911  Fixes #11785
2912  Reported-by: Harry Sintonen
2913  Closes #11786
2914
2915Dan Fandrich (1 Sep 2023)
2916
2917- build: fix portability of mancheck and checksrc targets
2918
2919  At least FreeBSD preserves cwd across makefile lines, so rules
2920  consisting of more than one "cd X; do_something" must be explicitly run
2921  in a subshell to avoid this. This problem caused the Cirrus FreeBSD
2922  build to fail when parallel make jobs were enabled.
2923
2924- CI: adjust labeler match patterns for new & obsolete files
2925
2926- configure: trust pkg-config when it's used for zlib
2927
2928  The library flags retrieved from pkg-config were later thrown out and
2929  harded-coded, which negates the whole reason to use pkg-config.
2930  Also, previously, the assumption was made that --libs-only-l and
2931  --libs-only-L are the full decomposition of --libs, which is untrue and
2932  would not allow linking against a static zlib. The new approach is
2933  better in that it uses --libs, although only if --libs-only-l returns
2934  nothing.
2935
2936  Bug: https://curl.se/mail/lib-2023-08/0081.html
2937  Reported-by: Randall
2938  Closes #11778
2939
2940Stefan Eissing (1 Sep 2023)
2941
2942- CI/ngtcp2: clear wolfssl for when cache is ignored
2943
2944  Closes #11783
2945
2946Daniel Stenberg (1 Sep 2023)
2947
2948- RELEASE-NOTES: synced
2949
2950Nicholas Nethercote (1 Sep 2023)
2951
2952- hyper: fix a progress upload counter bug
2953
2954  `Curl_pgrsSetUploadCounter` should be a passed a total count, not an
2955  increment.
2956
2957  This changes the failing diff for test 579 with hyper from this:
2958  ```
2959   Progress callback called with UL 0 out of 0[LF]
2960  -Progress callback called with UL 8 out of 0[LF]
2961  -Progress callback called with UL 16 out of 0[LF]
2962  -Progress callback called with UL 26 out of 0[LF]
2963  -Progress callback called with UL 61 out of 0[LF]
2964  -Progress callback called with UL 66 out of 0[LF]
2965  +Progress callback called with UL 29 out of 0[LF]
2966  ```
2967  to this:
2968  ```
2969   Progress callback called with UL 0 out of 0[LF]
2970  -Progress callback called with UL 8 out of 0[LF]
2971  -Progress callback called with UL 16 out of 0[LF]
2972  -Progress callback called with UL 26 out of 0[LF]
2973  -Progress callback called with UL 61 out of 0[LF]
2974  -Progress callback called with UL 66 out of 0[LF]
2975  +Progress callback called with UL 40 out of 0[LF]
2976  ```
2977  Presumably a step in the right direction.
2978
2979  Closes #11780
2980
2981Daniel Stenberg (1 Sep 2023)
2982
2983- awssiv4: avoid freeing the date pointer on error
2984
2985  Since it was not allocated, don't free it even if it was wrong syntax
2986
2987  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61908
2988
2989  Follow-up to b137634ba3adb
2990
2991  Closes #11782
2992
2993Stefan Eissing (1 Sep 2023)
2994
2995- CI: ngtcp2-linux: use separate caches for tls libraries
2996
2997  allow ever changing master for wolfssl
2998
2999  Closes #11766
3000
3001- replace `master` as wolfssl-version with recent commit
3002
3003- wolfssl, use master again in CI
3004
3005  - with the shared session update fix landed in master, it
3006    is time to use that in our CI again
3007
3008Nicholas Nethercote (31 Aug 2023)
3009
3010- tests: fix formatting errors in `FILEFORMAT.md`.
3011
3012  Without the surrounding backticks, these tags get swallowed when the
3013  markdown is rendered.
3014
3015  Closes #11777
3016
3017Viktor Szakats (31 Aug 2023)
3018
3019- cmake: add support for `CURL_DEFAULT_SSL_BACKEND`
3020
3021  Allow overriding the default TLS backend via a CMake setting.
3022
3023  E.g.:
3024  `cmake [...] -DCURL_DEFAULT_SSL_BACKEND=mbedtls`
3025
3026  Accepted values: bearssl, gnutls, mbedtls, openssl, rustls,
3027  schannel, secure-transport, wolfssl
3028
3029  The passed string is baked into the curl/libcurl binaries.
3030  The value is case-insensitive.
3031
3032  We added a similar option to autotools in 2017 via
3033  c7170e20d0a18ec8a514b4daa53bcdbb4dcb3a05.
3034
3035  TODO: Convert to lowercase to improve reproducibility.
3036
3037  Closes #11774
3038
3039- sectransp: fix compiler warnings
3040
3041  https://github.com/curl/curl-for-win/actions/runs/6037489221/job/16381860220#
3042  step:3:11046
3043  ```
3044  /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:2435:1
3045  4: warning: unused variable 'success' [-Wunused-variable]
3046      OSStatus success;
3047               ^
3048  /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:3300:4
3049  4: warning: unused parameter 'sha256len' [-Wunused-parameter]
3050                                      size_t sha256len)
3051                                             ^
3052  ```
3053
3054  Closes #11773
3055
3056- tidy-up: mostly whitespace nits
3057
3058  - delete completed TODO from `./CMakeLists.txt`.
3059  - convert a C++ comment to C89 in `./CMake/CurlTests.c`.
3060  - delete duplicate EOLs from EOF.
3061  - add missing EOL at EOF.
3062  - delete whitespace at EOL (except from expected test results).
3063  - convert tabs to spaces.
3064  - convert CRLF EOLs to LF in GHA yaml.
3065  - text casing fixes in `./CMakeLists.txt`.
3066  - fix a codespell typo in `packages/OS400/initscript.sh`.
3067
3068  Closes #11772
3069
3070Dan Fandrich (31 Aug 2023)
3071
3072- CI: remove Windows builds from Cirrus, without replacement
3073
3074  If we don't do this, all coverage on Cirrus will cease in a few days. By
3075  removing the Windows builds, the FreeBSD one should still continue
3076  as before. The Windows builds will need be moved to another service to
3077  maintain test coverage.
3078
3079  Closes #11771
3080
3081- CI: switch macOS ARM build from Cirrus to Circle CI
3082
3083  Cirrus is drastically reducing their free tier on Sept. 1, so they will
3084  no longer perform all these builds for us. All but one build has been
3085  moved, with the LibreSSL one being dropped because of linking problems
3086  on Circle.
3087
3088  One important note about this change is that Circle CI is currently
3089  directing all these builds to x86_64 hardware, despite them requesting
3090  ARM. This is because ARM nodes are scheduled to be available on the
3091  free tier only in December. This reduces our architectural diversity
3092  until then but it should automatically come back once those machines are
3093  enabled.
3094
3095- CI: use the right variable for BSD make
3096
3097  BSD uses MAKEFLAGS instead of MAKE_FLAGS so it wasn't doing parallel
3098  builds before.
3099
3100- CI: drop the FreeBSD 12.X build
3101
3102  Cirrus' new free tier won't let us have many builds, so drop the
3103  nonessential ones. The FreeBSD 13.X build will still give us the most
3104  relevant FreeBSD coverage.
3105
3106- CI: move the Alpine build from Cirrus to GHA
3107
3108  Cirrus is reducing their free tier to next to nothing, so we must move
3109  builds elsewhere.
3110
3111Stefan Eissing (30 Aug 2023)
3112
3113- test_07_upload.py: fix test_07_34 curl args
3114
3115  - Pass correct filename to --data-binary.
3116
3117  Prior to this change --data-binary was passed an incorrect filename due
3118  to a missing separator in the arguments list. Since aacbeae7 curl will
3119  error on incorrect filenames for POST.
3120
3121  Fixes https://github.com/curl/curl/issues/11761
3122  Closes https://github.com/curl/curl/pull/11763
3123
3124Nicholas Nethercote (30 Aug 2023)
3125
3126- tests: document which tests fail due to hyper's lack of trailer support.
3127
3128  Closes #11762
3129
3130- docs: removing "pausing transfers" from HYPER.md.
3131
3132  It's a reference to #8600, which was fixed by #9070.
3133
3134  Closes #11764
3135
3136Patrick Monnerat (30 Aug 2023)
3137
3138- os400: handle CURL_TEMP_PRINTF() while building bind source
3139
3140  Closes #11547
3141
3142- os400: build test servers
3143
3144  Also fix a non-compliant main prototype in disabled.c.
3145
3146  Closes #11547
3147
3148- tests: fix compilation error for os400
3149
3150  OS400 uses BSD 4.3 setsockopt() prototype by default: this does not
3151  define parameter as const, resulting in an error if actual parameter is
3152  const. Remove the const keyword from the actual parameter cast: this
3153  works in all conditions, even if the formal parameter uses it.
3154
3155  Closes #11547
3156
3157- os400: make programs and command name configurable
3158
3159  Closes #11547
3160
3161- os400: move build configuration parameters to a separate script
3162
3163  They can then easily be overriden in a script named "config400.override"
3164  that is not part of the distribution.
3165
3166  Closes #11547
3167
3168- os400: implement CLI tool
3169
3170  This is provided as a QADRT (ascii) program, a link to it in the IFS and
3171  a minimal CL command.
3172
3173  Closes #11547
3174
3175Matthias Gatto (30 Aug 2023)
3176
3177- lib: fix aws-sigv4 having date header twice in some cases
3178
3179  When the user was providing the header X-XXX-Date, the header was
3180  re-added during signature computation, and we had it twice in the
3181  request.
3182
3183  Reported-by: apparentorder@users.noreply.github.com
3184
3185  Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
3186
3187  Fixes: https://github.com/curl/curl/issues/11738
3188  Closes: https://github.com/curl/curl/pull/11754
3189
3190Jay Satiro (30 Aug 2023)
3191
3192- multi: remove 'processing: <url>' debug message
3193
3194  - Remove debug message added by e024d566.
3195
3196  Closes https://github.com/curl/curl/pull/11759
3197
3198- ftp: fix temp write of ipv6 address
3199
3200  - During the check to differentiate between a port and IPv6 address
3201    without brackets, write the binary IPv6 address to an in6_addr.
3202
3203  Prior to this change the binary IPv6 address was erroneously written to
3204  a sockaddr_in6 'sa6' when it should have been written to its in6_addr
3205  member 'sin6_addr'. There's no fallout because no members of 'sa6' are
3206  accessed before it is later overwritten.
3207
3208  Closes https://github.com/curl/curl/pull/11747
3209
3210- tool: change some fopen failures from warnings to errors
3211
3212  - Error on missing input file for --data, --data-binary,
3213    --data-urlencode, --header, --variable, --write-out.
3214
3215  Prior to this change if a user of the curl tool specified an input file
3216  for one of the above options and that file could not be opened then it
3217  would be treated as zero length data instead of an error. For example, a
3218  POST using `--data @filenametypo` would cause a zero length POST which
3219  is probably not what the user intended.
3220
3221  Closes https://github.com/curl/curl/pull/11677
3222
3223- hostip: fix typo
3224
3225Davide Masserut (29 Aug 2023)
3226
3227- tool: avoid including leading spaces in the Location hyperlink
3228
3229  Co-authored-by: Dan Fandrich <dan@coneharvesters.com>
3230
3231  Closes #11735
3232
3233Daniel Stenberg (29 Aug 2023)
3234
3235- SECURITY-PROCESS.md: not a sec issue: Tricking user to run a cmdline
3236
3237  Closes #11757
3238
3239- connect: stop halving the remaining timeout when less than 600 ms left
3240
3241  When curl wants to connect to a host, it always has a TIMEOUT. The
3242  maximum time it is allowed to spend until a connect is confirmed.
3243
3244  curl will try to connect to each of the IP adresses returned for the
3245  host. Two loops, one for each IP family.
3246
3247  During the connect loop, while curl has more than one IP address left to
3248  try within a single address family, curl has traditionally allowed (time
3249  left/2) for *this* connect attempt. This, to not get stuck on the
3250  initial addresses in case the timeout but still allow later addresses to
3251  get attempted.
3252
3253  This has the downside that when users set a very short timeout and the
3254  host has a large number of IP addresses, the effective result might be
3255  that every attempt gets a little too short time.
3256
3257  This change stop doing the divided-by-two if the total time left is
3258  below a threshold. This threshold is 600 milliseconds.
3259
3260  Closes #11693
3261
3262- asyn-ares: reduce timeout to 2000ms
3263
3264  When UDP packets get lost this makes for slightly faster retries. This
3265  lower timeout is used by @c-ares itself by default starting next
3266  release.
3267
3268  Closes #11753
3269
3270John Bampton (29 Aug 2023)
3271
3272- misc: remove duplicate words
3273
3274  Closes #11740
3275
3276Daniel Stenberg (29 Aug 2023)
3277
3278- RELEASE-NOTES: synced
3279
3280- wolfSSL: avoid the OpenSSL compat API when not needed
3281
3282  ... and instead call wolfSSL functions directly.
3283
3284  Closes #11752
3285
3286Viktor Szakats (28 Aug 2023)
3287
3288- lib: fix null ptr derefs and uninitialized vars (h2/h3)
3289
3290  Fixing compiler warnings with gcc 13.2.0 in unity builds.
3291
3292  Assisted-by: Jay Satiro
3293  Assisted-by: Stefan Eissing
3294  Closes #11739
3295
3296Jay Satiro (28 Aug 2023)
3297
3298- secureserver.pl: fix stunnel version parsing
3299
3300  - Allow the stunnel minor-version version part to be zero.
3301
3302  Prior to this change with the stunnel version scheme of <major>.<minor>
3303  if either part was 0 then version parsing would fail, causing
3304  secureserver.pl to fail with error "No stunnel", causing tests that use
3305  the SSL protocol to be skipped. As a practical matter this bug can only
3306  be caused by a minor-version part of 0, since the major-version part is
3307  always greater than 0.
3308
3309  Closes https://github.com/curl/curl/pull/11722
3310
3311- secureserver.pl: fix stunnel path quoting
3312
3313  - Store the stunnel path in the private variable $stunnel unquoted and
3314    instead quote it in the command strings.
3315
3316  Prior to this change the quoted stunnel path was passed to perl's file
3317  operators which cannot handle quoted paths. For example:
3318
3319  $stunnel = "\"/C/Program Files (x86)/stunnel/bin/tstunnel\"";
3320  if(-x $stunnel or -x "$stunnel")
3321  # false even if path exists and is executable
3322
3323  Our other test scripts written in perl, unlike this one, use servers.pm
3324  which has a global $stunnel variable with the path stored unquoted and
3325  therefore those scripts don't have this problem.
3326
3327  Closes https://github.com/curl/curl/pull/11721
3328
3329Daniel Stenberg (28 Aug 2023)
3330
3331- altsvc: accept and parse IPv6 addresses in response headers
3332
3333  Store numerical IPv6 addresses in the alt-svc file with the brackets
3334  present.
3335
3336  Verify with test 437 and 438
3337
3338  Fixes #11737
3339  Reported-by: oliverpool on github
3340  Closes #11743
3341
3342- libtest: use curl_free() to free libcurl allocated data
3343
3344  In several test programs. These mistakes are not detected or a problem
3345  as long as memdebug.h is included, as that provides the debug wrappers
3346  for all memory functions in the same style libcurl internals do it,
3347  which makes curl_free and free effectively the same call.
3348
3349  Reported-by: Nicholas Nethercote
3350  Closes #11746
3351
3352Jay Satiro (28 Aug 2023)
3353
3354- disable.d: explain --disable not implemented prior to 7.50.0
3355
3356  Option -q/--disable was added in 5.0 but only -q was actually
3357  implemented. Later --disable was implemented in e200034 (precedes
3358  7.49.0), but incorrectly, and fixed in 6dbc23c (precedes 7.50.0).
3359
3360  Reported-by: pszlazak@users.noreply.github.com
3361
3362  Fixes https://github.com/curl/curl/issues/11710
3363  Closes #11712
3364
3365Nicholas Nethercote (28 Aug 2023)
3366
3367- hyper: fix ownership problems
3368
3369  Some of these changes come from comparing `Curl_http` and
3370  `start_CONNECT`, which are similar, and adding things to them that are
3371  present in one and missing in another.
3372
3373  The most important changes:
3374  - In `start_CONNECT`, add a missing `hyper_clientconn_free` call on the
3375    happy path.
3376  - In `start_CONNECT`, add a missing `hyper_request_free` on the error
3377    path.
3378  - In `bodysend`, add a missing `hyper_body_free` on an early-exit path.
3379  - In `bodysend`, remove an unnecessary `hyper_body_free` on a different
3380    error path that would cause a double-free.
3381    https://docs.rs/hyper/latest/hyper/ffi/fn.hyper_request_set_body.html
3382    says of `hyper_request_set_body`: "This takes ownership of the
3383    hyper_body *, you must not use it or free it after setting it on the
3384    request." This is true even if `hyper_request_set_body` returns an
3385    error; I confirmed this by looking at the hyper source code.
3386
3387  Other changes are minor but make things slightly nicer.
3388
3389  Closes #11745
3390
3391Daniel Stenberg (28 Aug 2023)
3392
3393- multi.h: the 'revents' field of curl_waitfd is supported
3394
3395  Since 6d30f8ebed34e7276
3396
3397  Reported-by: Nicolás Ojeda Bär
3398  Ref: #11748
3399  Closes #11749
3400
3401Gerome Fournier (27 Aug 2023)
3402
3403- tool_paramhlp: improve str2num(): avoid unnecessary call to strlen()
3404
3405  Closes #11742
3406
3407Daniel Stenberg (27 Aug 2023)
3408
3409- docs: mention critical files in same directories as curl saves
3410
3411  ... cannot be fully protected. Don't do it.
3412
3413  Co-authored-by: Jay Satiro
3414  Reported-by: Harry Sintonen
3415  Fixes #11530
3416  Closes #11701
3417
3418John Hawthorn (26 Aug 2023)
3419
3420- OpenSSL: clear error queue after SSL_shutdown
3421
3422  We've seen errors left in the OpenSSL error queue (specifically,
3423  "shutdown while in init") by adding some logging it revealed that the
3424  source was this file.
3425
3426  Since we call SSL_read and SSL_shutdown here, but don't check the return
3427  code for an error, we should clear the OpenSSL error queue in case one
3428  was raised.
3429
3430  This didn't affect curl because we call ERR_clear_error before every
3431  write operation (a0dd9df9ab35528eb9eb669e741a5df4b1fb833c), but when
3432  libcurl is used in a process with other OpenSSL users, they may detect
3433  an OpenSSL error pushed by libcurl's SSL_shutdown as if it was their
3434  own.
3435
3436  Co-authored-by: Satana de Sant'Ana <satana@skylittlesystem.org>
3437
3438  Closes #11736
3439
3440Alexander Kanavin (25 Aug 2023)
3441
3442- tests: update cookie expiry dates to far in the future
3443
3444  This allows testing Y2038 with system time set to after that, so that
3445  actual Y2038 issues can be exposed, and not masked by expiry errors.
3446
3447  Fixes #11576
3448  Closes #11610
3449
3450John Bampton (25 Aug 2023)
3451
3452- misc: fix spelling
3453
3454  Closes #11733
3455
3456Daniel Stenberg (25 Aug 2023)
3457
3458- cmdline-opts/page-header: clarify stronger that !opt == URL
3459
3460  Everything provided on the command line that is not an option (or an
3461  argument to an option) is treated as a URL.
3462
3463  Closes #11734
3464
3465- tests/runner: fix %else handling
3466
3467  Getting the show state proper for %else and %endif did not properly work
3468  in nested cases.
3469
3470  Follow-up to 3d089c41ea9
3471
3472  Closes #11731
3473
3474Nicholas Nethercote (25 Aug 2023)
3475
3476- docs: Remove mention of #10803 from `KNOWN_BUGS`.
3477
3478  Because the leaks have been fixed.
3479
3480- c-hyper: fix another memory leak in `Curl_http`.
3481
3482  There is a `hyper_clientconn_free` call on the happy path, but not one
3483  on the error path. This commit adds one.
3484
3485  Fixes the second memory leak reported by Valgrind in #10803.
3486
3487  Fixes #10803
3488  Closes #11729
3489
3490- c-hyper: fix a memory leak in `Curl_http`.
3491
3492  A request created with `hyper_request_new` must be consumed by either
3493  `hyper_clientconn_send` or `hyper_request_free`.
3494
3495  This is not terrifically clear from the hyper docs --
3496  `hyper_request_free` is documented only with "Free an HTTP request if
3497  not going to send it on a client" -- but a perusal of the hyper code
3498  confirms it.
3499
3500  This commit adds a `hyper_request_free` to the `error:` path in
3501  `Curl_http` so that the request is consumed when an error occurs after
3502  the request is created but before it is sent.
3503
3504  Fixes the first memory leak reported by Valgrind in #10803.
3505
3506  Closes #11729
3507
3508Daniel Stenberg (25 Aug 2023)
3509
3510- RELEASE-NOTES: synced
3511
3512John Bampton (25 Aug 2023)
3513
3514- misc: spellfixes
3515
3516  Closes #11730
3517
3518Daniel Stenberg (25 Aug 2023)
3519
3520- tests: add support for nested %if conditions
3521
3522  Provides more flexiblity to test cases.
3523
3524  Also warn and bail out if there is an '%else' or %endif' without a
3525  preceeding '%if'.
3526
3527  Ref: #11610
3528  Closes #11728
3529
3530- time-cond.d: mention what happens on a missing file
3531
3532  Closes #11727
3533
3534Christian Hesse (24 Aug 2023)
3535
3536- docs/cmdline-opts: match the current output
3537
3538  The release date has been added in output, reflect that in documentation.
3539
3540  Closes #11723
3541
3542Daniel Stenberg (24 Aug 2023)
3543
3544- lib: minor comment corrections
3545
3546- docs: rewrite to present tense
3547
3548  ... instead of using future tense.
3549
3550  + numerous cleanups and improvements
3551  + stick to "reuse" not "re-use"
3552  + fewer contractions
3553
3554  Closes #11713
3555
3556- urlapi: setting a blank URL ("") is not an ok URL
3557
3558  Test it in 1560
3559  Fixes #11714
3560  Reported-by: ad0p on github
3561  Closes #11715
3562
3563- spelling: use 'reuse' not 're-use' in code and elsewhere
3564
3565  Unify the spelling as both versions were previously used intermittently
3566
3567  Closes #11717
3568
3569Michael Osipov (23 Aug 2023)
3570
3571- system.h: add CURL_OFF_T definitions on HP-UX with HP aCC
3572
3573  HP-UX on IA64 provides two modes: 32 and 64 bit while 32 bit being the
3574  default one. Use "long long" in 32 bit mode and just "long" in 64 bit
3575  mode.
3576
3577  Closes #11718
3578
3579Dan Fandrich (22 Aug 2023)
3580
3581- tests: don't call HTTP errors OK in test cases
3582
3583  Some HTTP errors codes were accompanied by the text OK, which causes
3584  some cognitive dissonance when reading them.
3585
3586- http: close the connection after a late 417 is received
3587
3588  In this situation, only part of the data has been sent before aborting
3589  so the connection is no longer usable.
3590
3591  Assisted-by: Jay Satiro
3592  Fixes #11678
3593  Closes #11679
3594
3595- runtests: slightly increase the longest log file displayed
3596
3597  The new limit provides enough space for a 64 KiB data block to be logged
3598  in a trace file, plus a few lines at the start and end for context. This
3599  happens to be the amount of data sent at a time in a PUT request.
3600
3601- tests: add delay command to the HTTP server
3602
3603  This adds a delay after client connect.
3604
3605Daniel Stenberg (22 Aug 2023)
3606
3607- cirrus: install everthing with pkg, avoid pip
3608
3609  Assisted-by: Sevan Janiyan
3610
3611  Closes #11711
3612
3613- curl_url*.3: update function descriptions
3614
3615  - expand and clarify several descriptions
3616  - avoid using future tense all over
3617
3618  Closes #11708
3619
3620- RELEASE-NOTES: synced
3621
3622Stefan Eissing (21 Aug 2023)
3623
3624- CI/cirrus: disable python install on FreeBSD
3625
3626  - python cryptography package does not build build FreeBSD
3627  - install just mentions "error"
3628  - this gets the build and the main test suite going again
3629
3630  Closes #11705
3631
3632- test2600: fix flakiness on low cpu
3633
3634  - refs #11355 where failures to to low cpu resources in CI
3635    are reported
3636  - vastly extend CURLOPT_CONNECTTIMEOUT_MS and max durations
3637    to test cases
3638  - trigger Curl_expire() in test filter to allow re-checks before
3639    the usual 1second interval
3640
3641  Closes #11690
3642
3643Maksim Sciepanienka (20 Aug 2023)
3644
3645- tool_urlglob: use the correct format specifier for curl_off_t in msnprintf
3646
3647  Closes #11698
3648
3649Daniel Stenberg (20 Aug 2023)
3650
3651- test687/688: two more basic --xattr tests
3652
3653  Closes #11697
3654
3655- cmdline-opts/docs: mentioned the negative option part
3656
3657  ... for --no-alpn and --no-buffer in the same style done for other --no-
3658  options:
3659
3660  "Note that this is the negated option name documented."
3661
3662  Closes #11695
3663
3664Emanuele Torre (19 Aug 2023)
3665
3666- tool/var: also error when expansion result starts with NUL
3667
3668  Expansions whose output starts with NUL were being expanded to the empty
3669  string, and not being recognised as values that contain a NUL byte, and
3670  should error.
3671
3672  Closes #11694
3673
3674Daniel Stenberg (19 Aug 2023)
3675
3676- tests: add 'large-time' as a testable feature
3677
3678  This allows test cases to require this feature to run and to be used in
3679  %if conditions.
3680
3681  Large here means larger than 32 bits. Ie does not suffer from y2038.
3682
3683  Closes #11696
3684
3685- tests/Makefile: add check-translatable-options.pl to tarball
3686
3687  Used in test 1544
3688
3689  Follow-up to ae806395abc8c
3690
3691- gen.pl: fix a long version generation mistake
3692
3693  Too excessive escaping made the parsing not find the correct long names
3694  later and instead add "wrong" links.
3695
3696  Follow-up to 439ff2052e219
3697
3698  Reported-by: Lukas Tribus
3699  Fixes #11688
3700  Closes #11689
3701
3702- lib: move mimepost data from ->req.p.http to ->state
3703
3704  When the legacy CURLOPT_HTTPPOST option is used, it gets converted into
3705  the modem mimpost struct at first use. This data is (now) kept for the
3706  entire transfer and not only per single HTTP request. This re-enables
3707  rewind in the beginning of the second request instead of in end of the
3708  first, as brought by 1b39731.
3709
3710  The request struct is per-request data only.
3711
3712  Extend test 650 to verify.
3713
3714  Fixes #11680
3715  Reported-by: yushicheng7788 on github
3716  Closes #11682
3717
3718Patrick Monnerat (17 Aug 2023)
3719
3720- os400: do not check translatable options at build time
3721
3722  Now that there is a test for this, the build time check is not needed
3723  anymore.
3724
3725  Closes #11650
3726
3727- test1554: check translatable string options in OS400 wrapper
3728
3729  This test runs a perl script that checks all string options are properly
3730  translated by the OS400 character code conversion wrapper. It also
3731  verifies these options are listed in alphanumeric order in the wrapper
3732  switch statement.
3733
3734  Closes #11650
3735
3736Daniel Stenberg (17 Aug 2023)
3737
3738- unit3200: skip testing if function is not present
3739
3740  Fake a successful run since we have no easy mechanism to skip this test
3741  for this advanced condition.
3742
3743- unit2600: fix build warning if built without verbose messages
3744
3745- test1608: make it build and get skipped without shuffle DNS support
3746
3747- lib: --disable-bindlocal builds curl without local binding support
3748
3749- test1304: build and skip without netrc support
3750
3751- lib: build fixups when built with most things disabled
3752
3753  Closes #11687
3754
3755- workflows/macos.yml: disable zstd and alt-svc in the http-only build
3756
3757  Closes #11683
3758
3759Stefan Eissing (17 Aug 2023)
3760
3761- bearssl: handshake fix, provide proper get_select_socks() implementation
3762
3763  - bring bearssl handshake times down from +200ms down to other TLS backends
3764  - vtls: improve generic get_select_socks() implementation
3765  - tests: provide Apache with a suitable ssl session cache
3766
3767  Closes #11675
3768
3769- tests: TLS session sharing test
3770
3771  - test TLS session sharing with special test client
3772  - expect failure with wolfSSL
3773  - disable flaky wolfSSL test_02_07b
3774
3775  Closes #11675
3776
3777Daniel Stenberg (17 Aug 2023)
3778
3779- CURLOPT_*TIMEOUT*: extend and clarify
3780
3781  Closes #11686
3782
3783- urlapi: return CURLUE_BAD_HOSTNAME if puny2idn encoding fails
3784
3785  And document it. Only return out of memory when it actually is a memory
3786  problem.
3787
3788  Pointed-out-by: Jacob Mealey
3789  Closes #11674
3790
3791Mathew Benson (17 Aug 2023)
3792
3793- cmake: add GnuTLS option
3794
3795  - Option to use GNUTLS was missing. Hence was not able to use GNUTLS
3796    with ngtcp2 for http3.
3797
3798  Closes #11685
3799
3800Daniel Stenberg (16 Aug 2023)
3801
3802- RELEASE-NOTES: synced
3803
3804- http: remove the p_pragma struct field
3805
3806  unused since 40e8b4e52 (2008)
3807
3808  Closes #11681
3809
3810Jay Satiro (16 Aug 2023)
3811
3812- CURLINFO_CERTINFO.3: better explain curl_certinfo struct
3813
3814  Closes https://github.com/curl/curl/pull/11666
3815
3816- CURLINFO_TLS_SSL_PTR.3: clarify a recommendation
3817
3818  - Remove the out-of-date SSL backend list supported by
3819    CURLOPT_SSL_CTX_FUNCTION.
3820
3821  It makes more sense to just refer to that document instead of having
3822  a separate list that has to be kept in sync.
3823
3824  Closes https://github.com/curl/curl/pull/11665
3825
3826- write-out.d: clarify %{time_starttransfer}
3827
3828  sync it up with CURLINFO_STARTTRANSFER_TIME_T
3829
3830Daniel Stenberg (15 Aug 2023)
3831
3832- transfer: don't set TIMER_STARTTRANSFER on first send
3833
3834  The time stamp is for measuring the first *received* byte
3835
3836  Fixes #11669
3837  Reported-by: JazJas on github
3838  Closes #11670
3839
3840trrui-huawei (15 Aug 2023)
3841
3842- quiche: enable quiche to handle timeout events
3843
3844  In parallel with ngtcp2, quiche also offers the `quiche_conn_on_timeout`
3845  interface for the application to invoke upon timer
3846  expiration. Therefore, invoking the `on_timeout` function of the
3847  Connection is crucial to ensure seamless functionality of quiche with
3848  timeout events.
3849
3850  Closes #11654
3851
3852- quiche: adjust quiche `QUIC_IDLE_TIMEOUT` to 60s
3853
3854  Set the `QUIC_IDLE_TIMEOUT` parameter to match ngtcp2 for consistency.
3855
3856Daniel Stenberg (15 Aug 2023)
3857
3858- KNOWN_BUGS: LDAPS requests to ActiveDirectory server hang
3859
3860  Closes #9580
3861
3862- imap: add a check for failing strdup()
3863
3864- imap: remove the only sscanf() call in the IMAP code
3865
3866  Avoids the use of a stack buffer.
3867
3868  Closes #11673
3869
3870- imap: use a dynbuf in imap_atom
3871
3872  Avoid a calculation + malloc. Build the output in a dynbuf.
3873
3874  Closes #11672
3875
3876Marin Hannache (14 Aug 2023)
3877
3878- http: do not require a user name when using CURLAUTH_NEGOTIATE
3879
3880  In order to get Negotiate (SPNEGO) authentication to work in HTTP you
3881  used to be required to provide a (fake) user name (this concerned both
3882  curl and the lib) because the code wrongly only considered
3883  authentication if there was a user name provided, as in:
3884
3885    curl -u : --negotiate https://example.com/
3886
3887  This commit leverages the `struct auth` want member to figure out if the
3888  user enabled CURLAUTH_NEGOTIATE, effectively removing the requirement of
3889  setting a user name both in curl and the lib.
3890
3891  Signed-off-by: Marin Hannache <git@mareo.fr>
3892  Reported-by: Enrico Scholz
3893  Fixes https://sourceforge.net/p/curl/bugs/440/
3894  Fixes #1161
3895  Closes #9047
3896
3897Viktor Szakats (13 Aug 2023)
3898
3899- build: streamline non-UWP wincrypt detections
3900
3901  - with CMake, use the variable `WINDOWS_STORE` to detect an UWP build
3902    and disable our non-UWP-compatible use the Windows crypto API. This
3903    allows to drop two dynamic feature checks.
3904
3905    `WINDOWS_STORE` is true when invoking CMake with
3906    `CMAKE_SYSTEM_NAME` == `WindowsStore`. Introduced in CMake v3.1.
3907
3908    Ref: https://cmake.org/cmake/help/latest/variable/WINDOWS_STORE.html
3909
3910  - with autotools, drop the separate feature check for `wincrypt.h`. On
3911    one hand this header has been present for long (even Borland C 5.5 had
3912    it from year 2000), on the other we used the check result solely to
3913    enable another check for certain crypto functions. This fails anyway
3914    with the header not present. We save one dynamic feature check at the
3915    configure stage.
3916
3917  Reviewed-by: Marcel Raad
3918  Closes #11657
3919
3920Nicholas Nethercote (13 Aug 2023)
3921
3922- docs/HYPER.md: update hyper build instructions
3923
3924  Nightly Rust and `-Z unstable-options` are not needed.
3925
3926  The instructions here now match the hyper docs exactly:
3927  https://github.com/hyperium/hyper/commit/bd7928f3dd6a8461f0f0fdf7ee0fd95c2f15
3928  6f88
3929
3930  Closes #11662
3931
3932Daniel Stenberg (13 Aug 2023)
3933
3934- RELEASE-NOTES: synced
3935
3936- urlapi: CURLU_PUNY2IDN - convert from punycode to IDN name
3937
3938  Asssisted-by: Jay Satiro
3939  Closes #11655
3940
3941- spellcheck: adapt to backslashed minuses
3942
3943  As the curl.1 has more backslashed minus, the cleanup sed lines xneed to
3944  adapt.
3945
3946  Adjusted some docs slighly.
3947
3948  Follow-up to 439ff2052e
3949
3950  Closes #11663
3951
3952- gen: escape more minus
3953
3954  Detected since it was still hard to search for option names using dashes
3955  in the middle in the man page.
3956
3957  Closes #11660
3958
3959- cookie-jar.d: enphasize that this option is ONLY writing cookies
3960
3961  Reported-by: Dan Jacobson
3962  Tweaked-by: Jay Satiro
3963  Ref: #11642
3964  Closes #11661
3965
3966Nicholas Nethercote (11 Aug 2023)
3967
3968- docs/HYPER.md: document a workaround for a link error
3969
3970  Closes #11653
3971
3972Jay Satiro (11 Aug 2023)
3973
3974- schannel: verify hostname independent of verify cert
3975
3976  Prior to this change when CURLOPT_SSL_VERIFYPEER (verifypeer) was off
3977  and CURLOPT_SSL_VERIFYHOST (verifyhost) was on we did not verify the
3978  hostname in schannel code.
3979
3980  This fixes KNOWN_BUG 2.8 "Schannel disable CURLOPT_SSL_VERIFYPEER and
3981  verify hostname". We discussed a fix several years ago in #3285 but it
3982  went stale.
3983
3984  Assisted-by: Daniel Stenberg
3985
3986  Bug: https://curl.haxx.se/mail/lib-2018-10/0113.html
3987  Reported-by: Martin Galvan
3988
3989  Ref: https://github.com/curl/curl/pull/3285
3990
3991  Fixes https://github.com/curl/curl/issues/3284
3992  Closes https://github.com/curl/curl/pull/10056
3993
3994Daniel Stenberg (11 Aug 2023)
3995
3996- curl_quiche: remove superfluous NULL check
3997
3998  'stream' is always non-NULL at this point
3999
4000  Pointed out by Coverity
4001
4002  Closes #11656
4003
4004- curl/urlapi.h: tiny typo
4005
4006- github/labeler: make HYPER.md set Hyper and not TLS
4007
4008- docs/cmdline-opts/gen.pl: hide "added in" before 7.50.0
4009
4010  7.50.0 shipped on Jul 21 2016, over seven years ago. We no longer need
4011  to specify version changes for earlier releases in the generated output.
4012
4013  This ups the limit from the previous 7.30.0 (Apr 12 2013)
4014
4015  This hides roughly 35 "added in" mentions.
4016
4017  Closes #11651
4018
4019Jay Satiro (10 Aug 2023)
4020
4021- bug_report: require reporters to specify curl and os versions
4022
4023  - Change curl version and os sections from single-line input to
4024    multi-line textarea.
4025
4026  - Require curl version and os sections to be filled out before report
4027    can be submitted.
4028
4029  Closes https://github.com/curl/curl/pull/11636
4030
4031Daniel Stenberg (9 Aug 2023)
4032
4033- gen.pl: replace all single quotes with aq
4034
4035  - this prevents man from using a unicode sequence for them
4036  - which then allows search to work properly
4037
4038  Closes #11645
4039
4040Viktor Szakats (9 Aug 2023)
4041
4042- cmake: fix to use variable for the curl namespace
4043
4044  Replace (wrong) literal with a variable to specify the curl
4045  namespace.
4046
4047  Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 #11505
4048
4049  Reported-by: balikalina on Github
4050  Fixes https://github.com/curl/curl/commit/1199308dbc902c52be67fc805c72dd25825
4051  20d30#r123923098
4052  Closes #11629
4053
4054- cmake: allow `SHARE_LIB_OBJECT=ON` on all platforms
4055
4056  2ebc74c36a19a1700af394c16855ce144d9878e3 #11546 introduced sharing
4057  libcurl objects for shared and static targets.
4058
4059  The above automatically enabled for Windows builds, with an option to
4060  disable with `SHARE_LIB_OBJECT=OFF`.
4061
4062  This patch extend this feature to all platforms as a manual option.
4063  You can enable it by setting `SHARE_LIB_OBJECT=ON`. Then shared objects
4064  are built in PIC mode, meaning the static lib will also have PIC code.
4065
4066  [EXPERIMENTAL]
4067
4068  Closes #11627
4069
4070- cmake: assume `wldap32` availability on Windows
4071
4072  This system library first shipped with Windows ME, available as an extra
4073  install for some older releases (according to [1]). The import library
4074  was present already in old MinGW 3.4.2 (year 2007).
4075
4076  Drop the feature check and its associated `HAVE_WLDAP32` variable.
4077
4078  To manually disable `wldap32`, you can use the `USE_WIN32_LDAP=OFF`
4079  CMake option, like before.
4080
4081  [1]: https://dlcdn.apache.org/httpd/binaries/win32/LEGACY.html
4082
4083  Reviewed-by: Jay Satiro
4084  Closes #11624
4085
4086Daniel Stenberg (9 Aug 2023)
4087
4088- page-header: move up a URL paragraph from GLOBBING to URL
4089
4090- variable.d: output the function names table style
4091
4092  Also correct the url function name in the header
4093
4094  Closes #11641
4095
4096- haproxy-clientip.d: remove backticks
4097
4098  This is not markdown
4099
4100  Follow-up to 0a75964d0d94a4
4101
4102  Closes #11639
4103
4104- RELEASE-NOTES: synced
4105
4106- gen.pl: escape all dashes (ascii minus) to avoid unicode hyphens
4107
4108  Reported-by: FC Stegerman
4109  Fixes #11635
4110  Closes #11637
4111
4112- cmdline-opts/page-header: reorder, clean up
4113
4114  - removed some unnecessary blurb to focus
4115  - moved up the more important URL details
4116  - put "globbing" into its own subtitle and moved down a little
4117  - mention the online man page in the version section
4118
4119  Closes #11638
4120
4121- c-hyper: adjust the hyper to curlcode conversion
4122
4123  Closes #11621
4124
4125- test2306: make it use a persistent connection
4126
4127  + enable verbose already from the start
4128
4129  Closes #11621
4130
4131eppesuig (8 Aug 2023)
4132
4133- list-only.d: mention SFTP as supported protocol
4134
4135  Closes #11628
4136
4137Daniel Stenberg (8 Aug 2023)
4138
4139- request.d: use .TP for protocol "labels"
4140
4141  To render the section nicer in man page.
4142
4143  Closes #11630
4144
4145- cf-haproxy: make CURLOPT_HAPROXY_CLIENT_IP set the *source* IP
4146
4147  ... as documented.
4148
4149  Update test 3201 and 3202 accordingly.
4150
4151  Reported-by: Markus Sommer
4152  Fixes #11619
4153  Closes #11626
4154
4155- page-footer: QLOGDIR works with ngtcp2 and quiche
4156
4157  It previously said "both" backends which is confusing as we currently
4158  have three...
4159
4160  Closes #11631
4161
4162Stefan Eissing (8 Aug 2023)
4163
4164- http3: quiche, handshake optimization, trace cleanup
4165
4166  - load x509 store after clienthello
4167  - cleanup of tracing
4168
4169  Closes #11618
4170
4171Daniel Stenberg (8 Aug 2023)
4172
4173- ngtcp2: remove dead code
4174
4175  'result' is always zero (CURLE_OK) at this point
4176
4177  Detected by Coverity
4178
4179  Closes #11622
4180
4181Viktor Szakats (8 Aug 2023)
4182
4183- openssl: auto-detect `SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED`
4184
4185  OpenSSL 1.1.1 defines this macro, but no ealier version, or any of the
4186  popular forks (yet). Use the macro itself to detect its presence,
4187  replacing the hard-wired fork-specific conditions.
4188
4189  This way the feature will enable automatically when forks implement it,
4190  while also shorter and possibly requiring less future maintenance.
4191
4192  Follow-up to 94241a9e78397a2aaf89a213e6ada61e7de7ee02 #6721
4193
4194  Reviewed-by: Jay Satiro
4195  Closes #11617
4196
4197- openssl: use `SSL_CTX_set_ciphersuites` with LibreSSL 3.4.1
4198
4199  LibreSSL 3.4.1 (2021-10-14) added support for
4200  `SSL_CTX_set_ciphersuites`.
4201
4202  Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.1-relnotes.txt
4203
4204  Reviewed-by: Jay Satiro
4205  Closes #11616
4206
4207- openssl: use `SSL_CTX_set_keylog_callback` with LibreSSL 3.5.0
4208
4209  LibreSSL 3.5.0 (2022-02-24) added support for
4210  `SSL_CTX_set_keylog_callback`.
4211
4212  Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.5.0-relnotes.txt
4213
4214  Reviewed-by: Jay Satiro
4215  Closes #11615
4216
4217- cmake: drop `HAVE_LIBWINMM` and `HAVE_LIBWS2_32` feature checks
4218
4219  - `HAVE_LIBWINMM` was detected but unused. The `winmm` system library is
4220    also not used by curl, but it is by its optional dependency `librtmp`.
4221    Change the logic to always add `winmm` when `USE_LIBRTMP` is set. This
4222    library has been available since the early days of Windows.
4223
4224  - `HAVE_LIBWS2_32` detected `ws2_32` lib on Windows. This lib is present
4225    since Windows 95 OSR2 (AFAIR). Winsock1 already wasn't supported and
4226    other existing logic already assumed this lib being present, so delete
4227    the check and replace the detection variable with `WIN32` and always
4228    add `ws2_32` on Windows.
4229
4230  Closes #11612
4231
4232Daniel Gustafsson (8 Aug 2023)
4233
4234- crypto: ensure crypto initialization works
4235
4236  Make sure that context initialization during hash setup works to avoid
4237  going forward with the risk of a null pointer dereference.
4238
4239  Reported-by: Philippe Antoine on HackerOne
4240  Assisted-by: Jay Satiro
4241  Assisted-by: Daniel Stenberg
4242
4243  Closes #11614
4244
4245Viktor Szakats (7 Aug 2023)
4246
4247- openssl: switch to modern init for LibreSSL 2.7.0+
4248
4249  LibreSSL 2.7.0 (2018-03-21) introduced automatic initialization,
4250  `OPENSSL_init_ssl()` function and deprecated the old, manual init
4251  method, as seen in OpenSSL 1.1.0. Switch to the modern method when
4252  available.
4253
4254  Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.0-relnotes.txt
4255
4256  Reviewed-by: Daniel Stenberg
4257  Closes #11611
4258
4259Daniel Stenberg (7 Aug 2023)
4260
4261- gskit: remove
4262
4263  We remove support for building curl with gskit.
4264
4265   - This is a niche TLS library, only running on some IBM systems
4266   - no regular curl contributors use this backend
4267   - no CI builds use or verify this backend
4268   - gskit, or the curl adaption for it, lacks many modern TLS features
4269     making it an inferior solution
4270   - build breakages in this code take weeks or more to get detected
4271   - fixing gskit code is mostly done "flying blind"
4272
4273  This removal has been advertized in DEPRECATED in Jan 2, 2023 and it has
4274  been mentioned on the curl-library mailing list.
4275
4276  It could be brought back, this is not a ban. Given proper effort and
4277  will, gskit support is welcome back into the curl TLS backend family.
4278
4279  Closes #11460
4280
4281- RELEASE-NOTES: synced
4282
4283Dan Fandrich (7 Aug 2023)
4284
4285- THANKS-filter: add a name typo
4286
4287Stefan Eissing (7 Aug 2023)
4288
4289- http3/ngtcp2: shorten handshake, trace cleanup
4290
4291  - shorten handshake timing by delayed x509 store load (OpenSSL)
4292    as we do for HTTP/2
4293  - cleanup of trace output, align with HTTP/2 output
4294
4295  Closes #11609
4296
4297Daniel Stenberg (7 Aug 2023)
4298
4299- headers: accept leading whitespaces on first response header
4300
4301  This is a bad header fold but since the popular browsers accept this
4302  violation, so does curl now. Unless built with hyper.
4303
4304  Add test 1473 to verify and adjust test 2306.
4305
4306  Reported-by: junsik on github
4307  Fixes #11605
4308  Closes #11607
4309
4310- include/curl/mprintf.h: add __attribute__ for the prototypes
4311
4312  - if gcc or clang is used
4313  - if __STDC_VERSION__ >= 199901L, which means greater than C90
4314  - if not using mingw
4315  - if CURL_NO_FMT_CHECKS is not defined
4316
4317  Closes #11589
4318
4319- tests: fix bad printf format flags in test code
4320
4321- tests: fix header scan tools for attribute edits in mprintf.h
4322
4323- cf-socket: log successful interface bind
4324
4325  When the setsockopt SO_BINDTODEVICE operation succeeds, output that in
4326  the verbose output.
4327
4328  Ref: #11599
4329  Closes #11608
4330
4331- CURLOPT_SSL_VERIFYPEER.3: mention it does not load CA certs when disabled
4332
4333  Ref: #11457
4334  Closes #11606
4335
4336- CURLOPT_SSL_VERIFYPEER.3: add two more see also options
4337
4338  CURLINFO_CAINFO and CURLINFO_CAPATH
4339
4340  Closes #11603
4341
4342- KNOWN_BUGS: aws-sigv4 does not behave well with AWS VPC Lattice
4343
4344  Closes #11007
4345
4346Graham Campbell (6 Aug 2023)
4347
4348- CI: use openssl 3.0.10+quic, nghttp3 0.14.0, ngtcp2 0.18.0
4349
4350  Closes #11585
4351
4352Daniel Stenberg (6 Aug 2023)
4353
4354- TODO: add *5* entries for aws-sigv4
4355
4356  Closes #7559
4357  Closes #8107
4358  Closes #8810
4359  Closes #9717
4360  Closes #10129
4361
4362- TODO: LDAP Certificate-Based Authentication
4363
4364  Closes #9641
4365
4366Stefan Eissing (6 Aug 2023)
4367
4368- http2: cleanup trace messages
4369
4370  - more compact format with bracketed stream id
4371  - all frames traced in and out
4372
4373  Closes #11592
4374
4375Daniel Stenberg (6 Aug 2023)
4376
4377- tests/tftpd+mqttd: make variables static to silence picky warnings
4378
4379  Closes #11594
4380
4381- docs/cmdline: remove repeated working for negotiate + ntlm
4382
4383  The extra wording is added automatically by the gen.pl tool
4384
4385  Closes #11597
4386
4387- docs/cmdline: add small "warning" to verbose options
4388
4389  "Note that verbose output of curl activities and network traffic might
4390  contain sensitive data, including user names, credentials or secret data
4391  content. Be aware and be careful when sharing trace logs with others."
4392
4393  Closes #11596
4394
4395- RELEASE-NOTES: synced
4396
4397- pingpong: don't use *bump_headersize
4398
4399  We use that for HTTP(S) only.
4400
4401  Follow-up to 3ee79c1674fd6
4402
4403  Closes #11590
4404
4405- urldata: remove spurious parenthesis to unbreak no-proxy build
4406
4407  Follow-up to e12b39e13382
4408
4409  Closes #11591
4410
4411- easy: don't call Curl_trc_opt() in disabled-verbose builds
4412
4413  Follow-up to e12b39e133822c6a0
4414
4415  Closes #11588
4416
4417- http: use %u for printfing int
4418
4419  Follow-up to 3ee79c1674fd6f99e8efca5
4420
4421  Closes #11587
4422
4423Goro FUJI (3 Aug 2023)
4424
4425- vquic: show stringified messages for errno
4426
4427  Closes #11584
4428
4429Stefan Eissing (3 Aug 2023)
4430
4431- trace: make tracing available in non-debug builds
4432
4433  Add --trace-config to curl
4434
4435  Add curl_global_trace() to libcurl
4436
4437  Closes #11421
4438
4439Daniel Stenberg (3 Aug 2023)
4440
4441- TODO: remove "Support intermediate & root pinning for PINNEDPUBLICKEY"
4442
4443  See also https://github.com/curl/curl/pull/7507
4444
4445- TODO: add "WebSocket read callback"
4446
4447  remove "Upgrade to websockets" as we already have this
4448
4449  Closes #11402
4450
4451- test497: verify rejecting too large incoming headers
4452
4453- http: return error when receiving too large header set
4454
4455  To avoid abuse. The limit is set to 300 KB for the accumulated size of
4456  all received HTTP headers for a single response. Incomplete research
4457  suggests that Chrome uses a 256-300 KB limit, while Firefox allows up to
4458  1MB.
4459
4460  Closes #11582
4461
4462Stefan Eissing (3 Aug 2023)
4463
4464- http2: upgrade tests and add fix for non-existing stream
4465
4466  - check in h2 filter recv that stream actually exists
4467    and return error if not
4468  - add test for parallel, extreme h2 upgrades that fail if
4469    connections get reused before fully switched
4470  - add h2 upgrade upload test just for completeness
4471
4472  Closes #11563
4473
4474Viktor Szakats (3 Aug 2023)
4475
4476- tests: ensure `libcurl.def` contains all exports
4477
4478  Add `test1279` to verify that `libcurl.def` lists all exported API
4479  functions found in libcurl headers.
4480
4481  Also:
4482
4483  - extend test suite XML `stdout` tag with the `loadfile` attribute.
4484
4485  - fix `tests/extern-scan.pl` and `test1135` to include websocket API.
4486
4487  - use all headers (sorted) in `test1135` instead of a manual list.
4488
4489  - add options `--sort`, `--heading=` to `tests/extern-scan.pl`.
4490
4491  - add `libcurl.def` to the auto-labeler GHA task.
4492
4493  Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3
4494
4495  Closes #11570
4496
4497Daniel Stenberg (2 Aug 2023)
4498
4499- url: change default value for CURLOPT_MAXREDIRS to 30
4500
4501  It was previously unlimited by default, but that's not a sensible
4502  default. While changing this has a remote risk of breaking an existing
4503  use case, I figure it is more likely to actually save users from loops.
4504
4505  Closes #11581
4506
4507- lib: fix a few *printf() flag mistakes
4508
4509  Reported-by: Gisle Vanem
4510  Ref: #11574
4511  Closes #11579
4512
4513Samuel Chiang (2 Aug 2023)
4514
4515- openssl: make aws-lc version support OCSP
4516
4517  And bump version in CI
4518
4519  Closes #11568
4520
4521Daniel Stenberg (2 Aug 2023)
4522
4523- tool: make the length argument an int for printf()-.* flags
4524
4525  Closes #11578
4526
4527- tool_operate: fix memory leak when SSL_CERT_DIR is used
4528
4529  Detected by Coverity
4530
4531  Follow-up to 29bce9857a12b6cfa726a5
4532
4533  Closes #11577
4534
4535- tool/var: free memory on OOM
4536
4537  Coverity detected this memory leak in OOM situation
4538
4539  Follow-up to 2e160c9c652504e
4540
4541  Closes #11575
4542
4543Viktor Szakats (2 Aug 2023)
4544
4545- gha: bump libressl and mbedtls versions
4546
4547  Closes #11573
4548
4549Jay Satiro (2 Aug 2023)
4550
4551- schannel: fix user-set legacy algorithms in Windows 10 & 11
4552
4553  - If the user set a legacy algorithm list (CURLOPT_SSL_CIPHER_LIST) then
4554    use the SCHANNEL_CRED legacy structure to pass the list to Schannel.
4555
4556  - If the user set both a legacy algorithm list and a TLS 1.3 cipher list
4557    then abort.
4558
4559  Although MS doesn't document it, Schannel will not negotiate TLS 1.3
4560  when SCHANNEL_CRED is used. That means setting a legacy algorithm list
4561  limits the user to earlier versions of TLS.
4562
4563  Prior to this change, since 8beff435 (precedes 7.85.0), libcurl would
4564  ignore legacy algorithms in Windows 10 1809 and later.
4565
4566  Reported-by: zhihaoy@users.noreply.github.com
4567
4568  Fixes https://github.com/curl/curl/pull/10741
4569  Closes https://github.com/curl/curl/pull/10746
4570
4571Daniel Stenberg (2 Aug 2023)
4572
4573- variable.d: setting a variable again overwrites it
4574
4575  Reported-by: Niall McGee
4576  Bug: https://twitter.com/niallmcgee/status/1686523075423322113
4577  Closes #11571
4578
4579Jay Satiro (2 Aug 2023)
4580
4581- CURLOPT_PROXY_SSL_OPTIONS.3: sync formatting
4582
4583  - Re-wrap CURLSSLOPT_ALLOW_BEAST description.
4584
4585Daniel Stenberg (2 Aug 2023)
4586
4587- RELEASE-NOTES: synced
4588
4589- resolve: use PF_INET6 family lookups when CURL_IPRESOLVE_V6 is set
4590
4591  Previously it would always do PF_UNSPEC if CURL_IPRESOLVE_V4 is not
4592  used, thus unnecessarily asking for addresses that will not be used.
4593
4594  Reported-by: Joseph Tharayil
4595  Fixes #11564
4596  Closes #11565
4597
4598- docs: link to the website versions instead of markdowns
4599
4600  ... to make the links work when the markdown is converted to webpages on
4601  https://curl.se
4602
4603  Reported-by: Maurício Meneghini Fauth
4604  Fixes https://github.com/curl/curl-www/issues/272
4605  Closes #11569
4606
4607Viktor Szakats (1 Aug 2023)
4608
4609- cmake: cache more config and delete unused ones
4610
4611  - cache more Windows config results for faster initialization.
4612
4613  - delete unused config macros `HAVE_SYS_UTSNAME_H`, `HAVE_SSL_H`.
4614
4615  - delete dead references to `sys/utsname.h`.
4616
4617  Closes #11551
4618
4619- egd: delete feature detection and related source code
4620
4621  EGD is Entropy Gathering Daemon, a socket-based entropy source supported
4622  by pre-OpenSSL v1.1 versions and now deprecated. curl also deprecated it
4623  a while ago.
4624
4625  Its detection in CMake was broken all along because OpenSSL libs were
4626  not linked at the point of feature check.
4627
4628  Delete detection from both cmake and autotools, along with the related
4629  source snippet, and the `--with-egd-socket=` `./configure` option.
4630
4631  Closes #11556
4632
4633Stefan Eissing (1 Aug 2023)
4634
4635- tests: fix h3 server check and parallel instances
4636
4637  - fix check for availability of nghttpx server
4638  - add `tcp` frontend config for same port as quic, as
4639    without this, port 3000 is bound which clashes for parallel
4640    testing
4641
4642  Closes #11553
4643
4644Daniel Stenberg (1 Aug 2023)
4645
4646- docs/cmdline-opts: spellfixes, typos and polish
4647
4648  To make them accepted by the spell checker
4649
4650  Closes #11562
4651
4652- CI/spellcheck: build curl.1 and spellcheck it
4653
4654  Added acceptable words
4655
4656  Closes #11562
4657
4658Alexander Jaeger (1 Aug 2023)
4659
4660- misc: fix various typos
4661
4662  Closes #11561
4663
4664Daniel Stenberg (1 Aug 2023)
4665
4666- http2: avoid too early connection re-use/multiplexing
4667
4668  HTTP/1 connections that are upgraded to HTTP/2 should not be picked up
4669  for reuse and multiplexing by other handles until the 101 switching
4670  process is completed.
4671
4672  Lots-of-debgging-by: Stefan Eissing
4673  Reported-by: Richard W.M. Jones
4674  Bug: https://curl.se/mail/lib-2023-07/0045.html
4675  Closes #11557
4676
4677- Revert "KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14"
4678
4679  This reverts commit 2e8a3d7cb73c85a9aa151e263315f8a496dbb9d4.
4680
4681  It's a user error for supplying incomplete information to the build system.
4682
4683  Reported-by: Ryan Schmidt
4684  Ref: https://github.com/curl/curl/issues/11215#issuecomment-1658729367
4685
4686Viktor Szakats (1 Aug 2023)
4687
4688- cmake: add support for single libcurl compilation pass
4689
4690  Before this patch CMake builds used two separate compilation passes to
4691  build the shared and static libcurl respectively. This patch allows to
4692  reduce that to a single pass if the target platform and build settings
4693  allow it.
4694
4695  This reduces CMake build times when building both static and shared
4696  libcurl at the same time, making these dual builds an almost zero-cost
4697  option.
4698
4699  Enable this feature for Windows builds, where the difference between the
4700  two passes was the use of `__declspec(dllexport)` attribute for exported
4701  API functions for the shared builds. This patch replaces this method
4702  with the use of `libcurl.def` at DLL link time.
4703
4704  Also update `Makefile.mk` to use `libcurl.def` to export libcurl API
4705  symbols on Windows. This simplifies (or fixes) this build method (e.g.
4706  in curl-for-win, which generated a `libcurl.def` from `.h` files using
4707  an elaborate set of transformations).
4708
4709  `libcurl.def` has the maintenance cost of keeping the list of public
4710  libcurl API symbols up-to-date. This list seldom changes, so the cost
4711  is low.
4712
4713  Closes #11546
4714
4715- cmake: detect `SSL_set0_wbio` in OpenSSL
4716
4717  Present in OpenSSL 1.1.0 and BoringSSL.
4718  Missing from LibreSSL 3.8.0.
4719
4720  Follow-up to f39472ea9f4f4e12cfbc0500c4580a8d52ce4a59
4721
4722  While here, also fix `RAND_egd()` detection which was broken, likely all
4723  along. This feature is probably broken with CMake builds and also
4724  requires a sufficiently obsolete OpenSSL version, so this part of the
4725  update was not tested.
4726
4727  Closes #11555
4728
4729- cmake: fixup H2 duplicate symbols for unity builds
4730
4731  Closes #11550
4732
4733Pablo Busse (1 Aug 2023)
4734
4735- openssl: Support async cert verify callback
4736
4737  - Update the OpenSSL connect state machine to handle
4738    SSL_ERROR_WANT_RETRY_VERIFY.
4739
4740  This allows libcurl users that are using custom certificate validation
4741  to suspend processing while waiting for external I/O during certificate
4742  validation.
4743
4744  Closes https://github.com/curl/curl/pull/11499
4745
4746Jay Satiro (1 Aug 2023)
4747
4748- tool_cb_wrt: fix invalid unicode for windows console
4749
4750  - Suppress an incomplete UTF-8 sequence at the end of the buffer.
4751
4752  - Attempt to reconstruct incomplete UTF-8 sequence from prior call(s)
4753    in current call.
4754
4755  Prior to this change, in Windows console UTF-8 sequences split between
4756  two or more calls to the write callback would cause invalid "replacement
4757  characters" U+FFFD to be printed instead of the actual Unicode
4758  character. This is because in Windows only UTF-16 encoded characters are
4759  printed to the console, therefore we convert the UTF-8 contents to
4760  UTF-16, which cannot be done with partial UTF-8 sequences.
4761
4762  Reported-by: Maksim Arhipov
4763
4764  Fixes https://github.com/curl/curl/issues/9841
4765  Closes https://github.com/curl/curl/pull/10890
4766
4767Daniel Stenberg (1 Aug 2023)
4768
4769- sectransp: prevent CFRelease() of NULL
4770
4771  When SecCertificateCopyCommonName() returns NULL, the common_name
4772  pointer remains set to NULL which apparently when calling CFRelease() on
4773  (sometimes?) crashes.
4774
4775  Reported-by: Guillaume Algis
4776  Fixes #9194
4777  Closes #11554
4778
4779Jay Satiro (1 Aug 2023)
4780
4781- vtls: clarify "ALPN: offers" message
4782
4783  Before:
4784  * ALPN: offers h2,http/1.1
4785
4786  After:
4787  * ALPN: curl offers h2,http/1.1
4788
4789  Bug: https://curl.se/mail/lib-2023-07/0041.html
4790  Reported-by: Richard W.M. Jones
4791  Closes #11544
4792
4793Daniel Stenberg (1 Aug 2023)
4794
4795- urlapi: make sure zoneid is also duplicated in curl_url_dup
4796
4797  Add several curl_url_dup() tests to the general lib1560 test.
4798
4799  Reported-by: Rutger Broekhoff
4800  Bug: https://curl.se/mail/lib-2023-07/0047.html
4801  Closes #11549
4802
4803Sergey (1 Aug 2023)
4804
4805- urlapi: fix heap buffer overflow
4806
4807  `u->path = Curl_memdup(path, pathlen + 1);` accesses bytes after the null-ter
4808  minator.
4809
4810  ```
4811  ==2676==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x04d48c75 a
4812  t pc 0x0112708a bp 0x006fb7e0 sp 0x006fb3c4
4813  READ of size 78 at 0x04d48c75 thread T0
4814      #0 0x1127089 in __asan_wrap_memcpy D:\a\_work\1\s\src\vctools\asan\llvm\c
4815  ompiler-rt\lib\sanitizer_common\sanitizer_common_interceptors.inc:840
4816      #1 0x1891a0e in Curl_memdup C:\actions-runner\_work\client\client\third_p
4817  arty\curl\lib\strdup.c:97
4818      #2 0x18db4b0 in parseurl C:\actions-runner\_work\client\client\third_part
4819  y\curl\lib\urlapi.c:1297
4820      #3 0x18db819 in parseurl_and_replace C:\actions-runner\_work\client\clien
4821  t\third_party\curl\lib\urlapi.c:1342
4822      #4 0x18d6e39 in curl_url_set C:\actions-runner\_work\client\client\third_
4823  party\curl\lib\urlapi.c:1790
4824      #5 0x1877d3e in parseurlandfillconn C:\actions-runner\_work\client\client
4825  \third_party\curl\lib\url.c:1768
4826      #6 0x1871acf in create_conn C:\actions-runner\_work\client\client\third_p
4827  arty\curl\lib\url.c:3403
4828      #7 0x186d8dc in Curl_connect C:\actions-runner\_work\client\client\third_
4829  party\curl\lib\url.c:3888
4830      #8 0x1856b78 in multi_runsingle C:\actions-runner\_work\client\client\thi
4831  rd_party\curl\lib\multi.c:1982
4832      #9 0x18531e3 in curl_multi_perform C:\actions-runner\_work\client\client\
4833  third_party\curl\lib\multi.c:2756
4834  ```
4835
4836  Closes #11560
4837
4838Daniel Stenberg (31 Jul 2023)
4839
4840- curl: make %output{} in -w specify a file to write to
4841
4842  It can be used multiple times. Use %output{>>name} to append.
4843
4844  Add docs. Test 990 and 991 verify.
4845
4846  Idea: #11400
4847  Suggested-by: ed0d2b2ce19451f2
4848  Closes #11416
4849
4850- RELEASE-NOTES: synced
4851
4852- tool: add "variable" support
4853
4854  Add support for command line variables. Set variables with --variable
4855  name=content or --variable name@file (where "file" can be stdin if set
4856  to a single dash (-)).
4857
4858  Variable content is expanded in option parameters using "{{name}}"
4859  (without the quotes) if the option name is prefixed with
4860  "--expand-". This gets the contents of the variable "name" inserted, or
4861  a blank if the name does not exist as a variable. Insert "{{" verbatim
4862  in the string by prefixing it with a backslash, like "\\{{".
4863
4864  Import an environment variable with --variable %name. It makes curl exit
4865  with an error if the environment variable is not set. It can also rather
4866  get a default value if the variable does not exist, using =content or
4867  @file like shown above.
4868
4869  Example: get the USER environment variable into the URL:
4870
4871   --variable %USER
4872   --expand-url = "https://example.com/api/{{USER}}/method"
4873
4874  When expanding variables, curl supports a set of functions that can make
4875  the variable contents more convenient to use. It can trim leading and
4876  trailing white space with "trim", output the contents as a JSON quoted
4877  string with "json", URL encode it with "url" and base 64 encode it with
4878  "b64". To apply functions to a variable expansion, add them colon
4879  separated to the right side of the variable. They are then performed in
4880  a left to right order.
4881
4882  Example: get the contents of a file called $HOME/.secret into a variable
4883  called "fix". Make sure that the content is trimmed and percent-encoded
4884  sent as POST data:
4885
4886    --variable %HOME=/home/default
4887    --expand-variable fix@{{HOME}}/.secret
4888    --expand-data "{{fix:trim:url}}"
4889    https://example.com/
4890
4891  Documented. Many new test cases.
4892
4893  Co-brainstormed-by: Emanuele Torre
4894  Assisted-by: Jat Satiro
4895  Closes #11346
4896
4897- KNOWN_BUGS: cygwin: make install installs curl-config.1 twice
4898
4899  Closes #8839
4900
4901- KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14
4902
4903  Closes #11215
4904
4905- KNOWN_BUGS: cmake outputs: no version information available
4906
4907  Closes #11158
4908
4909- KNOWN_BUGS: APOP authentication fails on POP3
4910
4911  Closes #10073
4912
4913- KNOWN_BUGS: hyper is slow
4914
4915  Closes #11203
4916
4917Patrick Monnerat (31 Jul 2023)
4918
4919- configure, cmake, lib: more form api deprecation
4920
4921  Introduce a --enable-form-api configure option to control its inclusion
4922  in builds. The condition name defined for it is CURL_DISABLE_FORM_API.
4923
4924  Form api code is dependent of MIME: configure and CMake handle this
4925  dependency automatically: CMake by making it a dependent option
4926  explicitly, configure by inheriting the MIME value by default and
4927  rejecting explicit incompatible values.
4928
4929  "form-api" is now a new hidden test feature.
4930
4931  Update libcurl modules to respect this option and adjust tests
4932  accordingly.
4933
4934  Closes #9621
4935
4936Daniel Stenberg (31 Jul 2023)
4937
4938- mailmap: add Derzsi Dániel
4939
4940Derzsi Dániel (31 Jul 2023)
4941
4942- wolfssl: support loading system CA certificates
4943
4944  Closes #11452
4945
4946Viktor Szakats (30 Jul 2023)
4947
4948- nss: delete more NSS references
4949
4950  Fix the distcheck CI failure and delete more NSS references.
4951
4952  Follow-up to 7c8bae0d9c9b2dfeeb008b9a316117d7b9675175
4953
4954  Reviewed-by: Marcel Raad
4955  Reviewed-by: Daniel Stenberg
4956  Closes #11548
4957
4958Daniel Stenberg (29 Jul 2023)
4959
4960- nss: remove support for this TLS library
4961
4962  Closes #11459
4963
4964Ryan Schmidt (29 Jul 2023)
4965
4966- macOS: fix target detection more
4967
4968  Now SCDynamicStoreCopyProxies is called (and the required frameworks are
4969  linked in) on all versions of macOS and only on macOS. Fixes crash due
4970  to undefined symbol when built with the macOS 10.11 SDK or earlier.
4971
4972  CURL_OSX_CALL_COPYPROXIES is renamed to CURL_MACOS_CALL_COPYPROXIES and
4973  is now only defined when SCDynamicStoreCopyProxies will actually be
4974  called. Previously, it was defined when ENABLE_IPV6 was not defined but
4975  SCDynamicStoreCopyProxies is not called in that case.
4976
4977  TARGET_OS_OSX is only defined in the macOS 10.12 SDK and later and only
4978  when dynamic targets are enabled. TARGET_OS_MAC is always defined but
4979  means any Mac OS or derivative including macOS, iOS, tvOS, and watchOS.
4980  TARGET_OS_IPHONE means any Darwin OS other than macOS.
4981
4982  Follow-up to c73b2f82
4983
4984  Fixes #11502
4985  Closes #11516
4986
4987Daniel Stenberg (29 Jul 2023)
4988
4989- tool_operate: allow SSL_CERT_FILE and SSL_CERT_DIR
4990
4991  ... used at once.
4992
4993  Reported-by: Gabriel Corona
4994  Fixes #11325
4995  Closes #11531
4996
4997Thomas M. DuBuisson (29 Jul 2023)
4998
4999- CI: remove Lift's configuration
5000
5001  The Lift tool is being retired. Their site reads:
5002
5003  "Sonatype Lift will be retiring on Sep 12, 2023, with its analysis
5004  stopping on Aug 12, 2023."
5005
5006  Closes #11541
5007
5008Nathan Moinvaziri (29 Jul 2023)
5009
5010- Revert "schannel: reverse the order of certinfo insertions"
5011
5012  This reverts commit 8986df802db9b5338d9d50a54232ebae4dbcf6dd.
5013
5014  Windows does not guarantee a particular certificate ordering, even
5015  though TLS may have its own ordering/relationship guarantees. Recent
5016  versions of Windows 11 reversed the ordering of ceritifcates returned by
5017  CertEnumCertificatesInStore, therefore this commit no longer works as
5018  initially intended. libcurl makes no guarantees about certificate
5019  ordering if the operating system can't.
5020
5021  Ref: https://github.com/curl/curl/issues/9706
5022
5023  Closes https://github.com/curl/curl/pull/11536
5024
5025wangzhikun (29 Jul 2023)
5026
5027- winbuild: improve check for static zlib
5028
5029  - Check for zlib static library name zlibstatic.lib.
5030
5031  zlib's static library has a different name depending on how it was
5032  built. zlibstatic.lib is output by cmake. zlibstat.lib is output by
5033  their pre-generated Visual Studio project files (in the contrib
5034  directory) and defines ZLIB_WINAPI (ie it's meant to use stdcall
5035  instead of cdecl if you end up exporting the zlib functions).
5036
5037  Prior to this change the makefile only checked for the latter.
5038
5039  Closes https://github.com/curl/curl/pull/11521
5040
5041Daniel Stenberg (29 Jul 2023)
5042
5043- configure: use the pkg-config --libs-only-l flag for libssh2
5044
5045  ... instead of --libs, as that one also returns -L flags.
5046
5047  Reported-by: Wilhelm von Thiele
5048  Fixes #11538
5049  Closes #11539
5050
5051Viktor Szakats (29 Jul 2023)
5052
5053- cmake: support building static and shared libcurl in one go
5054
5055  This patch adds the ability to build a static and shared libcurl library
5056  in a single build session. It also adds an option to select which one to
5057  use when building the curl executable.
5058
5059  New build options:
5060  - `BUILD_STATIC_LIBS`. Default: `OFF`.
5061    Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`.
5062  - `BUILD_STATIC_CURL`. Default: `OFF`.
5063    Requires `BUILD_STATIC_LIBS` enabled.
5064    Enabled automatically if building static libcurl only.
5065  - `STATIC_LIB_SUFFIX`. Default: empty.
5066  - `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide
5067    with static lib name (typically with MSVC) in Windows builds.
5068    Otherwise empty.
5069
5070  Also:
5071
5072  - Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass
5073    it directly to the compiler. This also allows to delete a condition
5074    from `tests/server/CMakeLists.txt`.
5075
5076  - Complete a TODO by following the logic used in autotools (also for
5077    `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of
5078    `libcurl.pc` for _static-only_ curl builds.
5079
5080  - Convert an existing CI test to build both shared and static libcurl.
5081
5082  Closes #11505
5083
5084Stefan Eissing (28 Jul 2023)
5085
5086- CI/awslc: add cache for build awslc library
5087
5088  Closes #11535
5089
5090- GHA/linux.yml: add caching
5091
5092  Closes #11532
5093
5094Daniel Stenberg (27 Jul 2023)
5095
5096- RELEASE-NOTES: synced
5097
5098  Bump working version to 8.3.0
5099
5100- url: remove infof() output for "still name resolving"
5101
5102  The message does not help and might get spewed a lot during times.
5103
5104  Reported-by: yushicheng7788 on github
5105  Fixes #11394
5106  Closes #11529
5107
5108- KNOWN_BUGS: cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
5109
5110  Closes #11244
5111
5112Stefan Eissing (27 Jul 2023)
5113
5114- CI: quiche updates
5115
5116  - remove quiche from standard `linux` workflow
5117  - add mod_h2 caching to quiche workflow
5118  - rename quiche to quiche-linux
5119  - move version definitions into env section
5120
5121  Closes #11528
5122
5123- http2: disable asssertion blocking OSSFuzz testing
5124
5125  - not clear how this triggers and it blocks OSSFuzz testing other
5126    things. Since we handle the case with an error return, disabling the
5127    assertion for now seems the best way forward.
5128
5129  Fixes #11500
5130  Closes #11519
5131
5132- http2: fix in h2 proxy tunnel: progress in ingress on sending
5133
5134  - depending on what is tunneled, the proxy may never get invoked for
5135    receiving data explicitly. Not progressing ingress may lead to stalls
5136    due to missed WINDOW_UPDATEs.
5137
5138  CI:
5139  - add a chache for building mod_h2
5140
5141  Closes #11527
5142
5143- CI ngtcp2+quictls: use nghttpx cache as in quiche build
5144
5145Jay Satiro (27 Jul 2023)
5146
5147- bearssl: don't load CA certs when peer verification is disabled
5148
5149  We already do this for other SSL backends.
5150
5151  Bug: https://github.com/curl/curl/pull/11457#issuecomment-1644587473
5152  Reported-by: kyled-dell@users.noreply.github.com
5153
5154  Closes https://github.com/curl/curl/pull/11497
5155
5156Daniel Stenberg (26 Jul 2023)
5157
5158- easy: remove #ifdefs to make code easier on the eye
5159
5160  Closes #11525
5161
5162Stefan Eissing (26 Jul 2023)
5163
5164- GHA: adding quiche workflow
5165
5166  - adding separate quiche workflow to also build nghttpx server for testing
5167
5168  Closes #11517
5169
5170Version 8.2.1 (26 Jul 2023)
5171
5172Daniel Stenberg (26 Jul 2023)
5173
5174- RELEASE-NOTES: synced
5175
5176  curl 8.2.1 release
5177
5178- THANKS: add contributors from 8.2.1
5179
5180- docs: provide more see also for cipher options
5181
5182  More cross references. Hide nroff errors.
5183
5184  Closes #11513
5185
5186- docs: mark two TLS options for TLS, not SSL
5187
5188  Closes #11514
5189
5190Brad Harder (25 Jul 2023)
5191
5192- curl_multi_wait.3: fix arg quoting to doc macro .BR
5193
5194  Closes #11511
5195
5196Daniel Stenberg (24 Jul 2023)
5197
5198- RELEASE-NOTES: synced
5199
5200Viktor Szakats (24 Jul 2023)
5201
5202- cmake: update ngtcp2 detection
5203
5204  Replace `OpenSSL` with `quictls` to follow the same change
5205  in the v0.17.0 ngtcp2 release.
5206
5207  Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed
5208
5209  Closes #11508
5210
5211Stefan Eissing (24 Jul 2023)
5212
5213- http: VLH, very large header test and fixes
5214
5215  - adding tests using very large passwords in auth
5216  - fixes general http sending to treat h3 like h2, and
5217    not like http1.1
5218  - eliminate H2_HEADER max definitions and use the commmon
5219    DYN_HTTP_REQUEST everywhere, different limits do not help
5220  - fix http2 handling of requests denied by nghttp2 on send
5221    to immediately report the refused stream
5222
5223  Closes #11509
5224
5225Andrei Rybak (23 Jul 2023)
5226
5227- CONTRIBUTE: drop mention of copyright year ranges
5228
5229  Year ranges in copyrights were dropped in commits [1] and [2].
5230  Verification of year ranges in copyrights was dropped from script
5231  'scripts/copyright.pl' in commit [3].  However, the corresponding
5232  passages in file 'docs/CONTRIBUTE.md' weren't updated.
5233
5234  Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'.
5235
5236  [1] 2bc1d775f (copyright: update all copyright lines and remove year
5237      ranges, 2023-01-02)
5238  [2] c46761bd8 (tests/http: remove year ranges from copyrights,
5239      2023-03-14)
5240  [3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28)
5241
5242  Closes #11504
5243
5244- CONTRIBUTE: fix syntax in commit message description
5245
5246  File 'docs/CONTRIBUTE.md' includes a description of how one should write
5247  commit messages in the curl project.  Different possible parts of the
5248  message are enclosed in square brackets.  One exception is the section
5249  describing how the curl project doesn't use "Signed-off-by" commit
5250  trailers [1], which is enclosed in an opening curly brace paired with a
5251  closing square bracket.
5252
5253  Fix the enclosing square brackets in description of "Signed-off-by"
5254  trailers in commit messages in file 'docs/CONTRIBUTE.md'.
5255
5256  [1] See description of option '--signoff' in Git documentation:
5257      https://git-scm.com/docs/git-commit
5258
5259  Closes #11504
5260
5261Daniel Stenberg (23 Jul 2023)
5262
5263- src/mkhelp: strip off escape sequences
5264
5265  At some point the nroff command stopped stripping off escape sequences,
5266  so then this script needs to do the job instead.
5267
5268  Reported-by: VictorVG on github
5269  Fixes #11501
5270  Closes #11503
5271
5272- KNOWN_BUGS: building for old macOS fails with gcc
5273
5274  Closes #11441
5275
5276Jacob Hoffman-Andrews (22 Jul 2023)
5277
5278- rustls: update rustls-ffi 0.10.0
5279
5280  This brings in version 0.21.0 of the upstream rustls implementation,
5281  which notable includes support for IP address certificates.
5282
5283  Closes #10865
5284
5285Brad Harder (22 Jul 2023)
5286
5287- websocket: rename arguments/variables to match docs
5288
5289  Pedantry/semantic-alignment between functions, docs, comments with
5290  respect to websocket protocol code; No functional change intended.
5291
5292  * "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments).
5293
5294  * "sendflags" becomes "flags"
5295
5296  * use canonical CURL *handle
5297
5298  Closes #11493
5299
5300Jan Macku (21 Jul 2023)
5301
5302- bug_report: use issue forms instead of markdown template
5303
5304  Issue forms allow you to define web-like input forms using YAML
5305  syntax. It allows you to guide the reporter to get the required
5306  information.
5307
5308  Signed-off-by: Jan Macku <jamacku@redhat.com>
5309  Closes #11474
5310
5311Daniel Stenberg (21 Jul 2023)
5312
5313- TODO: Obey Retry-After in redirects
5314
5315  (remove "Set custom client ip when using haproxy protocol" which was
5316  shipped in 8.2.0)
5317
5318  Mentioned-by: Yair Lenga
5319  Closes #11447
5320
5321- RELEASE-NOTES: synced
5322
5323Oliver Roberts (21 Jul 2023)
5324
5325- amissl: fix AmiSSL v5 detection
5326
5327  Due to changes in the AmiSSL SDK, the detection needed adjusting.
5328
5329  Closes #11477
5330
5331Alois Klink (21 Jul 2023)
5332
5333- unittest/makefile: remove unneeded unit1621_LDADD
5334
5335  The `unit1621_LDADD` variable has the exact same value as the `LDADD`
5336  flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`.
5337
5338  This was originally added by [98e6629][], but I can't see any reason
5339  why it exists, so we should remove it to clean things up.
5340
5341  [98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7
5342  ebcb131e88
5343
5344  Closes #11494
5345
5346- unittest/makefile: remove unneeded unit1394_LDADD
5347
5348  These custom `unit1394_LDADD` and similar automake overrides are no
5349  longer neded. They were originally added by added by [8dac7be][] for
5350  metalink support, but are no longer after [265b14d][] removed metalink.
5351
5352  [8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bd
5353  fdcac1ed8c
5354  [265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37
5355  d36f911693
5356
5357  Closes #11494
5358
5359- cmake: add `libcurlu`/`libcurltool` for unit tests
5360
5361  Add a `libcurlu`/`libcurltool` static library that is compiled only for
5362  unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not
5363  built by default, they're only built if unit tests are built.
5364
5365  These libraries allow us to compile every unit test with CMake.
5366
5367  Closes #11446
5368
5369Daniel Stenberg (21 Jul 2023)
5370
5371- test979: test -u with redirect to (the same) absolute host
5372
5373  Verifies #11492
5374
5375- transfer: do not clear the credentials on redirect to absolute URL
5376
5377  Makes test 979 work. Regression shipped in 8.2.0 from commit
5378  dd4d1a26959f63a2c
5379
5380  Fixes #11486
5381  Reported-by: Cloudogu Siebels
5382  Closes #11492
5383
5384Jon Rumsey (20 Jul 2023)
5385
5386- os400: correct EXPECTED_STRING_LASTZEROTERMINATED
5387
5388  Correct EXPECTED_STRING_LASTZEROTERMINATED to account for
5389  CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when
5390  passed into curl_easy_setopt().
5391
5392  Closes #11476
5393
5394Oliver Roberts (20 Jul 2023)
5395
5396- amissl: add missing signal.h include
5397
5398  In some environments, signal.h is already included, but not in others
5399  which cause compilation to fail, so explictly include it.
5400
5401  Closes #11478
5402
5403- amigaos: fix sys/mbuf.h m_len macro clash
5404
5405  The updated Curl_http_req_make and Curl_http_req_make2 functions spawned
5406  a parameter called m_len. The AmigaOS networking headers, derived from
5407  NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with
5408  this. Since we do not actually use mbuf, force the include file to be
5409  ignored, removing the clash.
5410
5411  Closes #11479
5412
5413Daniel Stenberg (20 Jul 2023)
5414
5415- socks: print ipv6 address within brackets
5416
5417  Fixes #11483
5418  Closes #11484
5419
5420Christian Schmitz (20 Jul 2023)
5421
5422- libcurl-errors.3: add CURLUE_OK
5423
5424  Closes #11488
5425
5426Oliver Roberts (20 Jul 2023)
5427
5428- cfilters: rename close/connect functions to avoid clashes
5429
5430  Rename `close` and `connect` in `struct Curl_cftype` for
5431  consistency and to avoid clashes with macros of the same name
5432  (the standard AmigaOS networking connect() function is implemented
5433  via a macro).
5434
5435  Closes #11491
5436
5437Stefan Eissing (20 Jul 2023)
5438
5439- http2: fix regression on upload EOF handling
5440
5441  - a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5
5442    where optimization of small POST bodies leads to a new code path
5443    for such uploads that did not trigger the "done sending" event
5444  - add triggering this event for early "upload_done" situations
5445
5446  Fixes #11485
5447  Closes #11487
5448  Reported-by: Aleksander Mazur
5449
5450Daniel Stenberg (19 Jul 2023)
5451
5452- configure: check for nghttp2_session_get_stream_local_window_size
5453
5454  The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016)
5455
5456  Fixes #11470
5457  Reported-by: Paul Howarth
5458  Closes #11473
5459
5460Stefan Eissing (19 Jul 2023)
5461
5462- quiche: fix segfault and other things
5463
5464  - refs #11449 where a segfault is reported when IP Eyeballing did
5465    not immediately connect but made several attempts
5466  - The transfer initiating the eyeballing was initialized  too early,
5467    leadding to references to the filter instance that was then
5468    replaced in the subsequent eyeball attempts. That led to a use
5469    after free in the buffer handling for the transfer
5470  - transfers are initiated now more lazy (like in the ngtcp2 filter),
5471    when the stream is actually opened
5472  - suppress reporting on quiche event errors for "other" transfers
5473    than the current one to not fail a transfer due to faults in
5474    another one.
5475  - revert recent return value handling for quiche_h3_recv_body()
5476    to not indicate an error but an EAGAIN situation. We wish quiche
5477    would document what functions return.
5478
5479  Fixes #11449
5480  Closes #11469
5481  Reported-by: ウさん
5482
5483Daniel Stenberg (19 Jul 2023)
5484
5485- hostip: return IPv6 first for localhost resolves
5486
5487  Fixes #11465
5488  Reported-by: Chilledheart on github
5489  Closes #11466
5490
5491Harry Sintonen (19 Jul 2023)
5492
5493- tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T
5494
5495  - a variable was renamed, and some use of it wasn't. this fixes the
5496    build.
5497
5498  Closes #11468
5499
5500Stefan Eissing (19 Jul 2023)
5501
5502- quiche: fix lookup of transfer at multi
5503
5504  - refs #11449 where weirdness in quiche multi connection tranfers was
5505    observed
5506  - fixes lookup of transfer for a quiche event to take the connection
5507    into account
5508  - formerly, a transfer with the same stream_id, but on another connection
5509    could be found
5510
5511  Closes #11462
5512
5513Daniel Stenberg (19 Jul 2023)
5514
5515- RELEASE-NOTES: synced
5516
5517  bump to 8.2.1
5518
5519John Haugabook (19 Jul 2023)
5520
5521- ciphers.d: put URL in first column
5522
5523  This makes the URL turn into a link properly when "webified".
5524
5525  Fixes https://github.com/curl/curl-www/issues/270
5526  Closes #11464
5527
5528Version 8.2.0 (19 Jul 2023)
5529
5530Daniel Stenberg (19 Jul 2023)
5531
5532- RELEASE-NOTES: synced
5533
5534  8.2.0 release
5535
5536- THANKS-filter: strip out "GitHub"
5537
5538- THANKS: add contributors from 8.2.0
5539
5540- RELEASE-PROCEDURE.md: adjust the release dates
5541
5542Stefan Eissing (17 Jul 2023)
5543
5544- quiche: fix defects found in latest coverity report
5545
5546  Closes #11455
5547
5548Daniel Stenberg (17 Jul 2023)
5549
5550- quiche: avoid NULL deref in debug logging
5551
5552  Coverity reported "Dereference after null check"
5553
5554  If stream is NULL and the function exits, the logging must not deref it.
5555
5556  Closes #11454
5557
5558Stefan Eissing (17 Jul 2023)
5559
5560- http2: treat initial SETTINGS as a WINDOW_UPDATE
5561
5562  - refs #11426 where spurious stalls on large POST requests
5563    are reported
5564  - the issue seems to involve the following
5565    * first stream on connection adds up to 64KB of POST
5566      data, which is the max default HTTP/2 stream window size
5567      transfer is set to HOLD
5568    * initial SETTINGS from server arrive, enlarging the stream
5569      window. But no WINDOW_UPDATE is received.
5570    * curl stalls
5571  - the fix un-HOLDs a stream on receiving SETTINGS, not
5572    relying on a WINDOW_UPDATE from lazy servers
5573
5574  Closes #11450
5575
5576Daniel Stenberg (17 Jul 2023)
5577
5578- ngtcp2: assigning timeout, but value is overwritten before used
5579
5580  Reported by Coverity
5581
5582  Closes #11453
5583
5584- krb5: add typecast to please Coverity
5585
5586Derzsi Dániel (16 Jul 2023)
5587
5588- wolfssl: support setting CA certificates as blob
5589
5590  Closes #11445
5591
5592- wolfssl: detect when TLS 1.2 support is not built into wolfssl
5593
5594  Closes #11444
5595
5596Graham Campbell (15 Jul 2023)
5597
5598- CI: bump nghttp2 from 1.55.0 to 1.55.1
5599
5600  Closes #11442
5601
5602Daniel Stenberg (15 Jul 2023)
5603
5604- curl: return error when asked to use an unsupported HTTP version
5605
5606  When one of the following options are used but the libcurl in use does
5607  not support it:
5608
5609  --http2
5610  --http2-prior-knowledge
5611  --proxy-http2
5612
5613  Closes #11440
5614
5615Chris Paulson-Ellis (14 Jul 2023)
5616
5617- cf-socket: don't bypass fclosesocket callback if cancelled before connect
5618
5619  After upgrading to 8.1.2 from 7.84.0, I found that sockets were being
5620  closed without calling the fclosesocket callback if a request was
5621  cancelled after the associated socket was created, but before the socket
5622  was connected. This lead to an imbalance of fopensocket & fclosesocket
5623  callbacks, causing problems with a custom event loop integration using
5624  the multi-API.
5625
5626  This was caused by cf_socket_close() calling sclose() directly instead
5627  of calling socket_close() if the socket was not active. For regular TCP
5628  client connections, the socket is activated by cf_socket_active(), which
5629  is only called when the socket completes the connect.
5630
5631  As far as I can tell, this issue has existed since 7.88.0. That is,
5632  since the code in question was introduced by:
5633      commit 71b7e0161032927cdfb4e75ea40f65b8898b3956
5634      Author: Stefan Eissing <stefan@eissing.org>
5635      Date:   Fri Dec 30 09:14:55 2022 +0100
5636
5637          lib: connect/h2/h3 refactor
5638
5639  Closes #11439
5640
5641Daniel Stenberg (13 Jul 2023)
5642
5643- tool_parsecfg: accept line lengths up to 10M
5644
5645  Bumped from 100K set in 47dd957daff9
5646
5647  Reported-by: Antoine du Hamel
5648  Fixes #11431
5649  Closes #11435
5650
5651Stefan Eissing (13 Jul 2023)
5652
5653- CI: brew fix for openssl in default path
5654
5655  If brew install/update links openssl into /usr/local, it will be found
5656  before anything we add with `-isystem path` to CPP/LDLFAGS.  Get rid of
5657  that by unlinking the keg.
5658
5659  Fixes #11413
5660  Closes #11436
5661
5662Daniel Stenberg (13 Jul 2023)
5663
5664- RELEASE-NOTES: synced
5665
5666Ondřej Koláček (13 Jul 2023)
5667
5668- sectransp: fix EOF handling
5669
5670  Regression since the large refactor from 2022
5671
5672  Closes #11427
5673
5674Daniel Stenberg (13 Jul 2023)
5675
5676- checksrc: quote the file name to work with "funny" letters
5677
5678  Closes #11437
5679
5680Karthikdasari0423 (13 Jul 2023)
5681
5682- HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0
5683
5684  Follow-up to e0093b4b732f6
5685
5686  Closes #11433
5687
5688Daniel Stenberg (13 Jul 2023)
5689
5690- CURLOPT_MIMEPOST.3: clarify what setting to NULL means
5691
5692  Follow-up to e08382a208d4e480
5693
5694  Closes #11430
5695
5696Tatsuhiro Tsujikawa (12 Jul 2023)
5697
5698- ngtcp2: build with 0.17.0 and nghttp3 0.13.0
5699
5700  - ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls.
5701
5702  Closes #11428
5703
5704- CI: Bump ngtcp2, nghttp3, and nghttp2
5705
5706  Closes #11428
5707
5708James Fuller (11 Jul 2023)
5709
5710- example/maxconnects: set maxconnect example
5711
5712  Closes #11343
5713
5714Pontakorn Prasertsuk (11 Jul 2023)
5715
5716- http2: send HEADER & DATA together if possible
5717
5718  Closes #11420
5719
5720Daniel Stenberg (11 Jul 2023)
5721
5722- CI: use wolfSSL 5.6.3 in builds
5723
5724  No using master anymore
5725
5726  Closes #11424
5727
5728SaltyMilk (11 Jul 2023)
5729
5730- fopen: optimize
5731
5732  Closes #11419
5733
5734Daniel Stenberg (11 Jul 2023)
5735
5736- cmake: make use of snprintf
5737
5738  Follow-up to 935b1bd4544a23a91d68
5739
5740  Closes #11423
5741
5742Stefan Eissing (11 Jul 2023)
5743
5744- macOS: fix taget detection
5745
5746  - TARGET_OS_OSX is not always defined on macOS
5747  - this leads to missing symbol Curl_macos_init()
5748  - TargetConditionals.h seems to define these only when
5749    dynamic targets are enabled (somewhere?)
5750  - this PR fixes that on my macOS 13.4.1
5751  - I have no clue why CI builds worked without it
5752
5753  Follow-up to c7308592fb8ba213fc2c1
5754  Closes #11417
5755
5756Stan Hu (9 Jul 2023)
5757
5758- hostip.c: Move macOS-specific calls into global init call
5759
5760  https://github.com/curl/curl/pull/7121 introduced a macOS system call
5761  to `SCDynamicStoreCopyProxies`, which is invoked every time an IP
5762  address needs to be resolved.
5763
5764  However, this system call is not thread-safe, and macOS will kill the
5765  process if the system call is run first in a fork. To make it possible
5766  for the parent process to call this once and prevent the crash, only
5767  invoke this system call in the global initialization routine.
5768
5769  In addition, this change is beneficial because it:
5770
5771  1. Avoids extra macOS system calls for every IP lookup.
5772  2. Consolidates macOS-specific initialization in a separate file.
5773
5774  Fixes #11252
5775  Closes #11254
5776
5777Daniel Stenberg (9 Jul 2023)
5778
5779- docs: use a space after RFC when spelling out RFC numbers
5780
5781  Closes #11382
5782
5783Margu (9 Jul 2023)
5784
5785- imap-append.c: update to make it more likely to work
5786
5787  Fixes #10300
5788  Closes #11397
5789
5790Emanuele Torre (9 Jul 2023)
5791
5792- tool_writeout_json: fix encoding of control characters
5793
5794  Control characters without a special escape sequence e.g. %00 or %06
5795  were being encoded as "u0006" instead of "\u0006".
5796
5797  Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858
5798  Closes #11414
5799
5800Stefan Eissing (9 Jul 2023)
5801
5802- http3/ngtcp2: upload EAGAIN handling
5803
5804  - refs #11389 where IDLE timeouts on upload are reported
5805  - reword ngtcp2 expiry handling to apply to both send+recv
5806    calls into the filter
5807  - EAGAIN uploads similar to the recent changes in HTTP/2, e.g.
5808    report success only when send data was ACKed.
5809  - HOLD sending of EAGAINed uploads to avoid cpu busy loops
5810  - rename internal function for consistency with HTTP/2
5811    implementation
5812
5813  Fixes #11389
5814  Closes #11390
5815
5816Brian Nixon (9 Jul 2023)
5817
5818- tool_easysrc.h: correct `easysrc_perform` for `CURL_DISABLE_LIBCURL_OPTION`
5819
5820  Closes #11398
5821
5822Daniel Stenberg (9 Jul 2023)
5823
5824- RELEASE-NOTES: synced
5825
5826- transfer: clear credentials when redirecting to absolute URL
5827
5828  Make sure the user and password for the second request is taken from the
5829  redirected-to URL.
5830
5831  Add test case 899 to verify.
5832
5833  Reported-by: James Lucas
5834  Fixes #11410
5835  Closes #11412
5836
5837Stefan Eissing (8 Jul 2023)
5838
5839- hyper: fix EOF handling on input
5840
5841  We ran out of disc space due to an infinite loop with debug logging
5842
5843  Fixes #11377
5844  Closes #11385
5845  Reported-by: Dan Fandrich
5846
5847- http2: raise header limitations above and beyond
5848
5849  - not quite to infinity
5850  - rewrote the implementation of our internal HTTP/1.x request
5851    parsing to work with very large lines using dynbufs.
5852  - new default limit is `DYN_HTTP_REQUEST`, aka 1MB, which
5853    is also the limit of curl's general HTTP request processing.
5854
5855  Fixes #11405
5856  Closes #11407
5857
5858Juan Cruz Viotti (8 Jul 2023)
5859
5860- curl_easy_nextheader.3: add missing open parenthesis examples
5861
5862  Closes #11409
5863  Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
5864
5865Dan Fandrich (7 Jul 2023)
5866
5867- CI: enable verbose test output on pytest
5868
5869  This shows individual pass/fail status on tests and makes this output
5870  consistent with other jobs' pytest invocations.
5871
5872Stefan Eissing (28 Jun 2023)
5873
5874- http2: fix crash in handling stream weights
5875
5876  - Delay the priority handling until the stream has been opened.
5877
5878  - Add test2404 to reproduce and verify.
5879
5880  Weights may change "on the run", which is why there are checks in
5881  general egress handling. These must not trigger when the stream has not
5882  been opened yet.
5883
5884  Reported-by: jbgoog@users.noreply.github.com
5885
5886  Fixes https://github.com/curl/curl/issues/11379
5887  Closes https://github.com/curl/curl/pull/11384
5888
5889- tests/http: Add mod_h2 directive `H2ProxyRequests`
5890
5891  master of mod_h2 now requires H2ProxyRequests directives for forward
5892  proxying with HTTP/2 to work.
5893
5894  Ref: https://github.com/icing/mod_h2/commit/3897a7086
5895
5896  Closes https://github.com/curl/curl/pull/11392
5897
5898Dan Fandrich (28 Jun 2023)
5899
5900- CI: make Appveyor job names unique
5901
5902  Two otherwise identical mingw-w64 jobs now have their differing compiler
5903  versions mentioned in their names.
5904
5905Sheshadri.V (25 Jun 2023)
5906
5907- curl.h: include <sys/select.h> for vxworks
5908
5909  Closes #11356
5910
5911Dan Fandrich (24 Jun 2023)
5912
5913- CI: enable parallel make in more builds
5914
5915  Most CI services provide at least two cores, so enable parallel make
5916  jobs to take advantage of that for builds. Some dependencies aren't safe
5917  to build in parallel so leave those as-is.  Also, rename a few
5918  workflows to eliminate duplicate names and provide a better idea what
5919  they're about.
5920
5921- CI: don't install impacket if tests are not run
5922
5923  It just wastes time and bandwidth and isn't even used.
5924
5925divinity76 (24 Jun 2023)
5926
5927- configure: the --without forms of the options are also gone
5928
5929  --without-darwin-ssl and --without-metalink
5930
5931  Closes #11378
5932
5933Daniel Stenberg (23 Jun 2023)
5934
5935- configure: add check for ldap_init_fd
5936
5937  ... as otherwise the configure script will say it is OpenLDAP in the
5938  summary, but not set the USE_OPENLDAP define, therefor not using the
5939  intended OpenLDAP code paths.
5940
5941  Regression since 4d7385446 (7.85.0)
5942  Fixes #11372
5943  Closes #11374
5944  Reported-by: vlkl-sap on github
5945
5946Michał Petryka (23 Jun 2023)
5947
5948- cmake: stop CMake from quietly ignoring missing Brotli
5949
5950  The CMake project was set to `QUIET` for Brotli instead of
5951  `REQUIRED`. This makes builds unexpectedly ignore missing Brotli even
5952  when `CURL_BROTLI` is enabled.
5953
5954  Closes #11376
5955
5956Emanuele Torre (22 Jun 2023)
5957
5958- docs: add more .IP after .RE to fix indentation of generate paragraphs
5959
5960  follow-up from 099f41e097c030077b8ec078f2c2d4038d31353b
5961
5962  I just thought of checking all the other files with .RE, and I found 6
5963  other files that were missing .IP at the end.
5964
5965  Closes #11375
5966
5967Stefan Eissing (22 Jun 2023)
5968
5969- http2: h2 and h2-PROXY connection alive check fixes
5970
5971  - fix HTTP/2 check to not declare a connection dead when
5972    the read attempt results in EAGAIN
5973  - add H2-PROXY alive check as for HTTP/2 that was missing
5974    and is needed
5975  - add attach/detach around Curl_conn_is_alive() and remove
5976    these in filter methods
5977  - add checks for number of connections used in some test_10
5978    proxy tunneling tests
5979
5980  Closes #11368
5981
5982- http2: error stream resets with code CURLE_HTTP2_STREAM
5983
5984  - refs #11357, where it was reported that HTTP/1.1 downgrades
5985    no longer works
5986  - fixed with suggested change
5987  - added test_05_03 and a new handler in the curltest module
5988    to reproduce that downgrades work
5989
5990  Fixes #11357
5991  Closes #11362
5992  Reported-by: Jay Satiro
5993
5994Daniel Stenberg (22 Jun 2023)
5995
5996- connect-timeout.d: mention that the DNS lookup is included
5997
5998  Closes #11370
5999
6000Emanuele Torre (22 Jun 2023)
6001
6002- quote.d: fix indentation of generated paragraphs
6003
6004  quote.d was missing a .IP at the end which caused the paragraphs
6005  generated for See-also, Multi, and Example to not be indented correctly.
6006
6007  I also remove a redundant "This option can be used multiple times.", and
6008  replaced .IP "item" with .TP .B "item" to make more clear which lines
6009  are part of the list of commands and which aren't.
6010
6011  Closes #11371
6012
6013Paul Wise (22 Jun 2023)
6014
6015- checksrc: modernise perl file open
6016
6017  Use regular variables and separate file open modes from filenames.
6018
6019  Suggested by perlcritic
6020
6021  Copied from https://github.com/curl/trurl/commit/f2784a9240f47ee28a845
6022
6023  Closes #11358
6024
6025Dan Fandrich (21 Jun 2023)
6026
6027- runtests: work around a perl without SIGUSR1
6028
6029  At least msys2 perl v5.32.1 doesn't seem to define this signal. Since
6030  this signal is only used for debugging, just ignore if setting it fails.
6031
6032  Reported-by: Marcel Raad
6033  Fixes #11350
6034  Closes #11366
6035
6036- runtests: include missing valgrind package
6037
6038  use valgrind was missing which caused torture tests with valgrind
6039  enabled to fail.
6040
6041  Reported-by: Daniel Stenberg
6042  Fixes #11364
6043  Closes #11365
6044
6045- runtests: use more consistent failure lines
6046
6047  After a test failure log a consistent log message to make it easier to
6048  parse the log file.  Also, log a consistent message with "ignored" for
6049  failures that cause the test to be not considered at all. These should
6050  perhaps be counted in the skipped category, but this commit does not
6051  change that behaviour.
6052
6053- runtests: consistently write the test check summary block
6054
6055  The memory check character was erroneously omitted if the memory
6056  checking file was not available for some reason, making the block of
6057  characters an inconsistent length.
6058
6059- test2600: fix the description
6060
6061  It looks like it was cut-and-pasted.
6062
6063  Closes #11354
6064
6065Daniel Stenberg (21 Jun 2023)
6066
6067- TODO: "Support HTTP/2 for HTTP(S) proxies" *done*
6068
6069humbleacolyte (21 Jun 2023)
6070
6071- cf-socket: move ctx declaration under HAVE_GETPEERNAME
6072
6073  Closes #11352
6074
6075Daniel Stenberg (20 Jun 2023)
6076
6077- RELEASE-NOTES: synced
6078
6079- example/connect-to: show CURLOPT_CONNECT_TO
6080
6081  Closes #11340
6082
6083Stefan Eissing (20 Jun 2023)
6084
6085- hyper: unslow
6086
6087  - refs #11203 where hyper was reported as being slow
6088  - fixes hyper_executor_poll to loop until it is out of
6089    tasks as advised by @seanmonstar in https://github.com/hyperium/hyper/issue
6090  s/3237
6091  - added a fix in hyper io handling for detecting EAGAIN
6092  - added some debug logs to see IO results
6093  - pytest http/1.1 test cases pass
6094  - pytest h2 test cases fail on connection reuse. HTTP/2
6095    connection reuse does not seem to work. Hyper submits
6096    a request on a reused connection, curl's IO works and
6097    thereafter hyper declares `Hyper: [1] operation was canceled: connection cl
6098  osed`
6099    on stderr without any error being logged before.
6100
6101  Fixes #11203
6102  Reported-by: Gisle Vanem
6103  Advised-by: Sean McArthur
6104  Closes #11344
6105
6106- HTTP/2: upload handling fixes
6107
6108  - fixes #11242 where 100% CPU on uploads was reported
6109  - fixes possible stalls on last part of a request body when
6110    that information could not be fully send on the connection
6111    due to an EAGAIN
6112  - applies the same EGAIN handling to HTTP/2 proxying
6113
6114  Reported-by: Sergey Alirzaev
6115  Fixed #11242
6116  Closes #11342
6117
6118Daniel Stenberg (20 Jun 2023)
6119
6120- example/opensslthreadlock: remove
6121
6122  This shows how to setup OpenSSL mutex callbacks, but this is not
6123  necessary since OpenSSL 1.1.0 - meaning that no currently supported
6124  OpenSSL version requires this anymore
6125
6126  Closes #11341
6127
6128Dan Fandrich (19 Jun 2023)
6129
6130- libtest: display the times after a test timeout error
6131
6132  This is to help with test failure debugging.
6133
6134  Ref: #11328
6135  Closes #11329
6136
6137- test2600: bump a test timeout
6138
6139  Case 1 failed at least once on GHA by going 30 msec too long.
6140
6141  Ref: #11328
6142
6143- runtests: better detect and handle pipe errors in the controller
6144
6145  Errors reading and writing to the pipes are now better detected and
6146  propagated up to the main test loop so it can be cleanly shut down. Such
6147  errors are usually due to a runner dying so it doesn't make much sense
6148  to try to continue the test run.
6149
6150- runtests: cleanly abort the runner if the controller dies
6151
6152  If the controller dies unexpectedly, have the runner stop its servers
6153  and exit cleanly. Otherwise, the orphaned servers will stay running in
6154  the background.
6155
6156- runtests: improve error logging
6157
6158  Give more information about test harness error conditions to help figure
6159  out what might be wrong. Print some internal test state when SIGUSR1 is
6160  sent to runtests.pl.
6161
6162  Ref: #11328
6163
6164- runtests: better handle ^C during slow tests
6165
6166  Since the SIGINT handler now just sets a flag that must be checked in the
6167  main controller loop, make sure that runs periodically.  Rather than
6168  blocking on a response from a test runner near the end of the test run,
6169  add a short timeout to allow it.
6170
6171- runtests: rename server command file
6172
6173  The name ftpserver.cmd was historical and has been used for more than
6174  ftp for many years now. Rename it to plain server.cmd to reduce
6175  confusion.
6176
6177- tests: improve reliability of TFTP tests
6178
6179  Stop checking the timeout used by the client under test (for most
6180  tests). The timeout will change if the TFTP test server is slow (such as
6181  happens on an overprovisioned CI server) because the client will retry
6182  and reduce its timeout, and the actual value is not important for most
6183  tests.
6184
6185  test285 is changed a different way, by increasing the connect timeout.
6186  This improves test coverage by allowing the changed timeout value to be
6187  checked, but improves reliability with a carefully-chosen timeout that
6188  not only allows twice the time to respond as before, but also allows
6189  several retries before the client will change its timeout value.
6190
6191  Ref: #11328
6192
6193Daniel Stenberg (19 Jun 2023)
6194
6195- cf-socket: skip getpeername()/getsockname for TFTP
6196
6197  Since the socket is not connected then the call fails. When the call
6198  fails, failf() is called to write an error message that is then
6199  surviving and is returned when the *real* error occurs later. The
6200  earlier, incorrect, error therefore hides the actual error message.
6201
6202  This could be seen in stderr for test 1007
6203
6204  Test 1007 has now been extended to verify the stderr message.
6205
6206  Closes #11332
6207
6208- example/crawler: make it use a few more options
6209
6210  For show, but reasonable
6211
6212- libcurl-ws.3: mention raw mode
6213
6214  Closes #11339
6215
6216- example/default-scheme: set the default scheme for schemeless URLs
6217
6218  Closes #11338
6219
6220- example/hsts-preload: show one way to HSTS preload
6221
6222  Closes #11337
6223
6224- examples/http-options: show how to send "OPTIONS *"
6225
6226  With CURLOPT_REQUEST_TARGET.
6227
6228  Also add use of CURLOPT_QUICK_EXIT to show.
6229
6230  Closes #11333
6231
6232- examples: make use of CURLOPT_(REDIR_|)PROTOCOLS_STR
6233
6234  To show how to use them
6235
6236  Closes #11334
6237
6238- examples/smtp-mime: use CURLOPT_MAIL_RCPT_ALLOWFAILS
6239
6240  For show
6241
6242  Closes #11335
6243
6244- http: rectify the outgoing Cookie: header field size check
6245
6246  Previously it would count the size of the entire outgoing request and
6247  not just the size of only the Cookie: header field - which was the
6248  intention.
6249
6250  This could make the check be off by several hundred bytes in some cases.
6251
6252  Closes #11331
6253
6254Jay Satiro (17 Jun 2023)
6255
6256- lib: fix some format specifiers
6257
6258  - Use CURL_FORMAT_CURL_OFF_T where %zd was erroneously used for some
6259    curl_off_t variables.
6260
6261  - Use %zu where %zd was erroneously used for some size_t variables.
6262
6263  Prior to this change some of the Windows CI tests were failing because
6264  in Windows 32-bit targets have a 32-bit size_t and a 64-bit curl_off_t.
6265  When %zd was used for some curl_off_t variables then only the lower
6266  32-bits was read and the upper 32-bits would be read for part or all of
6267  the next specifier.
6268
6269  Fixes https://github.com/curl/curl/issues/11327
6270  Closes https://github.com/curl/curl/pull/11321
6271
6272Marcel Raad (16 Jun 2023)
6273
6274- test427: add `cookies` feature and keyword
6275
6276  This test doesn't work with `--disable-cookies`.
6277
6278  Closes https://github.com/curl/curl/pull/11320
6279
6280Chris Talbot (15 Jun 2023)
6281
6282- imap: Provide method to disable SASL if it is advertised
6283
6284  - Implement AUTH=+LOGIN for CURLOPT_LOGIN_OPTIONS to prefer plaintext
6285    LOGIN over SASL auth.
6286
6287  Prior to this change there was no method to be able to fall back to
6288  LOGIN if an IMAP server advertises SASL capabilities. However, this may
6289  be desirable for e.g. a misconfigured server.
6290
6291  Per: https://www.ietf.org/rfc/rfc5092.html#section-3.2
6292
6293  ";AUTH=<enc-auth-type>" looks to be the correct way to specify what
6294  authenication method to use, regardless of SASL or not.
6295
6296  Closes https://github.com/curl/curl/pull/10041
6297
6298Daniel Stenberg (15 Jun 2023)
6299
6300- RELEASE-NOTES: synced
6301
6302- examples/multi-debugcallback.c: avoid the bool typedef
6303
6304  Apparently this cannot be done in c23
6305
6306  Reported-by: Cristian Rodríguez
6307  Fixes #11299
6308  Closes #11319
6309
6310- docs/libcurl/libcurl.3: cleanups and improvements
6311
6312  Closes #11317
6313
6314- libcurl-ws.3: fix typo
6315
6316- curl_ws_*.3: enhance
6317
6318  - all: SEE ALSO the libcurl-ws man page
6319  - send: add example and return value information
6320  - meta: mention that the returned data is read-only
6321
6322  Closes #11318
6323
6324- docs/libcurl/libcurl-ws.3: see also CURLOPT_WS_OPTIONS
6325
6326- docs/libcurl/libcurl-ws.3: minor polish
6327
6328- libcurl-ws.3. WebSocket API overview
6329
6330  Closes #11314
6331
6332- libcurl-url.3: also mention CURLUPART_ZONEID
6333
6334  ... and sort the two part-using lists alphabetically
6335
6336Marcel Raad (14 Jun 2023)
6337
6338- fopen: fix conversion warning on 32-bit Android
6339
6340  When building for 32-bit ARM or x86 Android, `st_mode` is defined as
6341  `unsigned int` instead of `mode_t`, resulting in a
6342  -Wimplicit-int-conversion clang warning because `mode_t` is
6343  `unsigned short`. Add a cast to silence the warning.
6344
6345  Ref: https://android.googlesource.com/platform/bionic/+/refs/tags/ndk-r25c/li
6346  bc/include/sys/stat.h#86
6347  Closes https://github.com/curl/curl/pull/11313
6348
6349- http2: fix variable type
6350
6351  `max_recv_speed` is `curl_off_t`, so using `size_t` might result in
6352  -Wconversion GCC warnings for 32-bit `size_t`. Visible in the NetBSD
6353  ARM autobuilds.
6354
6355  Closes https://github.com/curl/curl/pull/11312
6356
6357Daniel Stenberg (13 Jun 2023)
6358
6359- vtls: fix potentially uninitialized local variable warnings
6360
6361  Follow-up from a4a5e438ae533c
6362
6363  Closes #11310
6364
6365- timeval: use CLOCK_MONOTONIC_RAW if available
6366
6367  Reported-by: Harry Sintonen
6368  Ref: #11288
6369  Closes #11291
6370
6371Stefan Eissing (12 Jun 2023)
6372
6373- tool: add curl command line option `--trace-ids`
6374
6375  - added and documented --trace-ids to prepend (after the timestamp)
6376    the transfer and connection identifiers to each verbose log line
6377  - format is [n-m] with `n` being the transfer id and `m` being the
6378    connection id. In case there is not valid connection id, print 'x'.
6379  - Log calls with a handle that has no transfer id yet, are written
6380    without any ids.
6381
6382  Closes #11185
6383
6384- lib: add CURLINFO_CONN_ID and CURLINFO_XFER_ID
6385
6386  - add an `id` long to Curl_easy, -1 on init
6387  - once added to a multi (or its own multi), it gets
6388    a non-negative number assigned by the connection cache
6389  - `id` is unique among all transfers using the same
6390    cache until reaching LONG_MAX where it will wrap
6391    around. So, not unique eternally.
6392  - CURLINFO_CONN_ID returns the connection id attached to
6393    data or, if none present, data->state.lastconnect_id
6394  - variables and type declared in tool for write out
6395
6396  Closes #11185
6397
6398Daniel Stenberg (12 Jun 2023)
6399
6400- CURLOPT_INFILESIZE.3: mention -1 triggers chunked
6401
6402  Ref: #11300
6403  Closes #11304
6404
6405Philip Heiduck (12 Jun 2023)
6406
6407- CI: openssl-3.0.9+quic
6408
6409  Closes #11296
6410
6411Karthikdasari0423 (12 Jun 2023)
6412
6413- HTTP3.md: update openssl version
6414
6415  Closes #11297
6416
6417Daniel Stenberg (12 Jun 2023)
6418
6419- vtls: avoid memory leak if sha256 call fails
6420
6421  ... in the pinned public key handling function.
6422
6423  Reported-by: lizhuang0630 on github
6424  Fixes #11306
6425  Closes #11307
6426
6427- examples/ipv6: disable on win32
6428
6429  I can't make if_nametoindex() work there
6430
6431  Follow-up to c23dc42f3997acf23
6432
6433  Closes #11305
6434
6435- tool_operate: allow cookie lines up to 8200 bytes
6436
6437  Since this option might set multiple cookies in the same line, it does
6438  not make total sense to cap this at 4096 bytes, which is the limit for a
6439  single cookie name or value.
6440
6441  Closes #11303
6442
6443- test427: verify sending more cookies than fit in a 8190 bytes line
6444
6445  curl will then only populate the header with cookies that fit, dropping
6446  ones that otherwise would have been sent
6447
6448  Ref: https://curl.se/mail/lib-2023-06/0020.html
6449
6450  Closes #11303
6451
6452- testutil: allow multiple %-operators on the same line
6453
6454  Closes #11303
6455
6456Oleg Jukovec (12 Jun 2023)
6457
6458- docs: update CURLOPT_UPLOAD.3
6459
6460  The behavior of CURLOPT_UPLOAD differs from what is described in the
6461  documentation. The option automatically adds the 'Transfer-Encoding:
6462  chunked' header if the upload size is unknown.
6463
6464  Closes #11300
6465
6466Daniel Stenberg (12 Jun 2023)
6467
6468- RELEASE-NOTES: synced
6469
6470- CURLOPT_AWS_SIGV4.3: remove unused variable from example
6471
6472  Closes #11302
6473
6474- examples/https.c: use CURLOPT_CA_CACHE_TIMEOUT
6475
6476  for demonstration purposes
6477
6478  Closes #11290
6479
6480- example/ipv6: feature CURLOPT_ADDRESS_SCOPE in use
6481
6482  Closes #11282
6483
6484Karthikdasari0423 (10 Jun 2023)
6485
6486- docs: Update HTTP3.md for newer ngtcp2 and nghttp3
6487
6488  Follow-up to fb9b9b58
6489
6490  Ref: #11184
6491  Closes #11295
6492
6493Dan Fandrich (10 Jun 2023)
6494
6495- docs: update the supported ngtcp2 and nghttp3 versions
6496
6497  Follow-up to cae9d10b
6498
6499  Ref: #11184
6500  Closes #11294
6501
6502- tests: fix error messages & handling around sockets
6503
6504  The wrong error code was checked on Windows on UNIX socket failures,
6505  which could have caused all UNIX sockets to be reported as having
6506  errored and the tests therefore skipped. Also, a useless error message
6507  was displayed on socket errors in many test servers on Windows because
6508  strerror() doesn't work on WinSock error codes; perror() is overridden
6509  there to work on all errors and is used instead.
6510
6511  Ref #11258
6512  Closes #11265
6513
6514Daniel Stenberg (9 Jun 2023)
6515
6516- CURLOPT_SSH_PRIVATE_KEYFILE.3: expand on the file search
6517
6518  Reported-by: atjg on github
6519  Ref: #11287
6520  Closes #11289
6521
6522Stefan Eissing (9 Jun 2023)
6523
6524- ngtcp2: use ever increasing timestamp in io
6525
6526  - ngtcp2 v0.16.0 asserts that timestamps passed to its function
6527    will only ever increase.
6528  - Use a context shared between ingress/egress operations that
6529    uses a shared timestamp, regularly updated during calls.
6530
6531  Closes #11288
6532
6533Daniel Stenberg (9 Jun 2023)
6534
6535- GHA: use nghttp2 1.54.0 for the ngtcp2 jobs
6536
6537Philip Heiduck (9 Jun 2023)
6538
6539- GHA: ngtcp2: use 0.16.0 and nghttp3 0.12.0
6540
6541Daniel Stenberg (9 Jun 2023)
6542
6543- ngtcp2: build with 0.16.0 and nghttp3 0.12.0
6544
6545  - moved to qlog_write
6546  - crypto => encryption
6547  - CRYPTO => ENCRYPTION
6548  - removed "_is_"
6549  - ngtcp2_conn_shutdown_stream_read and
6550    ngtcp2_conn_shutdown_stream_write got flag arguments
6551  - the nghttp3_callbacks struct got a recv_settings callback
6552
6553  Closes #11184
6554
6555- example/http2-download: set CURLOPT_BUFFERSIZE
6556
6557  Primarily because no other example sets it, and remove the disabling of
6558  the certificate check because we should not recommend that.
6559
6560  Closes #11284
6561
6562- example/crawler: also set CURLOPT_AUTOREFERER
6563
6564  Could make sense, and it was not used in any example before.
6565
6566  Closes #11283
6567
6568Wyatt OʼDay (9 Jun 2023)
6569
6570- tls13-ciphers.d: include Schannel
6571
6572  Closes #11271
6573
6574Daniel Stenberg (9 Jun 2023)
6575
6576- curl_pushheader_byname/bynum.3: document in their own man pages
6577
6578  These two functions were added in 7.44.0 when CURLMOPT_PUSHFUNCTION was
6579  introduced but always lived a life in the shadows, embedded in the
6580  CURLMOPT_PUSHFUNCTION man page. Until now.
6581
6582  It makes better sense and gives more visibility to document them in
6583  their own stand-alone man pages.
6584
6585  Closes #11286
6586
6587- curl_mprintf.3: minor fix of the example
6588
6589- curl_url_set: enforce the max string length check for all parts
6590
6591  Update the docs and test 1559 accordingly
6592
6593  Closes #11273
6594
6595- examples/ftpuploadresume.c: add use of CURLOPT_ACCEPTTIMEOUT_MS
6596
6597  For show
6598
6599  Closes #11277
6600
6601- examples/unixsocket.c: example using CURLOPT_UNIX_SOCKET_PATH
6602
6603  and alternatively CURLOPT_ABSTRACT_UNIX_SOCKET
6604
6605  Closes #11276
6606
6607Anssi Kolehmainen (8 Jun 2023)
6608
6609- docs: fix missing parameter names in examples
6610
6611  Closes #11278
6612
6613Daniel Stenberg (8 Jun 2023)
6614
6615- urlapi: have *set(PATH) prepend a slash if one is missing
6616
6617  Previously the code would just do that for the path when extracting the
6618  full URL, which made a subsequent curl_url_get() of the path to
6619  (unexpectedly) still return it without the leading path.
6620
6621  Amend lib1560 to verify this. Clarify the curl_url_set() docs about it.
6622
6623  Bug: https://curl.se/mail/lib-2023-06/0015.html
6624  Closes #11272
6625  Reported-by: Pedro Henrique
6626
6627Dan Fandrich (7 Jun 2023)
6628
6629- runtests; give each server a unique log lock file
6630
6631  Logs are written by several servers and all of them must be finished
6632  writing before the test results can be determined. This means each
6633  server must have its own lock file rather than sharing a single one,
6634  which is how it was done up to now. Previously, the first server to
6635  complete a test would clear the lock before the other server was done,
6636  which caused flaky tests.
6637
6638  Lock files are now all found in their own directory, so counting locks
6639  equals counting the files in that directory.  The result is that the
6640  proxy logs are now reliably written which actually changes the expected
6641  output for two tests.
6642
6643  Fixes #11231
6644  Closes #11259
6645
6646- runtests: make test file directories in log/N
6647
6648  Test files in subdirectories were not created after parallel test log
6649  directories were moved down a level due to a now-bad comparison.
6650
6651  Follow-up to 92d7dd39
6652
6653  Ref #11264
6654  Closes #11267
6655
6656Daniel Stenberg (7 Jun 2023)
6657
6658- ws: make the curl_ws_meta() return pointer a const
6659
6660  The returned info is read-only for the user.
6661
6662  Closes #11261
6663
6664- RELEASE-NOTES: synced
6665
6666- runtests: move parallel log dirs from logN to log/N
6667
6668  Having several hundreds of them in there gets annoying.
6669
6670  Closes #11264
6671
6672Dan Fandrich (7 Jun 2023)
6673
6674- test447: move the test file into %LOGDIR
6675
6676Viktor Szakats (7 Jun 2023)
6677
6678- cmake: add support for "unity" builds
6679
6680  Aka "jumbo" or "amalgamation" builds. It means to compile all sources
6681  per target as a single C source. This is experimental.
6682
6683  You can enable it by passing `-DCMAKE_UNITY_BUILD=ON` to cmake.
6684  It requires CMake 3.16 or newer.
6685
6686  It makes builds (much) faster, allows for better optimizations and tends
6687  to promote less ambiguous code.
6688
6689  Also add a new AppVeyor CI job and convert an existing one to use
6690  "unity" mode (one MSVC, one MinGW), and enable it for one macOS CI job.
6691
6692  Fix related issues:
6693  - add missing include guard to `easy_lock.h`.
6694  - rename static variables and functions (and a macro) with names reused
6695    across sources, or shadowed by local variables.
6696  - add an `#undef` after use.
6697  - add a missing `#undef` before use.
6698  - move internal definitions from `ftp.h` to `ftp.c`.
6699  - `curl_memory.h` fixes to make it work when included repeatedly.
6700  - stop building/linking curlx bits twice for a static-mode curl tool.
6701    These caused doubly defined symbols in unity builds.
6702  - silence missing extern declarations compiler warning for ` _CRT_glob`.
6703  - fix extern declarations for `tool_freq` and `tool_isVistaOrGreater`.
6704  - fix colliding static symbols in debug mode: `debugtime()` and
6705    `statename`.
6706  - rename `ssl_backend_data` structure to unique names for each
6707    TLS-backend, along with the `ssl_connect_data` struct member
6708    referencing them. This required adding casts for each access.
6709  - add workaround for missing `[P]UNICODE_STRING` types in certain Windows
6710    builds when compiling `lib/ldap.c`. To support "unity" builds, we had
6711    to enable `SCHANNEL_USE_BLACKLISTS` for Schannel (a Windows
6712    `schannel.h` option) _globally_. This caused an indirect inclusion of
6713    Windows `schannel.h` from `ldap.c` via `winldap.h` to have it enabled
6714    as well. This requires `[P]UNICODE_STRING` types, which is apperantly
6715    not defined automatically (as seen with both MSVS and mingw-w64).
6716    This patch includes `<subauth.h>` to fix it.
6717    Ref: https://github.com/curl/curl/runs/13987772013
6718    Ref: https://dev.azure.com/daniel0244/curl/_build/results?buildId=15827&vie
6719  w=logs&jobId=2c9f582d-e278-56b6-4354-f38a4d851906&j=2c9f582d-e278-56b6-4354-f
6720  38a4d851906&t=90509b00-34fa-5a81-35d7-5ed9569d331c
6721  - tweak unity builds to compile `lib/memdebug.c` separately in memory
6722    trace builds to avoid PP confusion.
6723  - force-disable unity for test programs.
6724  - do not compile and link libcurl sources to libtests _twice_ when libcurl
6725    is built in static mode.
6726
6727  KNOWN ISSUES:
6728  - running tests with unity builds may fail in cases.
6729  - some build configurations/env may not compile in unity mode. E.g.:
6730    https://ci.appveyor.com/project/curlorg/curl/builds/47230972/job/51wfesgnfu
6731  auwl8q#L250
6732
6733  Ref: https://github.com/libssh2/libssh2/issues/1034
6734  Ref: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html
6735  Ref: https://en.wikipedia.org/wiki/Unity_build
6736
6737  Closes #11095
6738
6739Daniel Stenberg (7 Jun 2023)
6740
6741- examples/websocket.c: websocket example using CONNECT_ONLY
6742
6743  Closes #11262
6744
6745- websocket-cb: example doing WebSocket download using callback
6746
6747  Very basic
6748
6749  Closes #11260
6750
6751- test/.gitignore: ignore log*
6752
6753Dan Fandrich (5 Jun 2023)
6754
6755- runtests: document the -j parallel testing option
6756
6757  Reported-by: Daniel Stenberg
6758  Ref: #10818
6759  Closes #11255
6760
6761- runtests: create multiple test runners when requested
6762
6763  Parallel testing is enabled by using a nonzero value for the -j option
6764  to runtests.pl. Performant values seem to be about 7*num CPU cores, or
6765  1.3*num CPU cores if Valgrind is in use.
6766
6767  Flaky tests due to improper log locking (bug #11231) are exacerbated
6768  while parallel testing, so it is not enabled by default yet.
6769
6770  Fixes #10818
6771  Closes #11246
6772
6773- runtests: handle repeating tests in multiprocess mode
6774
6775  Such as what happens with the --repeat option.  Some functions are
6776  changed to pass the runner ID instead of relying on the non-unique test
6777  number.
6778
6779  Ref: #10818
6780
6781- runtests: buffer logmsg while running singletest()
6782
6783  This allows all messages relating to a single test case to be displayed
6784  together at the end of the test.
6785
6786  Ref: #10818
6787
6788- runtests: call initserverconfig() in the runner
6789
6790  This must be done so variables pick up the runner's unique $LOGDIR.
6791
6792  Ref: #10818
6793
6794- runtests: use a per-runner random seed
6795
6796  Each runner needs a unique random seed to reduce the chance of port
6797  number collisions. The new scheme uses a consistent per-runner source of
6798  randomness which results in deterministic behaviour, as it did before.
6799
6800  Ref: #10818
6801
6802- runtests: complete main test loop refactor for multiple runners
6803
6804  The main test loop is now able to handle multiple runners, or no
6805  additional runner processes at all. At most one process is still
6806  created, however.
6807
6808  Ref: #10818
6809
6810- runtests: prepare main test loop for multiple runners
6811
6812  Some variables are expanded to arrays and hashes so that multiple
6813  runners can be used for running tests.
6814
6815  Ref: #10818
6816
6817Stefan Eissing (5 Jun 2023)
6818
6819- bufq: make write/pass methods more robust
6820
6821  - related to #11242 where curl enters busy loop when
6822    sending http2 data to the server
6823
6824  Closes #11247
6825
6826Boris Verkhovskiy (5 Jun 2023)
6827
6828- tool_getparam: fix comment
6829
6830  Closes #11253
6831
6832Raito Bezarius (5 Jun 2023)
6833
6834- haproxy: add --haproxy-clientip flag to spoof client IPs
6835
6836  CURLOPT_HAPROXY_CLIENT_IP in the library
6837
6838  Closes #10779
6839
6840Daniel Stenberg (5 Jun 2023)
6841
6842- curl: add --ca-native and --proxy-ca-native
6843
6844  These are two boolean options to ask curl to use the native OS's CA
6845  store when verifying TLS servers. For peers and for proxies
6846  respectively.
6847
6848  They currently only have an effect for curl on Windows when built to use
6849  OpenSSL for TLS.
6850
6851  Closes #11049
6852
6853Viktor Szakats (5 Jun 2023)
6854
6855- build: drop unused/redundant `HAVE_WINLDAP_H`
6856
6857  Sources did not use it. Autotools used it when checking for the
6858  `winldap` library, which is redundant.
6859
6860  With CMake, detection was broken:
6861  ```
6862  Run Build Command(s):/usr/local/Cellar/cmake/3.26.3/bin/cmake -E env VERBOSE=
6863  1 /usr/bin/make -f Makefile cmTC_2d8fe/fast && /Library/Developer/CommandLine
6864  Tools/usr/bin/make  -f CMakeFiles/cmTC_2d8fe.dir/build.make CMakeFiles/cmTC_2
6865  d8fe.dir/build
6866  Building C object CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj
6867  /usr/local/opt/llvm/bin/clang --target=x86_64-w64-mingw32 --sysroot=/usr/loca
6868  l/opt/mingw-w64/toolchain-x86_64 -D_WINSOCKAPI_="" -I/my/quictls/x64-ucrt/usr
6869  /include -I/my/zlib/x64-ucrt/usr/include -I/my/brotli/x64-ucrt/usr/include -W
6870  no-unused-command-line-argument   -D_UCRT -DCURL_HIDDEN_SYMBOLS -DHAVE_SSL_SE
6871  T0_WBIO -DHAS_ALPN -DNGHTTP2_STATICLIB -DNGHTTP3_STATICLIB -DNGTCP2_STATICLIB
6872   -DUSE_MANUAL=1  -fuse-ld=lld -Wl,-s -static-libgcc  -lucrt  -Wextra -Wall -p
6873  edantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmi
6874  ssing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-ari
6875  th -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Wcast-align -Wde
6876  claration-after-statement -Wempty-body -Wendif-labels -Wfloat-equal -Wignored
6877  -qualifiers -Wno-format-nonliteral -Wno-sign-conversion -Wno-system-headers -
6878  Wstrict-prototypes -Wtype-limits -Wvla -Wshift-sign-overflow -Wshorten-64-to-
6879  32 -Wdouble-promotion -Wenum-conversion -Wunused-const-variable -Wcomma -Wmis
6880  sing-variable-declarations -Wassign-enum -Wextra-semi-stmt  -MD -MT CMakeFile
6881  s/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -MF CMakeFiles/cmTC_2d8fe.dir/HAVE_WINL
6882  DAP_H.c.obj.d -o CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -c /my/curl/b
6883  ld-cmake-llvm-x64-shared/CMakeFiles/CMakeScratch/TryCompile-3JP6dR/HAVE_WINLD
6884  AP_H.c
6885  In file included from /my/curl/bld-cmake-llvm-x64-shared/CMakeFiles/CMakeScra
6886  tch/TryCompile-3JP6dR/HAVE_WINLDAP_H.c:2:
6887  In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi
6888  ngw32/include/winldap.h:17:
6889  In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi
6890  ngw32/include/schnlsp.h:9:
6891  In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi
6892  ngw32/include/schannel.h:10:
6893  /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt
6894  .h:5041:254: error: unknown type name 'PSYSTEMTIME'
6895    WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_
6896  NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob,
6897  DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER
6898   pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT
6899  ENSIONS pExtensions);
6900
6901
6902
6903                        ^
6904  /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt
6905  .h:5041:278: error: unknown type name 'PSYSTEMTIME'
6906    WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_
6907  NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob,
6908  DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER
6909   pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT
6910  ENSIONS pExtensions);
6911
6912
6913
6914                                                ^
6915  2 errors generated.
6916  make[1]: *** [CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj] Error 1
6917  make: *** [cmTC_2d8fe/fast] Error 2
6918  exitCode: 2
6919  ```
6920
6921  Cherry-picked from #11095 88e4a21ff70ccef391cf99c8165281ff81374503
6922  Reviewed-by: Daniel Stenberg
6923  Closes #11245
6924
6925Daniel Stenberg (5 Jun 2023)
6926
6927- urlapi: scheme starts with alpha
6928
6929  Add multiple tests to lib1560 to verify
6930
6931  Fixes #11249
6932  Reported-by: ad0p on github
6933  Closes #11250
6934
6935- RELEASE-NOTES: synced
6936
6937- CURLOPT_MAIL_RCPT_ALLOWFAILS: replace CURLOPT_MAIL_RCPT_ALLLOWFAILS
6938
6939  Deprecate the name using three Ls and prefer the name with two.
6940
6941  Replaces #10047
6942  Closes #11218
6943
6944- tests/servers: generate temp names in /tmp for unix domain sockets
6945
6946  ... instead of putting them in the regular pid directories because
6947  systems generally have strict length requirements for the path name to
6948  be shorter than 107 bytes and we easily hit that boundary otherwise.
6949
6950  The new concept generates two random names: one for the socks daemon and
6951  one for http.
6952
6953  Reported-by: Andy Fiddaman
6954  Fixes #11152
6955  Closes #11166
6956
6957Stefan Eissing (2 Jun 2023)
6958
6959- http2: better support for --limit-rate
6960
6961  - leave transfer loop when --limit-rate is in effect and has
6962    been received
6963  - adjust stream window size to --limit-rate plus some slack
6964    to make the server observe the pacing we want
6965  - add test case to confirm behaviour
6966
6967  Closes #11115
6968
6969- curl_log: evaluate log statement only when transfer is verbose
6970
6971  Closes #11238
6972
6973Daniel Stenberg (2 Jun 2023)
6974
6975- libssh2: provide error message when setting host key type fails
6976
6977  Ref: https://curl.se/mail/archive-2023-06/0001.html
6978
6979  Closes #11240
6980
6981Igor Todorovski (2 Jun 2023)
6982
6983- system.h: remove __IBMC__/__IBMCPP__ guards and apply to all z/OS compiles
6984
6985  Closes #11241
6986
6987Daniel Stenberg (2 Jun 2023)
6988
6989- docs/SECURITY-PROCESS.md: link to example of previous critical flaw
6990
6991Mark Seuffert (2 Jun 2023)
6992
6993- README.md: updated link to opencollective
6994
6995  Closes #11232
6996
6997Daniel Stenberg (1 Jun 2023)
6998
6999- libssh2: use custom memory functions
7000
7001  Because of how libssh2_userauth_keyboard_interactive_ex() works: the
7002  libcurl callback allocates memory that is later free()d by libssh2, we
7003  must set the custom memory functions.
7004
7005  Reverts 8b5f100db388ee60118c08aa28
7006
7007  Ref: https://github.com/libssh2/libssh2/issues/1078
7008  Closes #11235
7009
7010- test447: test PUTting a file that grows
7011
7012  ... and have curl trim the end when it reaches the expected total amount
7013  of bytes instead of over-sending.
7014
7015  Reported-by: JustAnotherArchivist on github
7016  Closes #11223
7017
7018- curl: count uploaded data to stop at the originally given size
7019
7020  Closes #11223
7021  Fixes #11222
7022  Reported-by: JustAnotherArchivist on github
7023
7024- tool: remove exclamation marks from error/warning messages
7025
7026- tool: use errorf() for error output
7027
7028  Convert a number of fprintf() calls.
7029
7030- tool: remove newlines from all helpf/notef/warnf/errorf calls
7031
7032  Make voutf() always add one.
7033
7034  Closes #11226
7035
7036- tests/servers.pm: pick unused port number with a server socket
7037
7038  This change replaces the previous method of picking a port number at
7039  random to try to start servers on, then retrying up to ten times with
7040  new random numbers each time, with a function that creates a server
7041  socket on port zero, thereby getting a suitable random port set by the
7042  kernel. That server socket is then closed and that port number is used
7043  to setup the actual test server on.
7044
7045  There is a risk that *another* server can be started on the machine in
7046  the time gap, but the server verification feature will detect that.
7047
7048  Closes #11220
7049
7050- RELEASE-NOTES: synced
7051
7052  bump to 8.2.0
7053
7054Alejandro R. Sedeño (31 May 2023)
7055
7056- configure: fix run-compiler for old /bin/sh
7057
7058  If you try to assign and export on the same line on some older /bin/sh
7059  implementations, it complains:
7060
7061  ```
7062  $ export "NAME=value"
7063  NAME=value: is not an identifier
7064  ```
7065
7066  This commit rewrites run-compiler's assignments and exports to work with
7067  old /bin/sh, splitting assignment and export into two separate
7068  statements, and only quote the value. So now we have:
7069
7070  ```
7071  NAME="value"
7072  export NAME
7073  ```
7074
7075  While we're here, make the same change to the two supporting
7076  assign+export lines preceeding the script to be consistent with how
7077  exports work throughout the rest of configure.ac.
7078
7079  Closes #11228
7080
7081Philip Heiduck (31 May 2023)
7082
7083- circleci: install impacket & wolfssl 5.6.0
7084
7085  Closes #11221
7086
7087Daniel Stenberg (31 May 2023)
7088
7089- tool_urlglob: use curl_off_t instead of longs
7090
7091  To handle more globs better (especially on Windows)
7092
7093  Closes #11224
7094
7095Dan Fandrich (30 May 2023)
7096
7097- scripts: Fix GHA matrix job detection in cijobs.pl
7098
7099  The parsing is pretty brittle and it broke detecting some jobs at some
7100  point. Also, detect if Windows is used in GHA.
7101
7102- runtests: abort test run after failure without -a
7103
7104  This was broken in a recent refactor and test runs would not stop.
7105
7106  Follow-up to d4a1b5b6
7107
7108  Reported-by: Daniel Stenberg
7109  Fixes #11225
7110  Closes #11227
7111
7112Version 8.1.2 (30 May 2023)
7113
7114Daniel Stenberg (30 May 2023)
7115
7116- RELEASE-NOTES: synced
7117
7118  8.1.2 release
7119
7120- THANKS: contributors from 8.1.2
7121
7122- lib1560: verify more scheme guessing
7123
7124  - on 2nd level domains
7125  - on names without dots
7126
7127  As mentioned in #11161, "imap.com" will be guessed IMAP
7128
7129  Closes #11219
7130
7131- page-header: minor wording polish in the URL segment
7132
7133  Closes #11217
7134
7135- page-header: mention curl version and how to figure out current release
7136
7137  Closes #11216
7138
7139- RELEASE-NOTES: synced
7140
7141- configure: without pkg-config and no custom path, use -lnghttp2
7142
7143  Reported-by: correctmost on github
7144  Fixes #11186
7145  Closes #11210
7146
7147Stefan Eissing (28 May 2023)
7148
7149- curl: cache the --trace-time value for a second
7150
7151  - caches HH:MM:SS computed and reuses it for logging during
7152    the same second.
7153  - common function for plain log line start formatting
7154
7155  Closes #11211
7156
7157Kev Jackson (28 May 2023)
7158
7159- libcurl.m4: remove trailing 'dnl' that causes this to break autoconf
7160
7161  Closes #11212
7162
7163Stefan Eissing (26 May 2023)
7164
7165- http3: send EOF indicator early as possible
7166
7167  - ngtcp2 and quiche implementations relied on the DONE_SEND event
7168    to forward the EOF for uploads to the libraries. This often
7169    result in a last 0 length EOF data. Tracking the amount of
7170    data left to upload allows EOF indication earlier.
7171  - refs #11205 where CloudFlare DoH servers did not like to
7172    receive the initial upload DATA without EOF and returned
7173    a 400 Bad Request
7174
7175  Reported-by: Sergey Fionov
7176  Fixes #11205
7177  Closes #11207
7178
7179Daniel Stenberg (26 May 2023)
7180
7181- scripts/contri*sh: no longer grep -v ' '
7182
7183  Originally these scripts filtered out names that have no space so that
7184  they better avoid nick names not intended for credits. Such names are
7185  not too commonly used, plus we now give credit even to those.
7186
7187  Additionally: non-latin names, like Asian, don't have spaces at all so
7188  they were also filtered out and had to be manually added which made it
7189  an error-prone operation where Asian names eventually easily fell off by
7190  mistake.
7191
7192  Closes #11206
7193
7194- cf-socket: restore Curl_sock_assign_addr()
7195
7196  Regression since it was not private. Also used by msh3.c
7197
7198  Follow-up to 8e85764b7bd7f05f5
7199  Reported-by: Gisle Vanem
7200  Fixes #11202
7201  Closes #11204
7202
7203- RELEASE-NOTES: synced
7204
7205  Taken down to 8.1.2 now for pending patch release
7206
7207- libssh: when keyboard-interactive auth fails, try password
7208
7209  The state machine had a mistake in that it would not carry on to that
7210  next step.
7211
7212  This also adds a verbose output what methods that are available from the
7213  server and renames the macros that change to the next auth methods to
7214  try.
7215
7216  Reported-by: 左潇峰
7217  Fixes #11196
7218  Closes #11197
7219
7220Emanuele Torre (25 May 2023)
7221
7222- configure: fix build with arbitrary CC and LD_LIBRARY_PATH
7223
7224  Since ./configure and processes that inherit its environment variables
7225  are the only callers of the run-compiler script, we can just save the
7226  current value of the LD_LIBRARY_PATH and CC variables to another pair of
7227  environment variables, and make run-compiler a static script that
7228  simply restores CC and LD_LIBRARY_PATH to the saved value, and before
7229  running the compiler.
7230
7231  This avoids having to inject the values of the variables in the script,
7232  possibly causing problems if they contains spaces, quotes, and other
7233  special characters.
7234
7235  Also add exports in the script just in case LD_LIBRARY_PATH and CC are
7236  not already in the environment.
7237
7238  follow-up from 471dab2
7239
7240  Closes #11182
7241
7242Daniel Stenberg (25 May 2023)
7243
7244- urlapi: remove superfluous host name check
7245
7246  ... as it is checked later more proper.
7247
7248  Closes #11195
7249
7250Stefan Eissing (25 May 2023)
7251
7252- http2: fix EOF handling on uploads with auth negotiation
7253
7254  - doing a POST with `--digest` does an override on the initial request
7255    with `Content-Length: 0`, but the http2 filter was unaware of that
7256    and expected the originally request body. It did therefore not
7257    send a final DATA frame with EOF flag to the server.
7258  - The fix overrides any initial notion of post size when the `done_send`
7259    event is triggered by the transfer loop, leading to the EOF that
7260    is necessary.
7261  - refs #11194. The fault did not happen in testing, as Apache httpd
7262    never tries to read the request body of the initial request,
7263    sends the 401 reply and closes the stream. The server used in the
7264    reported issue however tried to read the EOF and timed out on the
7265    request.
7266
7267  Reported-by: Aleksander Mazur
7268  Fixes #11194
7269  Cloes #11200
7270
7271Daniel Stenberg (23 May 2023)
7272
7273- RELEASE-NOTES: synced
7274
7275  bump to 8.2.0
7276
7277- lib: remove unused functions, make single-use static
7278
7279  Closes #11174
7280
7281- scripts/singleuse.pl: add more API calls
7282
7283Christian Hesse (23 May 2023)
7284
7285- configure: quote the assignments for run-compiler
7286
7287  Building for multilib failed, as the compiler command contains an
7288  extra argument. That needs quoting.
7289
7290  Regression from b78ca50cb3dda361f9c1
7291
7292  Fixes #11179
7293  Closes #11180
7294
7295Daniel Stenberg (23 May 2023)
7296
7297- misc: fix spelling mistakes
7298
7299  Reported-by: musvaage on github
7300  Fixes #11171
7301  Closes #11172
7302
7303Version 8.1.1 (23 May 2023)
7304
7305Daniel Stenberg (23 May 2023)
7306
7307- RELEASE-NOTES: synced
7308
7309  curl 8.1.1
7310
7311- THANKS: contributors from the 8.1.1 release
7312
7313Dan Fandrich (22 May 2023)
7314
7315- docs: fix fuzzing documentation link
7316
7317  Follow-up to 4c712a1b
7318
7319- CI: add an Alpine build with MUSL
7320
7321  MUSL is another libc implementation which has its own unique issues
7322  worth testing.
7323
7324  Ref: #11140
7325  Closes #11178
7326
7327- runtests: add a missing \n at the end of a log message
7328
7329correctmost on github (22 May 2023)
7330
7331- SECURITY-PROCESS.md: link security advisory doc and fix typo
7332
7333  Closes #11177
7334
7335Daniel Stenberg (22 May 2023)
7336
7337- TODO: build curl with Windows Unicode support
7338
7339  Closes #7229
7340
7341- KNOWN_BUGS: hyper memory-leaks
7342
7343  Closes #10803
7344
7345Stefan Eissing (22 May 2023)
7346
7347- http/2: unstick uploads
7348
7349  - refs #11157 and #11175 where uploads get stuck or lead to RST streams
7350  - fixes our h2 send behaviour to continue sending in the nghttp2 session
7351    as long as it wants to. This will empty our send buffer as long as
7352    the remote stream/connection window allows.
7353  - in case the window is exhausted, the data remaining in the send buffer
7354    will wait for a WINDOW_UPDATE from the server. Which is a socket event
7355    that engages our transfer loop again
7356  - the problem in the issue was that we did not exhaust the window, but
7357    left data in the sendbuffer and no further socket events did happen.
7358    The server was just waiting for us to send more.
7359  - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD
7360    set kept the transfer from shutting down - as it should have - leading
7361    to a timeout.
7362
7363  Closes #11176
7364
7365Daniel Stenberg (21 May 2023)
7366
7367- workflows/macos: add a job using gcc + debug + secure transport
7368
7369Jay Satiro (21 May 2023)
7370
7371- lib: fix conversion warnings with gcc on macOS
7372
7373Daniel Stenberg (21 May 2023)
7374
7375- sectransp.c: make the code c89 compatible
7376
7377  Follow-up to dd2bb485521c2ec713001b3a
7378
7379  Reported-by: FeignClaims on github
7380  Fixes #11155
7381  Closes #11159
7382
7383Emanuele Torre (21 May 2023)
7384
7385- Revert "urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirect
7386  s"
7387
7388  This reverts commit df6c2f7b544f1f35f2a3e0be11f345affeb6fe9c.
7389  (It only keep the test case that checks redirection to an absolute URL
7390  without hostname and CURLU_NO_AUTHORITY).
7391
7392  I originally wanted to make CURLU_ALLOW_SPACE accept spaces in the
7393  hostname only because I thought
7394  curl_url_set(CURLUPART_URL, CURLU_ALLOW_SPACE) was already accepting
7395  them, and they were only not being accepted in the hostname when
7396  curl_url_set(CURLUPART_URL) was used for a redirection.
7397
7398  That is not actually the case, urlapi never accepted hostnames with
7399  spaces, and a hostname with a space in it never makes sense.
7400  I probably misread the output of my original test when I they were
7401  normally accepted when using CURLU_ALLOW_SPACE, and not redirecting.
7402
7403  Some other URL parsers seems to allow space in the host part of the URL,
7404  e.g. both python3's urllib.parse module, and Chromium's javascript URL
7405  object allow spaces (chromium percent escapes the spaces with %20),
7406  (they also both ignore TABs, and other whitespace characters), but those
7407  URLs with spaces in the hostname are useless, neither python3's requests
7408  module nor Chromium's window.location can actually use them.
7409
7410  There is no reason to add support for URLs with spaces in the host,
7411  since it was not a inconsistency bug; let's revert that patch before it
7412  makes it into release. Sorry about that.
7413
7414  I also reverted the extra check for CURLU_NO_AUTHORITY since that does
7415  not seem to be necessary, CURLU_NO_AUTHORITY already worked for
7416  redirects.
7417
7418  Closes #11169
7419
7420Dan Fandrich (20 May 2023)
7421
7422- runtests: use the correct fd after select
7423
7424  The code was using the wrong fd when determining which runner was ready
7425  with a response.
7426
7427  Ref: #10818
7428  Closes #11160
7429
7430- test425: fix the log directory for the upload
7431
7432  This must be %LOGDIR to let it work with parallel tests.
7433
7434  Ref: #10969
7435
7436- runtests: handle interrupted reads from IPC pipes
7437
7438  These can be interrupted by signals, especially SIGINT to shut down, and
7439  must be restarted so the IPC call arrives correctly. If the read just
7440  returns an error instead, the IPC calling state will go out of sync and
7441  a proper shutdown won't happen.
7442
7443  Ref: #10818
7444
7445Stefan Eissing (20 May 2023)
7446
7447- http2: upload improvements
7448
7449  Make send buffer smaller to have progress and "upload done" reporting
7450  closer to reality. Fix handling of send "drain" condition to no longer
7451  trigger once the transfer loop reports it is done sending. Also do not
7452  trigger the send "drain" on RST streams.
7453
7454  Background:
7455  - a upload stall was reported in #11157 that timed out
7456  - test_07_33a reproduces a problem with such a stall if the
7457    server 404s the request and RSTs the stream.
7458  - test_07_33b verifies a successful PUT, using the parameters
7459    from #11157 and checks success
7460
7461  Ref: #11157
7462  Closes #11165
7463
7464- http2: increase stream window size to 10 MB
7465
7466  Reported-by: pandada8 on github
7467
7468  Fixes #11162
7469  Closes #11167
7470
7471Daniel Stenberg (20 May 2023)
7472
7473- lib: rename struct 'http_req' to 'httpreq'
7474
7475  Because FreeBSD 14 kidnapped the name.
7476  Ref: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271526
7477
7478  Fixes #11163
7479  Closes #11164
7480
7481Viktor Szakats (20 May 2023)
7482
7483- cmake: avoid `list(PREPEND)` for compatibility
7484
7485  `list(PREPEND)` requires CMake v3.15, our minimum is v3.7.
7486
7487  Ref: https://cmake.org/cmake/help/latest/command/list.html#prepend
7488
7489  Regression from 1e3319a167d2f32d295603167486e9e88af9bb4e
7490
7491  Reported-by: Keitagit-kun on Github
7492  Fixes #11141
7493  Closes #11144
7494
7495Daniel Stenberg (19 May 2023)
7496
7497- RELEASE-NOTES: synced
7498
7499Stefan Eissing (19 May 2023)
7500
7501- ngtcp2: proper handling of uint64_t when adjusting send buffer
7502
7503  Fixes #11149
7504  Closes #11153
7505
7506- ngtcp2: fix compiler warning about possible null-deref
7507
7508  - compiler analyzer did not include the call context for this
7509    static function where the condition had already been checked.
7510  - eleminating the problem by making stream a call parameter
7511
7512  Fixes #11147
7513  Closes #11151
7514
7515Emanuele Torre (19 May 2023)
7516
7517- docs: document that curl_url_cleanup(NULL) is a safe no-op
7518
7519  This has always been the case, but it was not documented.
7520
7521  The paragraph was copied verbatim from curl_easy_cleanup.3
7522
7523  Closes #11150
7524
7525Antoine Pitrou (19 May 2023)
7526
7527- select: avoid returning an error on EINTR from select() or poll()
7528
7529  This was already done for the poll() and select() calls
7530  made directly from Curl_poll(), but was missed in
7531  Curl_wait_ms(), which is called when there are no fds
7532  to wait on.
7533
7534  Fixes #11135
7535  Closes #11143
7536
7537Daniel Stenberg (19 May 2023)
7538
7539- vquic.c: make recvfrom_packets static, avoid compiler warning
7540
7541  warning: no previous prototype for 'recvfrom_packets'
7542
7543  Reported-by: Keitagit-kun on github
7544  Fixes #11146
7545  Closes #11148
7546
7547- urlapi: allow numerical parts in the host name
7548
7549  It can only be an IPv4 address if all parts are all digits and no more than
7550  four parts, otherwise it is a host name. Even slightly wrong IPv4 will now be
7551  passed through as a host name.
7552
7553  Regression from 17a15d88467 shipped in 8.1.0
7554
7555  Extended test 1560 accordingly.
7556
7557  Reported-by: Pavel Kalyugin
7558  Fixes #11129
7559  Closes #11131
7560
7561Emilio Cobos Álvarez (19 May 2023)
7562
7563- http2: double http request parser max line length
7564
7565  This works around #11138, by doubling the limit, and should be a
7566  relatively safe fix.
7567
7568  Ideally the buffer would grow as needed and there would be no need for a
7569  limit? But that might be follow-up material.
7570
7571  Fixes #11138
7572  Closes #11139
7573
7574Emanuele Torre (18 May 2023)
7575
7576- configure: fix --help alignment
7577
7578  AC_ARG_ENABLE seems to only trim off whitespace from the start and end
7579  of its help-string argument, while prepending two spaces of indentation
7580  to all lines.
7581
7582  This means that the two spaces of indentation between the --enable-rtsp
7583  and the --disable-rtsp line were not removed causing ./configure --help
7584  to print:
7585
7586    Optional Features:
7587      [...]
7588      --enable-rtsp           Enable RTSP support
7589        --disable-rtsp          Disable RTSP support
7590
7591  I removed the indentation to fix the issue, now it prints:
7592
7593    Optional Features:
7594      [...]
7595      --enable-rtsp           Enable RTSP support
7596      --disable-rtsp          Disable RTSP support
7597
7598  The --enable-hsts and --disable-hsts lines had the same problems, and
7599  have been fixed too.
7600
7601  Closes #11142
7602
7603Deal(一线灵) (18 May 2023)
7604
7605- cmake: repair cross compiling
7606
7607  It cannot *run* code for testing purposes when cross-compiling.
7608
7609  Closes #11130
7610
7611Daniel Stenberg (18 May 2023)
7612
7613- configure: generate a script to run the compiler
7614
7615  in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of
7616  the configure invoke, and not the value that might be used later,
7617  intended for the execution of the output the compiler ouputs.
7618
7619  For example when the compiler uses the same library (like libz) that
7620  configure checks for.
7621
7622  Reported-by: Jonas Bülow
7623  Fixes #11114
7624  Closes #11120
7625
7626Stefan Eissing (18 May 2023)
7627
7628- cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND
7629
7630  Closes #11118
7631
7632Emanuele Torre (18 May 2023)
7633
7634- urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirects
7635
7636  curl_url_set(uh, CURLUPART_URL, redirurl, flags)  was not respecing
7637  CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY in the host part of redirurl
7638  when redirecting to an absolute URL.
7639
7640  Closes #11136
7641
7642Colin Cross (18 May 2023)
7643
7644- hostip: move easy_lock.h include above curl_memory.h
7645
7646  Similar to #9561, move easy_lock.h above curl_memory.h to fix building
7647  against musl libc.
7648
7649  Closes #11140
7650
7651Hind Montassif (18 May 2023)
7652
7653- curl_easy_getinfo: clarify on return data types
7654
7655  Closes #11126
7656
7657Emanuele Torre (18 May 2023)
7658
7659- checksrc: disallow spaces before labels
7660
7661  Out of 415 labels throughout the code base, 86 of those labels were
7662  not at the start of the line. Which means labels always at the start of
7663  the line is the favoured style overall with 329 instances.
7664
7665  Out of the 86 labels not at the start of the line:
7666  * 75 were indented with the same indentation level of the following line
7667  * 8 were indented with exactly one space
7668  * 2 were indented with one fewer indentation level then the following
7669    line
7670  * 1 was indented with the indentation level of the following line minus
7671    three space (probably unintentional)
7672
7673  Co-Authored-By: Viktor Szakats
7674
7675  Closes #11134
7676
7677Daniel Stenberg (18 May 2023)
7678
7679- cookie: update the comment on cookie length and size limits
7680
7681  To refer to the proper cookie RFC and the upcoming RFC refresh.
7682
7683  Closes #11127
7684
7685- url: provide better error message when URLs fail to parse
7686
7687  By providing the URL API error message into the error message.
7688
7689  Ref: #11129
7690  Closes #11137
7691
7692- RELEASE-NOTES: synced
7693
7694  bumped to 8.1.1
7695
7696Jon Rumsey (18 May 2023)
7697
7698- os400: update chkstrings.c
7699
7700  Compensate changes for recent changes to urldata.h to reclassify
7701  STRING_AWS_SIGV4.
7702
7703  Fixes #11132
7704  Closes #11133
7705
7706Version 8.1.0 (17 May 2023)
7707
7708Daniel Stenberg (17 May 2023)
7709
7710- RELEASE-NOTES: synced
7711
7712- THANKS: contributors from the 8.1.0 release
7713
7714- hostip: include easy_lock.h before using GLOBAL_INIT_IS_THREADSAFE
7715
7716  Since that header file is the only place that define can be defined.
7717
7718  Reported-by: Marc Deslauriers
7719
7720  Follow-up to 13718030ad4b3209
7721
7722  Closes #11121
7723
7724Thomas Taylor (16 May 2023)
7725
7726- aws-sigv4.d: fix region identifier in example
7727
7728  Closes #11117
7729
7730Philip Heiduck (15 May 2023)
7731
7732- mlc_config.json: remove this linkcheck CI job config file
7733
7734  Closes #11113
7735
7736Daniel Silverstone (15 May 2023)
7737
7738- ssh: Add support for libssh2 read timeout
7739
7740  Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout
7741  into the SERVER_RESPONSE_TIMEOUT option.  With this done, clients can use
7742  the standard curl response timeout setting to also control the time that
7743  libssh2 will wait for packets from a slow server.  This is necessary to
7744  enable use of very slow SFTP servers.
7745
7746  Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
7747
7748  Closes #10965
7749
7750Osama Albahrani (14 May 2023)
7751
7752- GIT-INFO: add --with-openssl
7753
7754  Closes #11110
7755
7756Daniel Stenberg (13 May 2023)
7757
7758- RELEASE-NOTES: synced
7759
7760Marcel Raad (13 May 2023)
7761
7762- md(4|5): don't use deprecated iOS functions
7763
7764  They are marked as deprecated in iOS 13.0, which might result in
7765  warnings-as-errors.
7766
7767  Also, use `*_MIN_REQUIRED` instead of `*_MIN_ALLOWED`, which seems to
7768  be what's currently used.
7769
7770  Bug: https://github.com/curl/curl/issues/11098
7771  Closes https://github.com/curl/curl/pull/11102
7772
7773- md4: only build when used
7774
7775  Its only usage in curl_ntlm_core.c is guarded by `USE_CURL_NTLM_CORE`,
7776  so let's use this here too.
7777
7778  Ref: https://github.com/curl/curl/issues/11098
7779  Closes https://github.com/curl/curl/pull/11102
7780
7781Vítor Galvão (12 May 2023)
7782
7783- write-out.d: Use response_code in example
7784
7785  Closes #11107
7786
7787Shohei Maeda (12 May 2023)
7788
7789- url: fix null dispname for --connect-to option
7790
7791  Closes #11106
7792
7793Daniel Stenberg (12 May 2023)
7794
7795- test2306: verify getting a second response with folded headers
7796
7797  Reproduces the isue #11101 and verifies the fix.
7798
7799  Verifies a17b2a503f
7800
7801- headers: clear (possibly) lingering pointer in init
7802
7803  The "prevhead" pointer is used for the headers storage but was not
7804  cleared correctly in init, which made it possible to act up when a
7805  handle is reused.
7806
7807  Reported-by: Steve Herrell
7808  Fixes #11101
7809  Closes #11103
7810
7811- RELEASE-NOTES: synced
7812
7813- ngtcp2: use 0.15.0
7814
7815  - nghttp3 0.11.0
7816  - nghttp2 1.53.0
7817
7818  Adapt to new API calls
7819
7820  Closes #11031
7821
7822Jay Satiro (10 May 2023)
7823
7824- openssl: fix indent
7825
7826Daniel Stenberg (10 May 2023)
7827
7828- CURLOPT_DNS_CACHE_TIMEOUT.3: fix spelling
7829
7830  Follow-up to 9ed7d56e044f5aa1b29
7831
7832  Closes #11096
7833
7834- hostip: use time_t for storing oldest DNS entry
7835
7836  Theoretically, the oldest time could overflow an int. In practice that
7837  won't happen, but let's do this to please analyzers.
7838
7839  Follow-up to 9ed7d56e044f5aa1b2928ccde6245d0
7840
7841  Pointed out by Coverity.
7842  Closes #11094
7843
7844- http: free the url before storing a new copy
7845
7846  To avoid a memory-leak.
7847
7848  Reported-by: Hiroki Kurosawa
7849
7850  Closes #11093
7851
7852- compressed.d: clarify the words on "not notifying headers"
7853
7854  Reported-by: Dylan Anthony
7855  Fixes #11091
7856  Closes #11092
7857
7858- libssh2: free fingerprint better
7859
7860  Reported-by: Wei Chong Tan
7861  Closes #11088
7862
7863- CURLOPT_IPRESOLVE.3: clarify that this for host names, not IP addresses
7864
7865  Reported-by: Harry Sintonen
7866  Closes #11087
7867
7868- hostip: enforce a maximum DNS cache size independent of timeout value
7869
7870  To reduce the damage an application can cause if using -1 or other
7871  ridiculous timeout values and letting the cache live long times.
7872
7873  The maximum number of entries in the DNS cache is now totally
7874  arbitrarily and hard-coded set to 29999.
7875
7876  Closes #11084
7877
7878- hostip: store dns timeout as 'int'
7879
7880  ... because it set and held as an 'int' elsewhere and can never be
7881  larger.
7882
7883- RELEASE-NOTES: synced
7884
7885- tool_operate: refuse (--data or --form) and --continue-at combo
7886
7887  libcurl assumes that a --continue-at resumption is done to continue an
7888  upload using the read callback and neither --data nor --form use
7889  that and thus won't do what the user wants. Whatever the user wants
7890  with this strange combination.
7891
7892  Add test 426 to verify.
7893
7894  Reported-by: Smackd0wn on github
7895  Fixes #11081
7896  Closes #11083
7897
7898- transfer: refuse POSTFIELDS + RESUME_FROM combo
7899
7900  The code assumes that such a resume is wanting to continue an upload
7901  using the read callback, and since POSTFIELDS is done without callback
7902  libcurl will just misbehave.
7903
7904  This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT
7905  with an explanation in the error message.
7906
7907  Reported-by: Smackd0wn on github
7908  Fixes #11081
7909  Closes #11083
7910
7911- ipv4.d/ipv6.d: they are "mutex", not "boolean"
7912
7913  ... which for example means they do not have --no-* versions.
7914
7915  Reported-by: Harry Sintonen
7916  Fixes #11085
7917  Closes #11086
7918
7919- docs/SECURITY-ADVISORY.md: how to write a curl security advisory
7920
7921  Closes #11080
7922
7923nobedee on github (5 May 2023)
7924
7925- MANUAL.md: add dict example for looking up a single definition
7926
7927  Closes #11077
7928
7929Dan Fandrich (5 May 2023)
7930
7931- runtests: fix -c option when run with valgrind
7932
7933  The curl binary argument wasn't being quoted properly. This seems to
7934  have broken at some point after quoting was added in commit 606b29fe.
7935
7936  Reported-by: Daniel Stenberg
7937  Ref: #11073
7938  Fixes #11074
7939  Closes #11076
7940
7941- runtests: support creating more than one runner process
7942
7943  The controller currently only creates and uses one, but more are now
7944  possible.
7945
7946  Ref: #10818
7947
7948- runtests: spawn a new process for the test runner
7949
7950  When the -j option is given, a new process is spawned in which the test
7951  programs are run and from which test servers are started. Only one
7952  process can be started at once, but this is sufficient to test that the
7953  infrastructure can isolate those functions in a new task. There should
7954  be no visible difference between the two modes at the moment.
7955
7956  Ref: #10818
7957  Closes #11064
7958
7959- runtests: turn singletest() into a state machine
7960
7961  This allows it to run in a non-blocking manner.
7962
7963  Ref: #10818
7964
7965- runtests: change runner interface to be asynchronous
7966
7967  Program arguments are marshalled and then written to the end of a pipe
7968  which is later read from and the arguments unmarshalled before the
7969  desired function is called normally.  The function return values are
7970  then marshalled and written into another pipe when is later read from
7971  and unmarshalled before being returned to the caller.
7972
7973  The implementation is currently blocking but can be made non-blocking
7974  without any changes to the API.  This allows calling multiple runners
7975  without blocking in the future.
7976
7977  Ref: #10818
7978
7979- runtests: call citest_finishtest in singletest
7980
7981  This is where citest_starttest is called.
7982
7983  Ref: #10818
7984
7985- runtests: add a runner initialization function
7986
7987  This sets up the runner environment to start running tests.
7988
7989  Ref: #10818
7990
7991- runtests: remove directory from server filename variables
7992
7993  There will soon be multiple log directories so the paths will no longer
7994  be static in runtests.pl. Also, get rid of $SERVER2IN which was not
7995  used.
7996
7997  Ref: #10818
7998
7999- runtests: reduce package exports after refactoring
8000
8001  Some recent refactoring made these export no longer necessary. Also,
8002  stop displaying the Unix socket paths at startup since there will soon
8003  be many of them and they're not that interesting.
8004
8005  Ref: #10818
8006
8007- runtests: use a function to obtain $LOGDIR for a test
8008
8009  This will no longer be static soon.
8010
8011  Ref: #10818
8012
8013Jay Satiro (5 May 2023)
8014
8015- tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals
8016
8017  - Disable hyperlink formatting for the 'Location:' header value in VTE
8018    0.48.1 and earlier, since it is buggy in some of those versions.
8019
8020  Prior to this change those terminals may show the location header value
8021  as gibberish or show it twice.
8022
8023  Ref: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#backw
8024  ard-compatibility
8025
8026  Fixes https://github.com/curl/curl/issues/10428
8027  Closes https://github.com/curl/curl/pull/11071
8028
8029François Michel (3 May 2023)
8030
8031- quiche: disable pacing while pacing is not actually performed
8032
8033  Closes #11068
8034
8035Daniel Stenberg (2 May 2023)
8036
8037- easy_cleanup: require a "good" handle to act
8038
8039  By insisting that the passed in handle is "good" (the magic number is
8040  intact), this can limit the potential damage if a bad pointer is passed
8041  in. Like when this function is called twice on the same handle pointer.
8042
8043  Ref: #10964
8044  Closes #11061
8045
8046Andreas Falkenhahn (1 May 2023)
8047
8048- amiga: Fix CA certificate paths for AmiSSL and MorphOS
8049
8050  AmiSSL stores certificates in `AmiSSL:Certs` and MorphOS stores them in
8051  `MOSSYS:Data/SSL/curl-ca-bundle.crt`.
8052
8053  Closes https://github.com/curl/curl/pull/11059
8054
8055Daniel Stenberg (30 Apr 2023)
8056
8057- http2: (void)-mark when we explicitly ignore the return code
8058
8059  When h2_progress_egress() is called. Pointed out by Coverity.
8060
8061  Closes #11057
8062
8063- checksrc: find bad indentation in conditions without open brace
8064
8065  If the previous line starts with if/while/for AND ends with a closed
8066  parenthesis and there's an equal number of open and closed parentheses
8067  on that line, verify that this line is indented $indent more steps, if
8068  not a cpp line.
8069
8070  Also adjust the fall-out from this fix.
8071
8072  Closes #11054
8073
8074Diogo Teles Sant'Anna (28 Apr 2023)
8075
8076- CI: Set minimal permissions on workflow ngtcp2-quictls.yml
8077
8078  Signed-off-by: Diogo Teles Sant'Anna <diogoteles@google.com>
8079
8080  Closes #11055
8081
8082Dan Fandrich (28 Apr 2023)
8083
8084- CI: use another glob syntax for matching files on Appveyor
8085
8086  The previous globbing syntax was not matching files recursively in
8087  directories, so try appending a /* to more closely match the examples at
8088  https://www.appveyor.com/docs/how-to/filtering-commits/
8089
8090Daniel Stenberg (28 Apr 2023)
8091
8092- multi: add multi-ignore logic to multi_socket_action
8093
8094  The multi-ignore logic that was previously applied to
8095  curl_multi_perform() (#10750) is here applied to the loop within
8096  curl_multi_socket_action() to make it use the same optimization: most
8097  handles have the same signal-ignore option state so this drastically
8098  reduces the number of ignore/unignore calls per libcurl function invoke.
8099
8100  Follow-up to bc90308328afb8
8101
8102  Closes #11045
8103
8104Stefan Eissing (28 Apr 2023)
8105
8106- http2: do flow window accounting for cancelled streams
8107
8108  - nghttp2 does not free connection level window flow for
8109    aborted streams
8110  - when closing transfers, make sure that any buffered
8111    response data is "given back" to the flow control window
8112  - add tests test_02_22 and test_02_23 to reproduce
8113
8114  Closes #11052
8115
8116- pingpong: fix compiler warning "assigning an enum to unsigned char"
8117
8118  Closes #11050
8119
8120Daniel Stenberg (28 Apr 2023)
8121
8122- configure: fix detection of apxs (for httpd)
8123
8124  The condition check was turned the wrong way around!
8125
8126  Closes #11051
8127
8128Viktor Szakats (28 Apr 2023)
8129
8130- ci: `-Wno-vla` no longer necessary
8131
8132  We handle this issue in the source now.
8133
8134  Follow-up to b725fe1944b45406676ea3aff333ae3085a848d9
8135
8136  Reviewed-by: Marcel Raad
8137  Reviewed-by: Daniel Stenberg
8138  Closes #11048
8139
8140Marcel Raad (28 Apr 2023)
8141
8142- tests/http: make curl_setup.h the first include
8143
8144  This is required for the macros there to take effect for system
8145  libraries. Specifically, including the system libraries first led to
8146  warnings about `_FILE_OFFSET_BITS` being redefined in curl_config.h on
8147  the Solaris autobuilds for ws-data.c and ws-pingpong.c.
8148  Also make the curl includes come first for the other source files here
8149  for consistency.
8150
8151  Closes https://github.com/curl/curl/pull/11046
8152
8153Emanuele Torre (27 Apr 2023)
8154
8155- checksrc: check for spaces before the colon of switch labels
8156
8157  Closes #11047
8158
8159Daniel Stenberg (27 Apr 2023)
8160
8161- RELEASE-NOTES: synced
8162
8163- libssh: tell it to use SFTP non-blocking
8164
8165  Reported-by: Andreas Huebner
8166  Fixes #11020
8167  Closes #11039
8168
8169Stefan Eissing (27 Apr 2023)
8170
8171- http2: enlarge the connection window
8172
8173  - fixes stalled connections
8174
8175  - Make the connection window large enough, so that there is
8176    some room left should 99/100 streams be PAUSED by the application
8177
8178  Reported-by: Paweł Wegner
8179  Fixes #10988
8180  Closes #11043
8181
8182Daniel Stenberg (27 Apr 2023)
8183
8184- checksrc: fix SPACEBEFOREPAREN for conditions starting with "*"
8185
8186  The open paren check wants to warn for spaces before open parenthesis
8187  for if/while/for but also for any function call. In order to avoid
8188  catching function pointer declarations, the logic allows a space if the
8189  first character after the open parenthesis is an asterisk.
8190
8191  I also spotted what we did not include "switch" in the check but we should.
8192
8193  This check is a little lame, but we reduce this problem by not allowing
8194  that space for if/while/for/switch.
8195
8196  Reported-by: Emanuele Torre
8197  Closes #11044
8198
8199- docs: minor polish
8200
8201  - "an HTTP*" (not "a")
8202  - remove a few contractions
8203  - remove a spurious "a"
8204  - reduce use of "I" in texts
8205
8206  Closes #11040
8207
8208- ws: fix CONT opcode check
8209
8210  Detected by Coverity. Follow-up to 930c00c259
8211
8212  Closes #11037
8213
8214Dan Fandrich (27 Apr 2023)
8215
8216- CI: switch the awslc builds to build out-of-tree
8217
8218  This is a common configuration that should be tested to avoid
8219  regressions. The awsls cmake build was already out-of-tree so the
8220  automake build now joins it.
8221
8222  Ref: #11006
8223
8224- tests/http: fix out-of-tree builds
8225
8226  Add both lib/ directories (src & build) to the search path so
8227  curl_setup.h and its dependencies can be found.
8228
8229  Followup-to acd82c8b
8230
8231  Ref: #11006
8232  Closes #11036
8233
8234Daniel Stenberg (27 Apr 2023)
8235
8236- urlapi: make internal function start with Curl_
8237
8238  Curl_url_set_authority() it is.
8239
8240  Follow-up to acd82c8bfd
8241
8242  Closes #11035
8243
8244YX Hao (26 Apr 2023)
8245
8246- cf-socket: turn off IPV6_V6ONLY on Windows if it is supported
8247
8248  IPV6_V6ONLY refs:
8249  https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
8250  https://github.com/golang/go/blob/master/src/net/ipsock_posix.go
8251  https://en.wikipedia.org/wiki/Unix-like
8252  https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o
8253  ptions
8254
8255  default value refs:
8256  https://datatracker.ietf.org/doc/html/rfc3493#section-5.3
8257  https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#proc-sys-net
8258  -ipv6-variables
8259
8260  Closes #10975
8261
8262Daniel Stenberg (26 Apr 2023)
8263
8264- urldata: shrink *select_bits int => unsigned char
8265
8266  - dselect_bits
8267  - cselect_bits
8268
8269  ... are using less than 8 bits. Changed types and moved them towards
8270  the end of the structs to fit better.
8271
8272  Closes #11025
8273
8274Stefan Eissing (26 Apr 2023)
8275
8276- tests/http: more tests with specific clients
8277
8278  - Makefile support for building test specific clients in tests/http/clients
8279  - auto-make of clients when invoking pytest
8280  - added test_09_02 for server PUSH_PROMISEs using clients/h2-serverpush
8281  - added test_02_21 for lib based downloads and pausing/unpausing transfers
8282
8283  curl url parser:
8284  - added internal method `curl_url_set_authority()` for setting the
8285    authority part of a url (used for PUSH_PROMISE)
8286
8287  http2:
8288  - made logging of PUSH_PROMISE handling nicer
8289
8290  Placing python test requirements in requirements.txt files
8291  - separate files to base test suite and http tests since use
8292    and module lists differ
8293  - using the files in the gh workflows
8294
8295  websocket test cases, fixes for we and bufq
8296  - bufq: account for spare chunks in space calculation
8297  - bufq: reset chunks that are skipped empty
8298  - ws: correctly encode frames with 126 bytes payload
8299  - ws: update frame meta information on first call of collect
8300    callback that fills user buffer
8301  - test client ws-data: some test/reporting improvements
8302
8303  Closes #11006
8304
8305Jay Satiro (26 Apr 2023)
8306
8307- libssh2: fix crash in keyboard callback
8308
8309  - Always set the libssh2 'abstract' user-pointer to the libcurl easy
8310    handle associated with the ssh session, so it is always passed to the
8311    ssh keyboard callback.
8312
8313  Prior to this change and since 8b5f100 (precedes curl 8.0.0), if libcurl
8314  was built without CURL_DEBUG then it could crash during the ssh auth
8315  phase due to a null dereference in the ssh keyboard callback.
8316
8317  Reported-by: Andreas Falkenhahn
8318
8319  Fixes https://github.com/curl/curl/pull/11024
8320  Closes https://github.com/curl/curl/pull/11026
8321
8322Daniel Stenberg (26 Apr 2023)
8323
8324- docs: clarify that more backends have HTTPS proxy support
8325
8326  Closes #11033
8327
8328- KNOWN_BUGS: remove two not-bugs
8329
8330  - 11.7 signal-based resolver timeouts
8331
8332  Not considered a bug anymore but just implementation details. People
8333  should avoid using timeouts with the synchronous name resolver.
8334
8335  - 11.16 libcurl uses renames instead of locking for atomic operations
8336
8337  Not a bug, just a description of how it works
8338
8339  Closes #11032
8340
8341Harry Sintonen (26 Apr 2023)
8342
8343- hostip: add locks around use of global buffer for alarm()
8344
8345  When building with the sync name resolver and timeout ability we now
8346  require thread-safety to be present to enable it.
8347
8348  Closes #11030
8349
8350Daniel Stenberg (26 Apr 2023)
8351
8352- curl_path: bring back support for SFTP path ending in /~
8353
8354  libcurl used to do a directory listing for this case (even though the
8355  documentation says a URL needs to end in a slash for this), but
8356  4e2b52b5f7a3 modified the behavior.
8357
8358  This change brings back a directory listing for SFTP paths that are
8359  specified exactly as /~ in the URL.
8360
8361  Reported-by: Pavel Mayorov
8362  Fixes #11001
8363  Closes #11023
8364
8365Emanuele Torre (26 Apr 2023)
8366
8367- docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string"
8368
8369  Also reword the DESCRIPTION section to mention "input"/"string" argument
8370  in bold.
8371
8372  Closes #11027
8373
8374- docs/libcurl: minor cleanups
8375
8376  I was reading curl_unescape(3) and I noticed that there was an extra
8377  space after the open parenthesis in the SYNOPSIS; I removed the extra
8378  space.
8379
8380  I also ran a few  grep -r  commands to find and remove extra spaces
8381  after '(' in other files, and to find and replace uses of `T*' instead
8382  of `T *'. Some of the instances of `T*` where unnecessary casts that I
8383  removed.
8384
8385  I also fixed a comment that was misaligned in CURLMOPT_SOCKETFUNCTION.3.
8386
8387  And I fixed some formatting inconsistencies: in curl_unescape(3), all
8388  function parameter were mentioned with bold text except length, that was
8389  mentioned as 'length'; and, in curl_easy_unescape(3), all parameters
8390  were mentioned in bold text except url that was italicised. Now they are
8391  all mentioned in bold.
8392  Documentation is not very consistent in how function parameter are
8393  formatted: many pages italicise them, and others display them in bold
8394  text; but I think it makes sense to at least be consistent with
8395  formatting within the same page.
8396
8397  Closes #11027
8398
8399Daniel Stenberg (26 Apr 2023)
8400
8401- man pages: simplify the .TH sections
8402
8403  - remove the version numbers
8404  - simplify the texts
8405
8406  The date and version number will be put there for releases when maketgz
8407  runs the updatemanpages.pl script.
8408
8409  Closes #11029
8410
8411- hostcheck: fix host name wildcard checking
8412
8413  The leftmost "label" of the host name can now only match against single
8414  '*'. Like the browsers have worked for a long time.
8415
8416  - extended unit test 1397 for this
8417  - move some SOURCE variables from unit/Makefile.am to unit/Makefile.inc
8418
8419  Reported-by: Hiroki Kurosawa
8420  Closes #11018
8421
8422Dan Fandrich (25 Apr 2023)
8423
8424- smbserver: remove temporary files before exit
8425
8426  Each execution of test 1451 would leave a file in /tmp before. Since
8427  Windows can't delete a file while it's open, all the temporary file
8428  names are stored and deleted on exit.
8429
8430  Closes #10990
8431
8432Stefan Eissing (25 Apr 2023)
8433
8434- Websocket en-/decoding
8435
8436  - state is fully kept at connection, since curl_ws_send() and
8437    curl_ws_rec() have lifetime beyond usual transfers
8438  - no more limit on frame sizes
8439
8440  Reported-by: simplerobot on github
8441  Fixes #10962
8442  Closes #10999
8443
8444Patrick Monnerat (25 Apr 2023)
8445
8446- urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication
8447
8448  Prior to this change STRING_AWS_SIGV4 (CURLOPT_AWS_SIGV4) was wrongly
8449  marked as binary data that could not be duplicated.
8450
8451  Without this fix, this option's value is not copied upon calling
8452  curl_easy_duphandle().
8453
8454  Closes https://github.com/curl/curl/pull/11021
8455
8456Stefan Eissing (25 Apr 2023)
8457
8458- http3: expire unpaused transfers in all HTTP/3 backends
8459
8460  Closes #11005
8461
8462- http2: always EXPIRE_RUN_NOW unpaused http/2 transfers
8463
8464  - just increasing the http/2 flow window does not necessarily
8465    make a server send new data. It may already have exhausted
8466    the window before
8467
8468  Closes #11005
8469
8470- http2: pass `stream` to http2_handle_stream_close to avoid NULL checks
8471
8472  Closes #11005
8473
8474- h2/h3: replace `state.drain` counter with `state.dselect_bits`
8475
8476  - `drain` was used by http/2 and http/3 implementations to indicate
8477    that the transfer requires send/recv independant from its socket
8478    poll state. Intended as a counter, it was used as bool flag only.
8479  - a similar mechanism exists on `connectdata->cselect_bits` where
8480    specific protocols can indicate something similar, only for the
8481    whole connection.
8482  - `cselect_bits` are cleard in transfer.c on use and, importantly,
8483    also set when the transfer loop expended its `maxloops` tries.
8484    `drain` was not cleared by transfer and the http2/3 implementations
8485    had to take care of that.
8486  - `dselect_bits` is cleared *and* set by the transfer loop. http2/3
8487    does no longer clear it, only set when new events happen.
8488
8489  This change unifies the handling of socket poll overrides, extending
8490  `cselect_bits` by a easy handle specific value and a common treatment in
8491  transfers.
8492
8493  Closes #11005
8494
8495Daniel Stenberg (25 Apr 2023)
8496
8497- socketpair: verify with a random value
8498
8499  ... instead of using the curl time struct, since it would use a few
8500  uninitialized bytes and the sanitizers would complain. This is a neater
8501  approach I think.
8502
8503  Reported-by: Boris Kuschel
8504  Fixes #10993
8505  Closes #11015
8506
8507Stefan Eissing (25 Apr 2023)
8508
8509- HTTP3: document the ngtcp2/nghttp3 versions to use for building curl
8510
8511  - refs #11011 to clarify this for people building curl themselves
8512
8513  Closes #11019
8514
8515Daniel Stenberg (25 Apr 2023)
8516
8517- lib: unify the upload/method handling
8518
8519  By making sure we set state.upload based on the set.method value and not
8520  independently as set.upload, we reduce confusion and mixup risks, both
8521  internally and externally.
8522
8523  Closes #11017
8524
8525- RELEASE-NOTES: synced
8526
8527Dan Fandrich (24 Apr 2023)
8528
8529- CI: don't run CI jobs if only another CI was changed
8530
8531  A few paths were missed in the last commit, as well as a job added since
8532  then.
8533
8534  Followup-to 395b9175
8535
8536- CI: adjust labeler match patterns
8537
8538- runtests: support buffering log messages in runner & servers
8539
8540  Log messages generated with logmsg can now be buffered and returned from
8541  the runner as a return value.  This will be needed with parallel testing
8542  to allow all messages for one test to be displayed together instead of
8543  interspersed with messages of multiple tests. Buffering can be disabled
8544  by setting a logging callback function with setlogfunc, which is
8545  currently being done to preserve existing logging behaviour for now.
8546
8547  Some additional output is generated in verbose and debugprotocol modes,
8548  which don't always use logmsg. These modes also impact some servers
8549  which generate extra messages. No attempt is made to buffer everything
8550  if these modes are enabled.
8551
8552  Ref: #10818
8553  Closes #11016
8554
8555- runtests: more consistently use logmsg in server control code
8556
8557  Also, display an error when sshversioninfo returns one.
8558
8559  Ref: #10818
8560
8561- runtests: create runner functions for clearlocks and stopservers
8562
8563  runtests.pl now uses runner for all server actions beyond the initial
8564  variable configuration.
8565
8566  Ref: #10818
8567
8568- runtests: tightened servers package exports
8569
8570  The defaults are intended for runtests.pl, whereas runner.pm needs to
8571  explicitly specify them.
8572
8573- runtests: display logs on server failure in singletest()
8574
8575  This is closer to the place where logs are displayed on test failure.
8576  Also, only display these logs if -p is given, which is the same flag
8577  that controls display of test failure logs. Some server log files
8578  need to be deleted later so that they stay around long enough to be
8579  displayed on failure.
8580
8581  Ref: #10818
8582
8583- runtests: turn a print into a logmsg
8584
8585  Also enable another couple of useful messages in verbose mode.
8586
8587  Ref: #10818
8588
8589Daniel Stenberg (24 Apr 2023)
8590
8591- http: store the password in the correct variable
8592
8593  Typo from fc2f1e547a4a, detected by Coverity (because there's dead code
8594  due to this).
8595
8596  Closes #11002
8597
8598Stefan Eissing (24 Apr 2023)
8599
8600- HTTP3/quiche: terminate h1 response header when no body is sent
8601
8602  - fixes a failure in test2501 where a response without body was missing
8603    the final empty line
8604
8605  Closes #11003
8606
8607Dan Fandrich (22 Apr 2023)
8608
8609- runtests: move showdiff into runtests.pl
8610
8611  It's not used anywhere else.
8612
8613- devtest: add a new script for testing the test harness
8614
8615  This is currently useful for starting a test server on its own without
8616  an associated test, which can be used for interactive curl testing or
8617  for validating parts of the test harness itself. More commands can be
8618  added to perform additional functions in the future.
8619
8620  Ref: #10818
8621  Closes #11008
8622
8623- runtests: refactor the main test loop into two
8624
8625  The test loop now has an initial loop that first runs through all
8626  possible tests to build a set of those to attempt on this run based on
8627  features and keywords and only then goes through that new list to run
8628  them.  This actually makes it three loops through all tests cases, as
8629  there is an existing loop that gathers possible test numbers from the
8630  test files on disk.
8631
8632  This has two minor effects on the output: all the tests that will be
8633  skipped are displayed at the start (instead of being interspersed with
8634  other tests) and the -l option no longer shows a count of tests at the
8635  end or a (misleading) statement that tests have run successfully. The
8636  skipped tests are also omitted from the test results sent to AppVeyor
8637  and Azure in CI builds.
8638
8639  Another effect is a reduction in the amount of work considered part of
8640  the "Test definition reading and preparation time" reported with -r
8641  making those figures slightly lower than before.
8642
8643  Ref: #10818
8644
8645- runtests: track only the current test timings in runner.pm
8646
8647  This avoids passing these data through through global variables, which
8648  soon won't be possible.
8649
8650  Ref: #10818
8651
8652- runtests: skip test preprocessing when doing -l
8653
8654  This speeds up the output tremendously by avoiding unnecessary work.
8655
8656- runtests: simplify value returned regarding use of valgrind
8657
8658  As a side effect this will now also show in verbose mode that valgrind
8659  is being skipped on tests that explicitly disable it, such as 600.
8660
8661  Ref: #10818
8662
8663- runtests: fix quoting in Appveyor and Azure test integration
8664
8665  Test 1442's name was not quoted correctly so wasn't registered in
8666  Appveyor and it had the wrong name in Azure. The JSON string quotes were
8667  also invalid, even though both servers happened to accept it regardless.
8668
8669  Closes #11010
8670
8671Daniel Stenberg (19 Apr 2023)
8672
8673- RELEASE-NOTES: synced
8674
8675Dan Fandrich (18 Apr 2023)
8676
8677- runtests: spread out the port numbers used by servers
8678
8679  The server ports are chosen randomly for each server, but the random
8680  ranges chosen were inconsistently-sized and overlapping. Now, they are
8681  spread out more so at least the first random port chosen for each server
8682  is guaranteed to not also be chosen by another server. The starting port
8683  numbers are also raised to put them in the Ephemeral Port range—not the
8684  range defined by RFC 6335 but the one used by Linux, which starts lower
8685  and gives us more room to work with.
8686
8687  Reported-by: Daniel Stenberg
8688
8689- runtests: fix problems on <killserver> failure
8690
8691  The verify time must be set in this case, like all cases. An error
8692  message needs to be displayed as well.
8693
8694- runtests: fix perl warning when <tool> is wrong
8695
8696- runtests: don't try to stop stunnel before trying again
8697
8698  Calling stopserver() before retrying stunnel due to an error would stop
8699  the dependent server (such as HTTP) meaning stunnel would have nothing
8700  to talk to when it came up. Don't try to force a stop when it didn't
8701  actually start.  Also, don't mark the server as bad for future use when
8702  it starts up on a retry.
8703
8704  Reported-by: eaglegai at github
8705  Tested-by: eaglegai at github
8706  Fixes #10976
8707
8708- runtests: don't accidentally randomly choose the same port
8709
8710  If a server couldn't be started on a port, a new one is randomly chosen
8711  and the server is tried again. Avoid accidentally using a
8712  randomly-chosen 0 port offset by adding 1 to the random number.
8713
8714  Found-by: Daniel Stenberg
8715
8716- runtests: don't attempt to use a port we know is in use
8717
8718  This reduces the startup time when there is a known conflict on the
8719  random port chosen for a server.  This was already done for stunnel, but
8720  now it's done for all servers.
8721
8722- http-server: fix server name in a log message
8723
8724  This changed when the file was renamed in commit cbf57176
8725
8726- runtests: refactor into more packages
8727
8728  testutil.pm now contains a few miscellaneous functions that are used in
8729  several places but have no better place to live.  subvariables moves to
8730  servers.pm since most variables that it substitutes relate to servers,
8731  so this is the most appropriate place. Rename a few functions for better
8732  naming consistency.
8733
8734  Ref: #10818
8735  Closes #10995
8736
8737- runtests: call timestampskippedevents() in singletest
8738
8739  ..rather than by the runner
8740
8741- runtests: assume a newer Valgrind by default
8742
8743  The tests for an older Valgrind version should probably just be deleted,
8744  given that they're testing for an 18-year-old version.
8745
8746- runtests: refactor test runner code into runner.pm
8747
8748  This is code that is directly responsible for running a single test.
8749  This will eventually run in a separate process as part of the parallel
8750  testing project.
8751
8752  Ref: #10818
8753
8754- runtests: skip unneeded work if test won't be running
8755
8756  This speeds up tests by avoiding unnecessary processing.
8757
8758  Ref: #10818
8759
8760- runtests: factor out singletest_postcheck
8761
8762  This will eventually need to be part of the test runner.
8763
8764  Ref: #10818
8765
8766- test303: kill server after test
8767
8768  Otherwise, an HTTP test closely following this one with a tight time
8769  constraint (e.g. 672) could fail because the test server stays sitting
8770  with the wait command for a while.
8771
8772Patrick Monnerat (18 Apr 2023)
8773
8774- OS400: provide ILE/RPG usage examples
8775
8776  Closes https://github.com/curl/curl/pull/10994
8777
8778- OS400: improve vararg emulation
8779
8780  - Use V7R4 RPG procedure overloading to improve vararg emulation.
8781
8782  From OS400 V7R4 and above, ILE/RPG implements a limited procedure
8783  overloading feature that can be used to improve curl's typed
8784  implementation of varargs procedures. This commit applies it to
8785  curl_easy_setopt(), curl_multi_setopt(), curl_share_setopt() and
8786  curl_easy_getinfo().
8787
8788  Closes https://github.com/curl/curl/pull/10994
8789
8790- OS400: fix and complete ILE/RPG binding
8791
8792  - Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and
8793    curl_mime_data_ccsid().
8794
8795  - Add recent definitions, in particular blob, header API and WebSockets
8796    API.
8797
8798  - Support for CURLVERSION_ELEVENTH.
8799
8800  - New functions for EBCDIC support.
8801
8802  Reflect these changes in README.OS400.
8803
8804  Closes https://github.com/curl/curl/pull/10994
8805
8806- OS400: implement EBCDIC support for recent features
8807
8808  - Support CURLVERSION_ELEVENTH.
8809
8810  - New function curl_url_strerror_ccsid().
8811
8812  - curl_easy_setopt_ccsid() supports blobs and 3 recent string options.
8813
8814  - New function curl_easy_header_ccsid().
8815
8816  - New generic latin1<-->ccsid conversion functions curl_from_ccsid() and
8817    curl_to_ccsid() for user convenience.
8818
8819  - README.OS400 updated accordingly.
8820
8821  - Removed a leftover QsoSSL support identifier.
8822
8823  Closes https://github.com/curl/curl/pull/10994
8824
8825- OS400: rework build scripts
8826
8827  - Rename shell function "system" to "CLcommand" to avoid confusion with
8828    built-in command.
8829
8830  - Reformat scripts. Fix some indentations. Avoid lines > 80 characters
8831    where possible.
8832
8833  - Support ASCII runtime development files in a user-defined directory
8834    path.
8835
8836  - FIX SONAME detection.
8837
8838  - Drop form API test program compilation (does not exist anymore).
8839
8840  Closes https://github.com/curl/curl/pull/10994
8841
8842Sevan Janiyan (18 Apr 2023)
8843
8844- tests/sshserver.pl: Define AddressFamily earlier
8845
8846  As the comment states "Address family must be specified before ListenAddress"
8847  , otherwise the tests fail to run
8848  `"failed starting SSH server" 52 times (582, 583, 600, 601, 602, 603, 604, 60
8849  5, 606 and 43 more)`
8850
8851  Closes #10983
8852
8853Stefan Eissing (18 Apr 2023)
8854
8855- quiche: Enable IDLE egress handling
8856
8857  Follow-up to 544abeea which added the handling but wrongly left it
8858  commented out.
8859
8860  Closes https://github.com/curl/curl/pull/11000
8861
8862Daniel Stenberg (18 Apr 2023)
8863
8864- docs/examples/protofeats.c: Outputs all protocols and features
8865
8866  Showing off one way to get to char pointer arrays of info returned by
8867  curl_version_info()
8868
8869  Closes #10991
8870
8871- tests/keywords.pl: remove
8872
8873  This script does not work since the introduction of the test
8874  preprocessing. If we need this functionality, it probably needs to be
8875  moved into the runtests tool or similar.
8876
8877  Reported-by: Dan Fandrich
8878  Fixes #10895
8879  Closes #10987
8880
8881Stefan Eissing (17 Apr 2023)
8882
8883- http2: support HTTP/2 to forward proxies, non-tunneling
8884
8885  - with `--proxy-http2` allow h2 ALPN negotiation to
8886    forward proxies
8887  - applies to http: requests against a https: proxy only,
8888    as https: requests will auto-tunnel
8889  - adding a HTTP/1 request parser in http1.c
8890  - removed h2h3.c
8891  - using new request parser in nghttp2 and all h3 backends
8892  - adding test 2603 for request parser
8893  - adding h2 proxy test cases to test_10_*
8894
8895  scorecard.py: request scoring accidentally always run curl
8896  with '-v'. Removed that, expect double numbers.
8897
8898  labeller: added http1.* and h2-proxy sources to detection
8899
8900  Closes #10967
8901
8902Daniel Stenberg (17 Apr 2023)
8903
8904- curl_easy_unescape.3: rename the argument
8905
8906  and highlight it appropriately in the text.
8907
8908  Closes #10979
8909
8910Viktor Szakats (17 Apr 2023)
8911
8912- autotools: sync up clang picky warnings with cmake
8913
8914  Bringing missing options over from CMake.
8915
8916  Move around existing `-Wno-pointer-bool-conversion` option to come
8917  _after_ `-Wconversion`.
8918
8919  Reviewed-by: Marcel Raad
8920  Closes #10974
8921
8922Daniel Stenberg (17 Apr 2023)
8923
8924- tests/libtest/lib1900.c: remove
8925
8926  This file was left behind when the rest of the test was previously removed.
8927
8928  Follow-up to e50a877df74f
8929
8930- src/tool_operhlp.c: fix value stored to 'uerr' is never read
8931
8932  Ref: https://github.com/curl/curl/pull/10974#issuecomment-1510461343
8933  Reported-by: Viktor Szakats
8934  Closes #10982
8935
8936Viktor Szakats (16 Apr 2023)
8937
8938- cmake: speed up and extend picky clang/gcc options
8939
8940  Extend existing picky compiler options with ones missing compared to
8941  autotools builds. Also sync options between clang and gcc.
8942
8943  Redesign the way we enable these options to avoid the slow option
8944  detection almost completely.
8945
8946  This reduces the number of detections from 35 to zero for clang and
8947  3 for gcc, even after adding a bunch of new options.
8948
8949  clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required.
8950
8951  Also show enabled picky options.
8952
8953  Ref: https://github.com/libssh2/libssh2/pull/952
8954
8955  Reviewed-by: Daniel Stenberg
8956  Closes #10973
8957
8958Andreas Falkenhahn (16 Apr 2023)
8959
8960- nbtlm: use semicolons instead of commas for (void) args
8961
8962  Closes #10978
8963
8964Daniel Stenberg (15 Apr 2023)
8965
8966- multi: free up more data earleier in DONE
8967
8968  Before checking for more users of the connection and possibly bailing
8969  out.
8970
8971  Fixes #10971
8972  Reported-by: Paweł Wegner
8973  Closes #10972
8974
8975- RELEASE-NOTES: synced
8976
8977- curl: do NOT append file name to path for upload when there's a query
8978
8979  Added test 425 to verify.
8980
8981  Reported-by: Dirk Rosenkranz
8982  Bug: https://curl.se/mail/archive-2023-04/0008.html
8983  Closes #10969
8984
8985- libcurl-thread.3: improved name resolver wording
8986
8987  And make better .SH sections
8988
8989  Closes #10966
8990
8991Colman Mbuya (14 Apr 2023)
8992
8993- CURLOPT_PROXY_SSL_VERIFYPEER.3: fix minor grammar mistake
8994
8995  Closes #10968
8996
8997Daniel Stenberg (14 Apr 2023)
8998
8999- curl: add --proxy-http2
9000
9001  For trying HTTP/2 with an HTTPS proxy.
9002
9003  Closes #10926
9004
9005- KNOWN_BUGS: remove fixed or outdated issues, move non-bugs
9006
9007  - remove h3 issues believed to be fixed
9008
9009  - make the flaky CI issue be generic and not Windows specific
9010
9011  - "TLS session cache does not work with TFO" now documented
9012
9013    This is now a documented restriction and not a bug. TFO in general is
9014    rarely used and has other problems, making it a low-priotity thing to
9015    work on.
9016
9017  - remove "Renegotiate from server may cause hang for OpenSSL backend"
9018
9019    This is an OpenSSL issue, not a curl one. Even if it taints curl.
9020
9021  - rm "make distclean loops forever"
9022
9023  - rm "configure finding libs in wrong directory"
9024
9025    Added a section to docs/INSTALL.md about it.
9026
9027  - "A shared connection cache is not thread-safe"
9028
9029    Moved over to TODO and expanded for other sharing improvements we
9030    could do
9031
9032  - rm "CURLOPT_OPENSOCKETPAIRFUNCTION is missing"
9033
9034  - rm "Blocking socket operations in non-blocking API"
9035
9036    Already listed as a TODO
9037
9038  - rm "curl compiled on OSX 10.13 failed to run on OSX 10.10"
9039
9040    Water under the bridge. No one cares about this anymore.
9041
9042  - rm "build on Linux links libcurl to libdl"
9043
9044    Verified to not be true (anymore).
9045
9046  - rm "libpsl is not supported"
9047
9048    The cmake build supports it since cafb356e19cda22
9049
9050  Closes #10963
9051
9052- url: fix PVS nits
9053
9054  - expression 'hostptr' is always true
9055  - a part of conditional expression is always true: proxypasswd
9056  - expression 'proxyuser' is always true
9057  - avoid multiple Curl_now() calls in allocate_conn
9058
9059  Ref: #10929
9060  Closes #10959
9061
9062- bufq: simplify since expression is always true
9063
9064  The check for 'len' is already done so it will remain true until
9065  updated. Pointed out by PVS.
9066
9067  Ref: #10929
9068  Closes #10958
9069
9070- hash: fix assigning same value
9071
9072  Pointed out by PVS
9073
9074  Ref: #10929
9075  Closes #10956
9076
9077- cookie: address PVS nits
9078
9079  - avoid assigning the same value again
9080  - remove superfluous check of co->domain
9081  - reduce variable scope for namep/valuep
9082
9083  Ref: #10929
9084  Closes #10954
9085
9086Stefan Eissing (14 Apr 2023)
9087
9088- cf-socket: Disable socket receive buffer by default
9089
9090  - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND
9091    is in place.
9092
9093  While we would like to use the receive buffer, we have stalls in
9094  parallel transfers where not all buffered data is consumed and no socket
9095  events happen.
9096
9097  Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround
9098  that has been disabled by default since b4b6e4f1, due to other bugs.
9099
9100  Closes https://github.com/curl/curl/pull/10961
9101
9102- cf-h2-proxy: fix processing ingress to stop too early
9103
9104  - progress ingress stopped too early, causing data
9105    from the underlying filters to not be processed and
9106    report that no tunnel data was available
9107  - this lead to "hangers" where no socket activity was
9108    seen but data rested in buffers
9109
9110  Closes #10952
9111
9112- http3: check stream_ctx more thoroughly in all backends
9113
9114  - callbacks and filter methods might be invoked at unexpected
9115    times, e.g. when the transfer's stream_ctx has not been initialized
9116    yet or, more likely, has already been taken down.
9117  - check for existance of stream_ctx in such places and return
9118    an error or silently succeed the call.
9119
9120  Closes #10951
9121
9122Daniel Stenberg (13 Apr 2023)
9123
9124- ftp: fix 'portsock' variable was assigned the same value
9125
9126  Pointed out by PVS
9127
9128  Ref: #10929
9129  Closes #10955
9130
9131- ftp: remove dead code
9132
9133  This condition can never be true here since it is handled already 28
9134  lines above.
9135
9136  Pointed out by PVS.
9137
9138  Ref: #10929
9139  Closes #10957
9140
9141- cf-h1-proxy: skip an extra NULL assign
9142
9143  and use Curl_safefree() once to save another NULL assign. Found by PVS.
9144
9145  Ref. #10929
9146  Closes #10953
9147
9148Philip Heiduck (13 Apr 2023)
9149
9150- GHA: suppress git clone output
9151
9152  Follow-up: https://github.com/curl/curl/commit/8203aa6ed405ec832d2c62f18dfda2
9153  93f89a23f9
9154
9155  Closes #10949
9156
9157Stefan Eissing (13 Apr 2023)
9158
9159- cf-socket: remove dead code discovered by PVS
9160
9161  Closes #10960
9162
9163Daniel Stenberg (13 Apr 2023)
9164
9165- http: skip a double NULL assign
9166
9167  and also use a local variable to shorten the long names and increase
9168  readability in the function. Pointed out by PVS.
9169
9170  Ref: #10929
9171  Closes #10950
9172
9173- mime: skip NULL assigns after Curl_safefree()
9174
9175  Pointed out by PVS.
9176
9177  Ref: #10929
9178  Closes #10947
9179
9180- rtsp: skip NULL assigns after Curl_safefree()
9181
9182  ... since this is a macro that assigns NULL itself. Pointed out by PVS.
9183
9184  Ref: #10929
9185  Closes #10946
9186
9187- smb: remove double assign
9188
9189  The same value is assigned the same value already a few lines above.
9190  Pointed out by PVS.
9191
9192  Ref: #10929
9193  Closes #10945
9194
9195- transfer: skip extra assign
9196
9197  The 'result' variable already contains CURLE_OK at this point, no use in
9198  setting it again. Pointed out by PVS.
9199
9200  Ref: #10929
9201  Closes #10944
9202
9203- urlapi: skip a pointless assign
9204
9205  It stores a null byte after already having confirmed there is a null
9206  byte there. Detected by PVS.
9207
9208  Ref: #10929
9209  Closes #10943
9210
9211Philip Heiduck (13 Apr 2023)
9212
9213- GHA: suppress git clone output
9214
9215  Closes #10939
9216
9217Stefan Eissing (13 Apr 2023)
9218
9219- tests: make test_12_01 a bit more forgiving on connection counts
9220
9221- cf-socket: add socket recv buffering for most tcp cases
9222
9223  - use bufq as recv buffer, also for Windows pre-receive handling
9224  - catch small reads followed by larger ones in a single socket
9225    call. A common pattern on TLS connections.
9226
9227  Closes #10787
9228
9229Daniel Stenberg (13 Apr 2023)
9230
9231- urlapi: cleanups
9232
9233  - move host checks together
9234  - simplify the scheme parser loop and the end of host name parser
9235  - avoid itermediate buffer storing in multiple places
9236  - reduce scope for several variables
9237  - skip the Curl_dyn_tail() call for speed
9238  - detect IPv6 earlier and skip extra checks for such hosts
9239  - normalize directly in dynbuf instead of itermediate buffer
9240  - split out the IPv6 parser into its own funciton
9241  - call the IPv6 parser directly for ipv6 addresses
9242  - remove (unused) special treatment of % in host names
9243  - junkscan() once in the beginning instead of scattered
9244  - make junkscan return error code
9245  - remove unused query management from dedotdotify()
9246  - make Curl_parse_login_details use memchr
9247  - more use of memchr() instead of strchr() and less strlen() calls
9248  - make junkscan check and return the URL length
9249
9250  An optimized build runs one of my benchmark URL parsing programs ~41%
9251  faster using this branch. (compared against the shipped 7.88.1 library
9252  in Debian)
9253
9254  Closes #10935
9255
9256Josh McCullough (13 Apr 2023)
9257
9258- http2: fix typo in infof() call
9259
9260  Closes #10940
9261
9262Daniel Stenberg (12 Apr 2023)
9263
9264- noproxy: pointer to local array 'hostip' is stored outside scope
9265
9266  Ref: #10929
9267  Closes #10933
9268
9269Stefan Eissing (12 Apr 2023)
9270
9271- connect: fix https connection setup to treat ssl_mode correctly
9272
9273  - for HTTPS protocol, a disabled ssl should never be acceptables.
9274
9275  Closes #10934
9276
9277Douglas R. Reno (12 Apr 2023)
9278
9279- CMakeLists.txt: fix typo for Haiku detection
9280
9281  Closes #10937
9282
9283Dan Fandrich (11 Apr 2023)
9284
9285- pathhelp: use the cached $use_cygpath when available
9286
9287- runtests: eliminate unneeded variable
9288
9289- runtests: make the # of server start attempts a constant
9290
9291- runtests: on startup failure call displaylogs only in serverfortest
9292
9293  This reduces the number of calls spread throughout the code.
9294
9295  Ref: #10818
9296  Closes #10919
9297
9298- runtests: return an error code with startservers()
9299
9300  The code indicates the kind of failure encountered in starting a server,
9301  which can be used by the caller to tailor the user experience.
9302
9303  Ref: #10818
9304
9305- runtests: abort early if runpingpongserver is given a bad server type
9306
9307- runtests: don't use the SMB server verification time as reference
9308
9309  %FTPTIME2 and %FTPTIME3 should be set by the FTP server only, for
9310  consistency.
9311
9312- tests: factor out the test server management code
9313
9314  This now lives in servers.pm with some configuration variables moved to
9315  globalconfig.pm
9316
9317  Ref: #10818
9318
9319- runtests: remove an inappropriate use of runclientoutput
9320
9321  This function is intended for running client code, not servers.
9322
9323- runtests: only add $LIBDIR to the path for checktestcmd
9324
9325  Since checkcmd is for finding servers, there will never be anything in
9326  this directory of interest to them.
9327
9328  Ref: #10818
9329
9330- tests: log sshserver.pl messages to a file
9331
9332  The logmsg messages were thrown away before, so they are now available
9333  for debugging.
9334
9335- runtests: also show DISABLED tests with -l
9336
9337  Other reasons for skipping tests are ignored for -l, so being explicitly
9338  disabled should be too.
9339
9340- runtests: move the UNIX sockets into $PIDDIR
9341
9342  These were missed when the other server files were moved there.
9343
9344  Follow-up to 70d2fca2
9345
9346  Ref: #10818
9347
9348- tests: tighten up perl exports
9349
9350  This reduces namespace pollution a little.
9351
9352  Ref: #10818
9353
9354- tests: turn perl modules into full packages
9355
9356  This helps enforce more modularization and encapsulation. Enable and fix
9357  warnings on a few packages.  Also, rename ftp.pm to processhelp.pm since
9358  there's really nothing ftp-specific in it.
9359
9360  Ref: #10818
9361
9362Daniel Stenberg (11 Apr 2023)
9363
9364- multi: remove a few superfluous assigns
9365
9366  PVS found these "The 'rc' variable was assigned the same value." cases.
9367
9368  Ref: #10929
9369  Closes #10932
9370
9371- schannel: add clarifying comment
9372
9373  Explaining how the PVS warning in #10929 is wrong: Dereferencing of the
9374  null pointer 'backend->cred' might take place.
9375
9376  Closes #10931
9377
9378- cookie: clarify that init with data set to NULL reads no file
9379
9380  ... and make Curl_cookie_add() require 'data' being set proper with an
9381  assert.
9382
9383  The function has not worked with a NULL data for quite some time so this
9384  just corrects the code and comment.
9385
9386  This is a different take than the proposed fixed in #10927
9387
9388  Reported-by: Kvarec Lezki
9389  Ref: #10929
9390  Closes #10930
9391
9392Kvarec Lezki (11 Apr 2023)
9393
9394- vtls: remove int typecast for sizeof()
9395
9396  V220 Suspicious sequence of types castings: memsize -> 32-bit integer ->
9397  memsize. The value being cast: 'sizeof
9398  (buf->data)'. curl\lib\vtls\vtls.c 2025
9399
9400  https://pvs-studio.com/en/docs/warnings/v220/
9401
9402  Closes #10928
9403
9404Stefan Eissing (11 Apr 2023)
9405
9406- http2: fix copynpaste error reported by coverity
9407
9408  - move all code handling HTTP/2 frames for a particular
9409    stream into a separate function to keep from confusing
9410    the call `data` with the stream `data`.
9411
9412  Closes #10924
9413
9414Dan Fandrich (11 Apr 2023)
9415
9416- tests: log a too-long Unix socket path in sws and socksd
9417
9418  Ref: #10919
9419
9420Daniel Stenberg (11 Apr 2023)
9421
9422- gen.pl: error on duplicated See-Also fields
9423
9424  Updated http2.d accordingly.
9425
9426  Closes #10925
9427
9428- http2: avoid possible null pointer dereference
9429
9430  Reported-by: Dan Fandrich
9431  Fixes #10920
9432  Closes #10923
9433
9434- lib1560: verify that more bad host names are rejected
9435
9436  when setting the hostname component of a URL
9437
9438  Closes #10922
9439
9440- curl_url_set.3: mention that users can set content rather freely
9441
9442  ... which then might render bad URLs if you extract a URL later.
9443
9444  Closes #10921
9445
9446Dan Fandrich (10 Apr 2023)
9447
9448- CI: retry failed downloads of aws-lc
9449
9450  Don't fail the build in case of a temporary server problem.
9451
9452- test1169: fix so it works properly everywhere
9453
9454  - Use an absolute path for the -L option since the module isn't in the
9455    perl path
9456  - Create the needed test file in a <file> section; <precheck> isn't
9457    intended for this
9458  - Fix the test number in the file name, which was wrong
9459
9460  Follow-up to f754990a
9461
9462  Ref: #10818
9463  Fixes #10889
9464  Closes #10917
9465
9466- tests: stop using strndup(), which isn't portable
9467
9468  It's not available on Solaris 10, for example. Since this is just test
9469  code that doesn't need to use an optimized system version, replace it
9470  with the implementation copied from tool_cb_hdr.c.
9471
9472- runtests: fix an incorrect comment about the ld_preload feature
9473
9474  Follow-up to 1f631864
9475
9476  Ref: #10818
9477
9478Daniel Stenberg (9 Apr 2023)
9479
9480- urlapi: prevent setting invalid schemes with *url_set()
9481
9482  A typical mistake would be to try to set "https://" - including the
9483  separator - this is now rejected as that would then lead to
9484  url_get(... URL...) would get an invalid URL extracted.
9485
9486  Extended test 1560 to verify.
9487
9488  Closes #10911
9489
9490Biswapriyo Nath (9 Apr 2023)
9491
9492- http2: remove unused Curl_http2_strerror function declaration
9493
9494  Curl_http2_strerror was renamed to http2_strerror in
9495  05b100aee247bb9bec8e9a1b0 and then http2_strerror was removed in
9496  5808a0d0f5ea0399d4a2a2
9497
9498  This also fixes the following compiler error
9499
9500  lib/http2.h:41:33: error: unknown type name 'uint32_t'
9501  lib/http2.h:1:1: note: 'uint32_t' is defined in header '<stdint.h>'
9502
9503  Closes #10912
9504
9505Daniel Stenberg (8 Apr 2023)
9506
9507- RELEASE-NOTES: synced
9508
9509SuperIlu on github (8 Apr 2023)
9510
9511- config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP
9512
9513  Fixes #10905
9514  Closes #10910
9515
9516Daniel Stenberg (8 Apr 2023)
9517
9518- lib: remove CURLX_NO_MEMORY_CALLBACKS
9519
9520  The only user of this define was 'chkdecimalpoint' - a special purpose
9521  test tool that was built but not used anymore (since 17c18fbc3 - Apr
9522  2020).
9523
9524  Closes #10908
9525
9526- CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2
9527
9528  Setting this proxy type allows curl to negotiate and use HTTP/2 with
9529  HTTPS proxies.
9530
9531  Closes #10900
9532
9533Ali Khodkar (8 Apr 2023)
9534
9535- write-out.d: add missing periods
9536
9537  Closes #10897
9538
9539Daniel Stenberg (7 Apr 2023)
9540
9541- http2: remove check for !data after it was already dereferenced
9542
9543  Pointed out by Coverity
9544
9545  Closes #10906
9546