Imported Upstream version 7.86.0
[platform/upstream/curl.git] / CHANGES
1                                   _   _ ____  _
2                               ___| | | |  _ \| |
3                              / __| | | | |_) | |
4                             | (__| |_| |  _ <| |___
5                              \___|\___/|_| \_\_____|
6
7                                   Changelog
8
9 Version 7.86.0 (26 Oct 2022)
10
11 Daniel Stenberg (26 Oct 2022)
12 - RELEASE: synced
13
14   The 7.86.0 release
15
16 - THANKS: added from the 7.86.0 release
17
18 Viktor Szakats (25 Oct 2022)
19 - noproxy: include netinet/in.h for htonl()
20
21   Solve the Amiga build warning by including `netinet/in.h`.
22
23   `krb5.c` and `socketpair.c` are using `htonl()` too. This header is
24   already included in those sources.
25
26   Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309
27
28   Reviewed-by: Daniel Stenberg
29   Closes #9787
30
31 Marc Hoersken (24 Oct 2022)
32 - CI: fix AppVeyor status failing for starting jobs
33
34 Daniel Stenberg (24 Oct 2022)
35 - test445: verifies the protocols-over-http-proxy flaw and fix
36
37 - http_proxy: restore the protocol pointer on error
38
39   Reported-by: Trail of Bits
40
41   Closes #9790
42
43 - multi: remove duplicate include of connect.h
44
45   Reported-by: Martin Strunz
46   Fixes #9794
47   Closes #9795
48
49 Daniel Gustafsson (24 Oct 2022)
50 - idn: fix typo in test description
51
52   s/enabked/enabled/i
53
54 Daniel Stenberg (24 Oct 2022)
55 - url: use IDN decoded names for HSTS checks
56
57   Reported-by: Hiroki Kurosawa
58
59   Closes #9791
60
61 - unit1614: fix disabled-proxy build
62
63   Follow-up to 1e9a538e05c01
64
65   Closes #9792
66
67 Daniel Gustafsson (24 Oct 2022)
68 - cookies: optimize control character check
69
70   When checking for invalid octets the strcspn() call will return the
71   position of the first found invalid char or the first NULL byte.
72   This means that we can check the indicated position in the search-
73   string saving a strlen() call.
74
75   Closes: #9736
76   Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
77
78 Daniel Stenberg (24 Oct 2022)
79 - netrc: replace fgets with Curl_get_line
80
81   Make the parser only accept complete lines and avoid problems with
82   overly long lines.
83
84   Reported-by: Hiroki Kurosawa
85
86   Closes #9789
87
88 - RELEASE-NOTES: add "Planned upcoming removals include"
89
90   URL: https://curl.se/mail/archive-2022-10/0001.html
91
92   Suggested-by: Dan Fandrich
93
94 Viktor Szakats (23 Oct 2022)
95 - ci: bump to gcc-11 for macos
96
97   Ref: https://github.blog/changelog/2022-10-03-github-actions-jobs-running-on-macos-latest-are-now-running-on-macos-12/
98   Ref: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
99
100   Reviewed-by: Max Dymond
101   Closes #9785
102
103 - Makefile.m32: reintroduce CROSSPREFIX and -W -Wall [ci skip]
104
105   - Reintroduce `CROSSPREFIX`:
106
107     If set, we add it to the `CC` and `AR` values, and to the _default_
108     value of `RC`, which is `windres`. This allows to control each of
109     these individidually, while also allowing to simplify configuration
110     via `CROSSPREFIX`.
111
112     This variable worked differently earlier. Hopefully this new solution
113     hits a better compromise in usefulness/complexity/flexibility.
114
115     Follow-up to: aa970c4c08775afcd0c2853be89b0a6f02582d50
116
117   - Enable warnings again:
118
119     This time with an option to override it via `CFLAGS`. Warnings are
120     also enabled by default in CMake, `makefile.dj` and `makefile.amiga`
121     builds (not in autotools though).
122
123     Follow-up to 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3
124
125   Closes #9784
126
127 - noproxy: silence unused variable warnings with no ipv6
128
129   Follow-up to 36474f1050c7f4117e3c8de6cc9217cfebfc717d
130
131   Reviewed-by: Daniel Stenberg
132   Closes #9782
133
134 Daniel Stenberg (22 Oct 2022)
135 - test644: verify --xattr (with redirect)
136
137 - tool_xattr: save the original URL, not the final redirected one
138
139   Adjusted test 1621 accordingly.
140
141   Reported-by: Viktor Szakats
142   Fixes #9766
143   Closes #9768
144
145 - docs: make sure libcurl opts examples pass in long arguments
146
147   Reported-by: Sergey
148   Fixes #9779
149   Closes #9780
150
151 Marc Hoersken (21 Oct 2022)
152 - CI: fix AppVeyor job links only working for most recent build
153
154   Ref: https://github.com/curl/curl/pull/9768#issuecomment-1286675916
155   Reported-by: Daniel Stenberg
156
157   Follow up to #9769
158
159 Viktor Szakats (21 Oct 2022)
160 - noproxy: fix builds without AF_INET6
161
162   Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309
163
164   Reviewed-by: Daniel Stenberg
165
166   Closes #9778
167
168 Daniel Stenberg (21 Oct 2022)
169 - noproxy: support proxies specified using cidr notation
170
171   For both IPv4 and IPv6 addresses. Now also checks IPv6 addresses "correctly"
172   and not with string comparisons.
173
174   Split out the noproxy checks and functionality into noproxy.c
175
176   Added unit test 1614 to verify checking functions.
177
178   Reported-by: Mathieu Carbonneaux
179
180   Fixes #9773
181   Fixes #5745
182   Closes #9775
183
184 - urlapi: remove two variable assigns
185
186   To please scan-build:
187
188   urlapi.c:1163:9: warning: Value stored to 'qlen' is never read
189           qlen = Curl_dyn_len(&enc);
190           ^      ~~~~~~~~~~~~~~~~~~
191   urlapi.c:1164:9: warning: Value stored to 'query' is never read
192           query = u->query = Curl_dyn_ptr(&enc);
193           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194
195   Follow-up to 7d6cf06f571d57
196
197   Closes #9777
198
199 - [Jeremy Maitin-Shepard brought this change]
200
201   cmake: improve usability of CMake build as a sub-project
202
203   - Renames `uninstall` -> `curl_uninstall`
204   - Ensures all export rules are guarded by CURL_ENABLE_EXPORT_TARGET
205
206   Closes #9638
207
208 - [Don J Olmstead brought this change]
209
210   easy_lock: check for HAVE_STDATOMIC_H as well
211
212   The check for `HAVE_STDATOMIC_H` looks to see if the `stdatomic.h`
213   header is present.
214
215   Closes #9755
216
217 - RELEASE-NOTES: synced
218
219 - [Brad Harder brought this change]
220
221   CURLMOPT_PIPELINING.3: dedup manpage xref
222
223   Closes #9776
224
225 Marc Hoersken (20 Oct 2022)
226 - CI: report AppVeyor build status for each job
227
228   Also give each job on AppVeyor CI a human-readable name.
229
230   This aims to make job and therefore build failures more visible.
231
232   Reviewed-by: Marcel Raad
233   Closes #9769
234
235 Viktor Szakats (20 Oct 2022)
236 - amiga: set SIZEOF_CURL_OFF_T=8 by default [ci skip]
237
238   Reviewed-by: Daniel Stenberg
239
240   Closes #9771
241
242 - connect: fix builds without AF_INET6
243
244   Regression from 2b309560c1e5d6ed5c0e542e6fdffa968b0521c9
245
246   Reviewed-by: Daniel Stenberg
247   Reviewed-by: Jay Satiro
248
249   Closes #9770
250
251 Daniel Stenberg (20 Oct 2022)
252 - test1105: adjust <data> to work with a hyper build
253
254   Closes #9767
255
256 - urlapi: fix parsing URL without slash with CURLU_URLENCODE
257
258   When CURLU_URLENCODE is set, the parser would mistreat the path
259   component if the URL was specified without a slash like in
260   http://local.test:80?-123
261
262   Extended test 1560 to reproduce and verify the fix.
263
264   Reported-by: Trail of Bits
265
266   Closes #9763
267
268 Marc Hoersken (19 Oct 2022)
269 - tests: avoid CreateThread if _beginthreadex is available
270
271   CreateThread is not threadsafe if mixed with CRT calls.
272   _beginthreadex on the other hand can be mixed with CRT.
273
274   Reviewed-by: Marcel Raad
275   Closes #9705
276
277 Jay Satiro (19 Oct 2022)
278 - [Joel Depooter brought this change]
279
280   schannel: Don't reset recv/send function pointers on renegotiation
281
282   These function pointers will have been set when the initial TLS
283   handshake was completed. If they are unchanged, there is no need to set
284   them again. If they have been changed, as is the case with HTTP/2, we
285   don't want to override that change. That would result in the
286   http22_recv/send functions being completely bypassed.
287
288   Prior to this change a connection that uses Schannel with HTTP/2 would
289   fail on renegotiation with error "Received HTTP/0.9 when not allowed".
290
291   Fixes https://github.com/curl/curl/issues/9451
292   Closes https://github.com/curl/curl/pull/9756
293
294 Viktor Szakats (18 Oct 2022)
295 - hostip: guard PF_INET6 use
296
297   Some platforms (e.g. Amiga OS) do not have `PF_INET6`. Adjust the code
298   for these.
299
300   ```
301   hostip.c: In function 'fetch_addr':
302   hostip.c:308:12: error: 'PF_INET6' undeclared (first use in this function)
303          pf = PF_INET6;
304               ^~~~~~~~
305   ```
306
307   Regression from 1902e8fc511078fb5e26fc2b907b4cce77e1240d
308
309   Reviewed-by: Daniel Stenberg
310
311   Closes #9760
312
313 - amiga: do not hardcode openssl/zlib into the os config [ci skip]
314
315   Enable them in `lib/makefile.amiga` and `src/makefile.amiga` instead.
316
317   This allows builds without openssl and/or zlib. E.g. with the
318   <https://github.com/bebbo/amiga-gcc> cross-compiler.
319
320   Reviewed-by: Daniel Stenberg
321
322   Closes #9762
323
324 - amigaos: add missing curl header [ci skip]
325
326   Without it, `CURLcode` and `CURLE_*` are undefined. `lib/hostip.h` and
327   conditional local code need them.
328
329   Reviewed-by: Daniel Stenberg
330
331   Closes #9761
332
333 Daniel Stenberg (18 Oct 2022)
334 - cmdline/docs: add a required 'multi' keyword for each option
335
336   The keyword specifies how option works when specified multiple times:
337
338    - single: the last provided value replaces the earlier ones
339    - append: it supports being provided multiple times
340    - boolean: on/off values
341    - mutex: flag-like option that disable anoter flag
342
343   The 'gen.pl' script then outputs the proper and unified language for
344   each option's multi-use behavior in the generated man page.
345
346   The multi: header is requires in each .d file and will cause build error
347   if missing or set to an unknown value.
348
349   Closes #9759
350
351 - CURLOPT_AUTOREFERER.3: highlight the privacy leak risk
352
353   Closes #9757
354
355 - mprintf: reject two kinds of precision for the same argument
356
357   An input like "%.*1$.9999d" would first use the precision taken as an
358   argument *and* then the precision specified in the string, which is
359   confusing and wrong. pass1 will now instead return error on this double
360   use.
361
362   Adjusted unit test 1398 to verify
363
364   Reported-by: Peter Goodman
365
366   Closes #9754
367
368 - ftp: remove redundant if
369
370   Reported-by: Trail of Bits
371
372   Closes #9753
373
374 - tool_operate: more transfer cleanup after parallel transfer fail
375
376   In some circumstances when doing parallel transfers, the
377   single_transfer_cleanup() would not be called and then 'inglob' could
378   leak.
379
380   Test 496 verifies
381
382   Reported-by: Trail of Bits
383   Closes #9749
384
385 - mqtt: spell out CONNECT in comments
386
387   Instead of calling it 'CONN' in several comments, use the full and
388   correct protocol packet name.
389
390   Suggested by Trail of Bits
391
392   Closes #9751
393
394 - CURLOPT_POSTFIELDS.3: refer to CURLOPT_MIMEPOST
395
396   Not the deprecated CURLOPT_HTTPPOST option.
397
398   Also added two see-alsos.
399
400   Reported-by: Trail of Bits
401   Closes #9752
402
403 - RELEASE-NOTES: synced
404
405 Jay Satiro (17 Oct 2022)
406 - ngtcp2: Fix build errors due to changes in ngtcp2 library
407
408   ngtcp2/ngtcp2@b0d86f60 changed:
409
410   - ngtcp2_conn_get_max_udp_payload_size =>
411     ngtcp2_conn_get_max_tx_udp_payload_size
412
413   - ngtcp2_conn_get_path_max_udp_payload_size =>
414     ngtcp2_conn_get_path_max_tx_udp_payload_size
415
416   ngtcp2/ngtcp2@ec59b873 changed:
417
418   - 'early_data_rejected' member added to ng_callbacks.
419
420   Assisted-by: Daniel Stenberg
421   Reported-by: jurisuk@users.noreply.github.com
422
423   Fixes https://github.com/curl/curl/issues/9747
424   Closes https://github.com/curl/curl/pull/9748
425
426 Daniel Stenberg (16 Oct 2022)
427 - curl_path: return error if given a NULL homedir
428
429   Closes #9740
430
431 - libssh: if sftp_init fails, don't get the sftp error code
432
433   This flow extracted the wrong code (sftp code instead of ssh code), and
434   the code is sometimes (erroneously) returned as zero anyway, so skip
435   getting it and set a generic error.
436
437   Reported-by: David McLaughlin
438   Fixes #9737
439   Closes #9740
440
441 - mqtt: return error for too long topic
442
443   Closes #9744
444
445 - [Rickard HallerbƤck brought this change]
446
447   tool_paramhlp: make the max argument a 'double'
448
449   To fix compiler warnings "Implicit conversion from 'long' to 'double'
450   may lose precision"
451
452   Closes #9700
453
454 Marc Hoersken (15 Oct 2022)
455 - [Philip Heiduck brought this change]
456
457   cirrus-ci: add more macOS builds with m1 based on x86_64 builds
458
459   Also refactor macOS builds to use task matrix.
460
461   Assisted-by: Marc Hƶrsken
462   Closes #9565
463
464 Viktor Szakats (14 Oct 2022)
465 - cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on Windows
466
467   `lib/config-win32.h` enables this configuration option unconditionally.
468   Make it apply to CMake builds as well.
469
470   While here, delete a broken check for
471   `HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID` from `CMakeLists.txt`. This came with
472   the initial commit [1], but did not include the actual verification code
473   inside `CMake/CurlTests.c`, so it always failed. A later commit [2]
474   added a second test, for non-Windows platforms.
475
476   Enabling this flag causes test 1056 to fail with CMake builds, as they
477   do with autotools builds. Let's apply the same solution and ignore the
478   results here as well.
479
480   [1] 4c5307b45655ba75ab066564afdc0c111a8b9291
481   [2] aec7c5a87c8482b6ddffa352d7d220698652262e
482
483   Reviewed-by: Daniel Stenberg
484   Assisted-by: Marcel Raad
485
486   Closes #9726
487
488 - cmake: set HAVE_GETADDRINFO_THREADSAFE on Windows
489
490   autotools enables this configuration option unconditionally for Windows
491   [^1]. Do the same in CMake.
492
493   The above will make this work for all reasonably recent environments.
494   The logic present in `lib/config-win32.h` [^2] has the following
495   exceptions which we did not cover in this CMake update:
496
497   - Builds targeting Windows 2000 and earlier
498   - MS Visual C++ 5.0 (1997) and earlier
499
500   Also make sure to disable this feature when `HAVE_GETADDRINFO` isn't
501   set, to avoid a broken build. We might want to handle that in the C
502   sources in a future commit.
503
504   [^1]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/m4/curl-functions.m4#L2067-L2070
505
506   [^2]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/lib/config-win32.h#L511-L528
507
508   Closes #9727
509
510 - cmake: sync HAVE_SIGNAL detection with autotools
511
512   `HAVE_SIGNAL` means the availability of the `signal()` function in
513   autotools, while in CMake it meant the availability of that function
514   _and_ the symbol `SIGALRM`.
515
516   The latter is not available on Windows, but the function is, which means
517   on Windows, autotools did define `HAVE_SIGNAL`, but CMake did not,
518   introducing a slight difference into the binaries.
519
520   This patch syncs CMake behaviour with autotools to look for the function
521   only.
522
523   The logic came with the initial commit adding CMake support to curl, so
524   the commit history doesn't reveal the reason behind it. In any case,
525   it's best to check the existence of `SIGALRM` directly in the source
526   before use. For now, curl builds fine with `HAVE_SIGNAL` enabled and
527   `SIGALRM` missing.
528
529   Follow-up to 68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6
530
531   Closes #9725
532
533 - cmake: delete duplicate HAVE_GETADDRINFO test
534
535   A custom `HAVE_GETADDRINFO` check came with the initial CMake commit
536   [1]. A later commit [2] added a standard check for it as well. The
537   standard check run before the custom one, so CMake ignored the latter.
538
539   The custom check was also non-portable, so this patch deletes it in
540   favor of the standard check.
541
542   [1] 4c5307b45655ba75ab066564afdc0c111a8b9291
543   [2] aec7c5a87c8482b6ddffa352d7d220698652262e
544
545   Closes #9731
546
547 Daniel Stenberg (14 Oct 2022)
548 - tool_formparse: unroll the NULL_CHECK and CONST_FREE macros
549
550   To make the code read more obvious
551
552   Assisted-by: Jay Satiro
553
554   Closes #9710
555
556 - [Christopher Sauer brought this change]
557
558   docs/INSTALL: update Android Instructions for newer NDKs
559
560   Closes #9732
561
562 - markdown-uppercase: ignore quoted sections
563
564   Sections within the markdown ~~~ or ``` are now ignored.
565
566   Closes #9733
567
568 - RELEASE-NOTES: synced
569
570 - test8: update as cookies no longer can have "embedded" TABs in content
571
572 - test1105: extend to verify TAB in name/content discarding cookies
573
574 - cookie: reject cookie names or content with TAB characters
575
576   TABs in name and content seem allowed by RFC 6265: "the algorithm strips
577   leading and trailing whitespace from the cookie name and value (but
578   maintains internal whitespace)"
579
580   Cookies with TABs in the names are rejected by Firefox and Chrome.
581
582   TABs in content are stripped out by Firefox, while Chrome discards the
583   whole cookie.
584
585   TABs in cookies also cause issues in saved netscape cookie files.
586
587   Reported-by: Trail of Bits
588
589   URL: https://curl.se/mail/lib-2022-10/0032.html
590   URL: https://github.com/httpwg/http-extensions/issues/2262
591
592   Closes #9659
593
594 - curl/add_parallel_transfers: better error handling
595
596   1 - consider the transfer handled at once when in the function, to avoid
597       the same list entry to get added more than once in rare error
598       situations
599
600   2 - set the ERRORBUFFER for the handle first after it has been added
601       successfully
602
603   Reported-by: Trail of Bits
604
605   Closes #9729
606
607 - netrc: remove the two 'changed' arguments
608
609   As no user of these functions used the returned content.
610
611 - test495: verify URL encoded user name + netrc-optional
612
613   Reproduced issue #9709
614
615 - netrc: use the URL-decoded user
616
617   When the user name is provided in the URL it is URL encoded there, but
618   when used for authentication the encoded version should be used.
619
620   Regression introduced after 7.83.0
621
622   Reported-by: Jonas Haag
623   Fixes #9709
624   Closes #9715
625
626 - [Shaun Mirani brought this change]
627
628   url: allow non-HTTPS HSTS-matching for debug builds
629
630   Closes #9728
631
632 - test1275: remove the check of stderr
633
634   To avoid the mysterious test failures on Windows, instead rely on the
635   error code returned on failure.
636
637   Fixes #9716
638   Closes #9723
639
640 Viktor Szakats (13 Oct 2022)
641 - lib: set more flags in config-win32.h
642
643   The goal is to add any flag that affect the created binary, to get in
644   sync with the ones built with CMake and autotools.
645
646   I took these flags from curl-for-win [0], where they've been tested with
647   mingw-w64 and proven to work well.
648
649   This patch brings them to curl as follows:
650
651   - Enable unconditionally those force-enabled via
652     `CMake/WindowsCache.cmake`:
653
654     - `HAVE_SETJMP_H`
655     - `HAVE_STRING_H`
656     - `HAVE_SIGNAL` (CMake equivalent is `HAVE_SIGNAL_FUNC`)
657
658   - Expand existing guards with mingw-w64:
659
660     - `HAVE_STDBOOL_H`
661     - `HAVE_BOOL_T`
662
663   - Enable Win32 API functions for Windows Vista and later:
664
665     - `HAVE_INET_NTOP`
666     - `HAVE_INET_PTON`
667
668   - Set sizes, if not already set:
669
670     - `SIZEOF_OFF_T = 8`
671     - `_FILE_OFFSET_BITS = 64` when `USE_WIN32_LARGE_FILES` is set,
672       and using mingw-w64.
673
674   - Add the remaining for mingw-w64 only. Feel free to expand as desired:
675
676     - `HAVE_LIBGEN_H`
677     - `HAVE_FTRUNCATE`
678     - `HAVE_BASENAME`
679     - `HAVE_STRTOK_R`
680
681   Future TODO:
682
683   - `HAVE_SIGNAL` has a different meaning in CMake. It's enabled when both
684     the `signal()` function and the `SIGALRM` macro are found. In
685     autotools and this header, it means the function only. For the
686     function alone, CMake uses `HAVE_SIGNAL_FUNC`.
687
688   [0] https://github.com/curl/curl-for-win/blob/c9b9a5f273c94c73d2b565ee892c4dff0ca97a8c/curl-m32.sh#L53-L58
689
690   Reviewed-by: Daniel Stenberg
691
692   Closes #9712
693
694 Daniel Stenberg (13 Oct 2022)
695 - tests: add tests/markdown-uppercase.pl to dist tarball
696
697   Follow-up to aafb06c5928183d
698
699   Closes #9722
700
701 - tool_paramhelp: asserts verify maximum sizes for string loading
702
703   The two defines MAX_FILE2MEMORY and MAX_FILE2STRING define the largest
704   strings accepted when loading files into memory, but as the size is
705   later used as input to functions that take the size as 'int' as
706   argument, the sizes must not be larger than INT_MAX.
707
708   These two new assert()s make the code error out if someone would bump
709   the sizes without this consideration.
710
711   Reported-by Trail of Bits
712
713   Closes #9719
714
715 - http: try parsing Retry-After: as a number first
716
717   Since the date parser allows YYYYMMDD as a date format (due to it being
718   a bit too generic for parsing this particular header), a large integer
719   number could wrongly match that pattern and cause the parser to generate
720   a wrong value.
721
722   No date format accepted for this header starts with a decimal number, so
723   by reversing the check and trying a number first we can deduct that if
724   that works, it was not a date.
725
726   Reported-by Trail of Bits
727
728   Closes #9718
729
730 - [Patrick Monnerat brought this change]
731
732   doc: fix deprecation versions inconsistencies
733
734   Ref: https://curl.se/mail/lib-2022-10/0026.html
735
736   Closes #9711
737
738 - http_aws_sigv4: fix strlen() check
739
740   The check was off-by-one leading to buffer overflow.
741
742   Follow-up to 29c4aa00a16872
743
744   Detected by OSS-Fuzz
745
746   Closes #9714
747
748 - curl/main_checkfds: check the fcntl return code better
749
750   fcntl() can (in theory) return a non-zero number for success, so a
751   better test for error is checking for -1 explicitly.
752
753   Follow-up to 41e1b30ea1b77e9ff
754
755   Mentioned-by: Dominik Klemba
756
757   Closes #9708
758
759 Viktor Szakats (12 Oct 2022)
760 - tidy-up: delete unused HAVE_STRUCT_POLLFD
761
762   It was only defined in `lib/config-win32.h`, when building for Vista.
763
764   It was only used in `select.h`, in a condition that also included a
765   check for `POLLIN` which is a superior choice for this detection and
766   which was already used by cmake and autotools builds.
767
768   Delete both instances of this macro.
769
770   Closes #9707
771
772 Daniel Stenberg (12 Oct 2022)
773 - test1275: verify upercase after period in markdown
774
775   Script based on the #9474 pull-request logic, but implemented in perl.
776
777   Updated docs/URL-SYNTAX.md accordingly.
778
779   Suggested-by: Dan Fandrich
780
781   Closes #9697
782
783 - [12932 brought this change]
784
785   misc: nitpick grammar in comments/docs
786
787   because the 'u' in URL is actually a consonant *sound* it is only
788   correct to write "a URL"
789
790   sorry this is a bit nitpicky :P
791
792   https://english.stackexchange.com/questions/152/when-should-i-use-a-vs-an
793   https://www.techtarget.com/whatis/feature/Which-is-correct-a-URL-or-an-URL
794
795   Closes #9699
796
797 Viktor Szakats (11 Oct 2022)
798 - Makefile.m32: drop CROSSPREFIX and our CC/AR defaults [ci skip]
799
800   This patch aimed to fix a regression [0], where `CC` initialization
801   moved beyond its first use. But, on closer inspection it turned out that
802   the `CC` initialization does not work as expected due to GNU Make
803   filling it with `cc` by default. So unless implicit values were
804   explicitly disabled via a GNU Make option, the default value of
805   `$CROSSPREFIX` + `gcc` was never used. At the same time the implicit
806   value `cc` maps to `gcc` in (most/all?) MinGW envs.
807
808   `AR` has the same issue, with a default value of `ar`.
809
810   We could reintroduce a separate variable to fix this without ill
811   effects, but for simplicity and flexibility, it seems better to drop
812   support for `CROSSPREFIX`, along with our own `CC`/`AR` init logic, and
813   require the caller to initialize `CC`, `AR` and `RC` to the full
814   (prefixed if necessary) names of these tools, as desired.
815
816   We keep `RC ?= windres` because `RC` is empty by default.
817
818   Also fix grammar in a comment.
819
820   [0] 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3
821
822   Closes #9698
823
824 - smb: replace CURL_WIN32 with WIN32
825
826   PR #9255 aimed to fix a Cygwin/MSYS issue (#8220). It used the
827   `CURL_WIN32` macro, but that one is not defined here, while compiling
828   curl itself. This patch changes this to `WIN32`, assuming this was the
829   original intent.
830
831   Regression from 1c52e8a3795ccdf8ec9c308f4f8f19cf10ea1f1a
832
833   Reviewed-by: Marcel Raad
834
835   Closes #9701
836
837 Daniel Stenberg (11 Oct 2022)
838 - [Matthias Gatto brought this change]
839
840   aws_sigv4: fix header computation
841
842   Handle canonical headers and signed headers creation as explained here:
843   https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
844
845   The algo tells that signed and canonical must contain at last host and
846   x-amz-date.
847
848   So we check whatever thoses are present in the curl http headers list.
849   If they are, we use the one enter by curl user, otherwise we generate
850   them.  then we to lower, and remove space from each http headers plus
851   host and x-amz-date, then sort them all by alphabetical order.
852
853   This patch also fix a bug with host header, which was ignoring the port.
854
855   Closes #7966
856
857 Jay Satiro (11 Oct 2022)
858 - [Aftab Alam brought this change]
859
860   README.md: link the curl logo to the website
861
862   - Link the curl:// image to https://curl.se/
863
864   Closes https://github.com/curl/curl/pull/9675
865
866 - [Dustin Howett brought this change]
867
868   schannel: when importing PFX, disable key persistence
869
870   By default, the PFXImportCertStore API persists the key in the user's
871   key store (as though the certificate was being imported for permanent,
872   ongoing use.)
873
874   The documentation specifies that keys that are not to be persisted
875   should be imported with the flag PKCS12_NO_PERSIST_KEY.
876   NOTE: this flag is only supported on versions of Windows newer than XP
877   and Server 2003.
878
879   --
880
881   This is take 2 of the original fix. It extends the lifetime of the
882   client certificate store to that of the credential handle. The original
883   fix which landed in 70d010d and was later reverted in aec8d30 failed to
884   work properly because it did not do that.
885
886   Minor changes were made to the schannel credential context to support
887   closing the client certificate store handle at the end of an SSL session.
888
889   --
890
891   Reported-by: ShadowZzj@users.noreply.github.com
892
893   Fixes https://github.com/curl/curl/issues/9300
894   Supersedes https://github.com/curl/curl/pull/9363
895   Closes https://github.com/curl/curl/pull/9460
896
897 Viktor Szakats (11 Oct 2022)
898 - Makefile.m32: support more options [ci skip]
899
900   - Add support for these options:
901     `-wolfssl`, `-wolfssh`, `-mbedtls`, `-libssh`, `-psl`
902
903     Caveats:
904     - `-wolfssh` requires `-wolfssl`.
905     - `-wolfssl` cannot be used with OpenSSL backends in parallel.
906     - `-libssh` has build issues with BoringSSL and LibreSSL, and also
907        what looks like a world-writable-config vulnerability on Windows.
908        Consider it experimental.
909     - `-psl` requires `-idn2` and extra libs passed via
910       `LIBS=-liconv -lunistring`.
911
912   - Detect BoringSSL/wolfSSL and set ngtcp2 crypto lib accordingly.
913   - Generalize MultiSSL detection.
914   - Use else-if syntax. Requires GNU Make 3.81 (2006-04-01).
915   - Document more customization options.
916
917   This brings over some configuration logic from `curl-for-win`.
918
919   Closes #9680
920
921 - cmake: enable more detection on Windows
922
923   Enable `HAVE_UNISTD_H`, `HAVE_STRTOK_R` and `HAVE_STRCASECMP` detection
924   on Windows, instead of having predefined values.
925
926   With these features detected correctly, CMake Windows builds get closer
927   to the autotools and `config-win32.h` ones.
928
929   This also fixes detecting `HAVE_FTRUNCATE` correctly, which required
930   `unistd.h`.
931
932   Fixing `ftruncate()` in turn causes a build warning/error with legacy
933   MinGW/MSYS1 due to an offset type size mismatch. This env misses to
934   detect `HAVE_FILE_OFFSET_BITS`, which may be a reason. This patch
935   force-disables `HAVE_FTRUNCATE` for this platform.
936
937   Reviewed-by: Daniel Stenberg
938
939   Closes #9687
940
941 - autotools: allow unix sockets on Windows
942
943   Fixes: https://github.com/curl/curl-for-win/blob/73a070d96fd906fdee929e2f1f00a9149fb39239/curl-autotools.sh#L44-L47
944
945   On Windows this feature is present, but not the header used in the
946   detection logic. It also requires an elaborate enabler logic
947   (as seen in `lib/curl_setup.h`). Let's always allow it and let the
948   lib code deal with the details.
949
950   Closes #9688
951
952 - cmake: add missing inet_ntop check
953
954   This adds the missing half of the check, next to the other half
955   already present in `lib/curl_config.h.cmake`.
956
957   Force disable `HAVE_INET_NTOP` for old MSVC where it caused compiler
958   warnings.
959
960   Reviewed-by: Daniel Stenberg
961
962   Closes #9689
963
964 Daniel Stenberg (11 Oct 2022)
965 - RELEASE-NOTES: synced
966
967 - [bsergean on github brought this change]
968
969   asyn-ares: set hint flags when calling ares_getaddrinfo
970
971   The hint flag is ARES_AI_NUMERICSERV, and it will save a call to
972   getservbyname or getservbyname_r to set it.
973
974   Closes #9694
975
976 - header.d: add category smtp and imap
977
978   They were previously (erroneously) added manually to tool_listhelp.c
979   which would make them get removed again when the file is updated next
980   time, unless added correctly here in header.d
981
982   Follow-up to 2437fac01
983
984   Closes #9690
985
986 - curl/get_url_file_name: use libcurl URL parser
987
988   To avoid URL tricks, use the URL parser for this.
989
990   This update changes curl's behavior slightly in that it will ignore the
991   possible query part from the URL and only use the file name from the
992   actual path from the URL. I consider it a bugfix.
993
994   "curl -O localhost/name?giveme-giveme" will now save the output in the
995   local file named 'name'
996
997   Updated test 1210 to verify
998
999   Assisted-by: Jay Satiro
1000
1001   Closes #9684
1002
1003 - [Martin Ć…gren brought this change]
1004
1005   docs: fix grammar around needing pass phrase
1006
1007   "You never needed a pass phrase" reads like it's about to be followed by
1008   something like "until version so-and-so", but that is not what is
1009   intended. Change to "You never need a pass phrase". There are two
1010   instances of this text, so make sure to update both.
1011
1012 - [Xiang Xiao brought this change]
1013
1014   cmake: add the check of HAVE_SOCKETPAIR
1015
1016   which is used by Curl_socketpair
1017
1018   Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
1019
1020   Closes #9686
1021
1022 - curl/add_file_name_to_url: use the libcurl URL parser
1023
1024   instead of the custom error-prone parser, to extract and update the path
1025   of the given URL
1026
1027   Closes #9683
1028
1029 - single_transfer: use the libcurl URL parser when appending query parts
1030
1031   Instead of doing "manual" error-prone parsing in another place.
1032
1033   Used when --data contents is added to the URL query when -G is provided.
1034
1035   Closes #9681
1036
1037 - ws: fix buffer pointer use in the callback loop
1038
1039   Closes #9678
1040
1041 - [Petr Å tetiar brought this change]
1042
1043   curl-wolfssl.m4: error out if wolfSSL is not usable
1044
1045   When I explicitly declare, that I would like to have curl built with
1046   wolfSSL support using `--with-wolfssl` configure option, then I would
1047   expect, that either I endup with curl having that support, for example
1048   in form of https support or it wouldn't be available at all.
1049
1050   Downstream projects like for example OpenWrt build curl wolfSSL variant
1051   with `--with-wolfssl` already, but in certain corner cases it does fail:
1052
1053     configure:25299: checking for wolfSSL_Init in -lwolfssl
1054     configure:25321: x86_64-openwrt-linux-musl-gcc -o conftest [snip]
1055     In file included from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/dsa.h:33,
1056                      from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/asn_public.h:35,
1057                     from target-x86_64_musl/usr/include/wolfssl/ssl.h:35,
1058                      from conftest.c:47:
1059     target-x86_64_musl/usr/include/wolfssl/wolfcrypt/integer.h:37:14: fatal error: wolfssl/wolfcrypt/sp_int.h: No such file or directory
1060          #include <wolfssl/wolfcrypt/sp_int.h>
1061                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1062     compilation terminated.
1063
1064   and in the end thus produces curl without https support:
1065
1066    curl: (1) Protocol "https" not supported or disabled in libcurl
1067
1068   So fix it, by making the working wolfSSL mandatory and error out in
1069   configure step when that's not the case:
1070
1071    checking for wolfSSL_Init in -lwolfssl... no
1072    configure: error: --with-wolfssl but wolfSSL was not found or doesn't work
1073
1074   References: https://github.com/openwrt/packages/issues/19005
1075   References: https://github.com/openwrt/packages/issues/19547
1076   Signed-off-by: Petr Å tetiar <ynezz@true.cz>
1077
1078   Closes #9682
1079
1080 - tool_getparam: pass in the snprintf("%.*s") string length as 'int'
1081
1082   Reported by Coverity CID 1515928
1083
1084   Closes #9679
1085
1086 - [Paul Seligman brought this change]
1087
1088   ws: minor fixes for web sockets without the CONNECT_ONLY flag
1089
1090   - Fixed an issue where is_in_callback was getting cleared when using web
1091     sockets with debug logging enabled
1092   - Ensure the handle is is_in_callback when calling out to fwrite_func
1093   - Change the write vs. send_data decision to whether or not the handle
1094     is in CONNECT_ONLY mode.
1095   - Account for buflen not including the header length in curl_ws_send
1096
1097   Closes #9665
1098
1099 Marc Hoersken (8 Oct 2022)
1100 - CI/cirrus: merge existing macOS jobs into a job matrix
1101
1102   Ref: #9627
1103   Reviewed-by: Philip H.
1104
1105   Closes #9672
1106
1107 Daniel Stenberg (8 Oct 2022)
1108 - strcase: add and use Curl_timestrcmp
1109
1110   This is a strcmp() alternative function for comparing "secrets",
1111   designed to take the same time no matter the content to not leak
1112   match/non-match info to observers based on how fast it is.
1113
1114   The time this function takes is only a function of the shortest input
1115   string.
1116
1117   Reported-by: Trail of Bits
1118
1119   Closes #9658
1120
1121 - tool_getparam: split out data_urlencode() into its own function
1122
1123   Closes #9673
1124
1125 - connect: fix Curl_updateconninfo for TRNSPRT_UNIX
1126
1127   Reported-by: Vasiliy Ulyanov
1128   Fixes #9664
1129   Closes #9670
1130
1131 - ws: fix Coverity complaints
1132
1133   Coverity pointed out several flaws where variables remained
1134   uninitialized after forks.
1135
1136   Follow-up to e3f335148adc6742728f
1137
1138   Closes #9666
1139
1140 Marc Hoersken (7 Oct 2022)
1141 - CI/GHA: merge msh3 and openssl3 builds into linux workflow
1142
1143   Continue work on merging all Linux workflows into one file.
1144
1145   Follow up to #9501
1146   Closes #9646
1147
1148 Daniel Stenberg (7 Oct 2022)
1149 - curl_ws_send.3: call the argument 'fragsize'
1150
1151   Since WebSocket works with "fragments" not "frames"
1152
1153   Closes #9668
1154
1155 - easy: avoid Intel error #2312: pointer cast involving 64-bit pointed-to type
1156
1157   Follow-up to e3f335148adc6742728ff8
1158
1159   Closes #9669
1160
1161 - tool_main: exit at once if out of file descriptors
1162
1163   If the main_checkfds function cannot create new file descriptors in an
1164   attempt to detect of stdin, stdout or stderr are closed.
1165
1166   Also changed the check to use fcntl() to check if the descriptors are
1167   open, which avoids superfluously calling pipe() if they all already are.
1168
1169   Follow-up to facfa19cdd4d0094
1170
1171   Reported-by: Trail of Bits
1172
1173   Closes #9663
1174
1175 - websockets: remodeled API to support 63 bit frame sizes
1176
1177   curl_ws_recv() now receives data to fill up the provided buffer, but can
1178   return a partial fragment. The function now also get a pointer to a
1179   curl_ws_frame struct with metadata that also mentions the offset and
1180   total size of the fragment (of which you might be receiving a smaller
1181   piece). This way, large incoming fragments will be "streamed" to the
1182   application. When the curl_ws_frame struct field 'bytesleft' is 0, the
1183   final fragment piece has been delivered.
1184
1185   curl_ws_recv() was also adjusted to work with a buffer size smaller than
1186   the fragment size. (Possibly needless to say as the fragment size can
1187   now be 63 bit large).
1188
1189   curl_ws_send() now supports sending a piece of a fragment, in a
1190   streaming manner, in addition to sending the entire fragment in a single
1191   call if it is small enough. To send a huge fragment, curl_ws_send() can
1192   be used to send it in many small calls by first telling libcurl about
1193   the total expected fragment size, and then send the payload in N number
1194   of separate invokes and libcurl will stream those over the wire.
1195
1196   The struct curl_ws_meta() returns is now called 'curl_ws_frame' and it
1197   has been extended with two new fields: *offset* and *bytesleft*. To help
1198   describe the passed on data chunk when a fragment is delivered in many
1199   smaller pieces.
1200
1201   The documentation has been updated accordingly.
1202
1203   Closes #9636
1204
1205 - [Patrick Monnerat brought this change]
1206
1207   docs/examples: avoid deprecated options in examples where possible
1208
1209   Example programs targeting a deprecated feature/option are commented with
1210   a warning about it.
1211   Other examples are adapted to not use deprecated options.
1212
1213   Closes #9661
1214
1215 Viktor Szakats (6 Oct 2022)
1216 - cmake: fix enabling websocket support
1217
1218   Follow-up from 664249d095275ec532f55dd1752d80c8c1093a77
1219
1220   Closes #9660
1221
1222 - tidy-up: delete parallel/unused feature flags
1223
1224   Detecting headers and lib separately makes sense when headers come in
1225   variations or with extra ones, but this wasn't the case here. These were
1226   duplicate/parallel macros that we had to keep in sync with each other
1227   for a working build. This patch leaves a single macro for each of these
1228   dependencies:
1229
1230   - Rely on `HAVE_LIBZ`, delete parallel `HAVE_ZLIB_H`.
1231
1232     Also delete CMake logic making sure these two were in sync, along with
1233     a toggle to turn off that logic, called `CURL_SPECIAL_LIBZ`.
1234
1235     Also delete stray `HAVE_ZLIB` defines.
1236
1237     There is also a `USE_ZLIB` variant in `lib/config-dos.h`. This patch
1238     retains it for compatibility and deprecates it.
1239
1240   - Rely on `USE_LIBSSH2`, delete parallel `HAVE_LIBSSH2_H`.
1241
1242     Also delete `LIBSSH2_WIN32`, `LIBSSH2_LIBRARY` from
1243     `winbuild/MakefileBuild.vc`, these have a role when building libssh2
1244     itself. And `CURL_USE_LIBSSH`, which had no use at all.
1245
1246     Also delete stray `HAVE_LIBSSH2` defines.
1247
1248   - Rely on `USE_LIBSSH`, delete parallel `HAVE_LIBSSH_LIBSSH_H`.
1249
1250     Also delete `LIBSSH_WIN32`, `LIBSSH_LIBRARY` and `HAVE_LIBSSH` from
1251     `winbuild/MakefileBuild.vc`, these were the result of copy-pasting the
1252     libssh2 line, and were not having any use.
1253
1254   - Delete unused `HAVE_LIBPSL_H` and `HAVE_LIBPSL`.
1255
1256   Reviewed-by: Daniel Stenberg
1257
1258   Closes #9652
1259
1260 Daniel Stenberg (6 Oct 2022)
1261 - netrc: compare user name case sensitively
1262
1263   User name comparisions in netrc need to match the case.
1264
1265   Closes #9657
1266
1267 - CURLOPT_COOKIEFILE: insist on "" for enable-without-file
1268
1269   The former way that also suggested using a non-existing file to just
1270   enable the cookie engine could lead to developers maybe a bit carelessly
1271   guessing a file name that will not exist, and then in a future due to
1272   circumstances, such a file could be made to exist and then accidentally
1273   libcurl would read cookies not actually meant to.
1274
1275   Reported-by: Trail of bits
1276
1277   Closes #9654
1278
1279 - tests/Makefile: remove run time stats from ci-test
1280
1281   The ci-test is the normal makefile target invoked in CI jobs. This has
1282   been using the -r option to runtests.pl since a long time, but I find
1283   that it mostly just adds many lines to the test output report without
1284   anyone caring much about those stats.
1285
1286   Remove it.
1287
1288   Closes #9656
1289
1290 - [Patrick Monnerat brought this change]
1291
1292   tool: reorganize function c_escape around a dynbuf
1293
1294   This is a bit shorter and a lot safer.
1295
1296   Substrings of unescaped characters are added by a single call to reduce
1297   overhead.
1298
1299   Extend test 1465 to handle more kind of escapes.
1300
1301   Closes #9653
1302
1303 Jay Satiro (5 Oct 2022)
1304 - CURLOPT_HTTPPOST.3: bolden the deprecation notice
1305
1306   Ref: https://github.com/curl/curl/pull/9621
1307
1308   Closes https://github.com/curl/curl/pull/9637
1309
1310 Daniel Stenberg (5 Oct 2022)
1311 - [John Bampton brought this change]
1312
1313   misc: fix spelling in docs and comments
1314
1315   also: remove outdated sentence
1316
1317   Closes #9644
1318
1319 - [Patrick Monnerat brought this change]
1320
1321   tool: avoid generating ambiguous escaped characters in --libcurl
1322
1323   C string hexadecimal-escaped characters may have more than 2 digits.
1324   This results in a wrong C compiler interpretation of a 2-digit escaped
1325   character when followed by an hex digit character.
1326
1327   The solution retained here is to represent such characters as 3-digit
1328   octal escapes.
1329
1330   Adjust and extend test 1465 for this case.
1331
1332   Closes #9643
1333
1334 - configure: the ngtcp2 option should default to 'no'
1335
1336   While still experimental.
1337
1338   Bug: https://curl.se/mail/lib-2022-10/0007.html
1339   Reported-by: Daniel Hallberg
1340
1341   Closes #9650
1342
1343 - CURLOPT_MIMEPOST.3: add an (inline) example
1344
1345   Reported-by: Jay Satiro
1346   Bug: https://github.com/curl/curl/pull/9637#issuecomment-1268070723
1347
1348   Closes #9649
1349
1350 Viktor Szakats (5 Oct 2022)
1351 - Makefile.m32: exclude libs & libpaths for shared mode exes [ci skip]
1352
1353   Exclude linker flags specifying depedency libs and libpaths, when
1354   building against `libcurl.dll`. In such case these options are not
1355   necessary (but may cause errors if not/wrongly configured.)
1356
1357   Also move and reword a comment on `CPPFLAGS` to not apply to
1358   `UNICODE` options. These are necessary for all build targets.
1359
1360   Closes #9651
1361
1362 Jay Satiro (5 Oct 2022)
1363 - runtests: fix uninitialized value on ignored tests
1364
1365   - Don't show TESTFAIL message (ie tests failed which aren't ignored) if
1366     only ignored tests failed.
1367
1368   Before:
1369   IGNORED: failed tests: 571 612 1056
1370   TESTDONE: 1214 tests out of 1217 reported OK: 99%
1371   Use of uninitialized value $failed in concatenation (.) or string at
1372   ./runtests.pl line 6290.
1373   TESTFAIL: These test cases failed:
1374
1375   After:
1376   IGNORED: failed tests: 571 612 1056
1377   TESTDONE: 1214 tests out of 1217 reported OK: 99%
1378
1379   Closes https://github.com/curl/curl/pull/9648
1380
1381 - cirrus: use make LDFLAGS=-all-static instead of curl_LDFLAGS
1382
1383   - Correct the use of -all-static for static Windows CI builds.
1384
1385   curl_LDFLAGS was removed from the makefile when metalink support was
1386   removed. LDFLAGS=-all-static is passed to make only, because it is not a
1387   valid option for configure compilation tests.
1388
1389   Closes https://github.com/curl/curl/pull/9633
1390
1391 Viktor Szakats (4 Oct 2022)
1392 - Makefile.m32: fix regression with tool_hugehelp [ci skip]
1393
1394   In a recent commit I mistakenly deleted this logic, after seeing a
1395   reference to a filename ending with `.cvs` and thinking it must have
1396   been long gone. Turns out this is an existing file. Restore the rule
1397   and the necessary `COPY` definitions with it.
1398
1399   The restored logic is required for a successful build on a bare source
1400   tree (as opposed to a source release tarball).
1401
1402   Also shorten an existing condition similar to the one added in this
1403   patch.
1404
1405   Regression since 07a0047882dd3f1fbf73486c5dd9c15370877ad6
1406
1407   Closes #9645
1408
1409 - Makefile.m32: deduplicate build rules [ci skip]
1410
1411   After this patch, we reduce the three copies of most `Makefile.m32`
1412   logic to one. This now resides in `lib/Makefile.m32`. It makes future
1413   updates easier, the code shorter, with a small amount of added
1414   complexity.
1415
1416   `Makefile.m32` reduction:
1417
1418   |                   |  bytes | LOC total |  blank |  comment |  code |
1419   |-------------------|-------:|----------:|-------:|---------:|------:|
1420   | 7.85.0            |  34772 |      1337 |     79 |      192 |  1066 |
1421   | before this patch |  17601 |       625 |     62 |      106 |   457 |
1422   | after this patch  |  11680 |       392 |     52 |      104 |   236 |
1423
1424   Details:
1425
1426   - Change rules to create objects for the `v*` subdirs in the `lib` dir.
1427     This allows to use a shared compile rule and assumes that filenames
1428     are not (and will not be) colliding across these directories.
1429     `Makefile.m32` now also stores a list of these subdirs. They are
1430     changing rarely though.
1431
1432   - Sync as much as possible between the three `Makefile.m32` scripts'
1433     rules and their source/target sections.
1434
1435   - After this patch `CPPFLAGS` are all applied to the `src` sources once
1436     again. This matches the behaviour of cmake/autotools. Only zlib ones
1437     are actually required there.
1438
1439   - Use `.rc` names from `Makefile.inc` instead of keeping a duplicate.
1440
1441   - Change examples to link `libcurl.dll` by default. This makes building
1442     trivial, even as a cross-build:
1443       `CC=x86_64-w64-mingw32-gcc make -f Makefile.m32`
1444     To run them, you need to move/copy or add-to-path `libcurl.dll`.
1445     You can select static mode via `CFG=-static`.
1446
1447   - List more of the `Makefile.m32` config variables.
1448
1449   - Drop `.rc` support from examples. It made it fragile without much
1450     benefit.
1451
1452   - Include a necessary system lib for the `externalsocket.c` example.
1453
1454   - Exclude unnecessary systems libs when building in `-dyn` mode.
1455
1456   Closes #9642
1457
1458 Daniel Stenberg (4 Oct 2022)
1459 - RELEASE-NOTES: synced
1460
1461 - CURLOPT_COOKIELIST.3: fix formatting mistake
1462
1463   Also, updated manpage-syntax.pl to make it detect this error in test
1464   1173.
1465
1466   Reported-by: ProceduralMan on github
1467   Fixes #9639
1468   Closes #9640
1469
1470 - [Jay Satiro brought this change]
1471
1472   connect: change verbose IPv6 address:port to [address]:port
1473
1474   - Use brackets for the IPv6 address shown in verbose message when the
1475     format is address:port so that it is less confusing.
1476
1477   Before: Trying 2606:4700:4700::1111:443...
1478   After: Trying [2606:4700:4700::1111]:443...
1479
1480   Bug: https://curl.se/mail/archive-2022-02/0041.html
1481   Reported-by: David Hu
1482
1483   Closes #9635
1484
1485 Viktor Szakats (3 Oct 2022)
1486 - Makefile.m32: major rework [ci skip]
1487
1488   This patch overhauls `Makefile.m32` scripts, fixing a list of quirks,
1489   making its behaviour and customization envvars align better with other
1490   build systems, aiming for less code, that is easier to read, use and
1491   maintain.
1492
1493   Details:
1494   - Rename customization envvars:
1495     `CURL_CC` -> `CC`
1496     `CURL_RC` -> `RC`
1497     `CURL_AR` -> `AR`
1498     `CURL_LDFLAG_EXTRAS_DLL` -> `CURL_LDFLAGS_LIB`
1499     `CURL_LDFLAG_EXTRAS_EXE` -> `CURL_LDFLAGS_BIN`
1500   - Drop `CURL_STRIP` and `CURL_RANLIB`. These tools are no longer used.
1501   - Accept `CFLAGS`, `CPPFLAGS`, `RCFLAGS`, `LDFLAGS` and `LIBS` envvars.
1502   - Drop `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, `CURL_RCFLAG_EXTRAS` in
1503     favor of the above.
1504   - Do not automatically enable `zlib` with `libssh2`. `zlib` is optional
1505     with `libssh2`.
1506   - Omit unnecessary `CPPFLAGS` options when building `curl.exe` and
1507     examples.
1508   - Drop support for deprecated `-winssl` `CFG` option. Use `-schannel`
1509     instead.
1510   - Avoid late evaluation where not necessary (`=` -> `:=`).
1511   - Drop support for `CURL_DLL_A_SUFFIX` to override the implib suffix.
1512     Instead, use the standard naming scheme by default: `libcurl.dll.a`.
1513     The toolchain recognizes the name, and selects it automatically when
1514     asking for a `-shared` vs. `-static` build.
1515   - Stop applying `strip` to `libcurl.a`. Follow-up from
1516     16a58e9f93c7e89e1f87720199388bcfcfa148a4. There was no debug info to
1517     strip since then.
1518   - Stop setting `-O3`, `-W`, `-Wall` options. You can add these to
1519     `CFLAGS` as desired.
1520   - Always enable `-DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG` with OpenSSL,
1521     to avoid that vulnerability on Windows.
1522   - Add `-lbrotlicommon` to `LIBS` when using `brotli`.
1523   - Do not enable `-nghttp3` without `-ngtcp2`.
1524   - `-ssh2` and `-rtmp` options no longer try to auto-select a TLS-backend.
1525     You need to set the backend explicitly. This scales better and avoids
1526     issues with certain combinations (e.g. `libssh2` + `wolfssl` with no
1527     `schannel`).
1528   - Default to OpenSSL TLS-backend with `ngtcp2`. Possible to override via
1529     `NGTCP2_LIBS`.
1530   - Old, alternate method of enabling components (e.g. `SSH2=1`) no longer
1531     supported.
1532   - Delete `SPNEGO` references. They were no-ops.
1533   - Drop support for Win9x environments.
1534   - Allow setting `OPENSSL_LIBS` independently from `OPENSSL_LIBPATH`.
1535   - Support autotools/CMake `libssh2` builds by default.
1536   - Respect `CURL_DLL_SUFFIX` in `-dyn` mode when building `curl.exe` and
1537     examples.
1538   - Assume standard directory layout with `LIBCARES_PATH`. (Instead of the
1539     long gone embedded one.)
1540   - Stop static linking with c-ares by default. Add
1541     `CPPFLAGS=-DCARES_STATICLIB` to enable it.
1542   - Reorganize internal layout to avoid redundancy and emit clean diffs
1543     between src/lib and example make files.
1544   - Delete unused variables.
1545   - Code cleanups/rework.
1546   - Comment and indentation fixes.
1547
1548   Closes #9632
1549
1550 - scripts/release-notes.pl: strip ci skip tag [ci skip]
1551
1552   Ref: https://github.com/curl/curl/commit/e604a82cae922bf86403a94f5803ac5e4303ae97#commitcomment-85637701
1553
1554   Reviewed-by: Daniel Stenberg
1555
1556   Closes #9634
1557
1558 - Makefile.m32: delete legacy component bits [ci skip]
1559
1560   - Drop auto-detection of OpenSSL 1.0.2 and earlier. Now always defaulting
1561     to OpenSSL 1.1.0 and later, LibreSSL and BoringSSL.
1562
1563   - Drop `Invalid path to OpenSSL package` detection. OpenSSL has been
1564     using a standard file layout since 1.1.0, so this seems unnecessary
1565     now.
1566
1567   - Drop special logic to enable Novell LDAP SDK support.
1568
1569   - Drop special logic to enable OpenLDAP LDAP SDK support. This seems
1570     to be distinct from native OpenLDAP, with support implemented inside
1571     `lib/ldap.c` (vs. `lib/openldap.c`) back when the latter did not exist
1572     yet in curl.
1573
1574   - Add `-lwldap32` only if there is no other LDAP library (either native
1575     OpenLDAP, or SDKs above) present.
1576
1577   - Update `doc/INSTALL.md` accordingly.
1578
1579   After this patch, it's necessary to make configration changes when using
1580   OpenSSL 1.0.2 or earlier, or the two LDAP SDKs.
1581
1582   OpenSSL 1.0.2 and earlier:
1583   ```
1584   export OPENSSL_INCLUDE = <path-to-openssl>/outinc
1585   export OPENSSL_LIBPATH = <path-to-openssl>/out
1586   export OPENSSL_LIBS = -lssl32 -leay32 -lgdi32
1587   ```
1588
1589   Novell LDAP SDK, previously enabled via `USE_LDAP_NOVELL=1`:
1590   ```
1591   export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/inc -DCURL_HAS_NOVELL_LDAPSDK
1592   export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib/mscvc -lldapsdk -lldapssl -lldapx
1593   ```
1594
1595   OpenLDAP LDAP SDK, previously enabled via `USE_LDAP_OPENLDAP=1`:
1596   ```
1597   export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/include -DCURL_HAS_OPENLDAP_LDAPSDK
1598   export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib -lldap -llber
1599   ```
1600
1601   I haven't tested these scenarios, and in general we recommend using
1602   a recent OpenSSL release. Also, WinLDAP (the Windows default) and
1603   OpenLDAP (via `-DUSE_OPENLDAP`) are the LDAP options actively worked on
1604   in curl.
1605
1606   Closes #9631
1607
1608 Daniel Stenberg (2 Oct 2022)
1609 - vauth/ntlm.h: make line shorter than 80 columns
1610
1611   Follow-up from 265fbd937
1612
1613 Viktor Szakats (1 Oct 2022)
1614 - docs: update sourceforge project links [ci skip]
1615
1616   SourceForge projects can now choose between two hostnames, with .io and
1617   .net ending. Both support HTTPS by default now. Opening the other variant
1618   will perm-redirected to the one chosen by the project.
1619
1620   The .io -> .net redirection is done insecurely.
1621
1622   Let's update the URLs to point to the current canonical endpoints to
1623   avoid any redirects.
1624
1625   Closes #9630
1626
1627 Daniel Stenberg (1 Oct 2022)
1628 - curl_url_set.3: document CURLU_APPENDQUERY proper
1629
1630   Listed among the other supported flags.
1631
1632   Reported-by: Robby Simpson
1633   Fixes #9628
1634   Closes #9629
1635
1636 Viktor Szakats (1 Oct 2022)
1637 - Makefile.m32: cleanups and fixes [ci skip]
1638
1639   - Add `-lcrypt32` once, and add it always for simplicity.
1640   - Delete broken link and reference to the pre-Vista WinIDN add-on.
1641     MS no longer distribute it.
1642   - Delete related `WINIDN_PATH` option. IDN is a system lib since Vista.
1643   - Sync `LIBCARES_PATH` default with the rest of dependencies.
1644   - Delete version numbers from dependency path defaults.
1645   - `libgsasl` package is now called `gsasl`.
1646   - Delete `libexpat` and `libxml2` references. No longer used by curl.
1647   - Delete `Edit the path below...` comments. We recommend to predefine
1648     those envvars instead.
1649   - `libcares.a` is not an internal dependency anymore. Stop using it as
1650     such.
1651   - `windres` `--include-dir` -> `-I`, `-F` -> `--target=` for readability.
1652   - Delete `STRIP`, `CURL_STRIP`, `AR` references from `src/Makefile.m32`.
1653     They were never used.
1654   - Stop to `clean` some objects twice in `src/Makefile.m32`.
1655   - Delete cvs-specific leftovers.
1656   - Finish resource support in examples make file.
1657   - Delete `-I<root>/lib` from examples make file.
1658   - Fix copyright start year in examples make file.
1659   - Delete duplicate `ftpuploadresume` input in examples make file.
1660   - Sync OpenSSL lib order, `SYNC` support, `PROOT` use, dependency path
1661     defaults, variables names and other internal bits between the three
1662     make files.
1663   - `lib/Makefile.m32` accepted custom options via `DLL_LIBS` envvar. This
1664     was lib-specific and possibly accidental. Use `CURL_LDFLAG_EXTRAS_DLL`
1665     envvar for the same effect.
1666   - Fix linking `curl.exe` and examples to wrong static libs with
1667     auto-detected OpenSSL 1.0.2 or earlier.
1668   - Add `-lgdi32` for OpenSSL 1.0.2 and earlier only.
1669   - Add link to Novell LDAP SDK and use a relative default path. Latest
1670     version is from 2016, linked to an outdated OpenSSL 1.0.1.
1671   - Whitespace and comment cleanups.
1672
1673   TODO in a next commit:
1674
1675   Delete built-in detection/logic for OpenSSL 1.0.2 and earlier, the Novell
1676   LDAP SDK and the other LDAP SDK (which is _not_ OpenLDAP). Write up the
1677   necessary custom envvars to configure them.
1678
1679   Closes #9616
1680
1681 Daniel Stenberg (30 Sep 2022)
1682 - RELEASE-NOTES: synced
1683
1684 - [Matt Holt brought this change]
1685
1686   HTTP3.md: update Caddy example
1687
1688   Closes #9623
1689
1690 - easy: fix the altsvc init for curl_easy_duphandle
1691
1692   It was using the old #ifdef which nothing sets anymore
1693
1694   Closes #9624
1695
1696 - GHA: build tests in a separate step from the running of them
1697
1698   ... to make the output smaller for when you want to look at test
1699   failures.
1700
1701   Removed the examples build from msh3
1702
1703   Closes #9619
1704
1705 Viktor Szakats (29 Sep 2022)
1706 - ldap: delete stray CURL_HAS_MOZILLA_LDAP reference
1707
1708   Added in 68b215157fdf69612edebdb220b3804822277822, while adding openldap
1709   support. This is also the single mention of this constant in the source
1710   tree and also in that commit. Based on these, it seems like an accident.
1711
1712   Delete this reference.
1713
1714   Reviewed-by: Daniel Stenberg
1715
1716   Closes #9625
1717
1718 - docs: spelling nits
1719
1720   - MingW -> MinGW (Minimalist GNU for Windows)
1721   - f.e. -> e.g.
1722   - some whitespace and punctuation.
1723
1724   Reviewed-by: Daniel Stenberg
1725
1726   Closes #9622
1727
1728 Daniel Stenberg (29 Sep 2022)
1729 - [Philip Heiduck brought this change]
1730
1731   cirrus-ci: add macOS build with m1
1732
1733   Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
1734
1735   Closes #9565
1736
1737 - [Patrick Monnerat brought this change]
1738
1739   lib: sanitize conditional exclusion around MIME
1740
1741   The introduction of CURL_DISABLE_MIME came with some additional bugs:
1742   - Disabled MIME is compiled-in anyway if SMTP and/or IMAP is enabled.
1743   - CURLOPT_MIMEPOST, CURLOPT_MIME_OPTIONS and CURLOPT_HTTPHEADER are
1744     conditioned on HTTP, although also needed for SMTP and IMAP MIME mail
1745     uploads.
1746
1747   In addition, the CURLOPT_HTTPHEADER and --header documentation does not
1748   mention their use for MIME mail.
1749
1750   This commit fixes the problems above.
1751
1752   Closes #9610
1753
1754 - [Thiago Suchorski brought this change]
1755
1756   docs: minor grammar fixes
1757
1758   Closes #9609
1759
1760 - CURLSHOPT_UNLOCKFUNC.3: the callback as no 'access' argument
1761
1762   Probably a copy and paste error from the lock function man page.
1763
1764   Reported-by: Robby Simpson
1765   Fixes #9612
1766   Closes #9613
1767
1768 - CURLOPT_ACCEPT_ENCODING.3: remove "four" as they are five
1769
1770   ... instead just list the supported encodings.
1771
1772   Reported-by: ProceduralMan on github
1773   Fixes #9614
1774   Closes #9615
1775
1776 Dan Fandrich (28 Sep 2022)
1777 - tests: Remove a duplicated keyword
1778
1779 - docs: document more server names for test files
1780
1781 Daniel Stenberg (28 Sep 2022)
1782 - altsvc: reject bad port numbers
1783
1784   The existing code tried but did not properly reject alternative services
1785   using negative or too large port numbers.
1786
1787   With this fix, the logic now also flushes the old entries immediately
1788   before adding a new one, making a following header with an illegal entry
1789   not flush the already stored entry.
1790
1791   Report from the ongoing source code audit by Trail of Bits.
1792
1793   Adjusted test 356 to verify.
1794
1795   Closes #9607
1796
1797 - functypes: provide the recv and send arg and return types
1798
1799   This header is for providing the argument types for recv() and send()
1800   when built to not use a dedicated config-[platfor].h file.
1801
1802   Remove the slow brute-force checks from configure and cmake.
1803
1804   This change also removes the use of the types for select, as they were
1805   not used in code.
1806
1807   Closes #9592
1808
1809 - urlapi: reject more bad characters from the host name field
1810
1811   Extended test 1560 to verify
1812
1813   Report from the ongoing source code audit by Trail of Bits.
1814
1815   Closes #9608
1816
1817 - configure: deprecate builds with small curl_off_t
1818
1819   If curl_off_t turns out to be smaller than 8 bytes,
1820   --with-n64-deprecated needs to be used to allow the build to
1821   continue. This is to highlight the fact that support for such builds is
1822   going away next year.
1823
1824   Also mentioned in DEPRECATED.md
1825
1826   Closes #9605
1827
1828 - [Patrick Monnerat brought this change]
1829
1830   http, vauth: always provide Curl_allow_auth_to_host() functionality
1831
1832   This function is currently located in the lib/http.c module and is
1833   therefore disabled by the CURL_DISABLE_HTTP conditional token.
1834
1835   As it may be called by TLS backends, disabling HTTP results in an
1836   undefined reference error at link time.
1837
1838   Move this function to vauth/vauth.c to always provide it and rename it
1839   as Curl_auth_allowed_to_host() to respect the vauth module naming
1840   convention.
1841
1842   Closes #9600
1843
1844 - ngtcp2: fix C89 compliance nit
1845
1846 - openssl: make certinfo available for QUIC
1847
1848   Curl_ossl_certchain() is now an exported function in lib/vtls/openssl.c that
1849   can also be used from quiche.c and ngtcp2.c to get the cert chain for QUIC
1850   connections as well.
1851
1852   The *certchain function was moved to the top of the file for this reason.
1853
1854   Reported-by: Eloy Degen
1855   Fixes #9584
1856   Closes #9597
1857
1858 - RELEASE-NOTES: synced
1859
1860 - DEPRECATE.md: Support for systems without 64 bit data types
1861
1862   Closes #9604
1863
1864 - [Patrick Monnerat brought this change]
1865
1866   tests: skip mime/form tests when mime is not built-in
1867
1868   Closes #9596
1869
1870 - url: rename function due to name-clash in Watt-32
1871
1872   Follow-up to 2481dbe5f4f58 and applies the change the way it was
1873   intended.
1874
1875 Viktor Szakats (26 Sep 2022)
1876 - windows: adjust name of two internal public functions
1877
1878   According to `docs/INTERNALS.md`, internal function names spanning source
1879   files start with uppercase `Curl_`. Bring these two functions in
1880   alignment with this.
1881
1882   This also stops exporting them from `libcurl.dll` in autotools builds.
1883
1884   Reviewed-by: Daniel Stenberg
1885
1886   Closes #9598
1887
1888 Daniel Stenberg (26 Sep 2022)
1889 - [Gisle Vanem brought this change]
1890
1891   url: rename function due to name-clash in Watt-32
1892
1893   Since the commit 764c958c52edb427f39, there was a new function called
1894   resolve_ip(). This clashes with an internal function in Watt-32.
1895
1896   Closes #9585
1897
1898 Jay Satiro (26 Sep 2022)
1899 - schannel: ban server ALPN change during recv renegotiation
1900
1901   By the time schannel_recv is renegotiating the connection, libcurl has
1902   already decided on a protocol and it is too late for the server to
1903   select a protocol via ALPN except for the originally selected protocol.
1904
1905   Ref: https://github.com/curl/curl/issues/9451
1906
1907   Closes https://github.com/curl/curl/pull/9463
1908
1909 Daniel Stenberg (26 Sep 2022)
1910 - url: a zero-length userinfo part in the URL is still a (blank) user
1911
1912   Adjusted test 1560 to verify
1913
1914   Reported-by: Jay Satiro
1915
1916   Fixes #9088
1917   Closes #9590
1918
1919 Viktor Szakats (25 Sep 2022)
1920 - autotools: allow --enable-symbol-hiding with windows
1921
1922   This local autotools logic was put in place in
1923   9e24b9c7afbcb81120af4cf3f6cdee49a06d8224 (in 2012) which disabled it for
1924   Windows unconditionally. Testing reveals that it actually works with
1925   tested toolchains (mingw-w64 and CI ones), so let's allow this build
1926   feature on that platform. Bringing this in sync with CMake, which already
1927   supported this.
1928
1929   Reviewed-by: Jay Satiro
1930
1931   Closes #9586
1932
1933 - autotools: reduce brute-force when detecting recv/send arg list
1934
1935   autotools uses brute-force to detect `recv`/`send`/`select` argument
1936   lists, by interating through _all_ argument type combinations on each
1937   `./configure` run. This logic exists since
1938   01fa02d0b545e1433dced2430561f8c0c72b74a9 (from 2006) and was a bit later
1939   extended with Windows support.
1940
1941   This results in a worst-case number of compile + link cycles as below:
1942   - `recv`: 96
1943   - `send`: 192
1944   - `select`: 60
1945   Total: 348 (the number of curl C source files is 195, for comparison)
1946
1947   Notice that e.g. curl-for-win autotools builds require two `./configure`
1948   invocations, doubling these numbers.
1949
1950   `recv` on Windows was especially unlucky because `SOCKET` (the correct
1951   choice there) was listed _last_ in one of the outer trial loops. This
1952   resulted in lengthy waits while autotools was trying all invalid
1953   combinations first, wasting cycles, disk writes and slowing down
1954   iteration.
1955
1956   This patch reduces the amount of idle work by reordering the tests in
1957   a way to succeed first on a well-known platform such as Windows, and
1958   also on non-Windows by testing for POSIX prototypes first, on the
1959   assumption that these are the most likely candidates these days. (We do
1960   not touch `select`, where the order was already optimal for these
1961   platforms.)
1962
1963   For non-Windows, this means to try a return value of `ssize_t` first,
1964   then `int`, reordering the buffer argument type to try `void *` first,
1965   then `byte *`, and prefer the `const` flavor with `send`. If we are
1966   here, also stop testing for `SOCKET` type in non-Windows builds.
1967
1968   After the patch, detection on Windows is instantaneous. It should also be
1969   faster on popular platforms such as Linux and BSD-based ones.
1970
1971   If there are known-good variations for other platforms, they can also be
1972   fast-tracked like above, given a way to check for that platform inside
1973   the autotools logic.
1974
1975   Reviewed-by: Daniel Stenberg
1976
1977   Closes #9591
1978
1979 Daniel Stenberg (23 Sep 2022)
1980 - TODO: Provide the error body from a CONNECT response
1981
1982   Spellchecked-by: Jay Satiro
1983
1984   Closes #9513
1985   Closes #9581
1986
1987 Viktor Szakats (23 Sep 2022)
1988 - windows: autotools .rc warnings fixup
1989
1990   Move `LT_LANG([Windows Resource])` after `XC_LIBTOOL`, fixing:
1991
1992   - Warnings when running `autoreconf -fi`.
1993
1994   - Warning when compiling .rc files:
1995     libtool: compile: unable to infer tagged configuration
1996     libtool:   error: specify a tag with '--tag'
1997
1998   Follow up to 6de7322c03d5b4d91576a7d9fc893e03cc9d1057
1999   Ref: https://github.com/curl/curl/pull/9521#issuecomment-1256291156
2000
2001   Suggested-by: Patrick Monnerat
2002   Closes #9582
2003
2004 Daniel Stenberg (23 Sep 2022)
2005 - [Randall S. Becker brought this change]
2006
2007   curl_setup: disable use of FLOSS for 64-bit NonStop builds
2008
2009   Older 32-bit builds currently need FLOSS. This dependency may be removed
2010   in future OS releases.
2011
2012   Signed-off-by: Randall S. Becker <randall.becker@nexbridge.ca>
2013
2014   Closes #9575
2015
2016 - [Patrick Monnerat brought this change]
2017
2018   tool: remove dead code
2019
2020   Add a debug assertion to verify protocols included/excluded in a set
2021   are always tokenized.
2022
2023   Follow-up to commit 677266c.
2024
2025   Closes #9576
2026
2027 - [Patrick Monnerat brought this change]
2028
2029   lib: prepare the incoming of additional protocols
2030
2031   Move the curl_prot_t to its own conditional block. Introduce symbol
2032   PROTO_TYPE_SMALL to control it.
2033
2034   Fix a cast in a curl_prot_t assignment.
2035   Remove an outdated comment.
2036
2037   Follow-up to cd5ca80.
2038
2039   Closes #9534
2040
2041 - msh3: change the static_assert to make the code C89
2042
2043 - bearssl: make it proper C89 compliant
2044
2045 - curl-compilers.m4: for gcc + want warnings, set gnu89 standard
2046
2047   To better verify that the code is C89
2048
2049   Closes #9542
2050
2051 - [Patrick Monnerat brought this change]
2052
2053   lib517: fix C89 constant signedness
2054
2055   In C89, positive integer literals that overflow an int but not an
2056   unsigned int may be understood as a negative int.
2057
2058   lib517.c:129:3: warning: this decimal constant is unsigned only in ISO C90
2059      {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 },
2060      ^
2061
2062   Closes #9572
2063
2064 - mprintf: use snprintf if available
2065
2066   This is the single place in libcurl code where it uses the "native"
2067   s(n)printf() function. Used for writing floats. The use has been
2068   reviewed and vetted and uses a HUGE target buffer, but switching to
2069   snprintf() still makes this safer and removes build-time warnings.
2070
2071   Reported-by: Philip Heiduck
2072
2073   Fixes #9569
2074   Closes #9570
2075
2076 - docs: tag curl options better in man pages
2077
2078   As it makes them links in the HTML versions.
2079
2080   Verified by the extended test 1176
2081
2082 - symbols-in-versions: CURLOPT_ENCODING is deprecated since 7.21.6
2083
2084 - manpage-syntax.pl: all libcurl option symbols should be \fI-tagged
2085
2086   ... as that makes them links to their corresponding man page.
2087
2088   This script is used for test 1173.
2089
2090   Closes #9574
2091
2092 - RELEASE-NOTES: synced
2093
2094 - [Patrick Monnerat brought this change]
2095
2096   tool: remove protocol count limitation
2097
2098   Replace bit mask protocol sets by null-terminated arrays of protocol
2099   tokens. These are the addresses of the protocol names returned by
2100   curl_version_info().
2101
2102   Protocol names are sorted case-insensitively before output to satisfy CI
2103   tests matches consistency.
2104
2105   The protocol list returned by curl_version_info() is augmented with all
2106   RTMP protocol variants.
2107
2108   Test 1401 adjusted for new alpha ordered output.
2109
2110   Closes #9546
2111
2112 - test972: verify the output without using external tool
2113
2114   It seems too restrictive to assume and use an external tool to verify
2115   the JSON. This now verifies the outut byte per byte. We could consider
2116   building a local "JSON verifyer" in a future.
2117
2118   Remove 'jsonlint' from the CI job.
2119
2120   Reported-by: Marcel Raad
2121   Fixes #9563
2122   Closes #9564
2123
2124 - hostip: lazily wait to figure out if IPv6 works until needed
2125
2126   The check may take many milliseconds, so now it is performed once the
2127   value is first needed. Also, this change makes sure that the value is
2128   not used if the resolve is set to be IPv4-only.
2129
2130   Closes #9553
2131
2132 - curl.h: fix mention of wrong error code in comment
2133
2134   The same error and comment were also used and is now corrected in
2135   CURLOPT_SSH_KEYFUNCTION.3
2136
2137 - symbol-scan.pl: scan and verify .3 man pages
2138
2139   This script now also finds all .3 man pages in docs/include and
2140   docs/include/opts, extracts all uses of CURL* symbols and verifies that all
2141   symbols mentioned in docs are defined in public headers.
2142
2143   A "global symbol" is one of those matching a known prefix and the script makes
2144   an attempt to check all/most of them. Just using *all* symbols that match
2145   CURL* proved matching a little too many other references as well and turned
2146   difficult turning into something useful.
2147
2148   Closes #9544
2149
2150 - symbols-in-versions: add missing LIBCURL* symbols
2151
2152 - symbol-scan.pl: also check for LIBCURL* symbols
2153
2154   Closes #9544
2155
2156 - docs/libcurl/symbols-in-versions: add several missing symbols
2157
2158 - test1119: scan all public headers
2159
2160   Previously this test only scanned a subset of the headers, which made us
2161   accidentally miss symbols that were provided in the others. Now, the script
2162   iterates over all headers present in include/curl.
2163
2164   Closes #9544
2165
2166 - [Patrick Monnerat brought this change]
2167
2168   examples/chkspeed: improve portability
2169
2170   The example program chkspeed uses strncasecmp() which is not portable
2171   across systems. Replace calls to this function by tests on characters.
2172
2173   Closes #9562
2174
2175 - easy: fix the #include order
2176
2177   The mentioned "last 3 includes" order should be respected. easy_lock.h should
2178   be included before those three.
2179
2180   Reported-by: Yuriy Chernyshov
2181   Fixes #9560
2182   Closes #9561
2183
2184 - docs: spellfixes
2185
2186   Pointed by the new CI job
2187
2188 - GHA: spellcheck
2189
2190   This spellchecker checks markdown files. For this reason this job
2191   converts all man pages in the repository to markdown with pandoc before
2192   the check runs.
2193
2194   The perl script 'cleanspell' filters out details from the man page in
2195   the process, to avoid the spellchecker trying to spellcheck things it
2196   can't. Like curl specific symbols and the SYNOPSIS and EXAMPLE sections
2197   of libcurl man pages.
2198
2199   The spell checker does not check words in sections that are within pre,
2200   strong and em tags.
2201
2202   'spellcheck.words' is a custom word list with additional accepted words.
2203
2204   Closes #9523
2205
2206 - connect: fix the wrong error message on connect failures
2207
2208   The "Failed to connect to" message after a connection failure would
2209   include the strerror message based on the presumed previous socket
2210   error, but in times it seems that error number is not set when reaching
2211   this code and therefore it would include the wrong error message.
2212
2213   The strerror message is now removed from here and the curl_easy_strerror
2214   error is used instead.
2215
2216   Reported-by: Edoardo Lolletti
2217   Fixes #9549
2218   Closes #9554
2219
2220 - httpput-postfields.c: shorten string for C89 compliance
2221
2222   httpput-postfields.c:41:3: error: string length ā€˜522ā€™ is greater than the length ā€˜509ā€™ ISO C90 compilers are required to support [-Woverlength-strings]
2223      41 |   "this chapter.";
2224         |   ^~~~~~~~~~~~~~~
2225
2226   Closes #9555
2227
2228 - ws: fix a C89 compliance nit
2229
2230   Closes #9541
2231
2232 - [Patrick Monnerat brought this change]
2233
2234   unit test 1655: make it C89-compliant
2235
2236   Initializations performed in unit test 1655 use automatic variables in
2237   aggregates and thus can only be computed at run-time. Using gcc in C89
2238   dialect mode produces warning messages like:
2239
2240   unit1655.c:96:7: warning: initializer element is not computable at load time [-Wpedantic]
2241      96 |     { toolong, DOH_DNS_NAME_TOO_LONG },  /* expect early failure */
2242         |       ^~~~~~~
2243
2244   Fix the problem by converting these automatic pointer variables to
2245   static arrays.
2246
2247   Closes #9551
2248
2249 - [Tobias Schaefer brought this change]
2250
2251   curl_strequal.3: fix typo
2252
2253   Closes #9548
2254
2255 - [Dmitry Karpov brought this change]
2256
2257   resolve: make forced IPv4 resolve only use A queries
2258
2259   This protects IPv4-only transfers from undesired bad IPv6-related side
2260   effects and make IPv4 transfers in dual-stack libcurl behave the same
2261   way as in IPv4 single-stack libcurl.
2262
2263   Closes #9540
2264
2265 - RELEASE-NOTES: synced
2266
2267 - winbuild/MakefileBuild.vc: handle spaces in libssh(2) include paths
2268
2269   Patched-by: Mark Itzcovitz
2270   Bug: https://curl.se/mail/lib-2022-09/0038.html
2271
2272   Closes #9536
2273
2274 - TODO: Reduce CA certificate bundle reparsing
2275
2276   By adding some sort of cache.
2277
2278   Reported-by: Michael Drake
2279   Closes #9379
2280   Closes #9538
2281
2282 Marc Hoersken (19 Sep 2022)
2283 - CI/GHA: cancel outdated CI runs on new PR changes
2284
2285   Avoid letting outdated CI runs continue if a PR receives
2286   new changes. Outside a PR we let them continue running
2287   by tying the concurrency to the commit hash instead.
2288
2289   Also only let one CodeQL or Hacktoberfest job run at a time.
2290
2291   Other CI platforms we use have this build in, but GitHub
2292   unfortunately neither by default nor with a simple option.
2293
2294   This saves CI resources and therefore a little energy.
2295
2296   Approved-by: Daniel Stenberg
2297   Approved-by: Max Dymond
2298   Closes #9533
2299
2300 Daniel Stenberg (19 Sep 2022)
2301 - docs: fix proselint complaints
2302
2303 - GHA: run proselint on markdown files
2304
2305   Co-authored-by: Marc Hƶrsken
2306
2307   Closes #9520
2308
2309 - lib: the number four in a sequence is the "fourth"
2310
2311   Spelling is hard
2312
2313   Closes #9535
2314
2315 - [John Bampton brought this change]
2316
2317   misc: fix spelling in two source files
2318
2319   Closes #9529
2320
2321 Viktor Szakats (18 Sep 2022)
2322 - windows: add .rc support to autotools builds
2323
2324   After this update autotools builds will compile and link `.rc` resources
2325   to Windows executables. Bringing this feature on par with CMake and
2326   Makefile.m32 builds. And also making it unnecessary to improvise these
2327   steps manually, while monkey patching build files, e.g. [0].
2328
2329   You can customize the resource compiler via the `RC` envvar, and its
2330   options via `RCFLAGS`.
2331
2332   This harmless warning may appear throughout the build, even though the
2333   autotools manual documents [1] `RC` as a valid tag, and it fails when
2334   omitting one:
2335   `libtool:   error: ignoring unknown tag RC`
2336
2337   [0] https://github.com/curl/curl-for-win/blob/535f19060d4b708f72e75dd849409ce50baa1b84/curl-autotools.sh#L376-L382
2338   [1] https://www.gnu.org/software/libtool/manual/html_node/Tags.html
2339
2340   Closes #9521
2341
2342 Marc Hoersken (18 Sep 2022)
2343 - CI/linkcheck: only run if a Markdown file is changed
2344
2345   This saves CI resources and therefore a little energy.
2346
2347   Reviewed-by: Max Dymond
2348   Closes #9531
2349
2350 - README.md: add GHA status badges for Linux and macOS builds
2351
2352   This makes sense now that Linux builds are being consolidated.
2353
2354   Approved-by: Daniel Stenberg
2355   Closes #9530
2356
2357   [skip ci]
2358
2359 Daniel Stenberg (17 Sep 2022)
2360 - misc: null-terminate
2361
2362   Make use of this term consistently.
2363
2364   Closes #9527
2365
2366 Marc Hoersken (17 Sep 2022)
2367 - CI/GHA: merge intel CC and more TLS libs into linux workflow
2368
2369   Continue work on merging all Linux workflows into one file.
2370
2371   Reviewed-by: Max Dymond
2372   Follow up to #9501
2373   Closes #9514
2374
2375 Daniel Stenberg (17 Sep 2022)
2376 - [Patrick Monnerat brought this change]
2377
2378   lib1597: make it C89-compliant again
2379
2380   Automatic variable addresses cannot be used in an initialisation
2381   aggregate.
2382
2383   Follow-up to 9d51329
2384
2385   Reported-by: Daniel Stenberg
2386   Fixes: #9524
2387   Closes #9525
2388
2389 - tool_libinfo: silence "different 'const' qualifiers" in qsort()
2390
2391   MSVC 15.0.30729.1 warned about it
2392
2393   Follow-up to dd2a024323dcc
2394
2395   Closes #9522
2396
2397 - [Patrick Monnerat brought this change]
2398
2399   docs: tell about disabled protocols in CURLOPT_*PROTOCOLS_STR.
2400
2401   Disabled protocols are now handled as if they were unknown.
2402   Also update the possible protocol list.
2403
2404 - [Patrick Monnerat brought this change]
2405
2406   cli tool: do not use disabled protocols
2407
2408   As they are now rejected by the library, take care of not passing
2409   disabled protocol names to CURLOPT_PROTOCOLS_STR and
2410   CURLOPT_REDIR_PROTOCOLS_STR.
2411
2412   Rather than using the CURLPROTO_* constants, dynamically assign protocol
2413   numbers based on the order they are listed by curl_version_info().
2414
2415   New type proto_set_t implements prototype bit masks: it should therefore
2416   be large enough to accomodate all library-enabled protocols. If not,
2417   protocol numbers beyond the bit count of proto_set_t are recognized but
2418   "inaccessible": when used, a warning is displayed and the value is
2419   ignored. Should proto_set_t overflows, enabled protocols are reordered to
2420   force those having a public CURLPROTO_* representation to be accessible.
2421
2422   Code has been added to subordinate RTMP?* protocols to the presence of
2423   RTMP in the enabled protocol list, being returned by curl_version_info()
2424   or not.
2425
2426 - [Patrick Monnerat brought this change]
2427
2428   setopt: use the handler table for protocol name to number conversions
2429
2430   This also returns error CURLE_UNSUPPORTED_PROTOCOL rather than
2431   CURLE_BAD_FUNCTION_ARGUMENT when a listed protocol name is not found.
2432
2433   A new schemelen parameter is added to Curl_builtin_scheme() to support
2434   this extended use.
2435
2436   Note that disabled protocols are not recognized anymore.
2437
2438   Tests adapted accordingly.
2439
2440   Closes #9472
2441
2442 - altsvc: use 'h3' for h3
2443
2444   Since the official and real version has been out for a while now and servers
2445   are deployed out there using it, there is no point in sticking to h3-29.
2446
2447   Reported-by: ć‚¦ć•ć‚“
2448   Fixes #9515
2449   Closes #9516
2450
2451 Jay Satiro (16 Sep 2022)
2452 - [chemodax brought this change]
2453
2454   winbuild: Use NMake batch-rules for compilation
2455
2456   - Invoke cl compiler once for each group of .c files.
2457
2458   This is significantly improves compilation time. For example in my
2459   environment: 40 s --> 20 s.
2460
2461   Prior to this change cl was invoked per .c file.
2462
2463   Closes https://github.com/curl/curl/pull/9512
2464
2465 Daniel Stenberg (16 Sep 2022)
2466 - ws: the infof() flags should be %zu
2467
2468   Follow-up to e5e9e0c5e49ae0
2469
2470   Closes #9518
2471
2472 - curl: warn for --ssl use, considered insecure
2473
2474   Closes #9519
2475
2476 - [Sergey Bronnikov brought this change]
2477
2478   curl_escape.3: fix typo
2479
2480   lengthf -> length
2481
2482   Closes #9517
2483
2484 - mailmap: merge Philip Heiduck's two addresses into one
2485
2486 - test1948: verify PUT + POST reusing the same handle
2487
2488   Reproduced #9507, verifies the fix
2489
2490 - setopt: when POST is set, reset the 'upload' field
2491
2492   Reported-by: RobBotic1 on github
2493   Fixes #9507
2494   Closes #9511
2495
2496 Marc Hoersken (15 Sep 2022)
2497 - github: initial CODEOWNERS setup for CI configuration
2498
2499   Reviewed-by: Daniel Stenberg
2500   Reviewed-by: Marcel Raad
2501   Reviewed-by: Max Dymond
2502
2503   Closes #9505
2504
2505   [skip ci]
2506
2507 - [Philip Heiduck brought this change]
2508
2509   CI: optimize some more dependencies install
2510
2511   Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan>
2512
2513   Closes #9500
2514
2515 - CI/GHA: merge event-based and NSS into new linux workflow
2516
2517   Continue work on merging all Linux workflows into one file.
2518
2519   Follow up to #9501
2520   Closes #9506
2521
2522 Daniel Stenberg (15 Sep 2022)
2523 - include/curl/websockets.h: add extern "C" for C++
2524
2525   Reported-by: n0name321 on github
2526   Fixes #9509
2527   Closes #9510
2528
2529 - lib1560: extended to verify detect/reject of unknown schemes
2530
2531   ... when no guessing is allowed.
2532
2533 - urlapi: detect scheme better when not guessing
2534
2535   When the parser is not allowed to guess scheme, it should consider the
2536   word ending at the first colon to be the scheme, independently of number
2537   of slashes.
2538
2539   The parser now checks that the scheme is known before it counts slashes,
2540   to improve the error messge for URLs with unknown schemes and maybe no
2541   slashes.
2542
2543   When following redirects, no scheme guessing is allowed and therefore
2544   this change effectively prevents redirects to unknown schemes such as
2545   "data".
2546
2547   Fixes #9503
2548
2549 - strerror: improve two URL API error messages
2550
2551 Marc Hoersken (14 Sep 2022)
2552 - CI/GHA: merge bearssl and hyper into initial linux workflow
2553
2554   Begin work on merging all Linux workflows into one file.
2555
2556   Closes #9501
2557
2558 Daniel Stenberg (14 Sep 2022)
2559 - RELEASE-NOTES: synced
2560
2561 - cmake: define BUILDING_LIBCURL in lib/CMakeLists, not config.h
2562
2563   Since the config file might also get included by the tool code at times.
2564   This syncs with how other builds do it.
2565
2566   Closes #9498
2567
2568 - tool_hugehelp: make hugehelp a blank macro when disabled
2569
2570   Closes #9485
2571
2572 - getparameter: return PARAM_MANUAL_REQUESTED for -M even when disabled
2573
2574   ... to improve the output in this situation. Now it doesn't say "option
2575   unknown" anymore.
2576
2577   Closes #9485
2578
2579 - setopt: fix compiler warning
2580
2581   Follow-up to cd5ca80f00d2
2582
2583   closes #9502
2584
2585 - [Philip Heiduck brought this change]
2586
2587   CI: skip make, do make install at once for dependencies
2588
2589   Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan>
2590
2591   Closes #9477
2592
2593 - formdata: typecast the va_arg return value
2594
2595   To avoid "enumerated type mixed with another type" warnings
2596
2597   Follow-up from 0f52dd5fd5aa3592691a
2598
2599   Closes #9499
2600
2601 - RELEASE-PROCEDURE.md: mention patch releases
2602
2603   - When to make them and how to argue for them
2604   - Refreshed the release date list
2605
2606   Closes #9495
2607
2608 - urldata: use a curl_prot_t type for storing protocol bits
2609
2610   This internal-use-only storage type can be bumped to a curl_off_t once
2611   we need to use bit 32 as the previous 'unsigned int' can no longer hold
2612   them all then.
2613
2614   The websocket protocols take bit 30 and 31 so they are the last ones
2615   that fit within 32 bits - but cannot properly be exported through APIs
2616   since those use *signed* 32 bit types (long) in places.
2617
2618   Closes #9481
2619
2620 - [zhanghu on xiaomi brought this change]
2621
2622   formdata: fix warning: 'CURLformoption' is promoted to 'int'
2623
2624   curl/lib/formdata.c: In function 'FormAdd':
2625   curl/lib/formdata.c:249:31: warning: 'CURLformoption' is promoted to 'int' when passed through '...'
2626     249 |       option = va_arg(params, CURLformoption);
2627         |                               ^
2628   curl/lib/formdata.c:249:31: note: (so you should pass 'int' not 'CURLformoption' to 'va_arg')
2629   curl/lib/formdata.c:249:31: note: if this code is reached, the program will abort
2630
2631   Closes #9484
2632
2633 - CURLOPT_CONNECT_ONLY.3: for ws(s) as well
2634
2635   and correct the version number for when that support comes. Even if it
2636   is still experimental for WebSocket.
2637
2638   Closes #9487
2639
2640 - tool_operate: avoid a few #ifdefs for disabled-libcurl builds
2641
2642   By providing empty macros in the header file instead, the code gets
2643   easier to read and yet is disabled on demand.
2644
2645   Closes #9486
2646
2647 - [a1346054 on github brought this change]
2648
2649   scripts: use `grep -E` instead of `egrep`
2650
2651   egrep is deprecated
2652
2653   Closes #9491
2654
2655 - [Hayden Roche brought this change]
2656
2657   wolfSSL: fix session management bug.
2658
2659   Prior to this commit, non-persistent pointers were being used to store
2660   sessions.  When a WOLFSSL object was then freed, that freed the session
2661   it owned, and thus invalidated the pointer held in curl's cache. This
2662   commit makes it so we get a persistent (deep copied) session pointer
2663   that we then add to the cache.  Accordingly, wolfssl_session_free, which
2664   was previously a no-op, now needs to actually call SSL_SESSION_free.
2665
2666   This bug was discovered by a wolfSSL customer.
2667
2668   Closes #9492
2669
2670 - docs: use "WebSocket" in singular
2671
2672   This is how the RFC calls the protocol. Also rename the file in docs/ to
2673   WEBSOCKET.md in uppercase to match how we have done it for many other
2674   protocol docs in similar fashion.
2675
2676   Add the WebSocket docs to the tarball.
2677
2678   Closes #9496
2679
2680 Marcel Raad (12 Sep 2022)
2681 - ws: fix build without `USE_WEBSOCKETS`
2682
2683   The curl.h include is required unconditionally.
2684
2685 - ws: add missing curl.h include
2686
2687   A conflict between commits 664249d0952 and e5839f4ee70 broke the build.
2688
2689 Daniel Stenberg (12 Sep 2022)
2690 - ws: fix an infof() call to use %uz for size_t output
2691
2692   Detected by Coverity, CID 1514665.
2693
2694   Closes #9480
2695
2696 Marcel Raad (12 Sep 2022)
2697 - curl_setup: include only system.h instead of curl.h
2698
2699   As done before commit 9506d01ee50.
2700
2701   Ref: https://github.com/curl/curl/pull/9375#discussion_r957010158
2702   Closes https://github.com/curl/curl/pull/9453
2703
2704 - lib: add missing limits.h includes
2705
2706   Closes https://github.com/curl/curl/pull/9453
2707
2708 - lib and tests: add missing curl.h includes
2709
2710   Closes https://github.com/curl/curl/pull/9453
2711
2712 - curl_setup: include curl.h after platform setup headers
2713
2714   The platform setup headers might set definitions required for the
2715   includes in curl.h.
2716
2717   Ref: https://github.com/curl/curl/pull/9375#discussion_r956998269
2718   Closes https://github.com/curl/curl/pull/9453
2719
2720 Daniel Stenberg (12 Sep 2022)
2721 - [Benjamin Loison brought this change]
2722
2723   docs: correct missing uppercase in Markdown files
2724
2725   To detect these typos I used:
2726
2727   ```
2728   clear && grep -rn '\. [a-z]' . | uniq | grep -v '\. lib' | grep -v '[0-9]\. [a-z]' | grep -v '\.\. [a-z]' | grep -v '\. curl' | grep -v 'e.g. [a-z]' | grep -v 'eg. [a-z]' | grep -v '\etc. [a-z]' | grep -v 'i.e\. [a-z]' | grep --color=always '\. [a-z]' | grep '\.md'
2729   ```
2730
2731   Closes #9474
2732
2733 - tool_setopt: use better English in --libcurl source comments
2734
2735   Like this:
2736
2737     XYZ was set to an object pointer
2738     ABC was set to a function pointer
2739
2740   Closes #9475
2741
2742 - setopt: make protocol2num use a curl_off_t for the protocol bit
2743
2744   ... since WSS does not fit within 32 bit.
2745
2746   Bug: https://github.com/curl/curl/pull/9467#issuecomment-1243014887
2747   Closes #9476
2748
2749 - RELEASE-NOTES: synced
2750
2751 - configure: polish the grep -E message a bit further
2752
2753   Suggested-by: Emanuele Torre
2754   Closes #9473
2755
2756 - GHA: add a gcc-11 -O3 build using OpenSSL
2757
2758   Since -O3 might trigger other warnings
2759
2760   Closes #9454
2761
2762 - [Patrick Monnerat brought this change]
2763
2764   content_encoding: use writer struct subclasses for different encodings
2765
2766   The variable-sized encoding-specific storage of a struct contenc_writer
2767   currently relies on void * alignment that may be insufficient with
2768   regards to the specific storage fields, although having not caused any
2769   problems yet.
2770
2771   In addition, gcc 11.3 issues a warning on access to fields of partially
2772   allocated structures that can occur when the specific storage size is 0:
2773
2774     content_encoding.c: In function ā€˜Curl_build_unencoding_stackā€™:
2775     content_encoding.c:980:21: warning: array subscript ā€˜struct contenc_writer[0]ā€™ is partly outside array bounds of ā€˜unsigned char[16]ā€™ [-Warray-bounds]
2776       980 |     writer->handler = handler;
2777           |     ~~~~~~~~~~~~~~~~^~~~~~~~~
2778     In file included from content_encoding.c:49:
2779     memdebug.h:115:29: note: referencing an object of size 16 allocated by ā€˜curl_dbg_callocā€™
2780       115 | #define calloc(nbelem,size) curl_dbg_calloc(nbelem, size, __LINE__, __FILE__)
2781           |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2782     content_encoding.c:977:60: note: in expansion of macro ā€˜callocā€™
2783       977 |   struct contenc_writer *writer = (struct contenc_writer *)calloc(1, sz);
2784
2785   To solve both these problems, the current commit replaces the
2786   contenc_writer/params structure pairs by "subclasses" of struct
2787   contenc_writer. These are structures that contain a contenc_writer at
2788   offset 0. Proper field alignment is therefore handled by the compiler and
2789   full structure allocation is performed, silencing the warnings.
2790
2791   Closes #9455
2792
2793 - configure: correct the wording when checking grep -E
2794
2795   The check first checks that grep -E works, and only as a fallback tries
2796   to find and use egrep. egrep is deprecated.
2797
2798   This change only corrects the output wording, not the checks themselves.
2799
2800   Closes #9471
2801
2802 Viktor Szakats (10 Sep 2022)
2803 - websockets: sync prototypes in docs with implementation [ci skip]
2804
2805   Docs for the new send/recv functions synced with the committed versions
2806   of these.
2807
2808   Closes #9470
2809
2810 Daniel Stenberg (10 Sep 2022)
2811 - setopt: make protocols2num() work with websockets
2812
2813   So that CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR can
2814   specify those as well.
2815
2816   Reported-by: Patrick Monnerat
2817   Bug: https://curl.se/mail/lib-2022-09/0016.html
2818   Closes #9467
2819
2820 - curl/websockets.h: remove leftover bad typedef
2821
2822   Just a leftover trace of a development thing that did not stay like
2823   that.
2824
2825   Reported-by: Marc Hƶrsken
2826   Fixes #9465
2827   Cloes #9466
2828
2829 Marcel Raad (10 Sep 2022)
2830 - [Orgad Shaneh brought this change]
2831
2832   fix Cygwin/MSYS compilation
2833
2834   _getpid is Windows API. On Cygwin variants it should remain getpid.
2835
2836   Fixes #8220
2837   Closes #9255
2838
2839 Marc Hoersken (10 Sep 2022)
2840 - GHA: prepare workflow merge by aligning structure again
2841
2842   Closes #9413
2843
2844 Daniel Stenberg (9 Sep 2022)
2845 - docs: the websockets symbols are added in 7.86.0
2846
2847   Nothing else
2848
2849   Closes #9459
2850
2851 - tests/libtest/Makefile.inc: fixup merge conflict mistake
2852
2853 - EXPERIMENTAL.md: add WebSockets
2854
2855 - appveyor: enable websockets
2856
2857 - cirrus: enable websockets in the windows builds
2858
2859 - GHA: add websockets to macos, openssl3 and hyper builds
2860
2861 - tests: add websockets tests
2862
2863    - add websockets support to sws
2864    - 2300: first very basic websockets test
2865    - 2301: first libcurl test for ws (not working yet)
2866    - 2302: use the ws callback
2867    - 2303: test refused upgrade
2868
2869 - curl_ws_meta: initial implementation
2870
2871 - curl_ws_meta.3: added docs
2872
2873 - ws: initial websockets support
2874
2875   Closes #8995
2876
2877 - version: add ws + wss
2878
2879 - libtest/lib1560: test basic websocket URL parsing
2880
2881 - configure: add --enable-websockets
2882
2883 - docs/WebSockets.md: docs
2884
2885 - test415: verify Content-Length parser with control code + negative value
2886
2887 - strtoofft: after space, there cannot be a control code
2888
2889   With the change from ISSPACE() to ISBLANK() this function no longer
2890   deals with (ignores) control codes the same way, which could lead to
2891   this function returning unexpected values like in the case of
2892   "Content-Length: \r-12354".
2893
2894   Follow-up to 6f9fb7ec2d7cb389a0da5
2895
2896   Detected by OSS-fuzz
2897   Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51140
2898   Assisted-by: Max Dymond
2899   Closes #9458
2900
2901 - headers: reset the requests counter at transfer start
2902
2903   If not, reusing an easy handle to do a subsequent transfer would
2904   continue the counter from the previous invoke, which then would make use
2905   of the header API difficult/impossible as the request counter
2906   mismatched.
2907
2908   Add libtest 1947 to verify.
2909
2910   Reported-by: Andrew Lambert
2911   Fixes #9424
2912   Closes #9447
2913
2914 Jay Satiro (8 Sep 2022)
2915 - header: define public API functions as extern c
2916
2917   Prior to this change linker errors would occur if curl_easy_header or
2918   curl_easy_nextheader was called from a C++ unit.
2919
2920   Bug: https://github.com/curl/curl/issues/9424#issuecomment-1238818007
2921   Reported-by: Andrew Lambert
2922
2923   Closes https://github.com/curl/curl/pull/9446
2924
2925 Daniel Stenberg (8 Sep 2022)
2926 - http2: make nghttp2 less picky about field whitespace
2927
2928   In nghttp2 1.49.0 it returns error on leading and trailing whitespace in
2929   header fields according to language in the recently shipped RFC 9113.
2930
2931   nghttp2 1.50.0 introduces an option to switch off this strict check and
2932   this change enables this option by default which should make curl behave
2933   more similar to how it did with nghttp2 1.48.0 and earlier.
2934
2935   We might want to consider making this an option in the future.
2936
2937   Closes #9448
2938
2939 - RELEASE-NOTES: synced
2940
2941   And bump to 7.86.0 for the pending next release
2942
2943 - [Michael Heimpold brought this change]
2944
2945   ftp: ignore a 550 response to MDTM
2946
2947   The 550 is overused as a return code for multiple error case, e.g.
2948   file not found and/or insufficient permissions to access the file.
2949
2950   So we cannot fail hard in this case.
2951
2952   Adjust test 511 since we now fail later.
2953   Add new test 3027 which check that when MDTM failed, but the file could
2954   actually be retrieved, that in this case no filetime is provided.
2955
2956   Reported-by: Michael Heimpold
2957   Fixes #9357
2958   Closes #9387
2959
2960 - urlapi: leaner with fewer allocs
2961
2962   Slightly faster with more robust code. Uses fewer and smaller mallocs.
2963
2964   - remove two fields from the URL handle struct
2965   - reduce copies and allocs
2966   - use dynbuf buffers more instead of custom malloc + copies
2967   - uses dynbuf to build the host name in reduces serial alloc+free within
2968     the same function.
2969   - move dedotdotify into urlapi.c and make it static, not strdup the input
2970     and optimize it by checking for . and / before using strncmp
2971   - remove a few strlen() calls
2972   - add Curl_dyn_setlen() that can "trim" an existing dynbuf
2973
2974   Closes #9408
2975
2976 Jay Satiro (7 Sep 2022)
2977 - setup-win32: no longer define UNICODE/_UNICODE implicitly
2978
2979   - If UNICODE or _UNICODE is defined but the other isn't then error
2980     instead of implicitly defining it.
2981
2982   As Marcel pointed out it is too late at this point to make such a define
2983   because Windows headers may already be included, so likely it never
2984   worked. We never noticed because build systems that can make Windows
2985   Unicode builds always define both. If one is defined but not the other
2986   then something went wrong during the build configuration.
2987
2988   Bug: https://github.com/curl/curl/pull/9375#discussion_r956545272
2989   Reported-by: Marcel Raad
2990
2991   Closes https://github.com/curl/curl/pull/9384
2992
2993 Dan Fandrich (6 Sep 2022)
2994 - tests: fix tag syntax errors in test files
2995
2996 Marc Hoersken (6 Sep 2022)
2997 - lib: add required Win32 setup definitions in setup-win32.h
2998
2999   Assisted-by: Jay Satiro
3000   Reviewed-by: Marcel Raad
3001
3002   Follow up to #9312
3003   Closes #9375
3004
3005 Daniel Stenberg (6 Sep 2022)
3006 - pingpong: extend the response reading error with errno
3007
3008   To help diagnosing the cause of the problem.
3009
3010   See #9380
3011   Closes #9443
3012
3013 - curl-compilers.m4: use -O2 as default optimize for clang
3014
3015   Not -Os
3016
3017   Closes #9444
3018
3019 - tool_operate: fix msnprintfing the error message
3020
3021   Follow-up to 7be53774c41c59b47075fba
3022
3023   Coverity CID 1513717 pointed out that we cannot use sizeof() on the
3024   error buffer anymore.
3025
3026   Closes #9440
3027
3028 - [Emanuele Torre brought this change]
3029
3030   curl_ctype: add space around <= operator in ISSPACE macro
3031
3032   Follow-up to f65f750
3033
3034   Closes #9441
3035
3036 - CURLOPT_PROXY_SSLCERT_BLOB.3: this is for HTTPS proxies
3037
3038   The 'protocols' listed were previously wrong.
3039
3040   Reported-by: ProceduralMan on github
3041   Fixes #9434
3042   Closes #9435
3043
3044 - curl_ctype: convert to macros-only
3045
3046   This no longer provide functions, only macros. Runs faster and produces
3047   smaller output.
3048
3049   The biggest precaution this change brings:
3050
3051   DO NOT use post/pre-increments when passing arguments to the macros.
3052
3053   Closes #9429
3054
3055 - misc: ISSPACE() => ISBLANK()
3056
3057   Instances of ISSPACE() use that should rather use ISBLANK(). I think
3058   somewhat carelessly used because it sounds as if it checks for space or
3059   whitespace, but also includes %0a to %0d.
3060
3061   For parsing purposes, we should only accept what we must and not be
3062   overly liberal. It leads to surprises and surprises lead to bad things.
3063
3064   Closes #9432
3065
3066 - ctype: remove all use of <ctype.h>, use our own versions
3067
3068   Except in the test servers.
3069
3070   Closes #9433
3071
3072 Marc Hoersken (5 Sep 2022)
3073 - cmake: skip superfluous hex2dec conversion using math expr
3074
3075   CMake seems to be able to compare two hex values just fine.
3076   Also make sure CURL_TARGET_WINDOWS_VERSION is respected.
3077
3078   Assisted-by: Marcel Raad
3079   Reviewed-by: Viktor Szakats
3080   Reported-by: Keitagit-kun on github
3081
3082   Follow up to #9312
3083   Fixes #9406
3084   Closes #9411
3085
3086 Daniel Stenberg (5 Sep 2022)
3087 - curl_easy_pause.3: unpausing is as fast as possible
3088
3089   Reported-by: ssdbest on github
3090   Fixes #9410
3091   Closes #9430
3092
3093 - CURLOPT_DNS_INTERFACE.3: mention it works for almost all protocols
3094
3095   Except file.
3096
3097   Reported-by: ProceduralMan on github
3098   Fixes #9427
3099   Closes #9428
3100
3101 - NPN: remove support for and use of
3102
3103   Next Protocol Negotiation is a TLS extension that was created and used
3104   for agreeing to use the SPDY protocol (the precursor to HTTP/2) for
3105   HTTPS. In the early days of HTTP/2, before the spec was finalized and
3106   shipped, the protocol could be enabled using this extension with some
3107   servers.
3108
3109   curl supports the NPN extension with some TLS backends since then, with
3110   a command line option `--npn` and in libcurl with
3111   `CURLOPT_SSL_ENABLE_NPN`.
3112
3113   HTTP/2 proper is made to use the ALPN (Application-Layer Protocol
3114   Negotiation) extension and the NPN extension has no purposes
3115   anymore. The HTTP/2 spec was published in May 2015.
3116
3117   Today, use of NPN in the wild should be extremely rare and most likely
3118   totally extinct. Chrome removed NPN support in Chrome 51, shipped in
3119   June 2016. Removed in Firefox 53, April 2017.
3120
3121   Closes #9307
3122
3123 - RELEASE-NOTES: synced
3124
3125   and bump the tentative next release version to 7.85.1
3126
3127 - [Samuel Henrique brought this change]
3128
3129   configure: fail if '--without-ssl' + explicit parameter for an ssl lib
3130
3131   A side effect of a previous change to configure (576e507c78bdd2ec88)
3132   exposed a non-critical issue that can happen if configure is called with
3133   both '--without-ssl' and some parameter setting the use of a ssl library
3134   (e.g. --with-gnutls). The configure script would end up assuming this is
3135   a MultiSSL build, due to the way the case statement is written.
3136
3137   I have changed the order of the variables in the string concatenation
3138   for the case statement and also tweaked the options so that
3139   --without-ssl never turns the build into a MultiSSL one and also clearly
3140   stating that there are conflicting parameters if the user sets it like
3141   described above.
3142
3143   Closes #9414
3144
3145 - tests/certs/scripts: insert standard curl source headers
3146
3147   ... including the SPDX-License-Identifier.
3148
3149   These omissions were not detected by the RUEUSE CI job nor the copyright.pl
3150   scanners because we have a general wildcard in .reuse/dep5 for
3151   "tests/certs/*".
3152
3153   Reported-by: Samuel Henrique
3154   Fixes #9417
3155   Closes #9420
3156
3157 - [Samuel Henrique brought this change]
3158
3159   docs: remove mentions of deprecated '--without-openssl' config parameter
3160
3161   Closes #9415
3162
3163 - [Samuel Henrique brought this change]
3164
3165   manpages: Fix spelling of "allows to" -> "allows one to"
3166
3167    References:
3168    https://salsa.debian.org/lintian/lintian/-/blob/master/tags/t/typo-in-manual-page.tag
3169    https://english.stackexchange.com/questions/60271/grammatical-complements-for-allow/60285#60285
3170
3171   Closes #9419
3172
3173 - [Samuel Henrique brought this change]
3174
3175   CURLOPT_WILDCARDMATCH.3: Fix backslash escaping under single quotes
3176
3177    Lintian (on Debian) has been complaining about this for a while but
3178    I didn't bother initially as the groff parser that we use is not
3179    affected by this.
3180
3181    But I have now noticed that the online manpage is affected by it:
3182    https://curl.se/libcurl/c/CURLOPT_WILDCARDMATCH.html
3183
3184    (I'm using double quotes for quoting-only down below)
3185
3186    The section that should be parsed as "'\'" ends up being parsed as
3187    "'Ā“".
3188
3189    This is due to roffit not parsing "'\\'" correctly, which is fine
3190    as the "correct" way of writing "'\'" is "'\e'" instead.
3191
3192    Note that this fix is not enough to fix the online manpage at
3193    curl's website, as roffit seems to parse it wrongly either way.
3194
3195    My intent is to at least fix the manpage so that roffit can
3196    be changed to parse "'\e'" correctly (although I suggest making
3197    roffit parse both ways correctly, since that's what groff does).
3198
3199    More details at:
3200    https://bugs.debian.org/966803
3201    https://salsa.debian.org/lintian/lintian/-/blob/930b18e4b28b7540253f458ef42a884cca7965c3/tags/a/acute-accent-in-manual-page.tag
3202
3203   Closes #9418
3204
3205 - tool_operate: reduce errorbuffer allocs
3206
3207   - parallel transfers: only alloc and keep errorbuffers in memory for
3208     actual "live" transfers and not for the ones in the pending queue
3209
3210   - serial transfers: reuse the same fixed buffer for all transfers, not
3211     allocated at all.
3212
3213   Closes #9394
3214
3215 Viktor Szakats (31 Aug 2022)
3216 - misc: spelling fixes
3217
3218   Found using codespell 2.2.1.
3219
3220   Also delete the redundant protocol designator from an archive.org URL.
3221
3222   Reviewed-by: Daniel Stenberg
3223   Closes #9403
3224
3225 Daniel Stenberg (31 Aug 2022)
3226 - tool_progress: remove 'Qd' from the parallel progress bar
3227
3228   The "queued" value is no longer showing anything useful to the user. It
3229   is an internal number of transfers waiting at that moment.
3230
3231   Closes #9389
3232
3233 - tool_operate: prevent over-queuing in parallel mode
3234
3235   When doing a huge amount of parallel transfers, we must not add them to
3236   the per_transfer list frivolously since they all use memory after all.
3237   This was previous done without really considering millions or billions
3238   of transfers. Massive parallelism would use a lot of memory for no good
3239   purpose.
3240
3241   The queue is now limited to twice the paralleism number.
3242
3243   This makes the 'Qd' value in the parallel progress meter mostly useless
3244   for users, but works for now for us as a debug display.
3245
3246   Reported-by: justchen1369 on github
3247   Fixes #8933
3248   Closes #9389
3249
3250 Viktor Szakats (31 Aug 2022)
3251 - cmake: fix original MinGW builds
3252
3253   1. Re-enable `HAVE_GETADDRINFO` detection on Windows
3254
3255      Commit d08ee3c83d6bd416aef62ff844c98e47c4682429 (in 2013) added logic
3256      that automatically assumed `getaddrinfo()` to be present for builds
3257      with IPv6 enabled. As it turns out, certain toolchains (e.g. original
3258      MinGW) by default target older Windows versions, and thus do not
3259      support `getaddrinfo()` out of the box. The issue was masked for
3260      a while by CMake builds forcing a newer Windows version, but that
3261      logic got deleted in commit 8ba22ffb2030ed91312fc8634e29516cdf0a9761.
3262      Since then, some CI builds started failing due to IPv6 enabled,
3263      `HAVE_GETADDRINFO` set, but `getaddrinfo()` in fact missing.
3264
3265      It also turns out that IPv6 works without `getaddrinfo()` since commit
3266      67a08dca27a6a07b36c7f97252e284ca957ff1a5 (from 2019, via #4662). So,
3267      to resolve all this, we can now revert the initial commit, thus
3268      restoring `getaddrinfo()` detection and support IPv6 regardless of its
3269      outcome.
3270
3271      Reported-by: Daniel Stenberg
3272
3273   2. Omit `bcrypt` with original MinGW
3274
3275      Original (aka legacy/old) MinGW versions do not support `bcrypt`
3276      (introduced with Vista). We already have logic to handle that in
3277      `lib/rand.c` and autotools builds, where we do not call the
3278      unsupported API and do not link `bcrypt`, respectively, when using
3279      original MinGW.
3280
3281      This patch ports that logic to CMake, fixing the link error:
3282      `c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot find -lbcrypt`
3283
3284      Ref: https://ci.appveyor.com/project/curlorg/curl/builds/44624888/job/40vle84cn4vle7s0#L508
3285      Regression since 76172511e7adcf720f4c77bd91f49278300ec97e
3286
3287   Fixes #9214
3288   Fixes #9393
3289   Fixes #9395
3290   Closes #9396
3291
3292 Version 7.85.0 (31 Aug 2022)
3293
3294 Daniel Stenberg (31 Aug 2022)
3295 - RELEASE-NOTES: synced
3296
3297   curl 7.85.0 release
3298
3299 - THANKS: add contributors from the 7.85.0 release
3300
3301 - getparam: correctly clean args
3302
3303   Follow-up to bf7e887b2442783ab52
3304
3305   The previous fix for #9128 was incomplete and caused #9397.
3306
3307   Fixes #9397
3308   Closes #9399
3309
3310 - zuul: remove the clang-tidy job
3311
3312   Turns out we don't see the warnings, but the warnings right now are
3313   plain ridiculous and unhelpful so we can just as well just kill this
3314   job.
3315
3316   Closes #9390
3317
3318 - cmake: set feature PSL if present
3319
3320   ... make test 1014 pass when libpsl is used.
3321
3322   Closes #9391
3323
3324 - lib530: simplify realloc failure exit path
3325
3326   To make code analyzers happier
3327
3328   Closes #9392
3329
3330 - [Orgad Shaneh brought this change]
3331
3332   tests: add tests for netrc login/password combinations
3333
3334   Covers the following PRs:
3335
3336   - #9066
3337   - #9247
3338   - #9248
3339
3340   Closes #9256
3341
3342 - [Orgad Shaneh brought this change]
3343
3344   url: really use the user provided in the url when netrc entry exists
3345
3346   If the user is specified as part of the URL, and the same user exists
3347   in .netrc, Authorization header was not sent at all.
3348
3349   The user and password fields were assigned in conn->user and password
3350   but the user was not assigned to data->state.aptr, which is the field
3351   that is used in output_auth_headers and friends.
3352
3353   Fix by assigning the user also to aptr.
3354
3355   Amends commit d1237ac906ae7e3cd7a22c3a2d3a135a97edfbf5.
3356
3357   Fixes #9243
3358
3359 - [Orgad Shaneh brought this change]
3360
3361   netrc: Use the password from lines without login
3362
3363   If netrc entry has password with empty login, use it for any username.
3364
3365   Example:
3366   .netrc:
3367   machine example.com password 123456
3368
3369   curl -vn http://user@example.com/
3370
3371   Fix it by initializing state_our_login to TRUE, and reset it only when
3372   finding an entry with the same host and different login.
3373
3374   Closes #9248
3375
3376 - [Jay Satiro brought this change]
3377
3378   url: treat missing usernames in netrc as empty
3379
3380   - If, after parsing netrc, there is a password with no username then
3381     set a blank username.
3382
3383   This used to be the case prior to 7d600ad (precedes 7.82). Note
3384   parseurlandfillconn already does the same thing for URLs.
3385
3386   Reported-by: Raivis <standsed@users.noreply.github.com>
3387   Testing-by: Domen Kožar
3388
3389   Fixes https://github.com/curl/curl/issues/8653
3390   Closes #9334
3391   Closes #9066
3392
3393 - test8: verify that "ctrl-byte cookies" are ignored
3394
3395 - cookie: reject cookies with "control bytes"
3396
3397   Rejects 0x01 - 0x1f (except 0x09) plus 0x7f
3398
3399   Reported-by: Axel Chong
3400
3401   Bug: https://curl.se/docs/CVE-2022-35252.html
3402
3403   CVE-2022-35252
3404
3405   Closes #9381
3406
3407 - libssh: ignore deprecation warnings
3408
3409   libssh 0.10.0 marks all SCP functions as "deprecated" which causes
3410   compiler warnings and errors in our CI jobs and elsewhere. Ignore
3411   deprecation warnings if 0.10.0 or later is found in the build.
3412
3413   If they actually remove the functions at a later point, then someone can
3414   deal with that pain and functionality break then.
3415
3416   Fixes #9382
3417   Closes #9383
3418
3419 - Revert "schannel: when importing PFX, disable key persistence"
3420
3421   This reverts commit 70d010d285315e5f1cad6bdb4953e167b069b692.
3422
3423   Due to further reports in #9300 that indicate this commit might
3424   introduce problems.
3425
3426 - multi: use larger dns hash table for multi interface
3427
3428   Have curl_multi_init() use a much larger DNS hash table than used for
3429   the easy interface to scale and perform better when used with _many_
3430   host names.
3431
3432   curl_share_init() sets an in-between size.
3433
3434   Inspired-by: Ivan Tsybulin
3435   See #9340
3436   Closes #9376
3437
3438 Marc Hoersken (28 Aug 2022)
3439 - CI/runtests.pl: add param for dedicated curl to talk to APIs
3440
3441   This should make it possible to also report test failures
3442   if our freshly build curl binary is not fully functional.
3443
3444   Reviewed-by: Daniel Stenberg
3445   Closes #9360
3446
3447 Daniel Stenberg (27 Aug 2022)
3448 - [Jacob Tolar brought this change]
3449
3450   openssl: add cert path in error message
3451
3452   Closes #9349
3453
3454 - [Jacob Tolar brought this change]
3455
3456   cert.d: clarify that escape character works for file paths
3457
3458   Closes #9349
3459
3460 - gha: move over ngtcp2-gnutls CI job from zuul
3461
3462   Closes #9331
3463
3464 Marc Hoersken (26 Aug 2022)
3465 - cmake: add detection of threadsafe feature
3466
3467   Avoids failing test 1014 by replicating configure checks
3468   for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests.
3469
3470   Reviewed-by: Marcel Raad
3471
3472   Follow up to #8680
3473   Closes #9312
3474
3475 Daniel Stenberg (26 Aug 2022)
3476 - RELEASE-NOTES: synced
3477
3478 Marc Hoersken (26 Aug 2022)
3479 - CI/azure: align torture shallowness with GHA
3480
3481   There 25 is used with FTP tests skipped, and 20 for FTP tests.
3482   This should make torture tests stay within the 60min timeout.
3483
3484   Reviewed-by: Daniel Stenberg
3485   Closes #9371
3486
3487 - multi_wait: fix and improve Curl_poll error handling on Windows
3488
3489   First check for errors and return CURLM_UNRECOVERABLE_POLL
3490   before moving forward and waiting on socket readiness events.
3491
3492   Reviewed-by: Jay Satiro
3493   Reviewed-by: Marcel Raad
3494
3495   Reported-by: Daniel Stenberg
3496   Ref: #9361
3497
3498   Follow up to #8961
3499   Closes #9372
3500
3501 - multi_wait: fix skipping to populate revents for extra_fds
3502
3503   On Windows revents was not populated for extra_fds if
3504   multi_wait had to wait due to the Curl_poll pre-check
3505   not signalling any readiness. This commit fixes that.
3506
3507   Reviewed-by: Marcel Raad
3508   Reviewed-by: Jay Satiro
3509
3510   Closes #9361
3511
3512 - CI/appveyor: disable TLS in msys2-native autotools builds
3513
3514   Schannel cannot be used from msys2-native Linux-emulated builds.
3515
3516   Reviewed-by: Marcel Raad
3517   Reviewed-by: Daniel Stenberg
3518
3519   Follow up to #9367
3520   Closes #9370
3521
3522 Jay Satiro (25 Aug 2022)
3523 - tests: fix http2 tests to use CRLF headers
3524
3525   Prior to this change some tests that rely on nghttpx proxy did not use
3526   CRLF headers everywhere. A recent change in nghttp2, which updated its
3527   version of llhttp (HTTP parser), requires curl's HTTP/1.1 test server to
3528   use CRLF headers.
3529
3530   Ref: https://github.com/nghttp2/nghttp2/commit/9d389e8
3531
3532   Fixes https://github.com/curl/curl/issues/9364
3533   Closes https://github.com/curl/curl/pull/9365
3534
3535 Daniel Stenberg (25 Aug 2022)
3536 - [rcombs brought this change]
3537
3538   multi: use a pipe instead of a socketpair on apple platforms
3539
3540   Sockets may be shut down by the kernel when the app is moved to the
3541   background, but pipes are not.
3542
3543   Removed from KNOWN_BUGS
3544
3545   Fixes #6132
3546   Closes #9368
3547
3548 - [Somnath Kundu brought this change]
3549
3550   libssh2: provide symlink name in SFTP dir listing
3551
3552   When reading the symbolic link name for a file, we need to add the file
3553   name to base path name.
3554
3555   Closes #9369
3556
3557 - configure: if asked to use TLS, fail if no TLS lib was detected
3558
3559   Previously the configure script would just warn about this fact and
3560   continue with TLS disabled build which is not always helpful. TLS should
3561   be explicitly disabled if that is what the user wants.
3562
3563   Closes #9367
3564
3565 - [Dustin Howett brought this change]
3566
3567   schannel: when importing PFX, disable key persistence
3568
3569   By default, the PFXImportCertStore API persists the key in the user's
3570   key store (as though the certificate was being imported for permanent,
3571   ongoing use.)
3572
3573   The documentation specifies that keys that are not to be persisted
3574   should be imported with the flag `PKCS12_NO_PERSIST_KEY`.
3575   NOTE: this flag is only supported on versions of Windows newer than XP
3576   and Server 2003.
3577
3578   Fixes #9300
3579   Closes #9363
3580
3581 - unit1303: four tests should have TRUE for 'connecting'
3582
3583   To match the comments.
3584
3585   Reported-by: Wu Zheng
3586
3587   See #9355
3588   Closes #9356
3589
3590 - CURLOPT_BUFFERSIZE.3: add upload buffersize to see also
3591
3592   Closes #9354
3593
3594 - [Fabian Fischer brought this change]
3595
3596   HTTP3.md: add missing autoreconf command for building with wolfssl
3597
3598   Closes #9353
3599
3600 - RELEASE-NOTES: synced
3601
3602 - multi: have curl_multi_remove_handle close CONNECT_ONLY transfer
3603
3604   įŗ‚hen it has been used in the multi interface, it is otherwise left in
3605   the connection cache, can't be reused and nothing will close them since
3606   the easy handle loses the association with the multi handle and thus the
3607   connection cache - until the multi handle is closed or it gets pruned
3608   because the cache is full.
3609
3610   Reported-by: Dominik Thalhammer
3611   Fixes #9335
3612   Closes #9342
3613
3614 - docs/cmdline-opts: remove \& escapes from all .d files
3615
3616   gen.pl escapes them itself now
3617
3618 - docs/cmdline-opts/gen.pl: encode leading single and double quotes
3619
3620   As "(aq" and "(dq" to prevent them from implying a meaning in the nroff
3621   output. This removes the need for using \& escapes in the .d files'
3622   description parts.
3623
3624   Closes #9352
3625
3626 Marc Hoersken (23 Aug 2022)
3627 - tests/server/sockfilt.c: avoid race condition without a mutex
3628
3629   Avoid loosing any triggered handles by first aborting and joining
3630   the waiting threads before evaluating the individual signal state.
3631
3632   This removes the race condition and therefore need for a mutex.
3633
3634   Closes #9023
3635
3636 Daniel Stenberg (22 Aug 2022)
3637 - [Emil Engler brought this change]
3638
3639   url: output the maximum when rejecting a url
3640
3641   This commit changes the failf message to output the maximum length, when
3642   curl refuses to process a URL because it is too long.
3643
3644   See: #9317
3645   Closes: #9327
3646
3647 - [Chris Paulson-Ellis brought this change]
3648
3649   configure: fix broken m4 syntax in TLS options
3650
3651   Commit b589696f added lines to some shell within AC_ARG_WITH macros, but
3652   inadvertently failed to move the final closing ).
3653
3654   Quote the script section using braces.
3655
3656   So, if these problems have been around for a while, how did I find them?
3657   Only because I did a configure including these options:
3658
3659       $ ./configure --with-openssl --without-rustls
3660         SSL:              enabled (OpenSSL)
3661
3662   Closes #9344
3663
3664 - tests/data/CMakeLists: remove making the 'show' makefile target
3665
3666   It is not used by runtests since 3c0f462
3667
3668   Closes #9333
3669
3670 - tests/data/Makefile: remove 'filecheck' target
3671
3672   No practical use anymore since 3c0f4622cdfd6
3673
3674   Closes #9332
3675
3676 - libssh2: make atime/mtime date overflow return error
3677
3678   Closes #9328
3679
3680 - libssh: make atime/mtime date overflow return error
3681
3682   Closes #9328
3683
3684 - examples/curlx.c: remove
3685
3686   This example is a bit convoluted to use as an example, combined with the
3687   special license for it makes it unsuitable.
3688
3689   Closes #9330
3690
3691 - [Tobias Nygren brought this change]
3692
3693   curl.h: include <sys/select.h> on SunOS
3694
3695   It is needed for fd_set to be visible to downstream consumers that use
3696   <curl/multi.h>. Header is known to exist at least as far back as Solaris
3697   2.6.
3698
3699   Closes #9329
3700
3701 - DEPRECATE.md: push the NSS deprecation date forward one year to 2023
3702
3703   URL: https://curl.se/mail/lib-2022-08/0016.html
3704
3705 - libssh2: setting atime or mtime >32bit on 4-bytes-long systems
3706
3707   Since the libssh2 API uses 'long' to store the timestamp, it cannot
3708   transfer >32bit times on Windows and 32bit architecture builds.
3709
3710   Avoid nasty surprises by instead not setting such time.
3711
3712   Spotted by Coverity
3713
3714   Closes #9325
3715
3716 - libssh: setting atime or mtime > 32bit is now just skipped
3717
3718   The libssh API used caps the time to an unsigned 32bit variable. Avoid
3719   nasty surprises by instead not setting such time.
3720
3721   Spotted by Coverity.
3722
3723   Closes #9324
3724
3725 Jay Satiro (16 Aug 2022)
3726 - KNOWN_BUGS: Windows Unicode builds use homedir in current locale
3727
3728   Bug: https://github.com/curl/curl/pull/7252
3729   Reported-by: dEajL3kA@users.noreply.github.com
3730
3731   Ref: https://github.com/curl/curl/pull/7281
3732
3733   Closes https://github.com/curl/curl/pull/9305
3734
3735 Daniel Stenberg (16 Aug 2022)
3736 - test399: switch it to use a config file instead
3737
3738   ... as using a 65535 bytes host name in a URL does not fit on the
3739   command line on some systems - like Windows.
3740
3741   Reported-by: Marcel Raad
3742   Fixes #9321
3743   Closes #9322
3744
3745 - RELEASE-NOTES: synced
3746
3747 - asyn-ares: make a single alloc out of hostname + async data
3748
3749   This saves one alloc per name resolve and simplifies the exit path.
3750
3751   Closes #9310
3752
3753 - Curl_close: call Curl_resolver_cancel to avoid memory-leak
3754
3755   There might be a pending (c-ares) resolve that isn't free'd up yet.
3756
3757   Closes #9310
3758
3759 - asyn-thread: fix socket leak on OOM
3760
3761   Closes #9310
3762
3763 - GHA: mv CI torture test from Zuul
3764
3765   Closes #9310
3766
3767 - ngtcp2-wolfssl.yml: add GHA to build ngtcp2 + wolfSSL
3768
3769   Closes #9318
3770
3771 - test399: verify check of too long host name
3772
3773 - url: reject URLs with hostnames longer than 65535 bytes
3774
3775   It *probably* causes other problems too since DNS can't resolve such
3776   long names, but the SNI field in TLS is limited to 16 bits length.
3777
3778   Closes #9317
3779
3780 - curl_multi_perform.3: minor language fix
3781
3782   Closes #9316
3783
3784 - ngtcp2: fix picky compiler warnings with wolfSSL for QUIC
3785
3786   Follow-up to 8a13be227eede2
3787
3788   Closes #9315
3789
3790 - ngtcp2: remove leftover variable
3791
3792   Mistake leftover from my edit before push.
3793
3794   Follow-up from 8a13be227eede2601c2b3b
3795   Reported-by: Viktor Szakats
3796   Bug: https://github.com/curl/curl/pull/9290#issuecomment-1214569167
3797
3798 Viktor Szakats (15 Aug 2022)
3799 - Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip]
3800
3801   Before this patch `-nghttp3`/`-ngtcp2` had an effect only when `-ssl`
3802   was also enabled. `-ssl` meaning OpenSSL (and its forks). After
3803   8a13be227eede2601c2b3b1c63e08b3dc9b35dd5 nghttp3/ngtcp2 can also be
3804   used together with wolfSSL. This patch adds the ability to enable
3805   `-nghttp3`/`-ngtcp2` independently from `-ssl` (OpenSSL), allowing to
3806   use it with wolfSSL or other, future TLS backends.
3807
3808   Before this patch, it was fine to enable `-nghttp3`/`-ngtcp2`
3809   unconditionally. After this patch, this is no longer the case, and now
3810   it's the user's responsibility to enable `-nghttp3`/`-ngtcp2` only
3811   together with a compatible TLS backend.
3812
3813   When using a TLS backend other than OpenSSL, the TLS-specific ngtcp2
3814   library must be configured manually, e.g.:
3815     `export CURL_LDFLAG_EXTRAS=-lngtcp2_crypto_wolfssl`
3816
3817   (or via `NGTCP2_LIBS`)
3818
3819   Closes #9314
3820
3821 Daniel Stenberg (15 Aug 2022)
3822 - [Stefan Eissing brought this change]
3823
3824   quic: add support via wolfSSL
3825
3826   - based on ngtcp2 PR https://github.com/ngtcp2/ngtcp2/pull/505
3827   - configure adapted to build against ngtcp2 wolfssl crypto lib
3828   - quic code added for creation of WOLFSSL* instances
3829
3830   Closes #9290
3831
3832 Marcel Raad (14 Aug 2022)
3833 - [David Carlier brought this change]
3834
3835   memdebug: add annotation attributes
3836
3837   memory debug tracking annotates whether the returned pointer does not
3838   `alias`, hints where the size required is, for Windows to be better
3839   debugged via Visual Studio.
3840
3841   Closes https://github.com/curl/curl/pull/9306
3842
3843 Daniel Stenberg (14 Aug 2022)
3844 - GHA: move libressl CI from zuul to GitHub
3845
3846   Closes #9309
3847
3848 - KNOWN_BUGS: FTPS directory listing hangs on Windows with Schannel
3849
3850   Closes #9161
3851
3852 - KNOWN_BUGS: CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
3853
3854   Closes #8741
3855
3856 - KNOWN_BUGS: libssh blocking and infinite loop problem
3857
3858   Closes #8632
3859
3860 - RELEASE-NOTES: synced
3861
3862 - msh3: fix the QUIC disconnect function
3863
3864   And free request related memory better in 'done'. Fixes a memory-leak.
3865
3866   Reported-by: Gisle Vanem
3867   Fixes #8915
3868   Closes #9304
3869
3870 - connect: close the happy eyeballs loser connection when using QUIC
3871
3872   Reviewed-by: Nick Banks
3873
3874   Closes #9303
3875
3876 - [Emil Engler brought this change]
3877
3878   refactor: split resolve_server() into functions
3879
3880   This commit splits the branch-heavy resolve_server() function into
3881   various sub-functions, in order to reduce the amount of nested
3882   if/else-statements.
3883
3884   Beside this, it also removes many else-sequences, by returning in the
3885   previous if-statement.
3886
3887   Closes #9283
3888
3889 - schannel: re-indent to use curl style better
3890
3891   Only white space changes
3892
3893   Closes #9301
3894
3895 - [Emanuele Torre brought this change]
3896
3897   docs/cmdline-opts: fix example and categories for --form-escape
3898
3899   The example was missing a "--form" argument
3900   I also replaced "--form" with "-F" to shorten the line a bit since it
3901   was already very long.
3902
3903   And I also moved --form-escape from the "post" category to the "upload"
3904   category (this is what I originally wanted to fix, before also noticing
3905   the mistake in the example).
3906
3907   Closes #9298
3908
3909 - [Nick Banks brought this change]
3910
3911   HTTP3.md: update to msh3 v0.4.0
3912
3913   Closes #9297
3914
3915 - hostip: resolve *.localhost to 127.0.0.1/::1
3916
3917   Following the footsteps of other clients like Firefox/Chrome.  RFC 6761
3918   says clients SHOULD do this.
3919
3920   Add test 389 to verify.
3921
3922   Reported-by: TheKnarf on github
3923   Fixes #9192
3924   Closes #9296
3925
3926 Jay Satiro (11 Aug 2022)
3927 - KNOWN_BUGS: long paths are not fully supported on Windows
3928
3929   Bug: https://github.com/curl/curl/issues/8361
3930   Reported-by: Gisle Vanem
3931
3932   Closes https://github.com/curl/curl/pull/9288
3933
3934 Daniel Stenberg (11 Aug 2022)
3935 - config: remove the check for and use of SIZEOF_SHORT
3936
3937   shorts are 2 bytes on all platforms curl runs and have ever run on.
3938
3939   Closes #9291
3940
3941 - configure: introduce CURL_SIZEOF
3942
3943   This is a rewrite of the previously used GPLv3+exception licensed
3944   file. With this change, there is no more reference to GPL so we can
3945   remove that from LICENSES/.
3946
3947   Ref: #9220
3948   Closes #9291
3949
3950 - [Sean McArthur brought this change]
3951
3952   hyper: customize test1274 to how hyper unfolds headers
3953
3954   Closes #9217
3955
3956 - [Orgad Shaneh brought this change]
3957
3958   curl-config: quote directories with potential space
3959
3960   On Windows (at least with CMake), the default prefix is
3961   C:/Program Files (x86)/CURL.
3962
3963   Closes #9253
3964
3965 - [Oliver Roberts brought this change]
3966
3967   amigaos: fix threaded resolver on AmigaOS 4.x
3968
3969   Replace ip4 resolution function on AmigaOS 4.x, as it requires runtime
3970   feature detection and extra code to make it thread safe.
3971
3972   Closes #9265
3973
3974 - [Emil Engler brought this change]
3975
3976   imap: use ISALNUM() for alphanumeric checks
3977
3978   This commit replaces a self-made character check for alphanumeric
3979   characters within imap_is_bchar() with the ISALNUM() macro, as it is
3980   reduces the size of the code and makes the performance better, due to
3981   ASCII arithmetic.
3982
3983   Closes #9289
3984
3985 - RELEASE-NOTES: synced
3986
3987 - [Cering on github brought this change]
3988
3989   connect: add quic connection information
3990
3991   Fixes #9286
3992   Closes #9287
3993
3994 - [Philip Heiduck brought this change]
3995
3996   cirrus/freebsd-ci: bootstrap the pip installer
3997
3998   Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
3999
4000   Closes #9213
4001
4002 - urldata: move smaller fields down in connectdata struct
4003
4004   By (almost) sorting the struct fields in connectdata in a decending size
4005   order, having the single char ones last, we reduce the number of holes
4006   in the struct and thus the amount of storage needed.
4007
4008   Closes #9280
4009
4010 - ldap: adapt to conn->port now being an 'int'
4011
4012   Remove typecasts. Fix printf() formats.
4013
4014   Follow-up from 764c6bd3bf.
4015   Pointed out by Coverity CID 1507858.
4016
4017   Closes #9281
4018
4019 - KNOWN_BUGS: Negotiate authentication against Hadoop HDFS
4020
4021   Closes #8264
4022
4023 - [Oliver Roberts brought this change]
4024
4025   file: add handling of native AmigaOS paths
4026
4027   On AmigaOS 4.x, handle native absolute paths, whilst blocking relative
4028   paths. Also allow unix style paths if feature enabled at link time.
4029
4030   Inspiration-from: Michael Trebilcock
4031
4032   Closes #9259
4033
4034 - KNOWN_BUGS: cmake build is not thread-safe
4035
4036   The cmake build does not check for and verify presence of a working
4037   Atomic type, which then makes curl_global_init() to not build
4038   thread-safe on non-Windows platforms.
4039
4040   Closes https://github.com/curl/curl/issues/8973
4041   Closes https://github.com/curl/curl/pull/8982
4042
4043 - [Oliver Roberts brought this change]
4044
4045   configure: fixup bsdsocket detection code for AmigaOS 4.x
4046
4047   The code that detects bsdsocket.library for AmigaOS did not work
4048   for AmigaOS 4.x. This has been fixed and also cleaned up a little
4049   to reduce duplication. Wasn't technically necessary before, but is
4050   required when building with AmiSSL instead of OpenSSL.
4051
4052   Closes #9268
4053
4054 - [Oliver Roberts brought this change]
4055
4056   tool: reintroduce set file comment code for AmigaOS
4057
4058   Amiga specific code which put the URL in the file comment was perhaps
4059   accidentally removed in b88940850002a3f1c25bc6488b95ad30eb80d696 having
4060   originally been added in 5c215bdbdfde8b2350cdcbac82aae0c914da5314.
4061   Reworked to fit the code changes and added it back in.
4062
4063   Reported-by: Michael Trebilcock
4064   Originally-added-by: Chris Young
4065
4066   Closes #9258
4067
4068 - urldata: make 'negnpn' use less storage
4069
4070   The connectdata struct field 'negnpn' never holds a value larger than
4071   30, so an unsigned char saves 3 bytes struct space.
4072
4073   Closes #9279
4074
4075 - urldata: make three *_proto struct fields smaller
4076
4077   Use 'unsigned char' for storage instead of the enum, for three GSSAPI
4078   related fields in the connectdata struct.
4079
4080   Closes #9278
4081
4082 - connect: set socktype/protocol correctly
4083
4084   So that an address used from the DNS cache that was previously used for
4085   QUIC can be reused for TCP and vice versa.
4086
4087   To make this possible, set conn->transport to "unix" for unix domain
4088   connections ... and store the transport struct field in an unsigned char
4089   to use less space.
4090
4091   Reported-by: ć‚¦ć•ć‚“
4092   Fixes #9274
4093   Closes #9276
4094
4095 - [Oliver Roberts brought this change]
4096
4097   amissl: allow AmiSSL to be used with AmigaOS 4.x builds
4098
4099   Enable AmiSSL to be used instead of static OpenSSL link libraries.
4100   for AmigaOS 4.x, as it already is in the AmigaOS 3.x build.
4101
4102   Closes #9269
4103
4104 - [opensignature on github brought this change]
4105
4106   openssl: add details to "unable to set client certificate" error
4107
4108   from: "curl: (58) unable to set client certificate"
4109
4110   to: curl: (58) unable to set client certificate [error:0A00018F:SSL
4111   routines::ee key too small]
4112
4113   Closes #9228
4114
4115 - [Oliver Roberts brought this change]
4116
4117   amissl: make AmiSSL v5 a minimum requirement
4118
4119   AmiSSL v5 is the latest version, featuring a port of OpenSSL 3.0.
4120   Support for previous OpenSSL 1.1.x versions has been dropped, so
4121   makes sense to enforce v5 as the minimum requirement. This also
4122   allows all the AmiSSL stub workarounds to be removed as they are
4123   now provided in a link library in the AmiSSL SDK.
4124
4125   Closes #9267
4126
4127 - [Oliver Roberts brought this change]
4128
4129   configure: -pthread not available on AmigaOS 4.x
4130
4131   The most recent GCC builds for AmigaOS 4.x do not allow -pthread and
4132   exit with an error. Instead, need to explictly specify -lpthread.
4133
4134   Closes #9266
4135
4136 - digest: pass over leading spaces in qop values
4137
4138   When parsing the "qop=" parameter of the digest authentication, and the
4139   value is provided within quotes, the list of values can have leading
4140   white space which the parser previously did not handle correctly.
4141
4142   Add test case 388 to verify.
4143
4144   Reported-by: vlubart on github
4145   Fixes #9264
4146   Closes #9270
4147
4148 - [Evgeny Grin (Karlson2k) brought this change]
4149
4150   digest: reject broken header with session protocol but without qop
4151
4152   Closes #9077
4153
4154 - CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples
4155
4156   Reported-by: jvvprasad78 on github
4157   Assisted-by: Jay Satiro
4158   Fixes #9239
4159   Closes #9241
4160
4161 - [Fabian Keil brought this change]
4162
4163   test44[2-4]: add '--resolve' to the keywords
4164
4165   ... so the tests can be automatically skipped when
4166   using an external proxy like Privoxy.
4167
4168   Closes #9250
4169
4170 - RELEASE-NOTES: synced
4171
4172 - CURLOPT_CONNECT_ONLY.3: clarify multi API use
4173
4174   Reported-by: Maxim Ivanov
4175   Fixes #9244
4176   Closes #9262
4177
4178 - [Andrew Lambert brought this change]
4179
4180   curl_easy_header: Add CURLH_PSEUDO to sanity check
4181
4182   Fixes #9235
4183   Closes #9236
4184
4185 - [Emil Engler brought this change]
4186
4187   docs: add dns category to --resolve
4188
4189   This commit adds the dns category to the --resolve command line option,
4190   because it can be interpreted as both: a low-level connection option and
4191   an option related to the resolving of a hostname.
4192
4193   It is also not common for dns options to belong to the connection
4194   category and vice versa.  --ipv4 and --ipv6 are both good examples.
4195
4196   Closes #9229
4197
4198 Jay Satiro (2 Aug 2022)
4199 - [Wyatt O'Day brought this change]
4200
4201   schannel: Add TLS 1.3 support
4202
4203   - Support TLS 1.3 as the default max TLS version for Windows Server 2022
4204     and Windows 11.
4205
4206   - Support specifying TLS 1.3 ciphers via existing option
4207     CURLOPT_TLS13_CIPHERS (tool: --tls13-ciphers).
4208
4209   Closes https://github.com/curl/curl/pull/8419
4210
4211 Daniel Stenberg (2 Aug 2022)
4212 - [Emil Engler brought this change]
4213
4214   cmdline-opts/gen.pl: improve performance
4215
4216   On some systems, the gen.pl script takes nearly two minutes for the
4217   generation of the main-page, which is a completely unacceptable time.
4218
4219   The slow performance has two causes:
4220   1. Use of a regex locale operator
4221   2. Useless invokations of loops
4222
4223   The commit addresses the first issue by replacing the "\W" wiht
4224   [^a-zA-Z0-9_], which is, according to regex101.com, functionally
4225   equivalent to the previous operation, except that it is obviously
4226   limited to ASCII only, which is fine, as the curl project is
4227   English-only anyway.
4228
4229   The second issue is being addressed by only running the loop if the line
4230   contains a "--" in it. The loop may be completeley removed in the
4231   future.
4232
4233   Co-authored-by: Emanuele Torre <torreemanuele6@gmail.com>
4234
4235   See #8299
4236   Fixes #9230
4237   Closes #9232
4238
4239 - docs/cmdline: mark fail and fail-with-body as mutually exclusive
4240
4241   Reported-by: Andreas Sommer
4242   Fixes #9221
4243   Closes #9222
4244
4245 - [Nao Yonashiro brought this change]
4246
4247   quiche: fix build failure
4248
4249   Reviewed-by: Alessandro Ghedini
4250   Closes #9223
4251
4252 Viktor Szakats (2 Aug 2022)
4253 - configure.ac: drop references to deleted functions
4254
4255   follow-up from 4d73854462f30948acab12984b611e9e33ee41e6
4256
4257   Reported-by: Oliver Roberts
4258   Fixes #9238
4259   Closes #9240
4260
4261 Daniel Stenberg (28 Jul 2022)
4262 - [Sean McArthur brought this change]
4263
4264   hyper: enable obs-folded multiline headers
4265
4266   Closes #9216
4267
4268 - connect: revert the use of IP*_RECVERR
4269
4270   The options were added in #6341 and d13179d, but cause problems: Lots of
4271   POLLIN event occurs but recvfrom read nothing.
4272
4273   Reported-by: Tatsuhiro Tsujikawa
4274   Fixes #9209
4275   Closes #9215
4276
4277 - [Marco Kamner brought this change]
4278
4279   docs: remove him/her/he/she from documentation
4280
4281   Closes #9208
4282
4283 - RELEASE-NOTES: synced
4284
4285 - tool_getparam: make --doh-url "" switch it off
4286
4287   A possible future addition could be to parse the URL first too to verify
4288   that it is valid before trying to use it.
4289
4290   Assisted-by: Jay Satiro
4291   Closes #9207
4292
4293 - mailmap: add rzrymiak on github
4294
4295 Jay Satiro (26 Jul 2022)
4296 - ngtcp2: Fix build error due to change in nghttp3 prototypes
4297
4298   ngtcp2/nghttp3@4a066b2 changed nghttp3_conn_block_stream and
4299   nghttp3_conn_shutdown_stream_write return from int to void.
4300
4301   Reported-by: jurisuk@users.noreply.github.com
4302
4303   Fixes https://github.com/curl/curl/issues/9204
4304   Closes https://github.com/curl/curl/pull/9200
4305
4306 Daniel Stenberg (26 Jul 2022)
4307 - [rzrymiak on github brought this change]
4308
4309   BUGS.md: improve language
4310
4311   Closes #9205
4312
4313 - [Philip Heiduck brought this change]
4314
4315   cirrus.yml: replace py38-pip with py39-pip
4316
4317   Reported-by: Jay Satiro
4318   Fixes #9201
4319   Closes #9202
4320
4321 - tool_getparam: fix cleanarg() for unicode builds
4322
4323   Use the correct type, and make cleanarg an empty macro if the cleaning
4324   ability is absent.
4325
4326   Fixes #9195
4327   Closes #9196
4328
4329   Reviewed-by: Jay Satiro
4330   Reviewed-by: Marcel Raad
4331
4332 Marc Hoersken (25 Jul 2022)
4333 - test3026: add support for Windows using native Win32 threads
4334
4335   Reviewed-by: Viktor Szakats
4336   Reviewed-by: Jay Satiro
4337   Reviewed-by: Daniel Stenberg
4338
4339   Follow up to 7ade9c50b35d95d47a43880c3097bebab7a7e690
4340   Closes #9012
4341
4342 Jay Satiro (25 Jul 2022)
4343 - [Evgeny Grin (Karlson2k) brought this change]
4344
4345   digest: fix memory leak, fix not quoted 'opaque'
4346
4347   Fix leak regression introduced by 3a6fe0c.
4348
4349   Closes https://github.com/curl/curl/pull/9199
4350
4351 Daniel Stenberg (23 Jul 2022)
4352 - tests: several enumerated type cleanups
4353
4354   To please icc
4355
4356   Closes #9179
4357
4358 - tool_paramhlp: fix "enumerated type mixed with another type"
4359
4360   Warning by icc
4361
4362   Closes #9179
4363
4364 - tool_writeout: fix enumerated type mixed with another type
4365
4366   Closes #9179
4367
4368 - tool_cfgable: make 'synthetic_error' a plain bool
4369
4370   The specific reason was not used.
4371
4372   Closes #9179
4373
4374 - tool_paramhlp: make check_protocol return ParameterError
4375
4376   "enumerated type mixed with another type"
4377
4378   Closes #9179
4379
4380 - tool_formparse: fix variable may be used before its value is set
4381
4382   Warning by icc
4383
4384   Closes #9179
4385
4386 - sendf: skip storing HTTP headers if HTTP disabled
4387
4388   Closes #9179
4389
4390 - url: enumerated type mixed with another type
4391
4392   Follow-up to 1c58e7ae99ce2030213f28b
4393
4394   Closes #9179
4395
4396 - urldata: change second proxytype field to unsigned char to match
4397
4398   To avoid "enumerated type mixed with another type"
4399
4400   Closes #9179
4401
4402 - http: typecast the httpreq assignment to avoid icc compiler warning
4403
4404    error #188: enumerated type mixed with another type
4405
4406   Closes #9179
4407
4408 - urldata: make state.httpreq an unsigned char
4409
4410   To match set.method used for the same purpose.
4411
4412   Closes #9179
4413
4414 - splay: avoid using -1 in unsigned variable
4415
4416   To fix icc compiler warning integer conversion resulted in a change of sign
4417
4418   Closes #9179
4419
4420 - sendf: store the header type in an usigned char to avoid icc warnings
4421
4422   Closes #9179
4423
4424 - multi: fix the return code from Curl_pgrsDone()
4425
4426   It does not return a CURLcode. Detected by the icc compiler warning
4427   "enumerated type mixed with another type"
4428
4429   Closes #9179
4430
4431 - sendf: make Curl_debug a void function
4432
4433   As virtually no called checked the return code, and those that did
4434   wrongly treated it as a CURLcode. Detected by the icc compiler warning:
4435   enumerated type mixed with another type
4436
4437   Closes #9179
4438
4439 - http_chunks: remove an assign + typecast
4440
4441   As it caused icc to complain: "pointer cast involving 64-bit pointed-to
4442   type"
4443
4444   Closes #9179
4445
4446 - vtls: make Curl_ssl_backend() return the enum type curl_sslbackend
4447
4448   To fix the icc warning enumerated type mixed with another type
4449
4450   Closes #9179
4451
4452 - curl-compilers.m4: make icc use -diag* options and disable two warnings
4453
4454   -wd and -we are deprecated and are now -diag-disable and -diag-error
4455
4456   Disable warning 1024 and 2259
4457
4458   Closes #9179
4459
4460 - [Matthew Thompson brought this change]
4461
4462   GHA: add two Intel compiler CI jobs
4463
4464   Closes #9179
4465
4466 - [Daniel Katz brought this change]
4467
4468   curl-functions.m4: check whether atomics can link rather than just compile
4469
4470   Some build toolchains support C11 atomics (i.e., _Atomic types), but
4471   will not link the associated atomics runtime unless a flag is passed. In
4472   such an environment, linking an application with libcurl.a can fail due
4473   to undefined symbols for atomic load/store functions.
4474
4475   I encountered this behavior when upgrading curl to 7.84.0 and attempting
4476   to build with Solaris Studio 12.6. Solaris provides the flag
4477   -xatomic=[gcc | studio], allowing users to link to one of two atomics
4478   runtime implementations. However, if the user does not provide this
4479   flag, then neither runtime is linked. This led to builds failing in CI.
4480
4481   Closes #9190
4482
4483 - [Rosen Penev brought this change]
4484
4485   curl-wolfssl.m4: add options header when building test code
4486
4487   Needed for certain configurations of wolfSSL. Otherwise, missing header
4488   error may occur.
4489
4490   Tested with OpenWrt.
4491
4492   Closes #9187
4493
4494 - ftp: use a correct expire ID for timer expiry
4495
4496   This was an accurate error pointed out by the icc warning: enumerated
4497   type mixed with another type
4498
4499   Ref: #9179
4500   Closes #9184
4501
4502 - sendf: fix paused header writes since after the header API
4503
4504   Regression since d1e4a67
4505
4506   Reported-by: Sergey Ogryzkov
4507   Fixes #9180
4508   Closes #9182
4509
4510 - mprintf: fix *dyn_vprintf() when out-of-memory
4511
4512   Follow-up to 0e48ac1f99a. Torture-testing 1455 would lead to a memory
4513   leak otherwise.
4514
4515   Closes #9185
4516
4517 - curl-confopts: remove leftover AC_REQUIREs
4518
4519   configure.ac:3488: warning: CURL_CHECK_FUNC_IOCTL is m4_require'd but not m4_defun'd
4520   configure.ac:3488: warning: CURL_CHECK_FUNC_SETSOCKOPT is m4_require'd but not m4_defun'd
4521
4522   follow-up from 4d73854462f30
4523
4524   Closes #9183
4525
4526 - file: fix icc enumerated type mixed with another type warning
4527
4528   Ref: #9179
4529   Closes #9181
4530
4531 Viktor Szakats (19 Jul 2022)
4532 - tidy-up: delete unused build configuration macros
4533
4534   Most of them feature guards:
4535
4536   - `CURL_INCLUDES_SYS_UIO` [1]
4537   - `HAVE_ALLOCA_H` [2]
4538   - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc)
4539   - `HAVE_DLFCN_H`
4540   - `HAVE_DLOPEN`
4541   - `HAVE_DOPRNT`
4542   - `HAVE_FCNTL`
4543   - `HAVE_GETHOSTBYNAME` [3]
4544   - `HAVE_GETOPT_H`
4545   - `HAVE_GETPASS`
4546   - `HAVE_GETPROTOBYNAME`
4547   - `HAVE_GETSERVBYNAME`
4548   - `HAVE_IDN_FREE*`
4549   - `HAVE_INET_ADDR`
4550   - `HAVE_IOCTL`
4551   - `HAVE_KRB4`
4552   - `HAVE_KRB_GET_OUR_IP_FOR_REALM`
4553   - `HAVE_KRB_H`
4554   - `HAVE_LDAPSSL_H`
4555   - `HAVE_LDAP_INIT_FD`
4556   - `HAVE_LIBDL`
4557   - `HAVE_LIBNSL`
4558   - `HAVE_LIBRESOLV*`
4559   - `HAVE_LIBUCB`
4560   - `HAVE_LL`
4561   - `HAVE_LOCALTIME_R`
4562   - `HAVE_MALLOC_H`
4563   - `HAVE_MEMCPY`
4564   - `HAVE_MEMORY_H`
4565   - `HAVE_NETINET_IF_ETHER_H`
4566   - `HAVE_NI_WITHSCOPEID`
4567   - `HAVE_OPENSSL_CRYPTO_H`
4568   - `HAVE_OPENSSL_ERR_H`
4569   - `HAVE_OPENSSL_PEM_H`
4570   - `HAVE_OPENSSL_PKCS12_H`
4571   - `HAVE_OPENSSL_RAND_H`
4572   - `HAVE_OPENSSL_RSA_H`
4573   - `HAVE_OPENSSL_SSL_H`
4574   - `HAVE_OPENSSL_X509_H`
4575   - `HAVE_PEM_H`
4576   - `HAVE_POLL`
4577   - `HAVE_RAND_SCREEN`
4578   - `HAVE_RAND_STATUS`
4579   - `HAVE_RECVFROM`
4580   - `HAVE_SETSOCKOPT`
4581   - `HAVE_SETVBUF`
4582   - `HAVE_SIZEOF_LONG_DOUBLE`
4583   - `HAVE_SOCKIO_H`
4584   - `HAVE_SOCK_OPTS`
4585   - `HAVE_STDIO_H`
4586   - `HAVE_STRCASESTR`
4587   - `HAVE_STRFTIME`
4588   - `HAVE_STRLCAT`
4589   - `HAVE_STRNCMPI`
4590   - `HAVE_STRNICMP`
4591   - `HAVE_STRSTR`
4592   - `HAVE_STRUCT_IN6_ADDR`
4593   - `HAVE_TLD_H`
4594   - `HAVE_TLD_STRERROR`
4595   - `HAVE_UNAME`
4596   - `HAVE_USLEEP`
4597   - `HAVE_WINBER_H`
4598   - `HAVE_WRITEV`
4599   - `HAVE_X509_H`
4600   - `LT_OBJDIR`
4601   - `NEED_BASENAME_PROTO`
4602   - `NOT_NEED_LIBNSL`
4603   - `OPENSSL_NO_KRB5`
4604   - `RECVFROM_TYPE*`
4605   - `SIZEOF_LONG_DOUBLE`
4606   - `STRERROR_R_TYPE_ARG3`
4607   - `USE_YASSLEMUL`
4608   - `_USRDLL` (from CMake) [4]
4609
4610   [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might
4611       also be deleted.
4612
4613   [2] Related comment can possibly be deleted in
4614       `packages/vms/generate_config_vms_h_curl.com`.
4615
4616   [3] There are more instances of this in autotools, but I did not dare to
4617       touch those. Looked like it's used to detect socket support.
4618
4619   [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to
4620       force linking MFC components statically to the DLL. `libcurl.dll`
4621       does not use MFC, so we can delete this define.
4622       Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc
4623
4624   Script that can help finding unused settings like above:
4625   ```shell
4626
4627   autoheader configure.ac  # generate lib/curl_config.h.in
4628
4629   {
4630     grep -o -E    'set\([A-Z][A-Z0-9_]{3,}'          CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g'
4631     grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}'      lib/config-*.h                     | sed -E 's|#define +||g'
4632     grep -o -E    '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake            | sed -E 's|#cmakedefine +||g'
4633     grep -o -E    '#undef +[A-Z][A-Z0-9_]{3,}'       lib/curl_config.h.in               | sed -E 's|#undef +||g'
4634   } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do
4635     c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')"
4636     if [ "${c}" = '0' ]; then
4637       echo "${def}"
4638     fi
4639   done
4640   ```
4641
4642   Reviewed-by: Daniel Stenberg
4643   Closes #9044
4644
4645 Daniel Stenberg (19 Jul 2022)
4646 - RELEASE-NOTES: synced
4647
4648 - cookie: treat a blank domain in Set-Cookie: as non-existing
4649
4650   This matches what RFC 6265 section 5.2.3 says.
4651
4652   Extended test 31 to verify.
4653
4654   Fixes #9164
4655   Reported-by: Gwen Shapira
4656   Closes #9177
4657
4658 - [Patrick Monnerat brought this change]
4659
4660   base64: base64url encoding has no padding
4661
4662   See RFC4648 section 5 and RFC7540 section 3.2.1.
4663
4664   Suppress generation of '=' padding of base64url encoding. This is
4665   accomplished by considering the string beginning at offset 64 in the
4666   character table as the padding: this is "=" for base64, "" for base64url.
4667
4668   Also use strchr() to replace character search loops where possible.
4669
4670   Suppress erroneous comments about empty encoding results.
4671
4672   Adjust unit test 1302 to unpadded base64url encoding and add tests for
4673   empty results.
4674
4675   Closes #9139
4676
4677 - easyoptions: fix icc warning
4678
4679       easyoptions.c(360): error #188: enumerated type mixed with another type
4680
4681   Ref: #9156
4682   Reported-by: Matthew Thompson
4683   Closes #9176
4684
4685 - [lwthiker brought this change]
4686
4687   h2h3: fix overriding the 'TE: Trailers' header
4688
4689   A 'TE: Trailers' header is explicitly replaced by 'te: trailers'
4690   (lowercase) in Curl_pseudo_headers() when building the list of HTTP/2 or
4691   HTTP/3 headers. However, this is then replaced again by the original
4692   value due to a bug, resulting in the uppercased version being sent. Some
4693   HTTP/2 servers reject the whole HTTP/2 stream when this is the case.
4694
4695   Closes #9170
4696
4697 - lib3026: reduce the number of threads to 100
4698
4699   Down from 1000, to make it run and work in more systems.
4700
4701   Fixes #9172
4702   Reported-by: Ć‰rico Nogueira Rolim
4703   Closes #9173
4704
4705 - doh: move doh related struct definitions to doh.h
4706
4707   and make 'dnstype' in 'struct dnsprobe' use the DNStype to fix the icc compiler warning:
4708
4709     doh.c(924): error #188: enumerated type mixed with another type
4710
4711   Reported-by: Matthew Thompson
4712   Ref #9156
4713   Closes #9174
4714
4715 Viktor Szakats (17 Jul 2022)
4716 - Makefile.m32: stop trying to build libcares.a [ci skip]
4717
4718   Before this patch, `lib/Makefile.m32` had a rule to build `libcares.a` in
4719   `-cares`-enabled builds, via c-ares's own `Makefile.m32`. Committed in
4720   2007 [1]. The commit message doesn't specifically address this particular
4721   change. This logic comes from the times when c-ares was part of the curl
4722   source tree, hence the special treatment.
4723
4724   This feature creates problems when building c-ares first, using CMake
4725   and pointing `LIBCARES_PATH` to its install prefix, where `Makefile.m32`
4726   is missing in such case. A sub-build for c-ares is undesired also when
4727   c-ares had already been build via its own `Makefile.m32`.
4728
4729   To avoid the sub-build, this patch deletes its Makefile rule. After this
4730   patch `libcares.a` needs to be manually built before using it in
4731   `Makefile.m32`. Aligning it with the rest of dependencies.
4732
4733   [1] 46c92c0b806da041d7a5c6fb64dbcdc474d99b31
4734
4735   Reviewed-by: Daniel Stenberg
4736   Closes #9169
4737
4738 Daniel Stenberg (17 Jul 2022)
4739 - curl: writeout: fix repeated header outputs
4740
4741   The function stored a terminating zero into the buffer for convenience,
4742   but when on repeated calls that would cause problems. Starting now, the
4743   passed in buffer is not modified.
4744
4745   Reported-by: highmtworks on github
4746   Fixes #9150
4747   Closes #9152
4748
4749 - curl_multi_timeout.3: clarify usage
4750
4751   Fixes #9155
4752   Closes #9157
4753   Reported-by: jvvprasad78 on github
4754
4755 - mprintf: make dprintf_formatf never return negative
4756
4757   This function no longer returns a negative value if the formatting
4758   string is bad since the return value would sometimes be propagated as a
4759   return code from the mprintf* functions and they are documented to
4760   return the length of the output. Which cannot be negative.
4761
4762   Fixes #9149
4763   Closes #9151
4764   Reported-by: yiyuaner on github
4765
4766 Viktor Szakats (17 Jul 2022)
4767 - trace: 0x7F character is non-printable
4768
4769   `0x7F` is `DEL`, a non-printable symbol, so print it as
4770   `UNPRINTABLE_CHAR`.
4771
4772   Reported-by: MasterInQuestion on github
4773   Fixes #9162
4774   Closes #9166
4775
4776 - doh: use https protocol by default
4777
4778   The only allowed protocol is https, so it makes sense to use that
4779   by default if not passed explicitly by the user.
4780
4781   Reported-by: MasterInQuestion on github
4782   Reviewed-by: Jay Satiro
4783   Fixes #9163
4784   Closes #9165
4785
4786 - openssl: fix BoringSSL symbol conflicts with LDAP and Schannel
4787
4788   Same issue as here [1], but this time when building curl with BoringSSL
4789   for Windows with LDAP(S) or Schannel support enabled.
4790
4791   Apply the same fix [2] for these source files as well.
4792
4793   This can also be fixed by moving `#include "urldata.h"` _before_
4794   including `winldap.h` and `schnlsp.h` respectively. This seems like
4795   a cleaner fix, though I'm not sure why it works and if it has any
4796   downside.
4797
4798   [1] https://github.com/curl/curl/issues/5669
4799   [2] https://github.com/curl/curl/commit/fbe07c6829ba8c5793c84c2856526e19e9029ab9
4800
4801   Co-authored-by: Jay Satiro
4802   Closes #9110
4803
4804 Daniel Stenberg (13 Jul 2022)
4805 - asyn-thread: make getaddrinfo_complete return CURLcode
4806
4807   ... as the only caller that cares about what it returns assumes that
4808   anyway. This caused icc to warn:
4809
4810   asyn-thread.c(505): error #188: enumerated type mixed with another type
4811           result = getaddrinfo_complete(data);
4812
4813   Repoorted-by: Matthew Thompson
4814   Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076
4815   Closes #9146
4816
4817 - easy_lock: fix build with icc
4818
4819   The Intel compiler tries to look like GCC *and* clang *and* it lies in
4820   its __has_builtin() function (returns true when it should return false),
4821   so override it.
4822
4823   Reported-by: Matthew Thompson
4824   Fixes #9081
4825   Closes #9144
4826
4827 - configure: fix --disable-headers-api
4828
4829   Reported-by: Michał Antoniak
4830   Fixes #9134
4831   Closes #9143
4832
4833 - test3026: require 'threadsafe'
4834
4835   Reported-by: Sukanya Hanumanthu
4836   Fixes #9141
4837   Closes #9142
4838
4839 - [Even Rouault brought this change]
4840
4841   CMake: link curl to its dependencies with PRIVATE
4842
4843   The current PUBLIC visibility causes issues for downstream users.
4844   Cf https://github.com/OSGeo/PROJ/pull/3172#issuecomment-1157942986
4845
4846   Reviewed-by: Jakub Zakrzewski
4847   Closes #9125
4848
4849 - [Even Rouault brought this change]
4850
4851   CMake: remove APPEND in export(TARGETS)
4852
4853   When running cmake several times, new content was appended to already
4854   existing generated files, which is not appropriate
4855
4856   Reviewed-by: Jakub Zakrzewski
4857   Closes #9124
4858
4859 - [Tatsuhiro Tsujikawa brought this change]
4860
4861   ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks
4862
4863   Closes #9135
4864
4865 - RELEASE-NOTES: synced
4866
4867 Viktor Szakats (11 Jul 2022)
4868 - build: improve OS string in CMake and `config-win32.h`
4869
4870   This patch makes CMake fill the "OS string" with the value of
4871   `CMAKE_C_COMPILER_TARGET`, if passed. This typically contains a triplet,
4872   the same we can pass to `./configure` via `--host=`.
4873
4874   For non-CMake, non-autotools, Windows builds, this patch adds the ability
4875   to override the default `OS` value in `lib/config-win32.h`.
4876
4877   With these its possible to get the same OS string across the three build
4878   systems.
4879
4880   This patch supersedes the earlier, partial, CMake-only solution:
4881   435f395f3f8c11eebfcc243ca55ebcc11a19b8b8, thus retiring the
4882   `CURL_OS_SUFFIX` CMake option.
4883
4884   Reviewed-by: Jay Satiro
4885   Closes #9117
4886
4887 - Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip]
4888
4889   They allow to override the hardcoded values for the `windres` and `strip`
4890   tools, complementing the existing set of `CURL_{CC,AR,RANLIB}` variables.
4891
4892   `CURL_RC` comes handy when using LLVM tools with `CROSSPREFIX=llvm-` and
4893   `CURL_CC=clang` set on current latest debian:unstable or earlier, where
4894   `llvm-windres` is missing, and a `CURL_RC=<triplet>-windres` fixes it.
4895   Hopefully this will be fixed in the llvm package. FWIW `llvm-windres`
4896   does exist in Homebrew llvm, MSYS2 llvm and llvm-mingw.
4897
4898   Reviewed-by: Daniel Stenberg
4899   Closes #9132
4900
4901 Daniel Stenberg (10 Jul 2022)
4902 - [Tatsuhiro Tsujikawa brought this change]
4903
4904   ngtcp2: fix stall or busy loop on STOP_SENDING with upload data
4905
4906   Fixes #9122
4907   Closes #9123
4908
4909 - [Xiaoke Wang brought this change]
4910
4911   tool_operate: better cleanup of easy handle in exit path
4912
4913   Closes #9114
4914
4915 - [Xiaoke Wang brought this change]
4916
4917   getinfo: return better error on NULL as first argument
4918
4919   Closes #9114
4920
4921 - tool_getparam: repair cleanarg
4922
4923   Regression since 9e5669f.
4924
4925   Make sure the "cleaning" of command line arguments is done on the
4926   original argv[] pointers. As a bonus, it also exits better on out of
4927   memory error.
4928
4929   Reported-by: Litter White
4930   Fixes #9128
4931   Closes #9130
4932
4933 Jay Satiro (10 Jul 2022)
4934 - docs: explain curl_easy_escape/unescape curl handle is ignored
4935
4936   26101421 (precedes 7.82.0) removed character conversion support used by
4937   very old legacy operating systems and since then the curl handle passed
4938   to curl_easy_escape/unescape is always ignored.
4939
4940   Bug: https://github.com/curl/curl/discussions/9115
4941   Reported-by: Ted Lyngmo
4942
4943   Closes https://github.com/curl/curl/pull/9121
4944
4945 Viktor Szakats (8 Jul 2022)
4946 - openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL
4947
4948   BoringSSL doesn't keep a version number, and doesn't self-identify itself
4949   via any other revision number via its own headers. We can identify
4950   BoringSSL revisions by their commit hash. This hash is typically known by
4951   the builder. This patch adds a way to pass this hash to libcurl, so that
4952   it can display in the curl version string:
4953
4954   For example:
4955
4956   `CFLAGS=-DCURL_BORINGSSL_VERSION="c239ffd0"`
4957
4958   ```
4959   curl 7.84.0 (x86_64-w64-mingw32) libcurl/7.84.0 BoringSSL/c239ffd0 (Schannel) zlib/1.2.12 [...]
4960   Release-Date: 2022-06-27
4961   Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 [...]
4962   Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos [...]
4963   ```
4964
4965   The setting is optional, and if not passed, BoringSSL will appear without
4966   a version number, like before this patch.
4967
4968   Closes #9113
4969
4970 Jay Satiro (8 Jul 2022)
4971 - escape: remove outdated comment
4972
4973   Bug: https://github.com/curl/curl/discussions/9115
4974   Reported-by: Ted Lyngmo
4975
4976 - [Tatsuhiro Tsujikawa brought this change]
4977
4978   ngtcp2: Fix missing initialization of nghttp3_nv.flags
4979
4980   Closes https://github.com/curl/curl/pull/9118
4981
4982 Daniel Stenberg (6 Jul 2022)
4983 - [Brad Forschinger brought this change]
4984
4985   netrc.d: remove spurious quote
4986
4987   Closes #9111
4988
4989 Viktor Szakats (6 Jul 2022)
4990 - Makefile.m32: add `NGTCP2_LIBS` option [ci skip]
4991
4992   Makefile.m32's ngtcp2 has its two libs hardwired for OpenSSL.
4993   Add `NGTCP2_LIBS` envvar to override them with a custom list,
4994   making it possible to use BoringSSL, or any other backend.
4995
4996   Closes #9109
4997
4998 Jay Satiro (6 Jul 2022)
4999 - [Evgeny Grin (Karlson2k) brought this change]
5000
5001   digest: fix missing increment of 'nc' value for auth-int
5002
5003   - Increment nc regardless of qop type.
5004
5005   Prior to this change nc was only incremented for qop type auth even
5006   though libcurl sends nc with any qop.
5007
5008   Closes https://github.com/curl/curl/pull/9090
5009
5010 Daniel Stenberg (5 Jul 2022)
5011 - RELEASE-NOTES: synced
5012
5013   Bumped to 7.85.0
5014
5015 - urldata: reduce size of four ftp related members
5016
5017   ftp_filemethod, ftpsslauth and ftp_ccc are now uchars
5018
5019   accepttimeout is now unsigned int - almost 50 days ought to be enough
5020   for this value.
5021
5022   Closes #9106
5023
5024 - urldata: reduce three type-members from int to uchar
5025
5026    - timecondition
5027    - proxytype
5028    - method
5029
5030   ... previously used their enum type in the struct, which made them
5031   unnecesarily large.
5032
5033   Closes #9105
5034
5035 - CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name
5036
5037   Starting now, CURLOPT_FTP_RESPONSE_TIMEOUT is the alias instead of the
5038   other way around.
5039
5040   Since 7.20.0, CURLOPT_SERVER_RESPONSE_TIMEOUT has existed as an alias
5041   but since the option is for more protocols than FTP the more "correct"
5042   version of the option is the "server" one so now we switch.
5043
5044   Closes #9104
5045
5046 - urldata: make 'ftp_create_missing_dirs' a uchar
5047
5048   It only ever holds the values 0-2.
5049
5050   Closes #9103
5051
5052 - [Don J Olmstead brought this change]
5053
5054   cmake: support ngtcp2 boringssl backend
5055
5056   Update the ngtcp2 find module to detect the boringssl backend. Determine
5057   if the underlying OpenSSL implementation is BoringSSL and if so use that
5058   as the ngtcp2 backend.
5059
5060   Reviewed-by: Jakub Zakrzewski
5061   Closes #9065
5062
5063 - urldata: change 4 timeouts to unsigned int from long
5064
5065   They're not used for that long times anyway, 32 bit milliseconds is long
5066   enough.
5067
5068   Closes #9101
5069
5070 - urldata: make 'use_netrc' a uchar
5071
5072   Closes #9102
5073
5074 - urldata: make 'buffer_size' an unsigned int
5075
5076   It is already capped at READBUFFER_MAX which fits easily in 32 bits.
5077
5078   Closes #9098
5079
5080 - urldata: remove the unused 'rtspversion' struct member
5081
5082   Closes #9100
5083
5084 - urldata: make 'use_port' an usigned short
5085
5086   ... instead of a long. It is already enforced to not attempt to set any
5087   value outside of 16 bits unsigned.
5088
5089   Closes #9099
5090
5091 - urldata: store dns cache timeout in an int
5092
5093   68 years ought to be enough for most.
5094
5095   Closes #9097
5096
5097 - curl: proto2num: make sure obuf is inited
5098
5099   Detected by Coverity. CID 1507052.
5100
5101   Closes #9096
5102
5103 - cookie: use %zu to infof() for size_t values
5104
5105   Detected by Coverity. CID 1507051
5106   Closes #9095
5107
5108 Viktor Szakats (4 Jul 2022)
5109 - makefile.m32: add support for custom ARCH [ci skip]
5110
5111   When building curl for target platform other than x64 and x86, it is now
5112   possible to pass `ARCH=custom`, that will omit all hardcoded logic for
5113   setting up CFLAGS/LDFLAGS/RCFLAGS for these platforms, and let these be
5114   customized via `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, and a newly
5115   added one for the resource compiler: `CURL_RCFLAG_EXTRAS`.
5116
5117   This makes it possible to use `makefile.m32` to build for ARM64 for
5118   example.
5119
5120   Reviewed-by: Daniel Stenberg
5121   Closes #9092
5122
5123 - cmake: do not force Windows target versions
5124
5125   The goal of this patch is to avoid CMake forcing specific Windows
5126   versions and rely on toolchain defaults or manual selection instead.
5127   This gives back control to the user. This also brings CMake closer to
5128   how autotools and `Makefile.m32` behaves in this regard.
5129
5130   - CMake had a setting `ENABLE_INET_PTON` defaulting to `ON`, which did
5131     nothing else than fixing the Windows build target to Vista. This also
5132     happened when the toolchain did not have Vista support (e.g. original
5133     MinGW), breaking such builds.
5134
5135     In other environments it did not make a user-facing difference,
5136     because libcurl has its own pton() implementation, so it works well
5137     with or without Vista's inet_pton().
5138
5139     This patch drops this setting. inet_pton() is now used whenever
5140     building for Vista or newer, either when requested manually or by
5141     default with modern toolchains (e.g. mingw-w64). Older envs will fall
5142     back to curl's pton().
5143
5144     Ref: https://github.com/curl/curl/pull/9027#issuecomment-1164157604
5145     Ref: https://github.com/curl/curl/pull/8997#issuecomment-1164344155
5146
5147   - When the user did no select a Windows target version manually, stop
5148     explicitly targeting Windows XP, and instead use the toolchain default.
5149
5150     This may pose an issue with old toolchains defaulting to pre-XP
5151     targets. In such case you must manually target Windows XP via:
5152       `-DCURL_TARGET_WINDOWS_VERSION=0x0501`
5153     or
5154       `-DCMAKE_C_FLAGS=-D_WIN32_WINNT=0x0501`
5155
5156   Reviewed-by: Jay Satiro
5157   Reviewed-by: Marcel Raad
5158   Closes #9046
5159
5160 - windows: improve random source
5161
5162   - Use the Windows API to seed the fallback random generator.
5163
5164     This ensures to always have a random seed, even when libcurl is built
5165     with a vtls backend lacking a random generator API, such as rustls
5166     (experimental), GSKit and certain mbedTLS builds, or, when libcurl is
5167     built without a TLS backend. We reuse the Windows-specific random
5168     function from the Schannel backend.
5169
5170   - Implement support for `BCryptGenRandom()` [1] on Windows, as a
5171     replacement for the deprecated `CryptGenRandom()` [2] function.
5172
5173     It is used as the secure random generator for Schannel, and also to
5174     provide entropy for libcurl's fallback random generator. The new
5175     function is supported on Vista and newer via its `bcrypt.dll`. It is
5176     used automatically when building for supported versions. It also works
5177     in UWP apps (the old function did not).
5178
5179   - Clear entropy buffer before calling the Windows random generator.
5180
5181     This avoids using arbitrary application memory as entropy (with
5182     `CryptGenRandom()`) and makes sure to return in a predictable state
5183     when an API call fails.
5184
5185   [1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
5186   [2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
5187
5188   Closes #9027
5189
5190 Daniel Stenberg (4 Jul 2022)
5191 - setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR
5192
5193   ... as replacements for deprecated CURLOPT_PROTOCOLS and
5194   CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the
5195   32 bit limit the old ones are facing.
5196
5197   CURLINFO_PROTCOOL is now deprecated.
5198
5199   The curl tool is updated to use the new options.
5200
5201   Added test 1597 to verify the libcurl protocol parser.
5202
5203   Closes #8992
5204
5205 - digest: simplify a switch() to a simple if
5206
5207 - digest: provide a special bit for "sess" algos
5208
5209   Also shortened the names and moved them to the .c file since they are
5210   private for this source file only. Also made them #defines instead of
5211   enum.
5212
5213   Closes #9079
5214
5215 Jay Satiro (4 Jul 2022)
5216 - [Thomas WeiƟschuh brought this change]
5217
5218   select: do not return fatal error on EINTR from poll()
5219
5220   The same was done for select() in 5912da25 but poll() was missed.
5221
5222   Bug: https://bugs.archlinux.org/task/75201
5223   Reported-by: Alexandre Bury (gyscos at archlinux)
5224
5225   Ref: https://github.com/curl/curl/issues/8921
5226   Ref: https://github.com/curl/curl/pull/8961
5227   Ref: https://github.com/curl/curl/commit/5912da25#r77584294
5228
5229   Closes https://github.com/curl/curl/pull/9091
5230
5231 - [Kai Pastor brought this change]
5232
5233   cmake: fix build for mingw cross compile
5234
5235   - Change normaliz lib name to all lowercase.
5236
5237   This is from a standing patch in vcpkg:
5238   Mingw has libnormaliz.a. For case-sensitive file systems (e.g. cross
5239   builds from Linux), the spelling must match exactly.
5240
5241   Closes https://github.com/curl/curl/pull/9084
5242
5243 - easy_lock: fix build for mingw
5244
5245   - Define SRWLOCK symbols missing in some mingw environments.
5246
5247   Closes https://github.com/curl/curl/pull/8997
5248
5249 Daniel Stenberg (2 Jul 2022)
5250 - tool_progress: avoid division by zero in parallel progress meter
5251
5252   Reported-by: Brian Carpenter
5253   Fixes #9082
5254   Closes #9083
5255
5256 - http_aws_sigv4.c: remove two unusued includes
5257
5258   Closes #9080
5259
5260 - .mailmap: additional edit
5261
5262   Follow-up to 861e2a8aca6c7 so that Evgeny appears with the same in git
5263   logs even when using old email.
5264
5265 - RELEASE-NOTES: synced
5266
5267   bumped to 7.84.1
5268
5269 - [Evgeny Grin (Karlson2k) brought this change]
5270
5271   .mailmap: updated
5272
5273 - [Evgeny Grin (Karlson2k) brought this change]
5274
5275   THANKS: merged two entries for Evgeny Grin
5276
5277   Also updated THANKS-filter file
5278
5279   Closes #9076
5280
5281 - [Jilayne Lovejoy brought this change]
5282
5283   lib/curl_path.c: add ISC to license expression
5284
5285   THe text of the ISC license is in this file, so the SPDX license
5286   expression should be updated
5287
5288   Closes #9073
5289
5290 - [Sean McArthur brought this change]
5291
5292   hyper: use wakers for curl pause/resume
5293
5294   Closes #9070
5295
5296 Viktor Szakats (30 Jun 2022)
5297 - Makefile.m32: do not set the libcurl.rc debug flag [ci skip]
5298
5299   Delete `-DDEBUGBUILD=0` windres option. This was likely meant to
5300   disable VS_FF_DEBUG in FILEFLAGS, but any assigned value enabled
5301   it instead. Delete this unnecessary option and thus sync up with
5302   how CMake compiles libcurl.rc by default.
5303
5304   Reviewed-by: Jay Satiro
5305   Closes #9069
5306
5307 Daniel Stenberg (29 Jun 2022)
5308 - curl.h: CURLE_CONV_FAILED is obsoleted
5309
5310   The last use was removed in 7.82.0. Updated some docs too to reflect the
5311   current error code situation.
5312
5313   Closes #9067
5314
5315 - curl: output warning when a cookie is dropped due to size
5316
5317   Dropped from the request, that is.
5318
5319   Closes #9064
5320
5321 - curl_mime_data.3: polish the wording
5322
5323   Closes #9063
5324
5325 - configure: check for the stdatomic.h header in configure
5326
5327   ... and only set HAVE_ATOMIC if that header exists since we use
5328   typedefes set in it.
5329
5330   Reported-by: Ryan Schmidt
5331   Fixes #9059
5332   Closes #9060
5333
5334 - easy_lock: fix the #ifdef conditional for ia32_pause
5335
5336   To work better with new and old clang compilers.
5337
5338   Reported-by: Ryan Schmidt
5339   Assisted-by: Joshua Root
5340
5341   Fixes #9058
5342   Closes #9062
5343
5344 - easy_lock: switch to using atomic_int instead of bool
5345
5346   To work with more compilers without requiring separate libs to
5347   link. Like with gcc-12 for RISC-V on Linux.
5348
5349   Reported-by: Adam Sampson
5350   Fixes #9055
5351   Closes #9061
5352
5353 - [vvb2060 brought this change]
5354
5355   ngtcp2: fix incompatible function pointer types
5356
5357   Closes #9056
5358
5359 - [vvb2060 brought this change]
5360
5361   easy_lock.h: use __asm__ instead of asm to fix build
5362
5363   Closes #9056
5364
5365 - [Samuel Henrique brought this change]
5366
5367   libcurl-security.3: fix typo on macro "SH_"
5368
5369   During the packaging of the latest curl release for Debian, Lintian
5370   warned me about a typo which causes the section name "Secrets in memory"
5371   to not be rendered in the manpage due to "SH_" not being recognized as a
5372   header.
5373
5374   Closes #9057
5375
5376 - easy_lock.h: include sched.h if available to fix build
5377
5378   Patched-by: Harry Sintonen
5379
5380   Closes #9054
5381
5382 Version 7.84.0 (27 Jun 2022)
5383
5384 Daniel Stenberg (27 Jun 2022)
5385 - RELEASE-NOTES: synced
5386
5387   Version 7.84.0 release
5388
5389 - THANKS: contributors from 7.84.0 release notes
5390
5391 - hsts: use Curl_fopen()
5392
5393 - altsvc: use Curl_fopen()
5394
5395 - fopen: add Curl_fopen() for better overwriting of files
5396
5397   Bug: https://curl.se/docs/CVE-2022-32207.html
5398   CVE-2022-32207
5399   Reported-by: Harry Sintonen
5400   Closes #9050
5401
5402 - test444: test many received Set-Cookie:
5403
5404   The amount of sent cookies in the test is limited to 80 because hyper
5405   has its own strict limits in how many headers it allows to be received
5406   which triggers at some point beyond this number.
5407
5408 - test442/443: test cookie caps
5409
5410   442 - verify that only 150 cookies are sent
5411   443 - verify that the cookie: header remains less than 8K in size
5412
5413 - cookie: apply limits
5414
5415   - Send no more than 150 cookies per request
5416   - Cap the max length used for a cookie: header to 8K
5417   - Cap the max number of received Set-Cookie: headers to 50
5418
5419   Bug: https://curl.se/docs/CVE-2022-32205.html
5420   CVE-2022-32205
5421   Reported-by: Harry Sintonen
5422   Closes #9048
5423
5424 - test387: verify rejection of compression chain attack
5425
5426 - content_encoding: return error on too many compression steps
5427
5428   The max allowed steps is arbitrarily set to 5.
5429
5430   Bug: https://curl.se/docs/CVE-2022-32206.html
5431   CVE-2022-32206
5432   Reported-by: Harry Sintonen
5433   Closes #9049
5434
5435 - krb5: return error properly on decode errors
5436
5437   Bug: https://curl.se/docs/CVE-2022-32208.html
5438   CVE-2022-32208
5439   Reported-by: Harry Sintonen
5440   Closes #9051
5441
5442 - easy_lock.h: remove use of the deprecated ATOMIC_VAR_INIT macro
5443
5444   clang 14 warns about its use. It is being deprecated by the working
5445   group for the programming language C: "The macro ATOMIC_VAR_INIT is
5446   basically useless for the purpose for which it was designed"
5447
5448   Ref: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2886.htm
5449
5450   Reported-by: Tatsuhiro Tsujikawa
5451   Fixes #9041
5452   Closes #9042
5453
5454 - [Stefan Eissing brought this change]
5455
5456   ngtcp2: avoid supplying 0 length `msg_control` to sendmsg()
5457
5458   Testing on macOS 12.4, sendmsg() fails with EINVAL when a msg_control
5459   buffer is provided in sengmsg(), even though msg_controllen was set to
5460   0.
5461
5462   Initialize msg.msg_controllen just as needed and also perform the size
5463   assertion only when needed.
5464
5465   Closes #9039
5466
5467 - [Tom Eccles brought this change]
5468
5469   ftp: restore protocol state after http proxy CONNECT
5470
5471   connect_init() (lib/http_proxy.c) swaps out the protocol state while
5472   working on the proxy connection, this is then restored by
5473   Curl_connect_done() after the connection completes.
5474
5475   ftp_do_more() extracted the protocol state pointer to a local variable
5476   at the start of the function then calls Curl_proxy_connect(). If the proxy
5477   connection completes, Curl_proxy_connect() will call Curl_connect_done()
5478   (via Curl_proxyCONNECT()), which restores data->req.p to point to the ftp
5479   protocol state instead of the http proxy protocol state, but the local
5480   variable in ftp_do_more still pointed to the old value.
5481
5482   Ultimately this meant that the state worked on by ftp_do_more() was the
5483   http proxy state not the ftp state initialised by ftp_connect(), but
5484   subsequent calls to any ftp_ function would use the original state.
5485
5486   For my use-case, the visible consequence was that ftp->downloadsize was
5487   never set and so downloaded data was never returned to the application.
5488
5489   This commit updates the ftp protocol state pointer in ftp_do_more() after
5490   Curl_proxy_connect() returns, ensuring that the correct state pointer is
5491   used.
5492
5493   Fixes #8737
5494   Closes #9043
5495
5496 Jay Satiro (23 Jun 2022)
5497 - THANKS: add contributor missing from aea8ac1
5498
5499   aea8ac1 fixed #8980 which was reported by Sgharat on github, but that
5500   info was not included in the commit message.
5501
5502 - curl_setup: include _mingw.h
5503
5504   Prior to this change _mingw.h needed to be included in each unit before
5505   evaluating __MINGW{32,64}_xxx_VERSION macros since it defines them. It
5506   is included only in some mingw headers (eg stdio.h) and not others
5507   (eg windows.h) so it's better to explicitly include it once.
5508
5509   Closes https://github.com/curl/curl/pull/9036
5510
5511 Viktor Szakats (22 Jun 2022)
5512 - rand: stop detecting /dev/urandom in cross-builds
5513
5514   - Prevent CMake to auto-detect /dev/urandom when cross-building.
5515     Before this patch, it would detect it in a cross-build scenario on *nix
5516     hosts with this device present. This was a problem for example with
5517     Windows builds, but it could affect any target system with this device
5518     missing. This also syncs detection behaviour with autotools, which also
5519     skips it for cross-builds.
5520   - Also, make sure to never use the file RANDOM_FILE as entropy for libcurl's
5521     fallback random number generator on Windows. Windows does not have the
5522     concept of reading a random stream from a filename, nor any guaranteed
5523     non-world-writable path on disk. With this, a manual misconfiguration or
5524     an overeager auto-detection can no longer result in a user-controllable
5525     seed source.
5526
5527   Reviewed-by: Daniel Stenberg
5528   Closes #9038
5529
5530 Daniel Stenberg (22 Jun 2022)
5531 - [Emanuele Torre brought this change]
5532
5533   ci: avoid `cmake -Hpath`
5534
5535   This is an undocumented option similar to the `-Spath' option introduced
5536   in cmake 3.13.
5537   Replace all instances of `-Hpath' with `-Spath' in macos workflow.
5538   Replace `-H. -Bpath' with `mkdir path; cd ./path; cmake ..' in zuul
5539   scripts since it runs an older version of cmake.
5540
5541   Fixes #9008
5542   Closes #9014
5543
5544 - INTERNALS: bring back the "Library symbols" section
5545
5546   Most contents was moved, but this text should remain here.
5547
5548   Follow-up to: d324ac8
5549   Reported-by: Viktor Szakats
5550   Bug: https://github.com/curl/curl/pull/9027#discussion_r903382326
5551   Closes #9037
5552
5553 Viktor Szakats (22 Jun 2022)
5554 - Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip]
5555
5556   Since this [1] commit in 2011, `_WIN32_WINNT` was set fixed to Windows
5557   XP when the `-ipv6` option is selected. Maybe this was added to support
5558   pre-XP Windows versions (?). These days libcurl builds fine for both XP
5559   and post-XP versions with IPv6 support enabled. The relevance of pre-XP
5560   version is also low by now. Other build methods also do not impose such
5561   limitation for a similar configuration. So, drop this hard-wired
5562   `_WIN32_WINNT` limit from `Makefile.m32`, thus building for the default
5563   Windows version set by the compiler. This is Vista for recent MinGW
5564   versions.
5565
5566   Old behaviour can be restored by setting this envvar:
5567   export CURL_CFLAG_EXTRAS=-D_WIN32_WINNT=0x0501
5568
5569   [1] 98a61d8e2e8982786aaf3916cbbcac96838316e7
5570
5571   Closes #9035
5572
5573 Daniel Stenberg (21 Jun 2022)
5574 - CONTRIBUTE: mention how we maintain REUSE compliance
5575
5576   for copyright and license information of all files stored in git
5577
5578   Closes #9032
5579
5580 - CURLOPT_ALTSVC.3: document the file format
5581
5582   Closes #9033
5583
5584 Jay Satiro (21 Jun 2022)
5585 - runtests: add "threadsafe" to detected features
5586
5587   Follow-up to recent commits which added thread-safety support.
5588
5589   Bug: https://github.com/curl/curl/pull/9012#discussion_r902018782
5590   Reported-by: Marc Hƶrsken
5591
5592   Closes https://github.com/curl/curl/pull/9030
5593
5594 Daniel Stenberg (20 Jun 2022)
5595 - easy: remove dead code
5596
5597   Follow-up from 5912da253b64d
5598
5599   Detected by Coverity (CID 1506519)
5600
5601   Closes #9029
5602
5603 - [Glenn Strauss brought this change]
5604
5605   transfer: upload performance; avoid tiny send
5606
5607   Append to the upload buffer when only small amount remains in buffer
5608   rather than performing a separate tiny send to empty buffer.
5609
5610   Avoid degenerative upload behavior which might cause curl to send mostly
5611   1-byte DATA frames after exhausing the h2 send window size
5612
5613   Related discussion: https://github.com/nghttp2/nghttp2/issues/1722
5614
5615   Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
5616   Closes #8965
5617
5618 - [Steve Holme brought this change]
5619
5620   projects: fix third-party SSL library build paths for Visual Studio
5621
5622   The paths used by the build batch files were inconsistent with those in
5623   the Visual Studio project files.
5624
5625   Closes #8991
5626
5627 - [Pierrick Charron brought this change]
5628
5629   urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts
5630
5631   As per the documentation :
5632
5633   > Setting a part to a NULL pointer will effectively remove that
5634   > part's contents from the CURLU handle.
5635
5636   But currently clearing CURLUPART_URL does nothing and returns
5637   CURLUE_OK. This change will clear all parts of the URL at once.
5638
5639   Closes #9028
5640
5641 - [Philip Heiduck brought this change]
5642
5643   CI: bump FreeBSD 13.0 to 13.1
5644
5645   Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
5646   Closes #8815
5647
5648 - RELEASE-NOTES: synced
5649
5650   and updated release date in RELEASE-PROCEDURE.md
5651
5652 - [divinity76 brought this change]
5653
5654   CURLOPT_HTTPHEADER.3: improve comment in example
5655
5656   Closes #9025
5657
5658 Marc Hoersken (16 Jun 2022)
5659 - CI/azure: reduce flakiness by retrying install/prepare steps
5660
5661   Closes #9010
5662
5663 - CI/cirrus: align Windows timeout with Azure CI at 120 minutes
5664
5665   Closes #9009
5666
5667 Jay Satiro (16 Jun 2022)
5668 - vtls: make curl_global_sslset thread-safe
5669
5670   .. and update some docs to explain curl_global_* is now thread-safe.
5671
5672   Follow-up to 23af112 which made curl_global_init/cleanup thread-safe.
5673
5674   Closes https://github.com/curl/curl/pull/9016
5675
5676 - curl_easy_pause.3: remove explanation of progress function
5677
5678   - Remove misleading text that says progress function "gets called at
5679     least once per second, even if the connection is paused."
5680
5681   The progress function behavior is more nuanced and the user is better
5682   served reading the progress function doc rather than attempt to explain
5683   it in the curl_easy_pause doc.
5684
5685   The progress function can only be called at least once per second if an
5686   appropriate multi transfer function is called (eg curl_multi_perform) in
5687   that time. For a paused transfer there may not be such a call. Rather
5688   than explain this in detail in the curl_easy_pause doc, rely on the user
5689   reading the CURLOPT_PROGRESSFUNCTION doc.
5690
5691   Ref: https://github.com/curl/curl/issues/8983
5692
5693   Closes https://github.com/curl/curl/pull/9015
5694
5695 Daniel Stenberg (15 Jun 2022)
5696 - libssh: skip the fake-close when libssh does the right thing
5697
5698   Starting in libssh 0.10.0 ssh_disconnect() will no longer close our
5699   socket. Instead it will be kept alive as we want it, and it is our
5700   responsibility to close it later.
5701
5702   Ref: #8718
5703   Ref: https://gitlab.com/libssh/libssh-mirror/-/merge_requests/240
5704   Closes #9021
5705
5706 - configure: warn about rustls being experimental
5707
5708   Right now a dozen test cases are disabled because they don't work with
5709   rustls.
5710
5711   Closes #9019
5712
5713 - runtests: skip starting the ssh server if user name is lacking
5714
5715   Because the ssh server startup script *requires* a user name there's no
5716   point in invoking it if no name was found.
5717
5718   Reported-by: Ricardo M. Correia
5719   Ref: #9007
5720   Closes #9013
5721
5722 - copyright.pl: parse and use .reuse/dep5 for skips
5723
5724   Also scan skipped files to be able to find superfluous ignores, shown with -v.
5725
5726   Closes #9006
5727
5728 - reuse/dep5: adjusted to parse better
5729
5730   ... adjusted a few files to contain copyright and license info.
5731
5732   Closes #9006
5733
5734 - buildconf.bat: update copyright year range
5735
5736   Closes #9006
5737
5738 - README.md: use the common "Copyright" style formatting
5739
5740   Closes #9006
5741
5742 - reuse: move license info from .mailmap.license to .reuse/dep5
5743
5744   Closes #9006
5745
5746 - README.md: add a REUSE badge
5747
5748   Closes #9004
5749
5750 - .reuse/dep5: remove recursive docs ignore, only skip markdown files
5751
5752   ... and some additional non-markdown individual files in docs/
5753
5754   Closes #9005
5755
5756 - docs/cmdline-opts: add copyright and license identifier to each file
5757
5758   gen.pl now insists on C: and SPDX-License-Identifier: fields to be
5759   present in all files.
5760
5761   Closes #9002
5762
5763 - copyright: info for/ignore .github/ISSUE_TEMPLATE/bug_report.md
5764
5765   Follow-up from 448f7ef9ab2afb7. The adding of the copyright text in that
5766   file broke site functionality.
5767
5768   Closes #9001
5769
5770 - bug_report.md: revert the REUSE template to see if it works again
5771
5772 Viktor Szakats (13 Jun 2022)
5773 - version: rename threadsafe-init to threadsafe
5774
5775   Referring to Daniel's article [1], making the init function thread-safe
5776   was the last bit to make libcurl thread-safe as a whole. So the name of
5777   the feature may as well be the more concise 'threadsafe', also telling
5778   the story that libcurl is now fully thread-safe, not just its init
5779   function. Chances are high that libcurl wants to remain so in the
5780   future, so there is little likelihood of ever needing any other distinct
5781   `threadsafe-<name>` feature flags.
5782
5783   For consistency we also shorten `CURL_VERSION_THREADSAFE_INIT` to
5784   `CURL_VERSION_THREADSAFE`, update its description and reference libcurl's
5785   thread safety documentation.
5786
5787   [1]: https://daniel.haxx.se/blog/2022/06/08/making-libcurl-init-more-thread-safe/
5788
5789   Reviewed-by: Daniel Stenberg
5790   Reviewed-by: Jay Satiro
5791   Closes #8989
5792
5793 Daniel Stenberg (13 Jun 2022)
5794 - test3026: disable on win32
5795
5796   ... as it's not likely to have working pthreads
5797
5798   Closes #8996
5799
5800 - GHA: shorten the reuse CI job name
5801
5802   "REUSE compliance / check" should be good enough
5803
5804   Closes #9000
5805
5806 - misc: add missing SPDX-License-Identifier info
5807
5808   For some reason the REUSE CI job did not find these.
5809
5810   Closes #8999
5811
5812 - copyright: verify SPDX-License-Identifier presence as well
5813
5814 - easy_lock: add SPDX license identifier
5815
5816   Closes #8998
5817
5818 - mailmap: Max Mehl
5819
5820 - [Max Mehl brought this change]
5821
5822   git: ignore large commit making the curl REUSE compliant
5823
5824 - [Max Mehl brought this change]
5825
5826   copyright: make repository REUSE compliant
5827
5828   Add licensing and copyright information for all files in this repository. This
5829   either happens in the file itself as a comment header or in the file
5830   `.reuse/dep5`.
5831
5832   This commit also adds a Github workflow to check pull requests and adapts
5833   copyright.pl to the changes.
5834
5835   Closes #8869
5836
5837 - curl_url_set.3: clarify by default using known schemes only
5838
5839   Closes #8994
5840
5841 - scripts/copyright.pl: ignore leading spaces
5842
5843 Viktor Szakats (10 Jun 2022)
5844 - ngtcp2: fix typo in preprocessor condition
5845
5846   Ref: 927ede7edcb7b05b8e8bbf9ced6aed523ae594a7
5847
5848   Bug: https://github.com/curl/curl/pull/8981#discussion_r894312185
5849   Reported-by: Emil Engler
5850   Closes #8987
5851
5852 Daniel Stenberg (10 Jun 2022)
5853 - RELEASE-NOTES: synced
5854
5855 - [Tatsuhiro Tsujikawa brought this change]
5856
5857   ngtcp2: build without sendmsg
5858
5859   Closes #8981
5860
5861 - [Tatsuhiro Tsujikawa brought this change]
5862
5863   ngtcp2: use handshake helper funcs to simplify TLS handshake integration
5864
5865   Closes #8968
5866
5867 - test390: verify --parallel
5868
5869   Closes #8985
5870
5871 - test1543: verify CURLINFO_EFFECTIVE_URL with CURLOPT_CURLU set
5872
5873   Triggered by a bug report from Adam Light:
5874   https://curl.se/mail/lib-2022-06/0013.html - which ended up being mostly
5875   a misunderstanding of how CURLINFO_EFFECTIVE_URL works.
5876
5877   Closes #8971
5878
5879 - url: URL encode the path when extracted, if spaces were set
5880
5881 - urlapi: support CURLU_URLENCODE for curl_url_get()
5882
5883 - server/sws: support spaces in the HTTP request path
5884
5885 - tests/getpart: fix getpartattr to work with "data" and "data2"
5886
5887 - select: return error from "lethal" poll/select errors
5888
5889   Adds two new error codes: CURLE_UNRECOVERABLE_POLL and
5890   CURLM_UNRECOVERABLE_POLL one each for the easy and the multi interfaces.
5891
5892   Reported-by: Harry Sintonen
5893   Fixes #8921
5894   Closes #8961
5895
5896 - test3026: add missing control file
5897
5898   Follow-up from 2ed101256414ea5
5899
5900   Makes the test run, makes 'make dist' work
5901
5902   This single test takes 24-25 seconds on my machine (with valgrind). For
5903   this reason I tag it with a "slow" keyword.
5904
5905   Closes #8976
5906
5907 - runtests: fix skipping tests not done event-based
5908
5909   ... and call timestampskippedevents() to avoid the flood of
5910   uninitialized variable warnings.
5911
5912   Closes #8977
5913
5914 - transfer: maintain --path-as-is after redirects
5915
5916   Reported-by: Marcus T
5917   Fixes #8974
5918   Closes #8975
5919
5920 - test391: verify --path-as-is with redirect
5921
5922 Jay Satiro (8 Jun 2022)
5923 - curl_global_init.3: Separate the Windows loader lock warning
5924
5925   This is a slight correction of the parent commit which implied the
5926   loader lock warning only applied if not thread-safe. In fact the loader
5927   lock warning applies either way.
5928
5929   Ref: https://github.com/curl/curl/pull/8972#discussion_r891987030
5930
5931 Daniel Stenberg (8 Jun 2022)
5932 - curl_global_init.3: this is now (usually) thread-safe
5933
5934   Follow-up to 23af112f5556
5935
5936   Closes #8972
5937
5938 Jay Satiro (8 Jun 2022)
5939 - [Haxatron brought this change]
5940
5941   libcurl-security.3: Document CRLF header injection
5942
5943   - Document that user input to header options is not sanitized, which
5944     could result in CRLF used to modify the request in a way other than
5945     what was intended.
5946
5947   Ref: https://hackerone.com/reports/1589877
5948   Ref: https://medium.com/@tomnomnom/crlf-injection-into-phps-curl-options-e2e0d7cfe545
5949
5950   Closes https://github.com/curl/curl/pull/8964
5951
5952 - CURLOPT_RANGE.3: remove ranged upload advice
5953
5954   The e-mail link in the advice contains instructions that are prone to
5955   error. We need an example that works and can demonstrate how to properly
5956   perform a ranged upload, and then we can refer to that example instead.
5957
5958   Bug: https://github.com/curl/curl/issues/8969
5959   Reported-by: Simon Berger
5960
5961   Closes https://github.com/curl/curl/pull/8970
5962
5963 Daniel Stenberg (7 Jun 2022)
5964 - [Thomas Guillem brought this change]
5965
5966   curl_version_info: add CURL_VERSION_THREADSAFE_INIT
5967
5968   This flag can be used to make sure that curl_global_init() is
5969   thread-safe.
5970
5971   This can be useful for libraries that can't control what other
5972   dependencies are doing with Curl.
5973
5974   Closes #8680
5975
5976 - [Thomas Guillem brought this change]
5977
5978   lib: make curl_global_init() threadsafe when possible
5979
5980   Use a posix pthread or a Windows SRWLOCK to lock curl_global_init*() and
5981   curl_global_cleanup().
5982
5983   Closes #8680
5984
5985 - RELEASE-NOTES: synced
5986
5987 - [Fabian Keil brought this change]
5988
5989   test414: add the '--resolve' keyword
5990
5991   ... so the test can be automatically skipped when
5992   using an external proxy like Privoxy.
5993
5994   Closes #8959
5995
5996 - [Fabian Keil brought this change]
5997
5998   test{440,441,493,977}: add "HTTP proxy" keywords
5999
6000   ... so the tests can be automatically skipped when
6001   using an external proxy like Privoxy.
6002
6003   Closes #8959
6004
6005 - [Fabian Keil brought this change]
6006
6007   runtests.pl: add the --repeat parameter to the --help output
6008
6009   Closes #8959
6010
6011 - [Fabian Keil brought this change]
6012
6013   test 2081: add a valid reply for the second request
6014
6015   ... so the test works when using a HTTP proxy like
6016   Privoxy that sends an error message if the server
6017   doesn't send data.
6018
6019   Closes #8959
6020
6021 - [Fabian Keil brought this change]
6022
6023   test 675: add missing CR so the test passes when run through Privoxy
6024
6025   Closes #8959
6026
6027 - ftp: when failing to do a secure GSSAPI login, fail hard
6028
6029   ... instead of switching to cleartext. For the sake of security.
6030
6031   Reported-by: Harry Sintonen
6032   Bug: https://hackerone.com/reports/1590102
6033   Closes #8963
6034
6035 - http2: reject overly many push-promise headers
6036
6037   Getting more than a thousand of them is rather a sign of some kind of
6038   attack.
6039
6040   Reported-by: Harry Sintonen
6041   Bug: https://hackerone.com/reports/1589847
6042   Closes #8962
6043
6044 - [Fabian Keil brought this change]
6045
6046   misc: spelling improvements
6047
6048   Closes #8956
6049
6050 - [Tatsuhiro Tsujikawa brought this change]
6051
6052   ngtcp2: fix assertion failure on EMSGSIZE
6053
6054   Closes #8958
6055
6056 - easy/transfer: fix cookie-disabled build
6057
6058   Follow-up from 45de940cebf6a
6059   Reported-by: Marcel Raad
6060   Fixes #8953
6061   Closes #8954
6062
6063 - examples/crawler.c: use the curl license
6064
6065   With permission from Jeroen Ooms
6066
6067   URL: https://github.com/curl/curl/pull/8869#issuecomment-1144742731
6068   Closes #8950
6069
6070 - speed-limit/time.d: mention these affect transfers in either direction
6071
6072   Reported-by: Ladar Levison
6073   Fixes #8948
6074   Closes #8951
6075
6076 - scripts/copyright.pl: fix the exclusion to not ignore man pages
6077
6078   Ref: #8869
6079   Closes #8952
6080
6081 - examples: remove fopen.c and rtsp.c
6082
6083   To simplify the license situation, as they were the only files in the
6084   source tree using these specific BSD-3 clause licenses.
6085
6086   For an fopen style API, we recommend instead going
6087   https://github.com/curl/fcurl
6088
6089   Ref: #8869
6090   Closes #8949
6091
6092 - [Wolf Vollprecht brought this change]
6093
6094   netrc: check %USERPROFILE% as well on Windows
6095
6096   Closes #8855
6097
6098 - CURLOPT_SSH_HOSTKEYDATA/FUNCTION.3: minor polish
6099
6100 - [michael musset brought this change]
6101
6102   libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION
6103
6104   The callback set by CURLOPT_SSH_HOSTKEYFUNCTION is called to check
6105   wether or not the connection should continue.
6106
6107   The host key is passed in argument with a custom handle for the
6108   application.
6109
6110   It overrides CURLOPT_SSH_KNOWNHOSTS
6111
6112   Closes #7959
6113
6114 - docs/CONTRIBUTE.md: document the 'needs-votes' concept
6115
6116   A pull request sent to the project might get labeled `needs-votes` by a
6117   project maintainer. This label means that in addition to meeting all
6118   other checks and qualifications this pull request must also receive
6119   proven support/thumbs-ups from more community members to be considered
6120   for merging.
6121
6122   Closes #8910
6123
6124 - [Evgeny Grin (Karlson2k) brought this change]
6125
6126   digest: tolerate missing "realm"
6127
6128   Server headers may not define "realm", avoid NULL pointer dereference
6129   in such cases.
6130
6131   Closes #8912
6132
6133 - [Evgeny Grin (Karlson2k) brought this change]
6134
6135   digest: added detection of more syntax error in server headers
6136
6137   Invalid headers should not be processed otherwise they may create
6138   a security risk.
6139
6140   Closes #8912
6141
6142 - [Evgeny Grin (Karlson2k) brought this change]
6143
6144   digest: unquote realm and nonce before processing
6145
6146   RFC 7616 (and 2617) requires values to be "unquoted" before used for
6147   digest calculations. The only place where unquoting can be done
6148   correctly is header parsing function (realm="DOMAIN\\host" and
6149   realm=DOMAN\\host are different realms).
6150
6151   This commit adds unquoting (de-escaping) of all values during header
6152   parsing and quoting of the values during header forming. This approach
6153   should be most straightforward and easy to read/maintain as all values
6154   are processed in the same way as required by RFC.
6155
6156   Closes #8912
6157
6158 - headers: handle unfold of space-cleansed headers
6159
6160   Detected by OSS-fuzz
6161
6162   Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47767
6163
6164   Updated test 1274
6165
6166   Closes #8947
6167
6168 - lib: make more protocol specific struct fields #ifdefed
6169
6170   ... so that they don't take up space if the protocols are disabled in
6171   the build.
6172
6173   Closes #8944
6174
6175 - DISABLED: disable 1021 for hyper again
6176
6177   due to flakiness in the CI builds
6178
6179 - urldata: store tcp_keepidle and tcp_keepintvl as ints
6180
6181   They can't be set larger than INT_MAX in the setsocket API calls.
6182
6183   Also document the max values in their respective man pages.
6184
6185   Closes #8940
6186
6187 - urldata: reduce size of a few struct fields
6188
6189   When the values are never larger than 32 bit, ints are better than longs.
6190
6191   Closes #8940
6192
6193 - urldata: remove three unused booleans from struct UserDefined
6194
6195   - is_fwrite_set
6196   - free_referer
6197   - strip_path_slash
6198
6199   Closes #8940
6200
6201 - remote-name.d: mention --output-dir
6202
6203   plus add two see-alsos
6204
6205   Closes #8945
6206
6207 Jay Satiro (1 Jun 2022)
6208 - configure: skip libidn2 detection when winidn is used
6209
6210   Prior to this change --with-winidn could be overridden by libidn2
6211   detection.
6212
6213   Closes https://github.com/curl/curl/pull/8934
6214
6215 Daniel Stenberg (31 May 2022)
6216 - CURLOPT_FILETIME.3: fix the protocols this works with
6217
6218 - test681: verify --no-remote-name
6219
6220   Follow-up to 83ee5c428d960 (from #8931)
6221
6222   Closes #8942
6223
6224 - [Tatsuhiro Tsujikawa brought this change]
6225
6226   ngtcp2: enable Linux GSO
6227
6228   Enable Linux GSO in ngtcp2 QUIC.  In order to recover from the
6229   EAGAIN/EWOULDBLOCK by sendmsg with multiple packets in one GSO write,
6230   packet buffer is now held by struct quicsocket.  GSO write might fail in
6231   runtime depending on NIC.  Disable GSO if sendmsg returns EIO.
6232
6233   Closes #8909
6234
6235 - CURLOPT_PORT.3: We discourage using this option
6236
6237   Closes #8941
6238
6239 - RELEASE-NOTES: synced
6240
6241 - headers_push: error out if a folded header has no previous header
6242
6243   As that would indicate an illegal header. The fuzzer reached the assert
6244   in unfold_value() proving that this case can happen.
6245
6246   Follow-up to c9b60f005358a364
6247
6248   Closes #8939
6249
6250 - [Boris Verkhovskiy brought this change]
6251
6252   curl: re-enable --no-remote-name
6253
6254   Closes #8931
6255
6256 - test680: require 'http' since it uses such a URL
6257
6258   Follow-up to d1b376c03524
6259
6260 - CURLOPT_NETRC.3: document the .netrc file format
6261
6262 - test680: verify rejection of malformatted .netrc quoted password
6263
6264 - test679: verify netrc quoted string
6265
6266 - netrc: support quoted strings
6267
6268   The .netrc parser now accepts strings within double-quotes in order to
6269   deal with for example passwords containing white space - which
6270   previously was not possible.
6271
6272   A password that starts with a double-quote also ends with one, and
6273   double-quotes themselves are escaped with backslashes, like \". It also
6274   supports \n, \r and \t for newline, carriage return and tabs
6275   respectively.
6276
6277   If the password does not start with a double quote, it will end at first
6278   white space and no escaping is performed.
6279
6280   WARNING: this change is not entirely backwards compatible. If anyone
6281   previously used a double-quote as the first letter of their password,
6282   the parser will now get it differently compared to before. This is
6283   highly unfortunate but hard to avoid.
6284
6285   Reported-by: ImpatientHippo on GitHub
6286   Fixes #8908
6287   Closes #8937
6288
6289 - curl_getdate.3: document that some illegal dates pass through
6290
6291   Closes #8938
6292
6293 - CI: remove configure --enable-headers-api flags
6294
6295 - headers api: remove EXPERIMENTAL tag
6296
6297   Closes #8900
6298
6299 Daniel Gustafsson (30 May 2022)
6300 - cookies: fix documentation comment
6301
6302   Commit 4073cd83b2 added the noexpire parameter to Curl_cookie_add but
6303   missed updating the documentation comment at the head of the file.
6304
6305 Daniel Stenberg (30 May 2022)
6306 - [Marc Hoersken brought this change]
6307
6308   tests/data/test1940: use binary mode for expected stdout
6309
6310   The generated stdout data is written in binary mode with [LF]
6311   line endings, therefore we also need to do a binary comparison.
6312
6313   Assisted-by: Jay Satiro
6314   Assisted-by: Daniel Stenberg
6315
6316   Follow up to c9b60f005358a364cbcddbebd8d12593acffdd84
6317   Fixes #8920
6318   Closes #8936
6319
6320 - CURLINFO_CAINFO/PATH.3: clarify the multiple TLS situation
6321
6322   Spell out the multi-TLS situation.
6323
6324   Reported-by: Dan Fandrich
6325   Fixes #8926
6326   Closes #8932
6327
6328 Jay Satiro (28 May 2022)
6329 - [JustAnotherArchivist brought this change]
6330
6331   tool_getparam: fix --parallel-max maximum value constraint
6332
6333   - Clamp --parallel-max to MAX_PARALLEL (300) instead of resetting to
6334     default value.
6335
6336   Previously, --parallel-max 300 would use 300 concurrent transfers, but
6337   --parallel-max 301 would unexpectedly use only 50. This change clamps
6338   higher values to the maximum (ie --parallel-max 301 would use 300).
6339
6340   Closes https://github.com/curl/curl/pull/8930
6341
6342 Daniel Stenberg (27 May 2022)
6343 - curl.1: add a few see also --tls-max
6344
6345   Closes #8929
6346
6347 Viktor Szakats (26 May 2022)
6348 - cmake: do not add libcurl.rc to the static libcurl library
6349
6350   Fixes: https://github.com/curl/curl/pull/8918#issuecomment-1138263855
6351
6352   Reviewed-By: Karlson2k@users.noreply.github.com
6353   Closes #8923
6354
6355 - cmake: support adding a suffix to the OS value
6356
6357   CMake automatically uses the `CMAKE_SYSTEM_NAME` value to fill the OS
6358   string appearing in the --version output after the curl version number,
6359   for example:
6360
6361     'curl 7.83.1 (Windows)'
6362
6363   This patchs adds the ability to pass a suffix that is appended to this
6364   value. It's useful to add CPU info or other platform details,
6365   for example:
6366
6367     'curl 7.83.1 (Windows-x64)'
6368
6369   Closes #8919
6370
6371 - cmake: enable curl.rc for all Windows targets
6372
6373   Before this patch, it was only enabled for MSVC. This syncs this
6374   configuration with libcurl.rc, which was already included with
6375   every Windows compiler.
6376
6377   Closes #8918
6378
6379 - cmake: fix detecting libidn2
6380
6381   Without this patch, libidn2 detection doesn't even seem to be
6382   attempted. With this patch, cmake can be configured to pick it
6383   up and enable it. Necessary configuration remains manual and
6384   differs from most other dependencies.
6385
6386   If you are aware of a better fix, we're glad hearing about it
6387   in a new Issue.
6388
6389   Closes #8917
6390
6391 - version: allow stricmp() for sorting the feature list
6392
6393   In CMakeLists.txt there is an attempt to detect `stricmp()`, and in
6394   certain cases, this attempt is the only successful one to detect a
6395   case-insensitive comparison function. `HAVE_STRICMP` is defined as
6396   a result, but this macro wasn't used anywhere in the source. This
6397   patch makes use of it as an alternative when alpha-sorting the
6398   `--version` feature list.
6399
6400   Reviewed-by: Daniel Stenberg
6401   Closes #8916
6402
6403 Daniel Stenberg (25 May 2022)
6404 - DISABLED: add six tests that fail with hyper
6405
6406   1117 1274 1940 1941 1942 1943
6407
6408 - c-hyper: mark status line as status for Curl_client_write()
6409
6410   To make sure the headers API can filter it out as not a regular header.
6411
6412   Reported-by: Gisle Vanem
6413   Fixes #8894
6414   Closes #8914
6415
6416 Marc Hoersken (25 May 2022)
6417 - tests/data/test1501: kill ftp server after slow LIST response
6418
6419   This test is contributing to flakiness on the Windows CI runs.
6420   Killing the ftp server after the test run like other slowness
6421   tests already do may help resolve or reduce the flakiness.
6422
6423   Closes #8907
6424
6425 Daniel Stenberg (25 May 2022)
6426 - headers: fix the unfold realloc to use proper new size
6427
6428   Previously it didn't take the old name length into acount
6429
6430   Follow-up to: c9b60f005358a364
6431   Closes #8913
6432
6433 Marc Hoersken (25 May 2022)
6434 - GHA: align all install, configure and build steps again
6435
6436   First step towards more unified build steps on GitHub Actions.
6437
6438   Closes #8873
6439
6440 - CI/azure: remove obsolete strategy for single builds
6441
6442   This shortens these CI job names on GitHub even more.
6443   Follow up to #8906 which also increased their timeout.
6444
6445   Closes #8911
6446
6447 - CI/azure: shorten names of Windows CI jobs
6448
6449   Suggested-by: Daniel Stenberg
6450   Closes #8906
6451
6452 Daniel Stenberg (24 May 2022)
6453 - http: restore header folding behavior
6454
6455   Folded header lines will now get passed through like before. The headers
6456   API is adapted and will provide the content unfolded.
6457
6458   Added test 1274 and extended test 1940 to verify.
6459
6460   Reported-by: Petr Pisar
6461   Fixes #8844
6462   Closes #8899
6463
6464 Viktor Szakats (24 May 2022)
6465 - Makefile.m32: delete obsolete options, improve -On [ci skip]
6466
6467   - `-D_AMD64_` has not been necessary for mingw-w64 builds for a long time now.
6468   - `-fno-strict-aliasing` is mentioned for Intel C compiler in autotools, and
6469     I used this with VxWorks in another project, but otherwise this isn't
6470     necessary anymore as a default. If a target still needs it, it can be
6471     added with `CURL_CFLAG_EXTRAS=-fno-strict-aliasing`
6472   - bump up default optimization level to `-O3` (from `-O2`), and also rearrange
6473     option order so the default can now be overridden via
6474     `CURL_CFLAG_EXTRAS`.
6475   - delete `-g` (generate debug info) from `CFLAGS` and `-s` from `LDFLAGS`
6476     (strip debug info). They were working against each other. Now, if someone
6477     needs debug info, it can be enabled via `CURL_CFLAG_EXTRAS=-g`
6478
6479   Closes #8904
6480
6481 Daniel Gustafsson (24 May 2022)
6482 - ntlm: fix one more hostname test fallout
6483
6484   This fixup was missed in commit 5a41abef6dca19.
6485
6486   Closes: #8901
6487   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6488
6489 - doh: remove UNITTEST macro definition
6490
6491   The UNITTEST macro is defined by curl_setup.h so there is no use in
6492   carry a local copy of the logic.
6493
6494   Closes: #8902
6495   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6496
6497 Daniel Stenberg (24 May 2022)
6498 - cookie: fix false positive "potentially uninitialized local variable"
6499
6500   Reviewed-by: Daniel Gustafsson
6501   Closes #8903
6502
6503 - curl: add --rate to set max request rate per time unit
6504
6505   --rate "12/m" - for 12 per minute or
6506   --rate "5/h" - for 5 per hour
6507
6508   Removed from TODO
6509
6510   Closes #8671
6511
6512 - [Jay Satiro brought this change]
6513
6514   max-time.d: clarify max-time sets max transfer time
6515
6516   Prior to this change the doc said --max-time set the maximum time of the
6517   'whole operation' which is not accurate. The option maps to
6518   CURLOPT_TIMEOUT_MS which sets maximum transfer time.
6519
6520   For example, the maximum time on a transfer is reset if the transfer is
6521   retried (--retry).
6522
6523   Reported-by: Nuru@users.noreply.github.com
6524
6525   Fixes https://github.com/curl/curl/issues/8877
6526   Closes #8879
6527
6528 - GHA/hyper: enable debug in the build
6529
6530 - hyper: use 'alt-used'
6531
6532   Makes test 412+413 work
6533
6534   Closes #8898
6535
6536 - RELEASE-NOTES: synced
6537
6538 - CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl
6539
6540   Closes #8888
6541
6542 - links: update dead links
6543
6544   The wiki pages are gone, remove and link to more long-living docs.
6545
6546   Closes #8897
6547
6548 - ntlm: (void) typecast msnprintf() where we ignore return code
6549
6550   Follow-up to 5a41abef6, to please Coverity
6551
6552 Daniel Gustafsson (22 May 2022)
6553 - ntlm: copy NTLM_HOSTNAME to host buffer
6554
6555   Commit 709ae2454f43 added a fake hostname to avoid leaking the local
6556   hostname, but omitted copying it to the host buffer.  Fix by copying
6557   and adjust the test fallout.
6558
6559   Closes: #8895
6560   Fixes: #8893
6561   Reported-by: Patrick Monnerat <patrick@monnerat.net>
6562   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6563
6564 - configure: use the SED value to invoke sed
6565
6566   Rather than assuming sed in PATH, use the resolved $SED variable
6567   like in all other invocations of sed in configure.
6568
6569   Closes: #8891
6570   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6571   Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
6572
6573 Daniel Stenberg (20 May 2022)
6574 - [Tatsuhiro Tsujikawa brought this change]
6575
6576   ngtcp2: Allow curl to send larger UDP datagrams
6577
6578   Allow curl to send larger UDP datagram if Path MTU Discovery finds the
6579   availability of larger path MTU.  To make it work and not to send
6580   fragmented packet, we need to set DF bit.  That makes send(2) fail with
6581   EMSGSIZE if UDP datagram is too large.  In that case, just let it be
6582   lost.  This patch enables DF bit for Linux only.
6583
6584   Closes #8883
6585
6586 - libcurl-security.3: add "Secrets in memory"
6587
6588   Closes #8881
6589
6590 - tests: update NTLM tests to use new host name
6591
6592   Also drop the debug requirement, remove the setenv sections, remove
6593   prechecks and add NTLM to the top keywords.
6594
6595   Closes #8889
6596
6597 - ntlm: provide a fixed fake host name
6598
6599   The NTLM protocol includes providing the local host name, but apparently
6600   other implementations already provide a fixed fake name instead to avoid
6601   leaking the real local name.
6602
6603   The exact name used is 'WORKSTATION', because Firefox uses that.
6604
6605   The change is written to allow someone to "back-pedal" fairly easy in
6606   case of need.
6607
6608   Reported-by: Carlo Alberto
6609   Fixes #8859
6610   Closes #8889
6611
6612 Daniel Gustafsson (20 May 2022)
6613 - KNOWN_BUGS: fix typo in problem description
6614
6615   s/TSL/TLS/
6616
6617 - FEATURES: remove yassl as TLS library for NTLM
6618
6619   yassl was added in commit 9d904ee41b880b but is no longer available
6620   and is thus not a library to use for NTLM. This aligns the FEATURES
6621   doc with the FAQ.
6622
6623   Closes: #8886
6624   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6625
6626 - FEATURES: reorder footnotes
6627
6628   The empty left-behind footnote confused the website rendering into
6629   creating a nested emoty list, making the resulting page look quite
6630   odd.  Remove and re-order the remaining ones to avoid a gap in the
6631   sequence.
6632
6633   Closes: #8886
6634   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6635
6636 - FAQ: remove opinionated sentence on NTLM
6637
6638   curl is a tool that support many different things, and it doesn't
6639   really seem like our job to tell other what to use (as they might
6640   not have much say in the matter even).  Also tidy up wording.
6641
6642   Closes: #8886
6643   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6644
6645 Viktor Szakats (20 May 2022)
6646 - log2changes: do not indent empty lines [ci skip]
6647
6648   This will omit two spaces of indentation from lines with no content,
6649   thus avoiding 'spaces @ EOL'.
6650
6651   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6652   Closes #8887
6653
6654 Daniel Stenberg (19 May 2022)
6655 - wolfssl: correct the failf() message when a handle can't be made
6656
6657   Closes #8885
6658
6659 Viktor Szakats (19 May 2022)
6660 - Makefile.m32: delete two obsolete OpenSSL options [ci skip]
6661
6662   - -DOPENSSL_NO_KRB5: No longer used by OpenSSL 1.1.x, 3.x, or
6663     LibreSSL 3.5.x, yet it collides with the latter, which defines
6664     it unconditionally, resulting in this warning:
6665       ../../libressl/include/openssl/opensslfeatures.h:14:9: warning: 'OPENSSL_NO_KRB5' macro redefined [-Wmacro-redefined]
6666     It was originally added to curl in 2004.
6667
6668   - -DHAVE_OPENSSL_PKCS12_H: No longer used by OpenSSL 1.1.x, 3.x, or
6669     LibreSSL back to at least 2.5.5. Originally added in the same
6670     commit as the above, in 2004.
6671
6672   Closes #8884
6673
6674 Daniel Stenberg (19 May 2022)
6675 - RELEASE-NOTES: synced
6676
6677   bump to 7.84.0
6678
6679 - [Christian Weisgerber via curl-library brought this change]
6680
6681   Makefile.am: fix portability issues
6682
6683   Commit a04f0b961333e1a19848d073d8c7db9c20b2a371 made me notice that
6684   there is a portability issue in curl's top-level Makefile.am.
6685
6686   $< can only be used in rules that deal with .SUFFIXES.  Its use
6687   for general prerequisites is a GNU make extension.
6688
6689   $< could be replaced by $?, but I think in an autotools context,
6690   something like this is better:
6691
6692   Bug: https://curl.se/mail/lib-2022-05/0024.html
6693   Closes #8861
6694
6695 - [Balakrishnan Balasubramanian brought this change]
6696
6697   socks: support unix sockets for socks proxy
6698
6699   Usage:
6700     curl -x "socks5h://localhost/run/tor/socks" "https://example.com"
6701
6702   Updated runtests.pl to run a socksd server listening on unix socket
6703
6704   Added tests test1467 test1468
6705
6706   Added documentation for proxy command line option and socks proxy
6707   options
6708
6709   Closes #8668
6710
6711 - [Vincent Torri brought this change]
6712
6713   cmake: add libpsl support
6714
6715   Fixes #8865
6716   Closes #8867
6717
6718 - [Tatsuhiro Tsujikawa brought this change]
6719
6720   ngtcp2: extend QUIC transport parameters buffer
6721
6722   Extend QUIC transport parameters buffer because 64 bytes are too
6723   short for the ever increasing parameters.
6724
6725   Closes #8872
6726
6727 - [Tatsuhiro Tsujikawa brought this change]
6728
6729   ngtcp2: handle error from ngtcp2_conn_submit_crypto_data
6730
6731   Closes #8871
6732
6733 - [Tatsuhiro Tsujikawa brought this change]
6734
6735   ngtcp2: send appropriate connection close error code
6736
6737   Closes #8870
6738
6739 - test1561: adjusted for the cookie fix
6740
6741 - test414: verify secure cookie domain overlay
6742
6743 - [Harry Sintonen brought this change]
6744
6745   cookie: address secure domain overlay
6746
6747   Bug: https://hackerone.com/reports/1560324
6748   Co-authored-by: Daniel Stenberg
6749   Closes #8840
6750
6751 - [Frank Gevaerts brought this change]
6752
6753   strcase: some optimisations
6754
6755   Lookup tables for toupper() and tolower() make Curl_strcasecompare()
6756   about 1.5 times faster. Reorganising Curl_strcasecompare() to fully exit
6757   early then also allows simplifying the check at the end, for another
6758   15%. In total, the changes make Curl_strcasecompare() around 1.6 to 1.7
6759   times faster.
6760
6761   Note that these optimisation assume ASCII. The original
6762   Curl_raw_toupper() and raw_tolower() look like they already made that
6763   assumption.
6764
6765   Closes #8875
6766
6767 - BUG-BOUNTY.md: mention the audit exception
6768
6769   Dedicated - paid for - security audits that are performed in
6770   collaboration with curl developers are not eligible for bounties.
6771
6772   (plus I changed the sub-titles to use ## instead of # in the markdown)
6773
6774   Closes #8880
6775
6776 - lib/vssh/wolfssh.h: removed
6777
6778   Unused header file
6779
6780   Reported-by: Illarion Taev
6781   Fixes #8863
6782   Closes #8866
6783
6784 - [Elms brought this change]
6785
6786   wolfSSL: explicitly use compatibility layer
6787
6788   This change removes adding an include `$prefix/wolfssl` or similar to
6789   allow for openssl include aliasing. Include paths of `wolfssl/openssl/`
6790   are used to explicitly use wolfSSL includes. This fixes cmake builds as
6791   well as avoiding potentially using openSSL headers since include path
6792   order is not guaranteed.
6793
6794   Closes #8864
6795
6796 - curl: deprecate --random-file and --egd-file
6797
6798   As libcurl no longer has any functionality for them, the tool now does
6799   nothing with them.
6800
6801   Closes #8670
6802
6803 - opts: deprecate RANDOM_FILE and EGDSOCKET
6804
6805   These two options were only ever used for the OpenSSL backend for
6806   versions before 1.1.0. They were never used for other backends and they
6807   are not used with recent OpenSSL versions. They were never used much by
6808   applications.
6809
6810   The defines RANDOM_FILE and EGD_SOCKET can still be set at build-time
6811   for ancient EOL OpenSSL versions.
6812
6813   Closes #8670
6814
6815 - [Harry Sintonen brought this change]
6816
6817   bindlocal: don't use a random port if port number would wrap
6818
6819   Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port
6820   65535 the code would fall back to random port rather than giving up.
6821
6822   Closes #8862
6823
6824 Daniel Gustafsson (16 May 2022)
6825 - transfer: Fix potential NULL pointer dereference
6826
6827   Commit 0ef54abf5208 accidentally used the conn variable before the
6828   assertion for it being NULL. Fix by moving the assignment which use
6829   conn to after the assertion.
6830
6831   Closes: #8857
6832   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6833
6834 - docs: clarify data replacement policy for MIME API
6835
6836   The API documentation for the MIME functions specify that the parts
6837   can be set twice, with the last call winning.  While true, the user
6838   can set the parts n times for n > 2, reword to specify multiple API
6839   calls instead.
6840
6841   Closes: #8860
6842   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6843
6844 Daniel Stenberg (16 May 2022)
6845 - [vvb2060 on github brought this change]
6846
6847   ngtcp2: support boringssl crypto backend
6848
6849   Closes #8789
6850
6851 - [Tatsuhiro Tsujikawa brought this change]
6852
6853   quic: add Curl_quic_idle
6854
6855   Add Curl_quic_idle which is called when no HTTP level read or write is
6856   performed.  It is a good place to handle timer expiry for QUIC transport
6857   (.e.g, retransmission).
6858
6859   Closes #8698
6860
6861 - [Gregor Jasny brought this change]
6862
6863   mprintf: ignore clang non-literal format string
6864
6865   Closes #8740
6866
6867 - [Nick Zitzmann brought this change]
6868
6869   sectransp: check for a function defined when __BLOCKS__ is undefined
6870
6871   SecTrustEvaluateAsync() is defined in the macOS 10.7 SDK, but it
6872   requires Grand Central Dispatch to be supported by the compiler, and
6873   some third-party macOS compilers do not support Grand Central Dispatch.
6874   SecTrustCopyPublicKey() is not present in macOS 10.6, so this shouldn't
6875   adversely affect anything.
6876
6877   Fixes #8846
6878   Reported-by: Egor Pugin
6879   Closes #8854
6880
6881 Daniel Gustafsson (16 May 2022)
6882 - test412/413: Use version macro for User-Agent
6883
6884   Commit 46d45ea3a incorrectly hardcoded the User-Agent in the test
6885   output file which breaks when curlver is updated. Shift to using
6886   the %VERSION macro instead.
6887
6888   Closes: #8856
6889
6890 - macos9: remove partial support
6891
6892   The support for compiling on Mac OS 9 hasn't been modified since 2001
6893   and has no active maintainer or packager, so it's time to remove it as
6894   it's incredibly unlikely to work. If a maintainer re-emerges it can be
6895   resurrected from Git history.
6896
6897   Closes: #8836
6898   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
6899
6900 Daniel Stenberg (16 May 2022)
6901 - test1635: verify --fail-with-body with --retry
6902
6903   Almost a dupe of 1634
6904
6905   Closes #8847
6906
6907 - tool_operate: make sure --fail-with-body works with --retry
6908
6909   ... in the same way --fail already does.
6910
6911   Reported-by: Jakub Bochenski
6912   Fixes #8845
6913   Closes #8847
6914
6915 - [Tatsuhiro Tsujikawa brought this change]
6916
6917   ngtcp2: Correct use of ngtcp2 and nghttp3 signed integer types
6918
6919   Closes #8851
6920
6921 - [Tatsuhiro Tsujikawa brought this change]
6922
6923   ngtcp2: Fix alert_read_func return value
6924
6925   Closes #8852
6926
6927 - [Harry Sintonen brought this change]
6928
6929   Curl_parsenetrc: don't access local pwbuf outside of scope
6930
6931   Accessing local variables outside of the scope is forbidden and
6932   depending on the compiler can result in the value being
6933   overwritten. Fixed by moving the pwbuf to be in scope.
6934
6935   Closes #8850
6936
6937 - RELEASE-NOTES: synced
6938
6939   and bump curlver to 7.83.2 for now (but likely to become 7.84.0 soon)
6940
6941 - [Frazer Smith brought this change]
6942
6943   ci: update github actions
6944
6945   - bump actions/checkout from 2 to 3
6946   - bump actions/upload-artifact from 1 to 3
6947   - bump github/codeql-actions from 1 to 2
6948   - use version tag for actions/checkout
6949
6950   Closes #8843
6951
6952 - test1919: verify CURLOPT_XOAUTH2_BEARER leak fix
6953
6954 - url: free old conn better on reuse
6955
6956   Make use of conn_free() better and avoid duplicate code.
6957
6958   Reported-by: Andrea Pappacoda
6959   Fixes #8841
6960   Closes #8842
6961
6962 Jay Satiro (14 May 2022)
6963 - FAQ: Clarify Windows double quote usage
6964
6965   - Windows command prompt doesn't use literal quoting via single quotes.
6966
6967   - Windows command prompt inner double quotes are escaped with a
6968     backslash.
6969
6970   - Windows powershell does use single quotes but curl is not a powershell
6971     script so the arguments may not be passed on correctly.
6972
6973   - Windows powershell inner double quotes seems can be passed to curl if
6974     the outer quotes are double quotes and an escape of backslash-backtick
6975     is used.
6976
6977   Command prompt example:
6978
6979   ~~~
6980   getargs -v -d "\"a\""
6981
6982   argv[0]: getargs
6983   argv[1]: -v
6984   argv[2]: -d
6985   argv[3]: "a"
6986   ~~~
6987
6988   Ref: https://github.com/curl/curl/issues/8818
6989   Ref: https://gist.github.com/jay/19aba48653bd591cf4b90eb9249a302c
6990
6991   Reported-by: KotlinIsland@users.noreply.github.com
6992
6993   Closes https://github.com/curl/curl/pull/8823
6994
6995 Daniel Stenberg (12 May 2022)
6996 - github/workflows/nss: apt update first
6997
6998   Fix "libnss3-dev_3.49.1-1ubuntu1.6_amd64.deb 404 Not Found"
6999
7000   Closes #8837
7001
7002 - page-footer: mention exit code zero too
7003
7004   Success (zero) is also an "exit code" worth mentioning.
7005
7006   Closes #8833
7007
7008 Daniel Gustafsson (12 May 2022)
7009 - gssapi: initialize gss_buffer_desc strings
7010
7011   Explicitly initialize gss_buffer_desc strings such that a call to
7012   freeing resources will succeed even if no data has been allocated
7013   to it.
7014
7015   Reported-by: Jay Satiro <raysatiro@yahoo.com>
7016
7017 - gssapi: improve handling of errors from gss_display_status
7018
7019   In case gss_display_status() returns an error, avoid trying to add
7020   it to the buffer as the message may well be a NULL pointer.
7021
7022   Originally this fix comes from a discussion in issue #8816.
7023
7024   Closes: #8832
7025   Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
7026
7027 Jay Satiro (12 May 2022)
7028 - [steini2000 brought this change]
7029
7030   http2: always debug print stream id in decimal with %u
7031
7032   Prior to this change the stream id shown could be hex or decimal which
7033   was inconsistent and confusing.
7034
7035   Closes https://github.com/curl/curl/pull/8808
7036
7037 Kamil Dudka (11 May 2022)
7038 - url: remove redundant #ifdefs in allocate_conn()
7039
7040   No change in behavior intended by this commit.
7041
7042 Daniel Stenberg (11 May 2022)
7043 - [Fabian Keil brought this change]
7044
7045   tests 266, 116 and 1540: add a small write delay
7046
7047   This makes it more likely that the trailer is received
7048   seperately from the last-chunk.
7049
7050   curl doesn't seem to care about this but it makes the tests
7051   more useful when testing external proxies like Privoxy.
7052
7053 - [Fabian Keil brought this change]
7054
7055   tests 1117,1238,1523: adjust writedelay servercmds
7056
7057   ... so the delays are the same now that the unit
7058   is in milliseconds.
7059
7060 - [Fabian Keil brought this change]
7061
7062   tests/server/sws.c: change the HTTP writedelay unit to milliseconds
7063
7064   This allows to use write delays for large responses without
7065   resulting in the test taking an unreasonable amount of time.
7066
7067   In many cases delaying writes by a whole second or more isn't
7068   necessary for the desired effect.
7069
7070   Closes #8827
7071
7072 Daniel Gustafsson (11 May 2022)
7073 - aws-sigv4: fix potentional NULL pointer arithmetic
7074
7075   We need to check if the strchr() call returns NULL (due to missing
7076   char) before we use the returned value in arithmetic.  There is no
7077   live bug here, but fixing it before it can become for hygiene.
7078
7079   Closes: #8814
7080   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7081
7082 Daniel Stenberg (11 May 2022)
7083 - quiche: support ca-fallback
7084
7085   Follow-up to b01f3e679f4c1ea3 which added this for ngtcp2/openssl
7086
7087   Removed from KNOWN_BUGS
7088
7089   Fixes #8696
7090   Closes #8830
7091
7092 Daniel Gustafsson (11 May 2022)
7093 - x509asn1: mark msnprintf return as unchecked
7094
7095   We have lots of unchecked msnprintf calls, and this particular msnprintf
7096   call isn't more interesting than the others, but this one yields a Coverity
7097   warning so let's implicitly silence it. Going over the other invocations
7098   is probably a worthwhile project, but for now let's keep the static
7099   analyzers happy.
7100
7101   Closes: #8831
7102   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7103
7104 Version 7.83.1 (11 May 2022)
7105
7106 Daniel Stenberg (11 May 2022)
7107 - RELEASE-NOTES: synced
7108
7109   curl 7.83.1 release
7110
7111 - THANKS: added contributors from 7.83.1
7112
7113 - zuul: fix the ngtcp2-gnutls build
7114
7115   Add packages and tweak the configure options.
7116
7117   Use the GnuTLS 3.7.4 branch (not main).
7118
7119   Closes #8829
7120
7121 - [Tatsuhiro Tsujikawa brought this change]
7122
7123   ngtcp2: add ca-fallback support for OpenSSL backend
7124
7125   Closes #8828
7126
7127 - url: check SSH config match on connection reuse
7128
7129   CVE-2022-27782
7130
7131   Reported-by: Harry Sintonen
7132   Bug: https://curl.se/docs/CVE-2022-27782.html
7133   Closes #8825
7134
7135 - tls: check more TLS details for connection reuse
7136
7137   CVE-2022-27782
7138
7139   Reported-by: Harry Sintonen
7140   Bug: https://curl.se/docs/CVE-2022-27782.html
7141   Closes #8825
7142
7143 - cookies: make bad_domain() not consider a trailing dot fine
7144
7145   The check for a dot in the domain must not consider a single trailing
7146   dot to be fine, as then TLD + trailing dot is fine and curl will accept
7147   setting cookies for it.
7148
7149   CVE-2022-27779
7150
7151   Reported-by: Axel Chong
7152   Bug: https://curl.se/docs/CVE-2022-27779.html
7153   Closes #8820
7154
7155 - test977: reproduce ability to set cookie on TLD
7156
7157   When PSL is not enabled
7158
7159 - scripts/contributors.sh: correct the copyright range
7160
7161 - docs/RELEASE-PROCEDURE.md: refreshed and adjsuted the release dates
7162
7163 - test379: verify --remove-on-error with --no-clobber
7164
7165 - post_per_transfer: remove the updated file name
7166
7167   When --remove-on-error is used with --no-clobber, it might have an
7168   updated file name to remove.
7169
7170   Bug: https://curl.se/docs/CVE-2022-27778.html
7171
7172   CVE-2022-27778
7173
7174   Reported-by: Harry Sintonen
7175
7176   Closes #8824
7177
7178 - hsts: ignore trailing dots when comparing hosts names
7179
7180   CVE-2022-30115
7181
7182   Reported-by: Axel Chong
7183   Bug: https://curl.se/docs/CVE-2022-30115.html
7184   Closes #8821
7185
7186 - test440/441: verify HSTS with trailing dots
7187
7188 - libtest/lib1560: verify the host name percent decode fix
7189
7190 - urlapi: reject percent-decoding host name into separator bytes
7191
7192   CVE-2022-27780
7193
7194   Reported-by: Axel Chong
7195   Bug: https://curl.se/docs/CVE-2022-27780.html
7196   Closes #8826
7197
7198 - nss: return error if seemingly stuck in a cert loop
7199
7200   CVE-2022-27781
7201
7202   Reported-by: Florian KohnhƤuser
7203   Bug: https://curl.se/docs/CVE-2022-27781.html
7204   Closes #8822
7205
7206 - test412/413: verify alt-svc with trailing dots
7207
7208 - altsvc: fix host name matching for trailing dots
7209
7210   Closes #8819
7211
7212 - [Garrett Squire brought this change]
7213
7214   hyper: fix test 357
7215
7216   This change fixes the hyper API such that PUT requests that receive a
7217   417 response can retry without the Expect header.
7218
7219   Closes #8811
7220
7221 - [Harry Sintonen brought this change]
7222
7223   sectransp: bail out if SSLSetPeerDomainName fails
7224
7225   Before the code would just warn about SSLSetPeerDomainName() errors.
7226
7227   Closes #8798
7228
7229 - http_proxy/hyper: handle closed connections
7230
7231   Enable test 1021 for hyper builds.
7232
7233   Patched-by: Prithvi MK
7234   Fixes #8700
7235   Closes #8806
7236
7237 - KNOWN_BUGS: timeout when reusing a http3 connection
7238
7239   Closes #8764
7240
7241 - KNOWN_BUGS: configure --with-ca-fallback is not supported by h3
7242
7243   Closes #8696
7244
7245 - [Ryan Schmidt brought this change]
7246
7247   Makefile: fix "make ca-firefox"
7248
7249   Closes #8804
7250
7251 Daniel Gustafsson (5 May 2022)
7252 - tests: fix markdown formatting in README
7253
7254   The asterisk in the abbreviation *NIX (for UNIX/Linux) needs to be
7255   escaped to not mean start of italic formatting. This is consistent
7256   with docs/RELEASE-PROCEDURE.md.
7257
7258   Closes: #8802
7259   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7260
7261 Daniel Stenberg (5 May 2022)
7262 - TODO: expand on "Expose tried IP addresses that failed"
7263
7264   Ref: #8794
7265
7266 Daniel Gustafsson (5 May 2022)
7267 - [Fabian Keil brought this change]
7268
7269   tests/server: declare variable 'reqlogfile' static
7270
7271   Silences the warning:
7272
7273        CC       socksd-socksd.o
7274      socksd.c:143:13: warning: no previous extern declaration for
7275       non-static variable 'reqlogfile' [-Wmissing-variable-declarations]
7276      const char *reqlogfile = DEFAULT_REQFILE;
7277                  ^
7278      socksd.c:143:7: note: declare 'static' if the variable is not
7279       intended to be used outside of this translation unit
7280      const char *reqlogfile = DEFAULT_REQFILE;
7281            ^
7282      1 warning generated.
7283
7284   ... when compiling with clang 13.
7285
7286   Closes: #8799
7287   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
7288
7289 - HTTP-COOKIES: add missing CURLOPT_COOKIESESSION
7290
7291   Commit 980a47b42 added support for ignoring session cookies, but it
7292   was never added to the documentation.
7293
7294   Closes: #8795
7295   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7296
7297 Daniel Stenberg (5 May 2022)
7298 - docs/THANKS: remove name duplicate
7299
7300 - [Philip Heiduck brought this change]
7301
7302   .mailmap: update
7303
7304   Closes #8800
7305
7306 Jay Satiro (5 May 2022)
7307 - mbedtls: fix some error messages
7308
7309   Prior to this change some of the error messages misidentified the
7310   function that failed.
7311
7312 Daniel Stenberg (5 May 2022)
7313 - RELEASE-NOTES: synced
7314
7315 - [Sergey Markelov brought this change]
7316
7317   x509asn1: make do_pubkey handle EC public keys
7318
7319   Closes #8757
7320
7321 - [Harry Sintonen brought this change]
7322
7323   mbedtls: bail out if rng init fails
7324
7325   There was a failf() call but no actual error return.
7326
7327   Closes #8796
7328
7329 - [Sergey Markelov brought this change]
7330
7331   urlapi: address (harmless) UndefinedBehavior sanitizer warning
7332
7333   `while(i--)` causes runtime error: unsigned integer overflow: 0 - 1
7334   cannot be represented in type 'size_t' (aka 'unsigned long')
7335
7336   Closes #8797
7337
7338 - [Fabian Keil brought this change]
7339
7340   test{898,974,976}: add 'HTTP proxy' keywords
7341
7342   ... so the tests can be automatically skipped when
7343   testing external HTTP proxies like Privoxy.
7344
7345   Closes #8791
7346
7347 - [Harry Sintonen brought this change]
7348
7349   gskit_connect_step1: fixed bogus setsockopt calls
7350
7351   setsockopt takes a reference to value, not value. With the current
7352   code this just leads to -1 return value with errno EFAULT.
7353
7354   Closes #8793
7355
7356 - CURLOPT_SSH_AUTH_TYPES.3: fix the default
7357
7358   The default is all possible methods.
7359
7360   Closes #8792
7361
7362 - CURLOPT_DOH_URL.3: mention the known bug
7363
7364   It is mostly duplicating info from KNOWN_BUGS but make it easier to find
7365   for users of this option.
7366
7367   Closes #8790
7368
7369 - CURLOPT_HSTS*FUNCTION.3: document the involved structs as well
7370
7371   Reviewed-By: Daniel Gustafsson
7372   Closes #8788
7373
7374 - docs/SECURITY-PROCESS.md: "Visible command line arguments"
7375
7376 - SECURITY-PROCESS: mention "URL inconsistencies"
7377
7378   ... as common problems that are *not* vulns.
7379
7380 Daniel Gustafsson (2 May 2022)
7381 - contributors: strip off final comma
7382
7383   The final row of contributors should not end with a comma as it's the
7384   end of the list.
7385
7386   Closes: #8785
7387   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7388
7389 Daniel Stenberg (2 May 2022)
7390 - [Philip Heiduck brought this change]
7391
7392   misc: use "autoreconf -fi" instead buildconf
7393
7394   Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
7395   Closes #8777
7396
7397 Daniel Gustafsson (2 May 2022)
7398 - [Philip Heiduck brought this change]
7399
7400   cirrus: Use pip for Python packages on FreeBSD
7401
7402   Using pip instead of easy_install is more in line with how other
7403   CI images are being maintained.
7404
7405   Closes: #8783
7406   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
7407
7408 - [Philip Heiduck brought this change]
7409
7410   cirrus: Update to FreeBSD 12.3
7411
7412   Closes: #8783
7413   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
7414
7415 - tool_getparam: simplify conditional statement
7416
7417   param_place cannot be NULL here since we immediately efter this block
7418   perform arithmetic on it (and use it in order to get here) so there is
7419   little reason to check.
7420
7421   Closes: #8786
7422   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7423
7424 - RELEASE-NOTES: synced
7425
7426 - gskit: remove unused function set_callback
7427
7428   This function has been unused since the initial commit of the GSKit
7429   backend in 0eba02fd4.  The motivation for the code was getting the
7430   whole certificate chain: the only place where the latter is available
7431   is as a callback parameter.  Unfortunately it is not possible to pass
7432   a user pointer to this callback, which precludes the possibility to
7433   associate the cert chain with a data/conn structure.
7434
7435   For further information, search for pgsk_cert_validation_callback on:
7436   https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_71/apis/gsk_attribute_set_callback.htm
7437
7438   As the upstream library never added a parameter like that to the API,
7439   we give up the wait and remove the dead code.
7440
7441   Closes: #8782
7442   Reviewed-by: Patrick Monnerat <patrick@monnerat.net>
7443
7444 - curl: free resource in error path
7445
7446   If the new filename cannot be generated due to memory pressure, free
7447   the allocated aname on the way out to avoid a small leak.
7448
7449   Closes: #8770
7450   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7451
7452 - curl: guard against size_t wraparound in no-clobber code
7453
7454   When generating the new filename, make sure we aren't overflowing the
7455   size_t limit when calculating the new length. This is mostly academic
7456   but good code hygeine nonetheless.
7457
7458   Closes: #8771
7459   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7460
7461 Daniel Stenberg (30 Apr 2022)
7462 - gha: build msh3
7463
7464   Closes #8779
7465
7466 - scripts/cijobs.pl: try "current branch" first then "master"
7467
7468 - [Yusuke Nakamura brought this change]
7469
7470   msh3: get msh3 version from MsH3Version
7471
7472   Closes #8762
7473
7474 - [Yusuke Nakamura brought this change]
7475
7476   msh3: psss remote_port to MsH3ConnectionOpen
7477
7478   MsH3 supported additional "Port" parameter to connect not hosted on
7479   443 port QUIC website.
7480
7481   * https://github.com/nibanks/msh3/releases/tag/v0.3.0
7482   * https://github.com/nibanks/msh3/pull/37
7483
7484   Closes #8762
7485
7486 - [Christian Weisgerber brought this change]
7487
7488   openssl: define HAVE_SSL_CTX_SET_EC_CURVES for libressl
7489
7490   SSL_CTX_set1_curves_list() has been available since LibreSSL 2.5.3,
7491   released five years ago.
7492
7493   Bug: https://curl.se/mail/lib-2022-04/0059.html
7494   Closes #8773
7495
7496 - http: move Curl_allow_auth_to_host()
7497
7498   It was mistakenly put within the CURL_DISABLE_HTTP_AUTH #ifdef
7499
7500   Reported-by: Michael Olbrich
7501   Fixes #8772
7502   Closes #8775
7503
7504 Daniel Gustafsson (29 Apr 2022)
7505 - msh3: print boolean value as text representation
7506
7507   Print the boolean value as its string representation instead of with
7508   %hhu which isn't a format we typically use.
7509
7510   Closes: #8763
7511   Reviewed-by: Nick Banks <nibanks@microsoft.com>
7512
7513 Daniel Stenberg (29 Apr 2022)
7514 - data/test376: set a proper name
7515
7516 - GHA/mbedtls: enabled nghttp2 in the build
7517
7518   Closes #8767
7519
7520 - mbedtls: fix compile when h2-enabled
7521
7522   Fixes #8766
7523   Reported-by: LigH-de on github
7524   Closes #8768
7525
7526 - RELEASE-NOTES: synced
7527
7528   bumped curlver to 7.83.1-dev
7529
7530 - SECURITY-PROCESS: extended
7531
7532   Also clarify BUG-BOUNTY.md with IBB details.
7533
7534   Closes #8754
7535
7536 - [Adam Rosenfield brought this change]
7537
7538   conn: fix typo 'connnection' -> 'connection' in two function names
7539
7540   Closes #8759
7541
7542 Version 7.83.0 (27 Apr 2022)
7543
7544 Daniel Stenberg (27 Apr 2022)
7545 - RELEASE-NOTES: synced
7546
7547   The 7.83.0 release
7548
7549 - docs/THANKS: contributors from 7.83.0
7550
7551 - test 898/974/976: require proxy to run
7552
7553   Fixes #8755
7554   Reported-by: Marc Hƶrsken
7555   Closes #8756
7556
7557 - gnutls: don't leak the SRP credentials in redirects
7558
7559   Follow-up to 620ea21410030 and 139a54ed0a172a
7560
7561   Reported-by: Harry Sintonen
7562   Closes #8752
7563
7564 - CURLOPT*TLSAUTH: they only work with OpenSSL or GnuTLS
7565
7566   Closes #8753
7567
7568 - openssl: don't leak the SRP credentials in redirects either
7569
7570   Follow-up to 620ea21410030
7571
7572   Reported-by: Harry Sintonen
7573   Closes #8751
7574
7575 - [Liam Warfield brought this change]
7576
7577   hyper: fix tests 580 and 581 for hyper
7578
7579   Hyper now has the ability to preserve header order. This commit adds a
7580   few lines setting the connection options for this feature.
7581
7582   Related to issue #8617
7583   Closes #8707
7584
7585 - conncache: remove name arg from Curl_conncache_find_bundle
7586
7587   To simplify, and also since the returned name is not the full actual
7588   name used for the check. The port number and zone id is also involved,
7589   so just showing the name is misleading.
7590
7591   Closes #8750
7592
7593 - tests: verify the fix for CVE-2022-27774
7594
7595    - Test 973 redirects from HTTP to FTP, clear auth
7596    - Test 974 redirects from HTTP to HTTP different port, clear auth
7597    - Test 975 redirects from HTTP to FTP, permitted to keep auth
7598    - Test 976 redirects from HTTP to HTTP different port, permitted to keep
7599      auth
7600
7601 - transfer: redirects to other protocols or ports clear auth
7602
7603   ... unless explicitly permitted.
7604
7605   Bug: https://curl.se/docs/CVE-2022-27774.html
7606   Reported-by: Harry Sintonen
7607   Closes #8748
7608
7609 - connect: store "conn_remote_port" in the info struct
7610
7611   To make it available after the connection ended.
7612
7613 - cookie.d: clarify when cookies are always sent
7614
7615 - test898: verify the fix for CVE-2022-27776
7616
7617   Do not pass on Authorization headers on redirects to another port
7618
7619 - http: avoid auth/cookie on redirects same host diff port
7620
7621   CVE-2022-27776
7622
7623   Reported-by: Harry Sintonen
7624   Bug: https://curl.se/docs/CVE-2022-27776.html
7625   Closes #8749
7626
7627 - libssh2: make the md5 comparison fail if wrong length
7628
7629   Making it just skip the check unless exactly 32 is too brittle. Even if
7630   the docs says it needs to be exactly 32, it is be safer to make the
7631   comparison fail here instead.
7632
7633   Reported-by: Harry Sintonen
7634   Bug: https://hackerone.com/reports/1549461
7635   Closes #8745
7636
7637 - conncache: include the zone id in the "bundle" hashkey
7638
7639   Make connections to two separate IPv6 zone ids create separate
7640   connections.
7641
7642   Reported-by: Harry Sintonen
7643   Bug: https://curl.se/docs/CVE-2022-27775.html
7644   Closes #8747
7645
7646 - [Patrick Monnerat brought this change]
7647
7648   url: check sasl additional parameters for connection reuse.
7649
7650   Also move static function safecmp() as non-static Curl_safecmp() since
7651   its purpose is needed at several places.
7652
7653   Bug: https://curl.se/docs/CVE-2022-22576.html
7654
7655   CVE-2022-22576
7656
7657   Closes #8746
7658
7659 - libssh2: compare sha256 strings case sensitively
7660
7661   Reported-by: Harry Sintonen
7662   Bug: https://hackerone.com/reports/1549435
7663   Closes #8744
7664
7665 - tool_getparam: error out on missing -K file
7666
7667   Add test 411 to verify.
7668
7669   Reported-by: Median Median Stride
7670   Bug: https://hackerone.com/reports/1542881
7671   Closes #8731
7672
7673 - [Tatsuhiro Tsujikawa brought this change]
7674
7675   ngtcp2: deal with sub-millisecond timeout
7676
7677   Closes #8738
7678
7679 - misc: update copyright year ranges
7680
7681 - c_escape: escape '?' in generated --libcurl code
7682
7683   In order to avoid the risk of it being used in an accidental trigraph in
7684   the generated code.
7685
7686   Reported-by: Harry Sintonen
7687   Bug: https://hackerone.com/reports/1548535
7688   Closes #8742
7689
7690 - [Philip Heiduck brought this change]
7691
7692   mlc: curl.zuul.vexxhost.dev is reachable again
7693
7694   remove it from ignorelist for linkcheck
7695
7696   Closes #8736
7697
7698 - [Tatsuhiro Tsujikawa brought this change]
7699
7700   ngtcp2: avoid busy loop in low CWND situation
7701
7702   Closes #8739
7703
7704 - TODO: telnet - exit immediately upon connection if stdin is /dev/null
7705
7706   Suggested-by: Robin A. Meade
7707   URL: https://curl.se/mail/archive-2022-04/0027.html
7708
7709 - [Kushal Das brought this change]
7710
7711   docs: updates spellings with full words
7712
7713   Closes #8730
7714
7715 - tests/FILEFORMAT.md: spellfix
7716
7717 Daniel Gustafsson (21 Apr 2022)
7718 - misc: fix typos
7719
7720   Fix a few random typos is comments and workflow names.
7721
7722 - macos: fix .plist installation into framework
7723
7724   The copy command introduced in e498a9b1f had leftover '>' from the
7725   previous sed command it replaced, which broke its syntax.  Fix by
7726   removing.
7727
7728   Reported-by: Emanuele Torre <torreemanuele6@gmail.com>
7729
7730 Daniel Stenberg (21 Apr 2022)
7731 - [Christopher Degawa brought this change]
7732
7733   Makefile: fix ca-bundle due to mk-ca-bundle.pl being moved
7734
7735   The script was moved in 8e22fc68e7dda43e9f but the lines that called it
7736   was not changed to reflect it's new position
7737
7738   Signed-off-by: Christopher Degawa <ccom@randomderp.com>
7739
7740   Closes #8728
7741
7742 Daniel Gustafsson (20 Apr 2022)
7743 - macos: set .plist version in autoconf
7744
7745   Set the libcurl version in libcurl.plist like how libcurl.vers is
7746   created.
7747
7748   Closes: #8692
7749   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7750   Reviewed-by: Nick Zitzmann <nickzman@gmail.com>
7751
7752 - cookies: Improve errorhandling for reading cookiefile
7753
7754   The existing programming had some issues with errorhandling for reading
7755   the cookie file. If the file failed to open, we would silently ignore it
7756   and continue as if there was no file (or stdin) passed. In this case, we
7757   would also call fclose() on the NULL FILE pointer, which is undefined
7758   behavior. Fix by ensuring that the FILE pointer is set before calling
7759   fclose on it, and issue a warning in case the file cannot be opened.
7760   Erroring out on nonexisting file would break backwards compatibility of
7761   very old behavior so we can't really go there.
7762
7763   Closes: #8699
7764   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7765   Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
7766
7767 Daniel Stenberg (20 Apr 2022)
7768 - libcurl-tutorial.3: spellfix and minor polish
7769
7770 - CURLINFO_PRIMARY_PORT.3: spellfix
7771
7772   Reported-by: Patrick Monnerat
7773
7774 - [Jay Dommaschk brought this change]
7775
7776   libssh: fix double close
7777
7778   libssh closes the socket in ssh_diconnect() so make sure that libcurl
7779   does not also close it.
7780
7781   Fixes #8708
7782   Closes #8718
7783
7784 Jay Satiro (20 Apr 2022)
7785 - [Gisle Vanem brought this change]
7786
7787   unit1620: call global_init before calling Curl_open
7788
7789   Curl_open calls the resolver init and on Windows if the resolver backend
7790   is c-ares then the Windows sockets library (winsock) must already have
7791   been initialized (via global init).
7792
7793   Ref: https://github.com/curl/curl/pull/8540#issuecomment-1059771800
7794
7795   Closes https://github.com/curl/curl/pull/8719
7796
7797 Daniel Stenberg (19 Apr 2022)
7798 - CURLINFO_PRIMARY_PORT.3: clarify which port this is
7799
7800   As it was not entirely clear previously.
7801
7802   Closes #8725
7803
7804 - CURLOPT_UNRESTRICTED_AUTH.3: extended explanation
7805
7806   Include details about Authentication headers.
7807
7808   Reported-by: Brad Spencer
7809   Fixes #8724
7810   Closes #8726
7811
7812 - .github/workflows/macos.yml: add a libssh job with c-ares
7813
7814   ... to enable the memdebug system
7815
7816   Closes #8720
7817
7818 - RELEASE-NOTES: synced
7819
7820 Jay Satiro (17 Apr 2022)
7821 - [Gisle Vanem brought this change]
7822
7823   docs/HTTP3.md: fix typo
7824
7825   also fix msh3 section formatting
7826
7827   Ref: https://github.com/curl/curl/commit/37492ebb#r70980087
7828
7829 Marc Hoersken (17 Apr 2022)
7830 - timediff.[ch]: add curlx helper functions for timeval conversions
7831
7832   Also move timediff_t definitions from timeval.h to timediff.h and
7833   then make timeval.h include the new standalone-capable timediff.h.
7834
7835   Reviewed-by: Jay Satiro
7836   Reviewed-by: Daniel Stenberg
7837
7838   Supersedes #5888
7839   Closes #8595
7840
7841 Daniel Stenberg (17 Apr 2022)
7842 - [Balakrishnan Balasubramanian brought this change]
7843
7844   tests: refactor server/socksd.c to support --unix-socket
7845
7846   Closes #8687
7847
7848 - [Emanuele Torre brought this change]
7849
7850   tool_paramhlp: use feof(3) to identify EOF correctly when using fread(3)
7851
7852   This loop was using the number of bytes read from the file as condition
7853   to keep reading.
7854
7855   From Linux's fread(3) man page:
7856   > On success, fread() and fwrite() return the number of items read or
7857   > written. This number equals the number of bytes transferred only when
7858   > size is 1. If an error occurs, or the end of the file is reached, the
7859   > return value is a short item count (or zero).
7860   >
7861   > The file position indicator for the stream is advanced by the number
7862   > of bytes successfully read or written.
7863   >
7864   > fread() does not distinguish between end-of-file and error, and
7865   > callers must use feof(3) and ferror(3) to determine which occurred.
7866
7867   This means that nread!=0 doesn't make much sense as an end condition for
7868   the loop: nread==0 doesn't necessarily mean that EOF has been reached or
7869   an error has occured (but that is usually the case) and nread!=0 doesn't
7870   necessarily mean that EOF has not been reached or that no read errors
7871   have occured. feof(3) and ferror(3) should be uses when using fread(3).
7872
7873   Currently curl has to performs an extra fread(3) call to get a return
7874   value equal to 0 to stop looping.
7875
7876   This usually "works" (even though nread==0 shouldn't be interpreted as
7877   EOF) if stdin is a pipe because EOF usually marks the "real" end of the
7878   stream, so the extra fread(3) call will return immediately and the extra
7879   read syscall won't be noticeable:
7880
7881       bash-5.1$ strace -e read curl -s -F file=@- 0x0.st <<< a 2>&1 |
7882       > tail -n 5
7883       read(0, "a\n", 4096)                    = 2
7884       read(0, "", 4096)                       = 0
7885       read(0, "", 4096)                       = 0
7886       http://0x0.st/oRs.txt
7887       +++ exited with 0 +++
7888       bash-5.1$
7889
7890   But this doesn't work if curl is reading from stdin, stdin is a
7891   terminal, and the EOF is being emulated using a shell with ^D. Two
7892   consecutive ^D will be required in this case to actually make curl stop
7893   reading:
7894
7895       bash-5.1$ curl -F file=@- 0x0.st
7896       a
7897       ^D^D
7898       http://0x0.st/oRs.txt
7899       bash-5.1$
7900
7901   A possible workaround to this issue is to use a program that handles EOF
7902   correctly to indirectly send data to curl's stdin:
7903
7904       bash-5.1$ cat - | curl -F file=@- 0x0.st
7905       a
7906       ^D
7907       http://0x0.st/oRs.txt
7908       bash-5.1$
7909
7910   This patch makes curl handle EOF properly when using fread(3) in
7911   file2memory() so that the workaround is not necessary.
7912
7913   Since curl was previously ignoring read errors caused by this fread(3),
7914   ferror(3) is also used in the condition of the loop: read errors and EOF
7915   will have the same meaning; this is done to somewhat preserve the old
7916   behaviour instead of making the command fail when a read error occurs.
7917
7918   Closes #8701
7919
7920 - gen.pl: change wording for mutexed options
7921
7922   Instead of saying "This option overrides NNN", now say "This option is
7923   mutually exclusive to NNN" in the generated man page ouput, as the
7924   option does not in all cases actually override the others but they are
7925   always mutually exclusive.
7926
7927   Ref: #8704
7928   Closes #8716
7929
7930 - curl: error out if -T and -d are used for the same URL
7931
7932   As one implies PUT and the other POST, both cannot be used
7933   simultaneously.
7934
7935   Add test 378 to verify.
7936
7937   Reported-by: Boris Verkhovskiy
7938   Fixes #8704
7939   Closes #8715
7940
7941 - lib: remove exclamation marks
7942
7943   ... from infof() and failf() calls. Make them less attention seeking.
7944
7945   Closes #8713
7946
7947 - fail.d: tweak the description
7948
7949   Reviewed-by: Daniel Gustafsson
7950   Suggested-by: Robert Charles Muir
7951   Ref: https://twitter.com/rcmuir/status/1514915401574010887
7952
7953   Closes #8714
7954
7955 Daniel Gustafsson (15 Apr 2022)
7956 - docs: Fix missing semicolon in example code
7957
7958   Multiple share examples were missing a semicolon on the line defining
7959   the CURLSHcode variable.
7960
7961   Closes: #8697
7962   Reported-by: Michael Kaufmann <mail@michael-kaufmann.ch>
7963   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7964
7965 - infof: consistent capitalization of warning messages
7966
7967   Ensure that all infof calls with a warning message are capitalized
7968   in the same way.  At some point we should probably set up a style-
7969   guide for infof but until then let's aim for a little consistenncy
7970   where we can.
7971
7972   Closes: #8711
7973   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7974
7975 - RELEASE-NOTES: synced
7976
7977 - [Matteo Baccan brought this change]
7978
7979   perl: removed a double semicolon at end of line
7980
7981   Remove double semicolons at end of line in Perl code.
7982
7983   Closes: #8709
7984   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
7985
7986 - curl_easy_header: fix typos in documentation
7987
7988   Closes: #8694
7989   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
7990
7991 Marcel Raad (11 Apr 2022)
7992 - appveyor: add Cygwin build
7993
7994   Closes https://github.com/curl/curl/pull/8693
7995
7996 - appveyor: only add MSYS2 to PATH where required
7997
7998   Closes https://github.com/curl/curl/pull/8693
7999
8000 Daniel Stenberg (10 Apr 2022)
8001 - [Tatsuhiro Tsujikawa brought this change]
8002
8003   ngtcp2: fix memory leak
8004
8005   Closes #8691
8006
8007 - [Tatsuhiro Tsujikawa brought this change]
8008
8009   ngtcp2: remove remote_addr which is not used in a meaningful way
8010
8011   Closes #8689
8012
8013 - [Tatsuhiro Tsujikawa brought this change]
8014
8015   ngtcp2: enlarge H3_SEND_SIZE
8016
8017   Make h3_SEND_SIZE larger because current value (20KiB) is too small
8018   for the high latency environment.
8019
8020   Closes #8690
8021
8022 - [Tatsuhiro Tsujikawa brought this change]
8023
8024   ngtcp2: fix HTTP/3 upload stall and avoid busy loop
8025
8026   This commit fixes HTTP/3 upload stall if upload data is larger than
8027   H3_SEND_SIZE.  Only check writability of socket if a stream is
8028   writable to avoid busy loop when QUIC flow control window is filled
8029   up, or upload buffer is full.
8030
8031   Closes #8688
8032
8033 - [Nick Banks brought this change]
8034
8035   msh3: add support for QUIC and HTTP/3 using msh3
8036
8037   Considered experimental, as the other HTTP/3 backends.
8038
8039   Closes #8517
8040
8041 - TODO: "SFTP with SCP://"
8042
8043 - GHA: move bearssl jobs over from zuul
8044
8045   Closes #8684
8046
8047 - data/DISABLED: disable test 313 on bearssl builds
8048
8049   Closes #8684
8050
8051 - runtests: add 'bearssl' as testable feature
8052
8053   Closes #8684
8054
8055 - GHA: add openssl3 jobs moved over from zuul
8056
8057   Closes #8683
8058
8059 - schannel: remove dead code that will never run
8060
8061   As the condition can't ever evaluate true
8062
8063   Reported-by: Andrey Alifanov
8064   Ref: #8675
8065   Closes #8677
8066
8067 - connecache: remove duplicate connc->closure_handle check
8068
8069   The superfluous extra check could cause analyzer false positives
8070   and doesn't serve any purpose.
8071
8072   Closes #8676
8073
8074 - [Michał Antoniak brought this change]
8075
8076   mbedtls: remove server_fd from backend
8077
8078   Closes #8682
8079
8080 - [Tatsuhiro Tsujikawa brought this change]
8081
8082   ngtcp2: use token when detecting :status header field
8083
8084   Closes #8679
8085
8086 - [Tatsuhiro Tsujikawa brought this change]
8087
8088   ngtcp2: make curl 1ms faster
8089
8090   Pass 0 for an already expired timer.
8091
8092   Closes #8678
8093
8094 - [Tatsuhiro Tsujikawa brought this change]
8095
8096   ngtcp2: fix QUIC_IDLE_TIMEOUT
8097
8098   QUIC_IDLE_TIMEOUT should be of type ngtcp2_duration which is
8099   nanoseconds resolution.
8100
8101   Closes #8678
8102
8103 - English: use American spelling consistently
8104
8105   Authorization, Initialization, Organization etc.
8106
8107   Closes #8673
8108
8109 Daniel Gustafsson (5 Apr 2022)
8110 - [Sascha Zengler brought this change]
8111
8112   BUGS: Fix incorrect punctuation
8113
8114   Closes #8672
8115   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
8116
8117 Daniel Stenberg (4 Apr 2022)
8118 - tool_listhelp.c: uppercase URL
8119
8120 - RELEASE-NOTES: synced
8121
8122 - http: streamclose "already downloaded"
8123
8124   Instead of connclose()ing, since when HTTP/2 is used it doesn't need to
8125   close the connection as stopping the current transfer is enough.
8126
8127   Reported-by: Evangelos Foutras
8128   Closes #8665
8129
8130 Jay Satiro (1 Apr 2022)
8131 - ftp: fix error message for partial file upload
8132
8133   - Show the count of bytes written on partial file upload.
8134
8135   Prior to this change the error message mistakenly showed the count of
8136   bytes read, not written.
8137
8138   Bug: https://github.com/curl/curl/discussions/8637
8139   Reported-by: Taras Kushnir
8140
8141   Closes https://github.com/curl/curl/pull/8649
8142
8143 Daniel Stenberg (1 Apr 2022)
8144 - http: correct the header error message to say colon
8145
8146   Not semicolon
8147
8148   Reported-by: Gisle Vanem
8149   Ref: #8666
8150   Closes #8667
8151
8152 - lib: #ifdef on USE_HTTP2 better
8153
8154   ... as nghttp2 might not be the library that provides HTTP/2 support.
8155
8156   Closes #8661
8157
8158 - [Michał Antoniak brought this change]
8159
8160   mbedtls: remove 'protocols' array from backend when ALPN is not used
8161
8162   Closes #8663
8163
8164 - http2: RST the stream if we stop it on our own will
8165
8166   For the "simulated 304" case the done-call isn't considered "premature"
8167   but since the server didn't close the stream it needs to be reset to
8168   stop delivering data.
8169
8170   Closes #8664
8171
8172 - http: close the stream (not connection) on time condition abort
8173
8174   Closes #8664
8175
8176 - http2: handle DONE called for the paused stream
8177
8178   As it could otherwise stall all streams on the connection
8179
8180   Reported-by: Evangelos Foutras
8181   Fixes #8626
8182   Closes #8664
8183
8184 - tls: make mbedtls and NSS check for h2, not nghttp2
8185
8186   This makes them able to also negotiate HTTP/2 even when built to use
8187   hyper for h2.
8188
8189   Closes #8656
8190
8191 - tests/libtest/lib670.c: fixup the copyright year range
8192
8193   follow-up to b54e18640ea4b7
8194
8195 - [Leandro Coutinho brought this change]
8196
8197   lib670: avoid double check result
8198
8199   Closes #8660
8200
8201 - vtls: use a generic "ALPN, server accepted" message
8202
8203   Closes #8657
8204
8205 - vtls: use a backend standard message for "ALPN: offers %s"
8206
8207   I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the
8208   infof() call also needs a string argument: the ALPN ID.
8209
8210   Closes #8657
8211
8212 - [Christian Schmitz brought this change]
8213
8214   strcase.h: add comment about the return code
8215
8216   Tool often we run into expecting this to work like strcmp, but it
8217   returns 1 instead of 0 for match.
8218
8219   Closes #8658
8220
8221 - vtls: provide a unified APLN-disagree string for all backends
8222
8223   Also rephrase to make it sound less dangerous:
8224
8225    "ALPN: server did not agree on a protocol. Uses default."
8226
8227   Reported-by: Nick Coghlan
8228   Fixes #8643
8229   Closes #8651
8230
8231 - projects/README: converted to markdown
8232
8233   Closes #8652
8234
8235 - misc: spelling fixes
8236
8237   Mostly in comments but also in the -w documentation for headers_json.
8238
8239   Closes #8647
8240
8241 - KNOW_BUGS: HTTP3/Transfer closed with n bytes remaining to read
8242
8243   "HTTP/3 does not support client certs" considered fixed, at least with
8244   the ngtcp2 backend.
8245
8246   Closes #8523
8247
8248 - CURLOPT_PREQUOTE.3: only works for FTP file transfers, not dirs
8249
8250   Also add to quote.d. Add to TODO as something to add in a future.
8251
8252   Reported-by: anon00000000 on github
8253   Closes #8602
8254   Closes #8648
8255
8256 - RELEASE-NOTES: synced
8257
8258 - pop3/smtp: return *WEIRD_SERVER_REPLY when not understood
8259
8260   This leaves the CURLE_RECV_ERROR error code for explicit failure to
8261   receive network data and allows users to better separate the problems.
8262
8263   Ref #8356
8264   Reported-by: Rianov Viacheslav
8265   Closes #8506
8266
8267 - docs: lots of minor language polish
8268
8269   Mostly based on recent language decisions from "everything curl":
8270
8271   - remove contractions (isn't => is not)
8272   - *an* HTTP (consistency)
8273   - runtime (no hyphen)
8274   - backend (no hyphen)
8275   - URL is uppercase
8276
8277   Closes #8646
8278
8279 Jay Satiro (29 Mar 2022)
8280 - projects: Update VC version names for VS2017, VS2022
8281
8282   - Rename VC15 -> VC14.10, VC17 -> VC14.30.
8283
8284   The projects directory that holds the pre-generated Visual Studio
8285   project files uses VC<ver> to indicate the MSVC version. At some point
8286   support for Visual Studio 2017 (Visual Studio version 15 which uses MSVC
8287   14.10) was added as VC15. Visual Studio 2022 (Visual Studio version 17
8288   which uses MSVC 14.30) project files were recently added and followed
8289   that same format using VC17.
8290
8291   There is no such MSVC version (yet) as VC15 or VC17.
8292
8293   For VS 2017 for example, the name we use is correct as either VS17,
8294   VS2017, VC14.10. I opted for the latter since we use VC for earlier
8295   versions (eg VC10, VC12, etc).
8296
8297   Ref: https://github.com/curl/curl/pull/8438#issuecomment-1037070192
8298
8299   Closes https://github.com/curl/curl/pull/8447
8300
8301 Daniel Stenberg (29 Mar 2022)
8302 - mqtt: better handling of TCP disconnect mid-message
8303
8304   Reported-by: Jenny Heino
8305   Bug: https://hackerone.com/reports/1521610
8306   Closes #8644
8307
8308 - CURLOPT_DISALLOW_USERNAME_IN_URL.3: use uppercase URL
8309
8310 - [Ian Blanes brought this change]
8311
8312   docs/DYNBUF: clarify documentation for Curl_dyn_ptr and Curl_dyn_uptr
8313
8314   Closes #8606
8315
8316 - [Ian Blanes brought this change]
8317
8318   curl: fix segmentation fault for empty output file names.
8319
8320   Function glob_match_url set *result to NULL when called with filename =
8321   "", producing an indirect NULL pointer dereference.
8322
8323   Closes #8606
8324
8325 - TODO: Read keys from ~/.ssh/id_ecdsa, id_ed25519
8326
8327   It would be nice to expand the list of key locations curl uses for the
8328   newer key types supported by libssh2.
8329
8330   Closes #8586
8331
8332 - ngtcp2: update to work after recent ngtcp2 updates
8333
8334   Assisted-by: Tatsuhiro Tsujikawa
8335   Reported-by: jurisuk on github
8336   Fixes #8638
8337   Closes #8639
8338
8339 - [Farzin brought this change]
8340
8341   CURLOPT_PROGRESSFUNCTION.3: fix typo in example
8342
8343   Closes #8636
8344
8345 - curl/header_json: output the header names in lowercase
8346
8347   To better allow json[ā€œheaderā€].
8348
8349   Reported-by: Peter Korsgaard
8350   Bug: https://daniel.haxx.se/blog/2022/03/24/easier-header-picking-with-curl/comment-page-1/#comment-25878
8351   Closes #8633
8352
8353 - RELEASE-NOTES: synced
8354
8355 - headers.h: make Curl_headers_push() be CURLE_OK when not built
8356
8357   ... to avoid errors when the function isn't there.
8358
8359   Reported-by: Marcel Raad
8360   Fixes #8627
8361   Closes #8628
8362
8363 - scripts: move three scripts from lib/ to scripts/
8364
8365   Move checksrc.pl, firefox-db2pem.sh and mk-ca-bundle.pl since they don't
8366   particularly belong in lib/
8367
8368   Also created an EXTRA_DIST= in scripts/Makefile.am instead of specifying
8369   those files in the root Makefile.am
8370
8371   Closes #8625
8372
8373 Marc Hoersken (23 Mar 2022)
8374 - lib/warnless.[ch]: only check for WIN32 and ignore _WIN32
8375
8376   curl_setup.h automatically defines WIN32 if just _WIN32 is defined.
8377
8378   Therefore make sure curl_setup.h is included through warnless.h.
8379
8380   Reviewed-by: Daniel Stenberg
8381   Reviewed-by: Jay Satiro
8382
8383   Closes #8594
8384
8385 - tests/server/util.h: align WIN32 condition with util.c
8386
8387   There is no need to test for both _WIN32 and WIN32 as curl_setup.h
8388   automatically defines the later if the first one is defined.
8389
8390   Also tests/server/util.c is only checking for WIN32 arouund the
8391   implementation of win32_perror, so just defining _WIN32
8392   would not be sufficient for a successful compilation.
8393
8394   Reviewed-by: Daniel Stenberg
8395   Reviewed-by: Jay Satiro
8396
8397   Closes #8594
8398
8399 Daniel Stenberg (22 Mar 2022)
8400 - [Philip Heiduck brought this change]
8401
8402   firefox-db2pem.sh: make the shell script safer
8403
8404   Reported by lift
8405
8406   Closes #8616
8407
8408 Jay Satiro (22 Mar 2022)
8409 - gtls: fix build for disabled TLS-SRP
8410
8411   Prior to this change if, at build time, the GnuTLS backend was found to
8412   have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl
8413   via --disable-tls-srp (!USE_TLS_SRP) then a build error would occur.
8414
8415   Bug: https://curl.se/mail/lib-2022-03/0046.html
8416   Reported-by: Robert Brose
8417
8418   Closes https://github.com/curl/curl/pull/8604
8419
8420 - winbuild: Add a Visual Studio example to the README
8421
8422   - Add an example that explains in detail how the user can add libcurl to
8423     their Visual Studio project.
8424
8425   Ref: https://github.com/curl/curl/issues/8591
8426
8427   Closes https://github.com/curl/curl/pull/8592
8428
8429 - docs/opts: Mention Schannel client cert type is P12
8430
8431   Schannel backend code behaves same as Secure Transport, it expects a P12
8432   certificate file or the name of a certificate already in the user's OS
8433   key store. Also, both backends ignore CURLOPT_SSLKEY (tool: --key)
8434   because they expect the private key to already be available from the
8435   keystore or P12 certificate.
8436
8437   Ref: https://github.com/curl/curl/discussions/8581#discussioncomment-2337260
8438
8439   Closes https://github.com/curl/curl/pull/8587
8440
8441 Daniel Stenberg (22 Mar 2022)
8442 - lib1945: fix compiler warning 4706 on MSVC
8443
8444   Follow-up from d1e4a677340c
8445
8446   Closes #8623
8447
8448 - [Philip Heiduck brought this change]
8449
8450   ci/event-based.yml: improve impacket install
8451
8452   skip python3-pip
8453   install impacket with library module
8454
8455   Closes #8621
8456
8457 - test1459: disable for oldlibssh
8458
8459   This test with libssh 0.9.3 works fine on github but fails on circleci.
8460   Might as well disable this test for oldlibssh installations.
8461
8462   Closes #8622
8463
8464 - test1135: sync with recent API updates
8465
8466   This test verifies that the order of functions in public headers remain
8467   the same but hasn't been updated to care for recently added header
8468   files. The order is important for some few platforms - or VERSIONINFO
8469   needs to updated.
8470
8471   This fix also updates VERSIONINFO to be sure.
8472
8473   Closes #8620
8474
8475 - curl_easy_nextheader.3: fix two typos
8476
8477   Reported-by: Timothe Litt
8478   Bug: https://curl.se/mail/lib-2022-03/0060.html
8479
8480 - options: remove mistaken space before paren in prototype
8481
8482 - cirrus: add --enable-headers-api for some windows builds
8483
8484 - GHA: --enable-headers-api in all workflows
8485
8486 - lib: make the headers API depend on --enable-headers-api
8487
8488 - configure: add --enable-headers-api to enable the headers API
8489
8490   Defaults to disabled while labeled EXPERIMENTAL.
8491
8492   Make all the headers API tests require 'headers-api' to run.
8493
8494 - test1671: verify -w '%{header_json}
8495
8496 - test1670: verify -w %header{}
8497
8498 - curl: add %{header_json} support in -w handling
8499
8500   Outputs all response headers as a JSON object.
8501
8502 - curl: add %header{name} support in -w handling
8503
8504   Outputs the response header 'name'
8505
8506 - header api: add curl_easy_header and curl_easy_nextheader
8507
8508   Add test 1940 to 1946 to verify.
8509
8510   Closes #8593
8511
8512 - test1459: remove the different exit code for oldlibssh
8513
8514   When using libssh/0.9.3/openssl/zlib, we seem to be getting the "right"
8515   error code.
8516
8517   Closes #8490
8518
8519 - libssh: unstick SFTP transfers when done event-based
8520
8521   Test 604 and 606 (at least).
8522
8523   Closes #8490
8524
8525 - gha: move the event-based test over from Zuul
8526
8527   Switched libssh2 to libssh
8528
8529   Closes #8490
8530
8531 - RELEASE-NOTES: synced
8532
8533 - http: return error on colon-less HTTP headers
8534
8535   It's a protocol violation and accepting them leads to no good.
8536
8537   Add test case 398 to verify
8538
8539   Closes #8610
8540
8541 - test718: edited slightly to return better HTTP
8542
8543   Since hyper is picky and won't play ball otherwise.
8544
8545   Bug: https://github.com/hyperium/hyper/issues/2783
8546   Reported-by: Daniel Valenzuela
8547   Closes #8614
8548
8549 - hyper: no h2c support
8550
8551   Make tests require h2c feature present to run, and only set h2c if
8552   nghttp2 is used in the build. Hyper does not support it.
8553
8554   Remove those tests from DISABLED
8555
8556   Fixes #8605
8557   Closes #8613
8558
8559 - configure: bump the copyright year range int the generated output
8560
8561 - [Andreas Falkenhahn brought this change]
8562
8563   BINDINGS.md: add Hollywood binding
8564
8565   Closes #8609
8566
8567 - HISTORY: add some 2022 data
8568
8569 - scripts/copyright.pl: ignore the new mlc_config.json file
8570
8571 - [Philip Heiduck brought this change]
8572
8573   mlc_config.json: add file to ignore known troublesome URLs
8574
8575   This is the config file for the CI markdown link checker and lets us
8576   filter URLs that are known to cause problems. Like
8577   https://curl.zuul.vexxhost.dev/ for now.
8578
8579   Closes #8597
8580
8581 - [Philip Heiduck brought this change]
8582
8583   winbuild/README.md: fixup dead link
8584
8585   Closes #8597
8586
8587 Jay Satiro (18 Mar 2022)
8588 - rtsp: don't let CSeq error override earlier errors
8589
8590   - When done, if an error has already occurred then don't check the
8591     sequence numbers for mismatch.
8592
8593   A sequence number may not have been received if an error occurred.
8594
8595   Prior to this change a sequence mismatch error would override earlier
8596   errors. For example, a server that returns nothing would cause error
8597   CURLE_GOT_NOTHING in Curl_http_done which was then overridden by
8598   CURLE_RTSP_CSEQ_ERROR in rtsp_done.
8599
8600   Closes https://github.com/curl/curl/pull/8525
8601
8602 - lib: fix some misuse of curlx_convert_wchar_to_UTF8
8603
8604   curlx_convert_wchar_to_UTF8 must be freed by curlx_unicodefree, but
8605   prior to this change some uses mistakenly called free.
8606
8607   I've reviewed all other uses of curlx_convert_wchar_to_UTF8 and
8608   curlx_convert_UTF8_to_wchar.
8609
8610   Ref: https://github.com/curl/curl/commit/1d5d0ae
8611
8612   Closes https://github.com/curl/curl/pull/8521
8613
8614 - mk-ca-bundle.pl: Use stricter logic to process the certificates
8615
8616   .. and bump version to 1.29.
8617
8618   This change makes the script properly ignore unknown blocks and
8619   otherwise fail when Mozilla changes the certdata format in ways we
8620   don't expect. Though this is less flexible behavior it makes it far less
8621   likely that an invalid certificate can slip through.
8622
8623   Prior to this change the state machine did not always properly reset,
8624   and it was possible that a certificate marked as invalid could then
8625   later be marked as valid when there was conflicting trust info or
8626   an unknown block was erroneously processed as part of the certificate.
8627
8628   Ref: https://github.com/curl/curl/pull/7801#pullrequestreview-768384569
8629
8630   Closes https://github.com/curl/curl/pull/8411
8631
8632 Marcel Raad (17 Mar 2022)
8633 - test375: fix line endings on Windows
8634
8635   Closes https://github.com/curl/curl/pull/8599
8636
8637 Daniel Stenberg (17 Mar 2022)
8638 - http: reject header contents with nul bytes
8639
8640   They are not allowed by the protocol and allowing them risk that curl
8641   misbehaves somewhere where C functions are used but won't work on the
8642   full contents. Further, they are not supported by hyper and they cause
8643   problems for the new coming headers API work.
8644
8645   Updated test 262 to verify and enabled it for hyper as well
8646
8647   Closes #8601
8648
8649 - [Philip Heiduck brought this change]
8650
8651   CI: Do not use buildconf. Instead, just use: autoreconf -fi
8652
8653   Closes #8596
8654
8655 - RELEASE-NOTES: synced
8656
8657 Jay Satiro (14 Mar 2022)
8658 - libssh: Improve fix for missing SSH_S_ stat macros
8659
8660   - If building libcurl against an old libssh version missing SSH_S_IFMT
8661     and SSH_S_IFLNK then use the values from a supported version.
8662
8663   Prior to this change if libssh did not define SSH_S_IFMT and SSH_S_IFLNK
8664   then S_IFMT and S_IFLNK, respectively, were used instead. The problem
8665   with that is the user's S_ stat macros don't have the same values across
8666   platforms. For example Windows has values different from Linux.
8667
8668   Follow-up to 7b0fd39.
8669
8670   Ref: https://github.com/curl/curl/pull/8511#discussion_r815292391
8671   Ref: https://github.com/curl/curl/pull/8574
8672
8673   Closes https://github.com/curl/curl/pull/8588
8674
8675 Marc Hoersken (13 Mar 2022)
8676 - tool and tests: force flush of all buffers at end of program
8677
8678   On Windows data can be lost in buffers in case of abnormal program
8679   termination, especially in process chains as seen due to flaky tests.
8680   Therefore flushing all buffers manually should avoid this data loss.
8681
8682   In the curl tool we play the safe game by only flushing write buffers,
8683   but in the testsuite where we manage all buffers, we flush everything.
8684
8685   This should drastically reduce Windows CI and testsuite flakiness.
8686
8687   Reviewed-by: Daniel Stenberg
8688
8689   Supersedes #7833 and #6064
8690   Closes #8516
8691
8692 Daniel Stenberg (12 Mar 2022)
8693 - [Jan Venekamp brought this change]
8694
8695   BearSSL: add CURLOPT_SSL_CTX_FUNCTION support
8696
8697   Closes #8478
8698
8699 - [Jan Venekamp brought this change]
8700
8701   BearSSL: add CURLOPT_SSL_CIPHER_LIST support
8702
8703   Closes #8477
8704
8705 Dan Fandrich (11 Mar 2022)
8706 - tool_cb_hdr: Turn the Location: into a terminal hyperlink
8707
8708   This turns even relative URLs into clickable hyperlinks in a supported
8709   terminal when --styled-output is enabled. Many terminals already turn
8710   URLs into clickable links but there is not enough information in a
8711   relative URL to do this automatically otherwise.
8712
8713 - keepalive-time.d: It takes many probes to detect brokenness
8714
8715 Daniel Stenberg (11 Mar 2022)
8716 - [HexTheDragon brought this change]
8717
8718   curl: add --no-clobber
8719
8720   Does not overwrite output files if they already exist
8721
8722   Closes #7708
8723   Co-authored-by: Daniel Stenberg
8724
8725 - RELEASE-NOTES: synced
8726
8727   also bump next pending version to become 7.83.0
8728
8729 - [Jean-Philippe Menil brought this change]
8730
8731   openssl: check SSL_get_peer_cert_chain return value
8732
8733   Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
8734   Closes #8579
8735
8736 - [Jay Satiro brought this change]
8737
8738   mk-ca-bundle.vbs: delete this script in favor of mk-ca-bundle.pl
8739
8740   mk-ca-bundle.vbs is a Windows-specific script for Mozilla certificate
8741   extraction, similar to mk-ca-bundle.pl which runs on any platform. The
8742   vbs version has not been maintained while the perl version has been
8743   maintained with improvements and security fixes. I don't think it's
8744   worth the work to maintain both versions. Windows users should be able
8745   to use mk-ca-bundle.pl without any problems, as long as they have perl.
8746
8747   Closes #8412
8748
8749 - CURLSHOPT_UNLOCKFUNC.3: fix the callback prototype
8750
8751   Copy and paste error
8752
8753   Reported-by: Francisco Olarte
8754   Fixes #8573
8755   Closes #8577
8756
8757 - remove-on-error.d: typo
8758
8759   Reported-by: Colin Leroy
8760   Bug: https://github.com/curl/curl/pull/8503#pullrequestreview-906520081
8761
8762 - curl: add --remove-on-error
8763
8764   If a transfer returns an error, using this option makes curl remove the
8765   leftover downloded (partial) local file before exiting.
8766
8767   Added test 376 to verify
8768
8769   Closes #8503
8770
8771 - libssh: fix build with old libssh versions
8772
8773   ... that don't have the SSH_S_* defines. Spotted on a machine using
8774   libssh 0.7.3
8775
8776   Closes #8574
8777
8778 - hyper: fix status_line() return code
8779
8780   Detected while working on #7708 that happened to trigger an error here
8781   with a new test case.
8782
8783   Closes #8572
8784
8785 - [Alejandro R. SedeƱo brought this change]
8786
8787   configure.ac: move -pthread CFLAGS setting back where it used to be
8788
8789   The fix for #8276 proposed in #8374 set `CFLAGS="$CFLAGS -pthead"`
8790   earlier than it used to be set, applying it in cases where it should not
8791   have been applied.
8792
8793   This moves the AIX XLC check to a new `case $host in` block inside of
8794   the `if test "$USE_THREADS_POSIX" != "1"` block, where `CFLAGS="$CFLAGS
8795   -pthead"` used to happen.
8796
8797   Fixes #8541
8798   Closes #8542
8799
8800 - [Tatsuhiro Tsujikawa brought this change]
8801
8802   ngtcp2: add client certificate authentication for OpenSSL
8803
8804   Closes #8522
8805
8806 - tool_operate: fix a scan-build warning
8807
8808   ... and avoid the temp storing of the return code in a diff variable.
8809
8810   Closes #8565
8811
8812 - test375: verify that --proxy errors out if proxy is disabled in the build
8813
8814   Closes #8565
8815
8816 - curl: error out when options need features not present in libcurl
8817
8818   Trying to use a proxy when libcurl was built with proxy support disabled
8819   should make curl error out properly.
8820
8821   Remove knowledge of disabled features from the tool code and instead
8822   make it properly respond to what libcurl returns. Update all tests to
8823   properly require the necessary features to be present/absent so that the
8824   test suite can still be run even with libcurl builds with disabled
8825   features.
8826
8827   Ref: https://curl.se/mail/archive-2022-03/0013.html
8828   Closes #8565
8829
8830 - ngtcp2: disconnect the QUIC connection proper
8831
8832   Reported-by: mehatzri on github
8833   Reviewed-by: Tatsuhiro Tsujikawa
8834   Fixes #8534
8835   closes #8569
8836
8837 Dan Fandrich (9 Mar 2022)
8838 - test386: Fix an incorrect test markup tag
8839
8840 Daniel Stenberg (9 Mar 2022)
8841 - [Don J Olmstead brought this change]
8842
8843   nonblock: restore setsockopt method to curlx_nonblock
8844
8845   The implementation using setsockopt was removed when BeOS support was
8846   purged. However this functionality wasn't BeOS specific, it is still
8847   used by for example Orbis OS (Playstation 4/5 OS).
8848
8849   Closes #8562
8850
8851 - openssl: fix CN check error code
8852
8853   Due to a missing 'else' this returns error too easily.
8854
8855   Regressed in: d15692ebb
8856
8857   Reported-by: Kristoffer Gleditsch
8858   Fixes #8559
8859   Closes #8560
8860
8861 - [Frank Meier brought this change]
8862
8863   connect: make Curl_getconnectinfo work with conn cache from share handle
8864
8865   Closes #8524