                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 7.78.0 (21 Jul 2021)

Daniel Stenberg (21 Jul 2021)
- RELEASE-NOTES: synced
  
  curl 7.78.0 release

- winbuild/MakefileBuild.vc: bump copyright year

Jay Satiro (21 Jul 2021)
- docs: mention max-filesize options also apply to MQTT transfers
  
  Also make it clearer that the caveat 'if the file size is unknown it
  the option will have no effect' may apply to protocols other than FTP
  and HTTP.
  
  Reported-by: Josh Soref
  
  Fixes https://github.com/curl/curl/issues/7453

- [Josh Soref brought this change]

  docs/cmdline: fix grammar and typos

- [Josh Soref brought this change]

  dump-header.d: Drop suggestion to use for cookie storage
  
  Since --cookie-jar is the preferred way to store cookies, no longer
  suggest using --dump-header to do so.
  
  Co-authored-by: Daniel Stenberg
  
  Closes https://github.com/curl/curl/issues/7414

- [Josh Soref brought this change]

  doc/cmdline: fix grammar and typos
  
  Closes https://github.com/curl/curl/pull/7454
  Closes https://github.com/curl/curl/pull/7455
  Closes https://github.com/curl/curl/pull/7456
  Closes https://github.com/curl/curl/pull/7459
  Closes https://github.com/curl/curl/pull/7460
  Closes https://github.com/curl/curl/pull/7461
  Closes https://github.com/curl/curl/pull/7462
  Closes https://github.com/curl/curl/pull/7463

Daniel Stenberg (20 Jul 2021)
- vtls: fix connection reuse checks for issuer cert and case sensitivity
  
  CVE-2021-22924
  
  Reported-by: Harry Sintonen
  Bug: https://curl.se/docs/CVE-2021-22924.html

- sectransp: check for client certs by name first, then file
  
  CVE-2021-22926
  
  Bug: https://curl.se/docs/CVE-2021-22926.html
  
  Assisted-by: Daniel Gustafsson
  Reported-by: Harry Sintonen

- telnet: fix option parser to not send uninitialized contents
  
  CVS-2021-22925
  
  Reported-by: Red Hat Product Security
  Bug: https://curl.se/docs/CVE-2021-22925.html

Jay Satiro (20 Jul 2021)
- connect: fix wrong format specifier in connect error string
  
  0842175 (not in any release) used the wrong format specifier (long int)
  for timediff_t. On an OS such as Windows libcurl's timediff_t (usually
  64-bit) is bigger than long int (32-bit). In 32-bit Windows builds the
  upper 32-bits of the timediff_t were erroneously then used by the next
  format specifier. Usually since the timeout isn't larger than 32-bits
  this would result in null as a pointer to the string with the reason for
  the connection failing. On other OSes or maybe other compilers it could
  probably result in garbage values (ie crash on deref).
  
  Before:
  Failed to connect to localhost port 12345 after 1201 ms: (nil)
  
  After:
  Failed to connect to localhost port 12345 after 1203 ms: Connection refused
  
  Closes https://github.com/curl/curl/pull/7449

- winbuild: support alternate nghttp2 static lib name
  
  - Support both nghttp2.lib and nghttp2_static.lib for static nghttp2.
  
  nghttp2 briefly changed its static lib name to nghttp2_static, but then
  made the _static suffix optional.
  
  Ref: https://github.com/nghttp2/nghttp2/pull/1394
  Ref: https://github.com/nghttp2/nghttp2/pull/1418
  Ref: https://github.com/nghttp2/nghttp2/issues/1466
  
  Reported-by: Pierre Yager
  
  Fixes https://github.com/curl/curl/issues/7446
  Closes https://github.com/curl/curl/pull/7447

- [Josh Soref brought this change]

  docs/cmdline: fix grammar and typos
  
  Closes https://github.com/curl/curl/pull/7432
  Closes https://github.com/curl/curl/pull/7436
  Closes https://github.com/curl/curl/pull/7438
  Closes https://github.com/curl/curl/pull/7440
  Closes https://github.com/curl/curl/pull/7445

- [Josh Soref brought this change]

  delegation.d: mention what happens when used multiple times
  
  Closes https://github.com/curl/curl/pull/7408

- [Josh Soref brought this change]

  create-file-mode.d: mention what happens when used multiple times
  
  Closes https://github.com/curl/curl/pull/7407

- [Josh Soref brought this change]

  config.d: split comments and option-per line
  
  Closes https://github.com/curl/curl/pull/7405

Daniel Stenberg (19 Jul 2021)
- misc: copyright year range updates

- mailmap: add Tobias and Timur

Daniel Gustafsson (18 Jul 2021)
- [Josh Soref brought this change]

  docs: spell out directories instead of dirs in create-dirs
  
  Write out directories rather than using the dirs abbrevation. Also
  use plural form consistently, even if the code in the end might just
  create a single directory.
  
  Closes #7406
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

- [Tobias Nyholm brought this change]

  docs: correct spelling errors and a broken link
  
  Update grammar and spelling in docs and source code comments.
  
  Closes: #7427
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Marc Hoersken (18 Jul 2021)
- CI/cirrus: install impacket from PyPI instead of FreeBSD packages
  
  Availability of impacket as FreeBSD package is too flaky.
  
  Stick to legacy version of cryptography which still
  supports OpenSSL version 1.0.2 due to FreeBSD 11.
  
  Reviewed-by: Daniel Stenberg
  
  Closes #7418

Daniel Stenberg (18 Jul 2021)
- [Josh Soref brought this change]

  docs/cmdline: mention what happens when used multiple times
  
  For --dns-ipv4-addr, --dns-ipv6-addr and --dns-servers
  
  Closes #7410
  Closes #7411
  Closes #7412

- [MAntoniak brought this change]

  lib: fix compiler warnings with CURL_DISABLE_NETRC
  
  warning C4189: 'netrc_user_changed': local variable is initialized but
  not referenced
  
  warning C4189: 'netrc_passwd_changed': local variable is initialized but
  not referenced
  
  Closes #7423

- disable-epsv.d: remove duplicate "(FTP)"
  
  ... since the tooling adds that to the output based on the "Protocols:"
  tag.

- [Max Zettlmeißl brought this change]

  docs: make the documentation for --etag-save match the program behaviour
  
  When using curl with the option `--etag-save` I expected it to save the
  ETag without its surrounding quotes, as stated by the documentation in
  the repository and by the generated man pages.
  
  My first endeavour was to fix the program, but while investigating the
  history of the relevant parts, I discovered that curl once saved the
  ETag without the quotes.  This was undone by Daniel Stenberg in commit
  `98c94596f5928840177b6bd3c7b0f0dd03a431af`, therefore I decided that in
  this case the documentation should be adjusted to match the behaviour of
  curl.
  
  The changed save behaviour also made parts of the `--etag-compare`
  documentation wrong or superfluous, so I adjusted those accordingly.
  
  Closes #7429

- [Josh Soref brought this change]

  write-out.d: add missing periods
  
  Closes #7404

- [Josie Huddleston brought this change]

  easy: during upkeep, attach Curl_easy to connections in the cache
  
  During the protocol-specific parts of connection upkeep, some code
  assumes that the data->conn pointer already is set correctly.  However,
  there's currently no guarantee of that in the code.
  
  This fix temporarily attaches each connection to the Curl_easy object
  before performing the protocol-specific connection check on it, in a
  similar manner to the connection checking in extract_if_dead().
  
  Fixes #7386
  Closes #7387
  Reported-by: Josie Huddleston

- [Josh Soref brought this change]

  cleanup: spell DoH with a lowercase o
  
  Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
  
  Closes #7413

- [Josh Soref brought this change]

  TheArtOfHttpScripting: polish
  
  - add missing backticks and comma
  
  - fix proxy description:
  
  * example proxy isn't local
  * locally doesn't really make sense
  
  Closes #7416

- [Josh Soref brought this change]

  form.d: add examples of `,`/`;` for file[name]
  
  Fixes #7415
  Closes #7417

- [MAntoniak brought this change]

  mbedtls: Remove unnecessary include
  
  - curl_setup.h: all references to mbedtls_md4* functions and structures
    are in the md4.c. This file already includes the <mbedtls/md4.h> file
    along with the file existence control (defined (MBEDTLS_MD4_C))
  
  - curl_ntlm_core.c: unnecessary include - repeated below
  
  Closes #7419

- RELEASE-NOTES: synced

Jay Satiro (16 Jul 2021)
- [User Sg brought this change]

  multi: fix crash in curl_multi_wait / curl_multi_poll
  
  Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a
  VALID_SOCK check to one of the loops through the sockets but not the
  other.
  
  Reported-by: sylgal@users.noreply.github.com
  Authored-by: sylgal@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/7379
  Closes https://github.com/curl/curl/pull/7389

- [Daniel Gustafsson brought this change]

  tool_help: remove unused define
  
  The PRINT_LINES_PAUSE macro is no longer used, and has been mostly
  cleaned out but one occurrence remained.
  
  Closes https://github.com/curl/curl/pull/7380

- [Sergey Markelov brought this change]

  build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS
  
  fix compiler warnings about unused variables and parameters when
  built with --disable-verbose.
  
  Closes https://github.com/curl/curl/pull/7377

- [Andrea Pappacoda brought this change]

  build: fix IoctlSocket FIONBIO check
  
  Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked
  for (lowercase) ioctlsocket when it should have checked for IoctlSocket.
  
  Closes https://github.com/curl/curl/pull/7375

- [Timur Artikov brought this change]

  configure: fix nghttp2 library name for static builds
  
  Don't hardcode the nghttp2 library name,
  because it can vary, be "nghttp2_static" for example.
  
  Fixes https://github.com/curl/curl/issues/7367
  Closes https://github.com/curl/curl/pull/7368

Gisle Vanem (16 Jul 2021)
- [PellesC] fix _lseeki64() macro

- [SChannel] Use '_tcsncmp()' instead
  
  Revert previous change for PellesC.
  
  Instead replace all use of `_tcsnccmp()` with `_tcsncmp()`.

- [PellesC] missing '_tcsnccmp'
  
  PellesC compiler does not have this macro in it's `<tchar.h>`

Daniel Gustafsson (14 Jul 2021)
- TODO: add mention of mbedTLS 3 incompatibilities
  
  Wyatt OʼDay reported in #7385 that mbedTLS isn't backwards compatible
  and curl no longer builds with it. Document the need to fix our support
  until so has been done.
  
  Closes #7390
  Fixes #7385
  Reported-by: Wyatt OʼDay
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>

- docs: fix inconsistencies in EGDSOCKET documentation
  
  Only the OpenSSL backend actually use the EGDSOCKET, and also use
  TLS consistently rather than mixing SSL and TLS. While there, also
  fix a minor spelling nit.
  
  Closes: #7391
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>

- [Борис Верховский brought this change]

  docs: document missing arguments to commands
  
  This is a followup to commit f410b9e538129e77607fef1 fixing a few
  more commands which takes arguments.
  
  Closes #7382
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

- [Randolf J brought this change]

  docs: fix incorrect argument name reference
  
  The documentation for the read callback was erroneously referencing
  the nitems argument by nmemb.  The error was introduced in commit
  ce0881edee3c7.
  
  Closes #7383
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

- [Борис Верховский brought this change]

  tool_help: Document that --tlspassword takes a password
  
  Closes #7378
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- scripts: Fix typo in release-notes instructions
  
  The command to run had a typo in the pathname which prevented copy
  pasting it to work, which has annoyed me enough to fix this now.

- RELEASE-NOTES: synced

Jay Satiro (10 Jul 2021)
- write-out.d: Clarify urlnum is not unique for de-globbed URLs
  
  Reported-by: Коваленко Анатолий Викторович
  
  Fixes https://github.com/curl/curl/issues/7342
  Closes https://github.com/curl/curl/pull/7369

Daniel Gustafsson (3 Jul 2021)
- [William Desportes brought this change]

  docs: Fix typos
  
  Closes: #7370
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (8 Jul 2021)
- [Jonathan Wernberg brought this change]

  Revert "ftp: Expression 'ftpc->wait_data_conn' is always false"
  
  The reverted commit introduced a logic error in code that was
  correct.
  
  The client using libcurl would notice the error since FTP file
  uploads in active transfer mode would somtimes complete with
  success despite no transfer having been performed and the
  "uploaded" file thus not being on the remote server afterwards.
  
  The FTP server would notice the error because it receives a
  RST on the data connection it has established with the client
  before any data was transferred at all.
  
  The logic error happens if the STOR response from the server have
  arrived by the time ftp_multi_statemach() in the affected code path
  is called, but the incoming data connection have not arrived yet.
  In that case, the processing of the STOR response will cause
  'ftpc->wait_data_conn' to be set to TRUE, contradicting the comment
  in the code. Since 'complete' will also be set, later logic would
  believe the transfer was done.
  
  In most cases, the STOR response will not have arrived yet when
  the affected code path is executed, or the incoming connection will
  also have arrived, and thus the error would not express itself.
  But if the speed difference of the device using libcurl and the
  FTP server is exactly right, the error may happen as often as in
  one out of hundred file transfers.
  
  This reverts commit 49f3117a238b6eac0e22a32f50699a9eddcb66ab.
  
  Bug: https://curl.se/mail/lib-2021-07/0025.html
  Closes #7362

- msnprintf: return number of printed characters excluding null byte
  
  ... even when the output is "capped" by the maximum length argument.
  
  Clarified in the docs.
  
  Closes #7361

- infof: remove newline from format strings, always append it
  
  - the data needs to be "line-based" anyway since it's also passed to the
    debug callback/application
  
  - it makes infof() work like failf() and consistency is good
  
  - there's an assert that triggers on newlines in the format string
  
  - Also removes a few instances of "..."
  
  - Removes the code that would append "..." to the end of the data *iff*
    it was truncated in infof()
  
  Closes #7357

- examples/multi-single: fix scan-build warning
  
  warning: Value stored to 'mc' during its initialization is never read
  
  Follow-up to ae8e11ed5fd2ce
  
  Closes #7360

- wolfssl: failing to set a session id is not reason to error out
  
  ... as it is *probably* just timed out.
  
  Reported-by: Francisco Munoz
  
  Closes #7358

- docs/examples: use curl_multi_poll() in multi examples
  
  The API is soon two years old and deserves being shown as the primary
  way to drive multi code as it makes it much easier to write code.
  
  multi-poll: removed
  
  multi-legacy: add to show how we did multi API use before
  curl_multi_wait/poll.
  
  Closes #7352

- KNOWN_BUGS: flaky Windows CI builds
  
  Closes #6972

- RELEASE-NOTES: synced

- test1147: hyper doesn't allow "crazy" request headers like built-in
  
  ... so strip that from the test.
  
  Closes #7349

- c-hyper: bail on too long response headers
  
  To match with built-in behaviors. Makes test 1154 work.
  
  Closes #7350

- test1151: added missing CRLF to work with hyper
  
  Closes #7350

- c-hyper: add support for transfer-encoding in the request
  
  Closes #7348

- [Andrea Pappacoda brought this change]

  cmake: remove libssh2 feature checks
  
  libssh2 features are detected based on version since commit
  9dbbba997608f7c3c5de1c627c77c8cd2aa85b73
  
  Closes #7343

- test1116: hyper doesn't pass through "surprise-trailers"
  
  Closes #7344

- socks4: scan for the IPv4 address in resolve results
  
  Follow-up to 84d2839740 which changed the resolving to always resolve
  both address families, but since SOCKS4 only supports IPv4 it should
  scan for and use the first available IPv4 address.
  
  Reported-by: shithappens2016 on github
  Fixes #7345
  Closes #7346

Jay Satiro (5 Jul 2021)
- proto.d: fix formatting for paragraphs after margin changes
  
  Closes https://github.com/curl/curl/pull/7341

- pinnedpubkey.d: fix formatting for version support lists
  
  Closes https://github.com/curl/curl/pull/7340

Daniel Stenberg (2 Jul 2021)
- TODO: "Support in-memory certs/ca certs/keys" done
  
  Has been suppored for a while now with the *BLOB options.

- examples: safer and more proper read callback logic
  
  The same callback code is used in:
  
   imap-append.c
   smtp-authzid.c
   smtp-mail.c
   smtp-multi.c
   smtp-ssl.c
   smtp-tls.c
  
  It should not assume that it can copy full lines into the buffer as it
  will encourage sloppy coding practices. Instead use byte-wise logic and
  check/acknowledge the buffer size appropriately.
  
  Reported-by: Harry Sintonen
  Fixes #7330
  Closes #7331

- test1519: adjusted to work with hyper
  
  Closes #7333

- test1518: adjusted to work with hyper
  
  ... by making sure the stdout output doesn't look like HTTP headers.
  
  Closes #7333

- test1514: add a CRLF to the response to make it correct
  
  Makes hyper accept it fine instead returning HYPERE_UNEXPECTED_EOF on
  us.
  
  Closes #7334

- formdata: avoid "Argument cannot be negative" warning
  
  ... when converting a curl_off_t to size_t, by using
  CURL_ZERO_TERMINATED before passing the argument to the function.
  
  Detected by Coverity CID 1486590.
  
  Closes #7328
  Assisted-by: Daniel Gustafsson

- lib: more %u for port and int for %*s fixes
  
  Detected by Coverity
  
  Closes #7329

- doh: (void)-prefix call to curl_easy_setopt

- lib: fix type of len passed to *printf's %*s
  
  ... it needs to be 'int'. Detected by Coverity CID 1486611 (etc)
  
  Closes #7326

- lib: use %u instead of %ld for port number printf
  
  Follow-up to 764c6bd3bf which changed the type of some port number
  fields. Detected by Coverity (CID 1486624) etc.
  
  Closes #7325

- version: turn version number functions into returning void
  
  ... as we never use the return codes from them.
  
  Reviewed-by: Daniel Gustafsson
  Closes #7319

- mqtt: extend the error message for no topic
  
  ... and mention that it needs URL encoding.
  
  Reported-by: Peter Körner
  Fixes #7316
  Closes #7317

- formdata: correct typecast in curl_mime_data call
  
  Coverity pointed out it the mismatch. CID 1486590
  
  Closes #7327

- url: (void)-prefix a curl_url_get() call
  
  Coverity (CID 1486645) pointed out a use of curl_url_get() in the
  parse_proxy function where the return code wasn't checked. A
  (void)-prefix makes the intention obvious.
  
  Closes #7320

- glob: pass an 'int' as len when using printf's %*s
  
  Detected by Coverity CID 1486629.
  
  Closes #7324

- vtls: use free() not curl_free()
  
  curl_free() is provided for users of the API to free returned data,
  there's no need to use it internally.
  
  Closes #7318

- zuul: use the new rustls directory name
  
  Follow-up to 6d972c8b1cbb3 which missed updating this directory name.
  
  Also no longer call it crustls in the docs and bump to rusttls-ffi 0.7.1
  
  Closes #7311

Jay Satiro (29 Jun 2021)
- http: fix crash in rate-limited upload
  
  - Don't set the size of the piece of data to send to the rate limit if
    that limit is larger than the buffer size that will hold the piece.
  
  Prior to this change if CURLOPT_MAX_SEND_SPEED_LARGE
  (curl tool: --limit-rate) was set then it was possible that a temporary
  buffer used for uploading could be written to out of bounds. A likely
  scenario for this would be a non-trivial amount of post data combined
  with a rate limit larger than CURLOPT_UPLOAD_BUFFERSIZE (default 64k).
  
  The bug was introduced in 24e469f which is in releases since 7.76.0.
  
  perl -e "print '0' x 200000" > tmp
  curl --limit-rate 128k -d @tmp httpbin.org/post
  
  Reported-by: Richard Marion
  
  Fixes https://github.com/curl/curl/issues/7308
  Closes https://github.com/curl/curl/pull/7315

Daniel Stenberg (29 Jun 2021)
- copyright: add boiler-plate headers to CI config files
  
  And whitelist .zuul.ignore
  
  Closes #7314

- CI: remove travis details
  
  Rename still used leftovers to "zuul" as that's now the CI using them.
  
  Closes #7313

- RELEASE-NOTES: synced

- openssl: avoid static variable for seed flag
  
  Avoid the race condition risk by instead storing the "seeded" flag in
  the multi handle. Modern OpenSSL versions handle the seeding itself so
  doing the seeding once per multi-handle instead of once per process is
  less of an issue.
  
  Reported-by: Gerrit Renker
  Fixes #7296
  Closes #7306

- configure: inhibit the implicit-fallthrough warning on gcc-12
  
  ... since it no longer acknowledges the comment markup we use for that
  purpose.
  
  Reported-by: Younes El-karama
  Fixes #7295
  Closes #7307

Daniel Gustafsson (28 Jun 2021)
- [Andrei Rybak brought this change]

  misc: fix typos in comments which repeat a word
  
  Fix typos in code comments which repeat various words.  In trivial
  cases, just delete the repeated word.  Reword the affected sentence in
  "lib/url.c" for it to make sense.
  
  Closes #7303
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (27 Jun 2021)
- lib677: make it survive torture testing
  
  Follow-up to a5ab72d5edd7
  
  Closes #7300

- [Tommy Chiang brought this change]

  docs/BINDINGS: fix outdated links
  
  * luacurl page is now not accessible, fix it with wayback machine page
  * Scheme one seems not providing https now, change it back to http one
  
  Closes #7301

- [Jacob Hoffman-Andrews brought this change]

  curstls: bump crustls version and use new URL
  
  crustls moved to https://github.com/rustls/rustls-ffi. This also bumps
  the expected version to 0.7.0.
  
  Closes #7297

- RELEASE-NOTES: synced

- examples: length-limit two sscanf() uses of %s
  
  Reported-by: Jishan Shaikh
  Fixes #7293
  Closes #7294

- [Richard Whitehouse brought this change]

  multi: alter transfer timeout ordering
  
  - Check whether a connection has succeded before checking whether it's
    timed out.
  
    This means if we've connected quickly, but subsequently been
    descheduled, we allow the connection to succeed. Note, if we timeout,
    but between checking the timeout, and connecting to the server the
    connection succeeds, we will allow it to go ahead. This is viewed as
    an acceptable trade off.
  
  - Add additional failf logging around failed connection attempts to
    propogate the cause up to the caller.
  
  Co-Authored-by: Martin Howarth
  Closes #7178

- test677: IMAP CONNECT_ONLY, custom command and then exit
  
  Adjusted ftpserver.pl to add support for the IMAP IDLE command
  
  Adjusted test 660 to sync with the fix

- multi: do not switch off connect_only flag when closing
  
  ... as it made protocol specific disconnect commands wrongly get used.
  
  Bug: https://curl.se/mail/lib-2021-06/0024.html
  Reported-by: Aleksander Mazur
  Closes #7288

- http: make the haproxy support work with unix domain sockets
  
  ... it should then pass on "PROXY UNKNOWN" since it doesn't know the
  involved IP addresses.
  
  Reported-by: Valentín Gutiérrez
  Fixes #7290
  Closes #7291

- [Xiang Xiao brought this change]

  curl.h: include sys/select.h for NuttX RTOS
  
  Closes #7287

- [Bin Meng brought this change]

  curl.h: remove the execution bit
  
  The execution bit of curl.h file was wrongly added:
  
    commit 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
  
  and should be removed.
  
  Follow-up to 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
  Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
  Closes #7286

- [Bin Lan brought this change]

  curl.h: <sys/select.h> is supported by VxWorks7
  
  Closes #7285

- [Bachue Zhou brought this change]

  quiche: use send() instead of sendto() to avoid macOS issue
  
  sendto() always returns "Socket is already connected" error on macos
  
  Closes #7260

- [Li Xinwei brought this change]

  cmake: fix support for UnixSockets feature on Win32
  
  Move the definition of sockaddr_un struct from config-win32.h to
  curl_setup.h, so that it could be shared by all build systems.
  
  Add ADDRESS_FAMILY typedef for old mingw, now old mingw can also use
  unix sockets.
  
  Also fix the build of tests/server/sws.c on Win32 when USE_UNIX_SOCKETS
  is defined.
  
  Closes #7034

- [Gregory Muchka brought this change]

  hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies
  
  From Apples documentation on SCDynamicStoreCopyProxies, "Return Value: A
  dictionary of key-value pairs that represent the current internet proxy
  settings, or NULL if no proxy settings have been defined or if an error
  occurred. You must release the returned value."
  
  Failure to release the returned value of SCDynamicStoreCopyProxies can
  result in a memory leak.
  
  Source: https://developer.apple.com/documentation/systemconfiguration/1517088-scdynamicstorecopyproxies
  
  Closes #7265

- RELEASE-NOTES: synced

Jay Satiro (21 Jun 2021)
- vtls: fix warning due to function prototype mismatch
  
  b09c8ee changed the function prototype. Caught by Visual Studio.

- curl_multibyte: Remove local encoding fallbacks
  
  - If the UTF-8 to UTF-16 conversion fails in Windows Unicode builds then
    no longer fall back to assuming the string is in a local encoding.
  
  Background:
  
  Some functions in Windows Unicode builds must convert UTF-8 to UTF-16 to
  pass to the Windows CRT API wide-character functions since in Windows
  UTF-8 is not a valid locale (or at least 99% of the time right now).
  
  Prior to this change if the Unicode encoding conversion failed then
  libcurl would assume, for backwards compatibility with applications that
  may have written their code for non-Unicode builds, attempt to convert
  the string from local encoding to UTF-16.
  
  That type of "best effort" could theoretically cause some type of
  security or other problem if a string that was locally encoded was also
  valid UTF-8, and therefore an unexpected UTF-8 to UTF-16 conversion
  could occur.
  
  Ref: https://github.com/curl/curl/pull/7246
  
  Closes https://github.com/curl/curl/pull/7257

Daniel Stenberg (20 Jun 2021)
- curl_endian: remove the unused Curl_write64_le function
  
  The last usage was removed in cca455a36
  
  Closes #7280

- vtls: only store TIMER_APPCONNECT for non-proxy connect
  
  Introducing a 'isproxy' argument to the connect function so that it
  knows wether to store the time stamp or not.
  
  Reported-by: Yongkang Huang
  Fixes #7274
  Closes #7274

- gnutls: set the preferred TLS versions in correct order
  
  Regression since 781864bedbc57 (curl 7.77.0)
  
  Reported-by: civodul on github
  Assisted-by: Nikos Mavrogiannopoulos
  Fixes #7277
  Closes #7278

- [Gergely Nagy brought this change]

  configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_r
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_r
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove unused define HAVE_PERROR
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure: remove unused check for gai_strerror
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove unused define HAVE_FREEIFADDRS
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove unused define HAVE_FORK
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove unused define HAVE_FDOPEN
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove checks for unused sgtty.h
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove remaining checks for rsa.h
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove remaining checks for err.h
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove remaining checks for crypto.h
  
  Closes #7276

- [Gergely Nagy brought this change]

  configure/cmake: remove checks for unused getservbyport_r
  
  Closes #7276

- --socks4[a]: clarify where the host name is resolved
  
  Closes #7273

- libcurl-security.3: mention file descriptors and forks
  
  ... and move the security report section last.
  
  Reported-by: Harry Sintonen
  Closes #7270

- [Alex Xu (Hello71) brought this change]

  configure.ac: make non-executable
  
  it needs to be processed by autoconf or autoreconf, and doesn't have a
  suitable shebang to be directly executed. other projects normally set
  configure.ac -x.
  
  Closes #7272

- configure: do not strip out debug flags
  
  To allow users to set them when invoking configure without using
  --with-debug.
  
  Reported-by: Alex Xu
  Fixes #7216
  Closes #7267

- libssh2: limit time a disconnect can take to 1 second
  
  Closes #7271

- TLS: prevent shutdown loops to get stuck
  
  ... by making sure the loops are only allowed to read the shutdown
  traffic a limited number of times.
  
  Reported-by: Harry Sintonen
  Closes #7271

- hyper: propagate errors back up from read callbacks
  
  Makes test 513 work with hyper
  
  Closes #7266

- KNOWN_BUGS: Negotiate on Windows fails
  
  Closes #5881

- KNOWN_BUGS: renames instead of locking for atomic operations
  
  Closes #6882
  Closes #6884

- zuul: add two missing CI jobs
  
  ... that were configured, just not run
  
  Closes #7261

Viktor Szakats (15 Jun 2021)
- idn: fix libidn2 with windows unicode builds
  
  Unicode Windows builds use UTF-8 strings internally in libcurl,
  so make sure to call the UTF-8 flavour of the libidn2 API. Also
  document that Windows builds with libidn2 and UNICODE do expect
  CURLOPT_URL as an UTF-8 string.
  
  Reported-by: dEajL3kA on github
  Assisted-by: Jay Satiro
  Reviewed-by: Marcel Raad
  Closes #7246
  Fixes #7228

Daniel Stenberg (15 Jun 2021)
- curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE
  
  They were never officially allowed and slipped in only due to sloppy
  parsing. Spaces (ascii 32) should be correctly encoded (to %20) before
  being part of a URL.
  
  The new flag bit CURLU_ALLOW_SPACE when a full URL is set, makes libcurl
  allow spaces.
  
  Updated test 1560 to verify.
  
  Closes #7073

- RELEASE-NOTES: synced
  
  ... and bump to version 7.78.0 for the next planned release.

Jay Satiro (15 Jun 2021)
- docs: Remove outdated curl tool limitation
  
  - Document that HTTP/2 multiplexing is supported by the curl tool when
    parallel transfers are used.
  
  Supported since 7.66.0 via --parallel, but the doc wasn't updated.
  
  Closes https://github.com/curl/curl/pull/7259

- http2: Clarify 'Using HTTP2' verbose message
  
  - Change phrasing from multi-use to multiplexing since the former may
    not be as well understood.
  
  Before: * Using HTTP2, server supports multi-use
  
  After: * Using HTTP2, server supports multiplexing
  
  Bug: https://github.com/curl/curl/discussions/7255
  Reported-by: David Hu
  
  Closes https://github.com/curl/curl/pull/7258

Daniel Stenberg (14 Jun 2021)
- winbuild/README: VC should be set to 6 'or larger'
  
  Previously it listed all versions up to 15 (missing 16) but this new
  phrasing is more open ended.
  
  Reported-by: Hugh Macdonald
  Fixes #7253
  Closes #7254

- [Jacob Hoffman-Andrews brought this change]

  rustls: remove native_roots fallback
  
  For the commandline tool, we expect to be passed
  SSL_CONN_CONFIG(CAfile); for library use, the use should pass a set of
  trusted roots (like in other TLS backends).
  
  This also removes a dependency on Security.framework when building on
  macOS.
  
  Closes #7250

- [Albin Vass brought this change]

  travis: remove jobs that have migrated to zuul
  
  Closes #7245

- [Mohammed Naser brought this change]

  CI: add jobs using Zuul
  
  It also includes a few changes to get the builds going:
  - Added autoconf to common dependencies
  - Added automake to common dependencies
  - Added libtool to common dependencies
  - Added libssl-dev to common dependencies
  
  Co-authored-by: Albin Vass
  
  Closes #7245

- netrc: skip 'macdef' definitions
  
  Add test 494 to verify
  
  Reported-by: Harry Sintonen
  Fixes #7238
  Closes #7244

- multi: add scan-build-6 work-around in curl_multi_fdset
  
  scan-build-6 otherwise warns, saying: warning: The left operand of '>='
  is a garbage value otherwise, which is false.
  
  Later scan-builds don't claim this on the same code.
  
  Closes #7248

- asyn-ares: remove check for 'data' in Curl_resolver_cancel
  
  It implied it would survive a NULL in there which it won't. Instead do
  an assert.
  
  Pointed out by scan-build.
  
  Closes #7248

- url.c: remove two variable assigns that are never read
  
  Pointed out by scan-build
  
  Closes #7248

- [Gealber Morales brought this change]

  mqtt: add support for username and password
  
  Minor-edits-by: Daniel Stenberg
  Added test 2200 to 2205
  
  Closes #7243

- travis: remove the arm job
  
  We do it on circle CI instead

- CI: add .circleci/config.yml
  
  Assisted-by: Gabriel Simmer
  
  Closes #7239

- RELEASE-NOTES: synced

- runtests: init $VERSION to avoid warnings when using -l

- openssl: don't remove session id entry in disassociate
  
  When a connection is disassociated from a transfer, the Session ID entry
  should remain.
  
  Regression since 7f4a9a9 (shipped in libcurl 7.77.0)
  Reported-by: Gergely Nagy
  Reported-by: Paul Groke
  
  Fixes #7222
  Closes #7230

- single_transfer: ignore blank --output-dir
  
  ... as otherwise it creates a rather unexpected target directory with a
  leading slash.
  
  Reported-by: Harry Sintonen
  Fixes #7218
  Closes #7233

- tests: update README about servers and port numbers
  
  Closes #7242

- conn_shutdown: if closed during CONNECT cleanup properly
  
  Reported-by: Alex Xu
  Reported-by: Phil E. Taylor
  
  Fixes #7236
  Closes #7237

- [Christian Weisgerber brought this change]

  sws: malloc request struct instead of using stack
  
  ... 2MB requests is otherwise just too big for some systems.
  
  (The allocations are not freed properly.)
  
  Bug: https://curl.se/mail/lib-2021-06/0018.html
  
  Closes #7235

- [Mark Swaanenburg brought this change]

  lib: don't compare fd to FD_SETSIZE when using poll
  
  FD_SETSIZE is irrelevant when using poll. So ensuring that the file
  descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause
  multi_wait to ignore perfectly valid file descriptors and simply wait
  for 1s to avoid hammering the CPU in a busy loop.
  
  Fixes #7240
  Closes #7241

- [zhangxiuhua brought this change]

  doh: fix wrong DEBUGASSERT for doh private_data
  
  Closes #7227

- [yb999 brought this change]

  tests: update README.md with a missing single quote
  
  Closes #7231

- GHA: run all tests for hyper too
  
  As it lists disabled ones in DISABLED now
  
  Closes #7209

- tests/data/DISABLED: add tests not working with hyper
  
  The goal is to remove them all from here over time.
  
  Closes #7209

- runtests: also find the last test in Makefile.inc
  
  Closes #7209

- test3010: work with hyper mode
  
  Closes #7209

- configure: disable RTSP when hyper is selected
  
  Makes test 1013 work
  
  Closes #7209

- test1594/1595/1596: fix to work in hyper mode
  
  Closes #7209

- test1438/1457: add HTTP keyword to make hyper mode work
  
  Closes #7209

- test1340/1341: adjusted for hyper mode
  
  Closes #7209

- test1218: adjusted for hyper mode
  
  Closes #7209

- test1216: adjusted for hyper mode
  
  Closes #7209

- test1230: adjust to work in hyper mode
  
  Closes #7209

- c-hyper: abort CONNECT response reading early on non 2xx responses
  
  Fixes test 493
  
  Closes #7209

- test434: add HTTP keyword
  
  Closes #7209

- test599: adjusted to work in hyper mode
  
  Closes #7209

- c-hyper: fix the uploaded field in progress callbacks
  
  Makes test 578 work
  
  Closes #7209

- test566: adjust to work with hyper mode
  
  Closes #7209

- [Fawad Mirza brought this change]

  CURLOPT_WRITEFUNCTION.3: minor update of the example
  
  Safely avoid chunk.size garbage value if declared non globally.
  
  Closes #7219

- [Bastian Krause brought this change]

  configure: rename get-easy-option configure option to get-easy-options
  
  "get-easy-options" is the configure option advertised by the help text
  anyway, so use that.
  
  Fixes #7211
  Closes #7213
  
  Follow-up to ad691b191 ("configure: added --disable-get-easy-options")
  Suggested-by: Daniel Stenberg <daniel@haxx.se>
  Signed-off-by: Bastian Krause <bst@pengutronix.de>

- runtests: skip disabled tests unless -f is used
  
  To make it easier to write ranges like '115 to 229' without that
  explicitly enabling tests that are listed in DISABLED, this makes
  runtests always skip disabled tests unless the -f command line option is
  used.
  
  Previously the code attempted to not run such tests, but didn't do it
  correctly.
  
  Closes #7212

- [Jun-ya Kato brought this change]

  ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS
  
  The latest GnuTLS-3.7.2 implements disable switch for TLSv1.3 compatible
  mode for middle box but it is enabled by default, which is unnecessary
  for QUIC.
  
  Fixes #6896
  Closes #7202

- test644: remove as duplicate of test 587
  
  Closes #7208

Daniel Gustafsson (8 Jun 2021)
- RELEASE-NOTES: synced

- cookies: track expiration in jar to optimize removals
  
  Removing expired cookies needs to be a fast operation since we want to
  be able to perform it often and speculatively. By tracking the timestamp
  of the next known expiration we can exit early in case the timestamp is
  in the future.
  
  Closes: #7172
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (7 Jun 2021)
- GHA: add several libcurl tests to the hyper job
  
  500 to 512

- test500: adjust to work with hyper mode

- c-hyper: support CURLINFO_STARTTRANSFER_TIME
  
  Closes #7204

- c-hyper: support CURLOPT_HEADER
  
  When enabled, the headers are passed to the body write callback as well.
  
  Like in test 500
  
  Closes #7204

- GHA: run the newly fixed tests with hyper
  
  Closes #7205

- test433: adjust for hyper mode
  
  Closes #7205

- test395: hyper cannot work around > 64 bit content-lengths like built-in
  
  Closes #7205

- test394: hyper returns a different error
  
  Closes #7205

- test393: make Content-Length fit within 64 bit for hyper
  
  Closes #7205

- test347: CRLFify to work in hyper mode
  
  Closes #7205

- test339: CRLFify better to work in hyper mode
  
  Closes #7205

- travis: remove the hyper build

- GHA: add a linux-hyper job
  
  Closes #7206

- test328: avoid a header-looking body to make hyper mode work
  
  The test still works the same, just modified two bytes in the content.
  
  Closes #7203

- release-notes.pl: also spot common 'closes' typo

- metalink: remove
  
  Warning: this will make existing curl command lines that use metalink to
  stop working.
  
  Reasons for removal:
  
  1. We've found several security problems and issues involving the
     metalink support in curl. The issues are not detailed here. When
     working on those, it become apparent to the team that several of the
     problems are due to the system design, metalink library API and what
     the metalink RFC says. They are very hard to fix on the curl side
     only.
  
  2. The metalink usage with curl was only very briefly documented and was
     not following the "normal" curl usage pattern in several ways, making
     it surprising and non-intuitive which could lead to further security
     issues.
  
  3. The metalink library was last updated 6 years ago and wasn't so
     active the years before that either. An unmaintained library means
     there's a security problem waiting to happen. This is probably reason
     enough.
  
  4. Metalink requires an XML parsing library, which is complex code (even
     the smaller alternatives) and to this day often gets security
     updates.
  
  5. Metalink is not a widely used curl feature. In the 2020 curl user
     survey, only 1.4% of the responders said that they'd are using it. In
     2021 that number was 1.2%. Searching the web also show very few
     traces of it being used, even with other tools.
  
  6. The torrent format and associated technology clearly won for
     downloading large files from multiple sources in parallel.
  
  Cloes #7176

- docs/INSTALL: remove mentions of configure --with-darwin-ssl
  
  ... as it isn't supported since a while back.
  
  Make configure fail with a warning if used.
  
  Reported-by: Vadim Grinshpun
  Bug: https://curl.se/mail/lib-2021-06/0008.html
  Closes #7200

- RELEASE-NOTES: synced

- [Gregor Jasny brought this change]

  cmake: Avoid leaking absolute paths into exported config
  
  The `find_libarary` command resolves the library or framework
  into an absolute path. In case of system frameworks which are
  located within an Xcode-provided SDK this results in the Xcode
  path and SDK version being part of the library path.
  
  Because those library paths end up in the exported CMake config
  importing curl will fail once the Xcode location or SDK version
  changes:
  
  ```cmake
  set_target_properties(CURL::libcurl PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
    INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB"
  )
  ```
  
  A work-around is to link against system-level frameworks with
  `-framework XYZ`. In case of `SystemConfiguration` we might be able
  to omit the lookup-check because we could assume the framework is
  always present.
  
  Closes #7152

- [Shikha Sharma brought this change]

  http2_connisdead: handle trailing GOAWAY better
  
  When checking the connection the input processing returns error
  immediately, we now consider that a dead connnection.
  
  Bug: https://curl.se/mail/lib-2021-06/0001.html
  Closes #7192

- [Dmitry Karpov brought this change]

  ares: always store IPv6 addresses first
  
  Trying dual-stack on some embedded platform, I noticed that quite
  frequently (20%) libCurl starts from IPv4 regardless the Happy Eyeballs
  timeout value.  After debugging this issue, I noticed that this happens
  if c-ares resolver response for IPv6 family comes before IPv4 (which was
  randomly happening in my tests).
  
  In such cases, because libCurl puts the last resolver response on top of
  the address list, when IPv4 resolver response comes after IPv6 one - the
  IPv4 family starts the connection phase instead of IPv6 family.
  
  The solution for this issue is to always put IPv6 addresses on top of
  the address list, regardless the order of resolver responses.
  
  Bug: https://curl.se/mail/lib-2021-06/0003.html
  
  Closes #7188

- Revert "Revert "socketpair: fix potential hangs""
  
  This reverts commit 3e70c3430a370a31eff2c1d8fea29edaca8f1127.
  
  Thus brings back the change from #7144 as was originally landed in
  c769d1eab4de8b
  
  Closes #7144 (again)

- [Ebe Janchivdorj brought this change]

  schannel: move code out of SChannel_connect_step1
  
  Reviewed-by: Marc Hoersken
  Closes #7168

- tests/data/Makefile.inc: error: trailing backslash on last line
  
  Follow-up to d8dcb399b8009d

- TODO: Support rate-limiting for MQTT

- [Dmitry Kostjuchenko brought this change]

  warnless: simplify type size handling
  
  By using sizeof(T), existing defines and relying on the compiler to
  define the required signed/unsigned mask.
  
  Closes #7181

Gisle Vanem (4 Jun 2021)
- [Win32] Fix for USE_WATT32
  
  My Watt-32 tcp/ip stack works on Windows but it does not have `WSAIoctl()`

Daniel Stenberg (4 Jun 2021)
- [Alexis Vachette brought this change]

  url: bad CURLOPT_CONNECT_TO syntax now returns error
  
  Added test 3020 to verify
  
  Closes #7183

- github: remove the cmake macOS gcc-8 jobs
  
  They're too similar to the gcc-9 ones to be useful (and seems to not
  work anymore).
  
  Closes #7187

- test269: disable for hyper
  
  --ignore-content-length / CURLOPT_IGNORE_CONTENT_LENGTH doesn't work
  with hyper.
  
  Closes #7184

- runtests: enable 'hyper mode' only for HTTP tests
  
  The 'hyper mode' makes line-ending checks work in the test suite for
  when hyper is used. Now it also requires that HTTP or HTTPS are
  mentioned as keywords to be enabled so that it doesn't wrongly adjusts
  tests for other protocols.
  
  This makes test 271 (TFTP) work again in hyper enabled builds.
  
  Closes #7185

- [Alexis Vachette brought this change]

  hostip: bad CURLOPT_RESOLVE syntax now returns error
  
  Added test 3019
  Fixes #7170
  Closes #7174

Daniel Gustafsson (3 Jun 2021)
- cookies: fix typo and expand comment
  
  Fix a typo in the sorting comment, and while in there elaborate slightly
  on why creationtime can be used as a tiebreaker.

- cookies: remove unused header
  
  Commit 1c1d9f1affbd3367bcb24062e261d0ea5d185e3a removed the last use
  for the inet_pton.h headerfile, this removes the inclusion of the
  header.
  
  Closes: #7182
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (3 Jun 2021)
- Revert "socketpair: fix potential hangs"
  
  This reverts commit c769d1eab4de8b9f1bd84d992c63692fdc43c5be.
  
  See #7144 for details

- [Paul Groke brought this change]

  socketpair: fix potential hangs
  
  Fixes potential hang in accept by using select + non-blocking accept.
  
  Fixes potential hang in peer check by replacing the send/recv check with
  a getsockname/getpeername check.
  
  Adds length check for returned sockaddr data.
  
  Closes #7144

- runtests: parse data/Makefile.inc instead of using make
  
  The warning about missing entries in that file then doesn't require that
  the Makefile has been regenerated which was confusing.
  
  The scan for the test num is a little more error prone than before
  (since now it doesn't actually verify that it is legitimate Makefile
  syntax), but I think it is good enough.
  
  Closes #7177

- [Harry Sintonen brought this change]

  filecheck: quietly remove test-place/*~
  
  Closes #7179

- CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax
  
  For options that pass in lists or strings that are subsequently parsed
  and must be correct. This broadens the scope for the option previously
  known as CURLE_TELNET_OPTION_SYNTAX but the old name is of course still
  provided as a #define for existing applications.
  
  Closes #7175

- tests: fix Accept-Encoding strips to work with Hyper builds
  
  The previous strip also removed the CR which turned problematic.
  
  valgrind.supp: add zstd suppression using hyper
  
  Reported-and-analyzed-by: Kevin Burke
  Fixes #7169
  Closes #7171

- github: timeout jobs on macOS after 90 minutes
  
  Assisted-by: Marc Hoersken
  Closes #7173

- [Harry Sintonen brought this change]

  mqtt: detect illegal and too large file size
  
  Add test 3017 and 3018 to verify.
  Closes #7166

- [theawless brought this change]

  cmake: add CURL_DISABLE_NTLM option
  
  Closes #7028

- [theawless brought this change]

  configure: add --disable-ntlm option
  
  Closes #7028

- [theawless brought this change]

  define: re-add CURL_DISABLE_NTLM and corresponding ifdefs
  
  This flag will be further exposed by adding build options.
  
  Reverts #6809
  Closes #7028

- RELEASE-NOTES: synced

Viktor Szakats (1 Jun 2021)
- travis: delete --enable-hsts option (it is the default now) [ci skip]
  
  Reviewed-by: Daniel Stenberg
  Closes #7167

Daniel Stenberg (1 Jun 2021)
- hostip: fix 3 coverity complaints
  
  Follow-up to 1a0ebf6632f889eed
  
  - Check the return code to Curl_inet_pton() in two instances, even
    though we know the input is valid so the functions won't fail.
  
  - Clear the 'struct sockaddr_in' struct before use so that the
    'sin_zero' field isn't left uninitialized.
  
  Detected by Coverity.
  Assisted-by: Harry Sintonen
  Closes #7163

- c-hyper: fix NTLM on closed connection tested with test159
  
  Closes #7154

- conncache: lowercase the hash key for better match
  
  As host names are case insensitive, the use of case sensitive hashing
  caused unnecesary cache misses and therefore lost performance. This
  lowercases the hash key.
  
  Reported-by: Harry Sintonen
  Fixes #7159
  Closes #7161

- mbedtls: make mbedtls_strerror always work
  
  If the function doesn't exist, provide a macro that just clears the
  error message. Removes #ifdef uses from the code.
  
  Closes #7162

- vtls: exit addsessionid if no cache is inited
  
  Follow-up to b249592d29ae0
  
  Avoids NULL pointer derefs.
  
  Closes #7165

- [Harry Sintonen brought this change]

  Curl_ntlm_core_mk_nt_hash: fix OOM in error path
  
  Closes #7164

Michael Kaufmann (1 Jun 2021)
- ssl: read pending close notify alert before closing the connection
  
  This avoids a TCP reset (RST) if the server initiates a connection
  shutdown by sending an SSL close notify alert and then closes the TCP
  connection.
  
  For SSL connections, usually the server announces that it will close the
  connection with an SSL close notify alert. curl should read this alert.
  If curl does not read this alert and just closes the connection, some
  operating systems close the TCP connection with an RST flag.
  
  See RFC 1122, section 4.2.2.13
  
  If curl reads the close notify alert, the TCP connection is closed
  normally with a FIN flag.
  
  The new code is similar to existing code in the "SSL shutdown" function:
  try to read an alert (non-blocking), and ignore any read errors.
  
  Closes #7095

Daniel Stenberg (1 Jun 2021)
- [Laurent Dufresne brought this change]

  setopt: fix incorrect comments
  
  Closes #7157

- [Laurent Dufresne brought this change]

  mbedtls: add support for cert and key blob options
  
  CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB weren't usable with
  mbedtls backend, so the support was added.
  
  Closes #7157

- [Gregor Jasny brought this change]

  cmake: try well-known send/recv signature for Apple
  
  The CMake `try_compile` command is especially slow for
  the Xcode generator. With this patch applied it first tests
  for the currently used (and Open Group specified) send/recv
  signature. In case this fails testing falls-back to the
  permutations.
  
  speed-up:
  
  ```
  time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
  before: 11.64s user 11.09s system 55% cpu 40.754 total
  after:   7.84s user 6.57s  system 51% cpu 28.074 total
  ```
  
  ```
  time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
  before: 217.07s user 104.15s system 60% cpu 8:51.79 total
  after:  108.76s user  51.80s system 58% cpu 4:32.58 total
  ```
  
  Closes #7158

- http2: init recvbuf struct for pushed streams
  
  Debug builds would warn that these structs were not initialized properly
  for pushed streams.
  
  Ref: #7148
  Closes #7153

- Curl_ssl_getsessionid: fail if no session cache exists
  
  This function might get called for an easy handle for which the session
  cache hasn't been setup. It now just returns a "miss" in that case.
  
  Reported-by: Christoph M. Becker
  Fixes #7148
  Closes #7153

- GOVERNANCE: add 'user', 'committer' and 'contributor'
  
  As those are commonly used terms in the project.
  
  Closes #7151

- URL-SYNTAX.md: document the new 'localhost' treatment

- hostip: make 'localhost' return fixed values
  
  Resolving the case insensitive host name 'localhost' now returns the
  addresses 127.0.0.1 and (if IPv6 is enabled) ::1 without using any
  resolver.
  
  This removes the risk that users accidentally resolves 'localhost' to
  something else. By making sure 'localhost' is always local, we can
  assume a "secure context" for such transfers (for cookies etc).
  
  Closes #7039

Daniel Gustafsson (31 May 2021)
- docs: fix typos

Daniel Stenberg (30 May 2021)
- hsts: ignore numberical IP address hosts
  
  Also, use a single function library-wide for detecting if a given hostname is
  a numerical IP address.
  
  Reported-by: Harry Sintonen
  Fixes #7146
  Closes #7149

- test178: adjust for hyper
  
  Hyper returns the same error for wrong HTTP version as for negative
  content-length. Test 178 verifies that negative content-length is
  rejected but the hyper backend will return a different error for it (and
  without any helpful message telling why the message was bad). It will
  also not return any headers at all for the response, not even the ones
  that arrived before the error.
  
  Closes #7147

- HYPER: remove mentions of deprecated development branch

- c-hyper: handle NULL from hyper_buf_copy()
  
  Closes #7143

- HSTS: not experimental anymore

- [Douglas R. Reno brought this change]

  INSTALL: use correct extension for CURL-DISABLE.md
  
  In INSTALL.MD, it's currently set to CURL-DISABLE-md instead of
  CURL-DISABLE.md. This generates a 404 on the cURL website as well as
  when viewing the docs through Github.
  
  Closes #7142

- travis: run tests 1 - 153 with hyper

- c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL
  
  Makes test 129 work (HTTP/1.2 response).
  
  Closes #7141

- http_proxy: deal with non-200 CONNECT response with Hyper
  
  Makes test 94 and 95 work
  
  Closes #7141

- c-hyper: clear NTLM auth buffer when request is issued
  
  To prevent previous ones to get reused on subsequent requests. Matches
  how the built-in HTTP code works. Makes test 90 to 93 work.
  
  Add test 90 to 93 in travis.
  
  Closes #7139

- [Joel Depooter brought this change]

  schannel: set ALPN length correctly for HTTP/2
  
  In a3268eca792f1 this code was changed to use the ALPN_H2 constant
  instead of the NGHTTP2_PROTO_ALPN constant. However, these constants are
  not the same. The nghttp2 constant included the length of the string,
  like this: "\x2h2". The ALPN_H2 constant is just "h2". Therefore we need
  to re-add the length of the string to the ALPN buffer.
  
  Closes #7138

- travis: run tests 1-89 in the hyper build
  
  Closes #7137

- Revert "c-hyper: handle body on HYPER_TASK_EMPTY"
  
  This reverts commit c3eefa95c31f55657f0af422e8268d738f689066.
  
  Reported-by: Kevin Burke
  Fixes #7122
  Closes #7136

- [Jon Rumsey brought this change]

  ccsidcurl: fix the compile errors
  
  Looks like the declaration of cpp shoule be const char ** and return
  null if convert_version_info_string fails.
  
  Fixes #7134
  Closes #7135

- [Viktor Szakats brought this change]

  docs: use --max-redirs instead of --max-redir
  
  For consistency.
  
  Closes #7130

- RELEASE-NOTES: synced
  
  ... and bump to 7.77.1

- [Michael Forney brought this change]

  travis: add bearssl build
  
  Closes #7133

- [Michael Forney brought this change]

  bearssl: explicitly initialize all fields of Curl_ssl
  
  Also, add comments like the other vtls backends.
  
  Closes #7133

- [Michael Forney brought this change]

  bearssl: remove incorrect const on variable that is modified
  
  hostname may be set to NULL later on in this function if it is an
  IP address.
  
  Closes #7133

Version 7.77.0 (26 May 2021)

Daniel Stenberg (26 May 2021)
- RELEASE-NOTES: synced

- THANKS: added contributors from 7.77.0 cycle

- copyright: update copyright year ranges to 2021

- [Radek Zajic brought this change]

  hostip: fix broken macOS/CMake/GCC builds
  
  Follow-up to 31f631a142d855f06
  
  Fixes #7128
  Closes #7129

- TODO: netrc caching and sharing
  
  URL: https://curl.se/mail/archive-2021-05/0018.html

- [Orgad Shaneh brought this change]

  setopt: streamline ssl option code
  
  Make it use the same style as the code next to it
  
  Closes #7123

- [Radek Zajic brought this change]

  lib/hostip6.c: make NAT64 address synthesis on macOS work
  
  Closes #7121

- [ejanchivdorj brought this change]

  sectransp: fix EXC_BAD_ACCESS caused by uninitialized buffer
  
  When the SecCertificateCopyCommonName function fails, it leaves
  common_name in a invalid state so CFStringCompare uses the invalid
  result, causing EXC_BAD_ACCESS.
  
  The fix is to check the return value of the function before using the
  name.
  
  Closes #7126

- [Paweł Wegner brought this change]

  CMake: add CURL_ENABLE_EXPORT_TARGET option
  
  install(EXPORT ...) causes trouble when embedding curl dependencies
  which don't provide install(EXPORT ...) targets (e.g libressl and
  nghttp2) with cmake's add_subdirectory.
  
  Reviewed-by: Jakub Zakrzewski
  Closes #7060

- [Alessandro Ghedini brought this change]

  quiche: update for network path aware API
  
  Latest version of quiche requires the application to pass the peer
  address of received packets, and it provides the address for outgoing
  packets back.
  
  Closes #7120

- [Jacob Hoffman-Andrews brought this change]

  rustls: switch read_tls and write_tls to callbacks
  
  And update to 0.6.0, including a rename from session to connection for
  many fields.
  
  Closes #7071

- [Koichi Shiraishi brought this change]

  sectransp: fix 7f4a9a9b2a49 commit about missing comma
  
  Follow-up to 7f4a9a9b2a495
  
  Closes #7119

- [Harry Sintonen brought this change]

  openssl: associate/detach the transfer from connection
  
  CVE-2021-22901
  
  Bug: https://curl.se/docs/CVE-2021-22901.html

- [Harry Sintonen brought this change]

  telnet: check sscanf() for correct number of matches
  
  CVE-2021-22898
  
  Bug: https://curl.se/docs/CVE-2021-22898.html

- schannel: don't use static to store selected ciphers
  
  CVE-2021-22897
  
  Bug: https://curl.se/docs/CVE-2021-22897.html

- docs/tests: remove freenode references

- RELEASE-NOTES: synced

- [Sergey Markelov brought this change]

  NSS: make colons, commas and spaces valid separators in cipher list
  
  Fixes #7110
  Closes #7115

- curl: include libmetalink version in --version output
  
  Closes #7112

Jay Satiro (21 May 2021)
- [Matias N. Goldberg brought this change]

  cmake: Use multithreaded compilation on VS 2008+
  
  Multithreaded compilation has been supported since at least VS 2005 and
  been robustly stable since at least VS 2008
  
  Closes https://github.com/curl/curl/pull/7109

Daniel Stenberg (21 May 2021)
- [Matias N. Goldberg brought this change]

  cmake: fix two invokes result in different curl_config.h
  
  Fixes #7100
  Closes #7101
  
  Reviewed-by: Jakub Zakrzewski
  Signed-off-by: Matias N. Goldberg <dark_sylinc@yahoo.com.ar>

- [Peng-Yu Chen brought this change]

  cmake: detect CURL_SA_FAMILY_T
  
  Fixes #7049
  Closes #7065

- [Lucas Clemente Vella brought this change]

  CURLOPT_IPRESOLVE: preventing wrong IP version from being used
  
  In some situations, it was possible that a transfer was setup to
  use an specific IP version, but due do DNS caching or connection
  reuse, it ended up using a different IP version from requested.
  
  This commit changes the effect of CURLOPT_IPRESOLVE from simply
  restricting address resolution to preventing the wrong connection
  type being used, when choosing a connection from the pool, and
  to restricting what addresses could be used when establishing
  a new connection.
  
  It is important that all addresses versions are resolved, even if
  not used in that transfer in particular, because the result is
  cached, and could be useful for a different transfer with a
  different CURLOPT_IPRESOLVE setting.
  
  Closes #6853

- [Oliver Urbann brought this change]

  AmigaOS: add functions definitions for SHA256
  
  AmiSSL replaces many functions with macros. Curl requires pointer
  to some of these functions. Thus, we have to encapsulate these macros:
  SHA256_Init, SHA256_Update, SHA256_Final, X509_INFO_free.
  
  Bug: https://github.com/jens-maus/amissl/issues/15
  Co-authored-by: Daniel Stenberg <daniel@haxx.se>
  
  Closes #7099

- test2100: make it run with and require IPv6
  
  Closes #7083

- tests/getpart: generate output URL encoded for better diffs
  
  Closes #7083

- [Ryan Beck-Buysse brought this change]

  docs/TheArtOfHttpScripting: fix markdown links
  
  extra parens cause the links to be incorrectly formatted
  and inconsistent with the rest of the document.
  
  Signed-off-by: Ryan Beck-Buysse <rbuysse@gmail.com>
  Closes #7097

- RELEASE-NOTES: synced

- [Emil Engler brought this change]

  docs: replace dots with dashes in markdown enums
  
  We use dashes instead of dots nearly everywhere except for those few
  cases. This commit addresses this issues and brings more coherency into
  it.
  
  Closes #7093

- [Emil Engler brought this change]

  docs: improve INTERNALS.md regarding getsock cb
  
  This adds the I/O prefix to indicate that those "actions" are kind-of
  related to those found in select(2) or poll(2) (reading/writing).
  
  It also adds a note where the prototypes of those functions can be found
  in the source code.
  
  Closes #7092

- [Emil Engler brought this change]

  docs: document attach in INTERNALS.md
  
  The new field in the Curl_handler struct still lacks documentation. This
  adds it it from the information extracted from lib/urldata.h:797
  
  Closes #7091

- [Marc Aldorasi brought this change]

  config: remove now-unused macros
  
  Closes #7094

- [Marc Aldorasi brought this change]

  hostip.h: remove declaration of unimplemented function
  
  Closes #7094

- h3: add 'attach' callback to protocol handlers
  
  Follow-up to 0c55fbab45be
  
  Reviewed-by: Emil Engler
  Closes #7090

- wolfssl: remove SSLv3 support leftovers
  
  Closes #7088

- curl-wolfssl.m4: without custom include path, assume /usr/include
  
  ... so that we can point out the root of the OpenSSL emulation headers.
  Previously this used the '$includedir' variable which is wrong since
  that defaults to the dir where the current configure invoke will install
  the built libcurl headers: /usr/local by default.
  
  Fixes #7085
  Reported-by: Joel Jakobsson
  Closes #7087

- [Joel Depooter brought this change]

  data_pending: check only SECONDARY socket for FTP(S) transfers
  
  Check the FIRST for all other protocols.
  
  This fixes a timeout in an ftps download. The server sends a TLS
  close_notify message in the same packet as the file data. The
  close_notify seems to not be handled in the schannel_recv function, so
  libcurl is not aware that the server has closed the connection. Thus
  libcurl ends up waiting for action on the socket until a timeout is
  reached. With the secondary socket check added to the data_pending
  function, the close_notify is properly handled, and the ftps transfer
  terminates as expected.
  
  Fixes #7068
  Closes #7069

- github: inhibit deprecated declarations for clang on macOS
  
  ... as they otherwise cause ldap build errors in the CI.
  
  Fixes #7081
  Closes #7082

- conn: add 'attach' to protocol handler, make libssh2 use it
  
  The libssh2 backend has SSH session associated with the connection but
  the callback context is the easy handle, so when a connection gets
  attached to a transfer, the protocol handler now allows for a custom
  function to get used to set things up correctly.
  
  Reported-by: Michael O'Farrell
  Fixes #6898
  Closes #7078

- http2: make sure pause is done on HTTP
  
  Since the function is called for any protocol, we can't assume that the
  HTTP struct is there without first making sure it is HTTP.
  
  Reported-by: Denis Goleshchikhin
  Fixes #7079
  Closes #7080

- docs: cookies from HTTP headers need domain set
  
  ... or the cookies won't get sent. Push users to using the "Netscape"
  format instead, which curl uses when saving a cookie "jar".
  
  Reported-by: Martin Dorey
  Reviewed-by: Daniel Gustafsson
  Fixes #6723
  Closes #7077

- RELEASE-NOTES: synced

- github: add a workflow with libssh2 on macOS using cmake
  
  Closes #7047

- sws: allow HTTP requests up to 2MB in size
  
  To allow tests with slightly larger payloads. Like #7071 ...
  
  Closes #7075

Marc Hoersken (16 May 2021)
- CI/azure: increase verbosity and fix outdated task names
  
  Closes #7063

- CI/cirrus: add shared and static Windows release builds
  
  Azure Pipelines is currently being used for debug builds,
  let's also run some non-debug (release) Windows builds and
  make use of previously underutilized Cirrus CI for that.
  
  Reviewed-by: Marcel Raad
  
  Closes #6991

Daniel Stenberg (16 May 2021)
- CURLOPT_CAPATH.3: defaults to a path, not NULL
  
  Reported-by: Andrew Barnert
  
  Closes #7062

- [Jacob Hoffman-Andrews brought this change]

  c-hyper: handle body on HYPER_TASK_EMPTY
  
  Some of the time, we get a HYPER_TASK_EMPTY response before the status
  line, headers, and body have been read. Previously, that would cause us
  to poll again, leading to a 1 second timeout.
  
  The HYPER_TASK_EMPTY docs say:
  
     The value of this task is null (does not imply an error).
  
  So, if we receive a HYPER_TASK_EMPTY, continue on with processing the
  response.
  
  Reported-by: Kevin Burke
  Fixes #7064
  Closes #7070

- [Ikko Ashimine brought this change]

  tool_getparam: fix comment typo in tool_getparam.c
  
  enfore -> enforce
  
  Closes #7074

- mem-include-scan.pl: require a non-word letter before memory funcs
  
  ... so that ldap_memfree() for example doesn't match the scan for free.
  
  Closes #7061

- version: free the openldap info correctly
  
  ... to avoid memory leaks.
  
  Follow-up to: bf0feae7768d9
  Closes #7061

- dupset: remove totally off comment
  
  Closes #7067

- configure: if asked for, fail if ldap is not found
  
  Reported-by: Jakub Zakrzewski
  Fixes #7053
  Closes #7055

- version: add OpenLDAP version in the output
  
  Assisted-by: Howard Chu
  Closes #7054

Jay Satiro (13 May 2021)
- [Joel Depooter brought this change]

  schannel: Ensure the security context request flags are always set
  
  As of commit 54e7475, these flags would only be set when using a new
  credential handle. When re-using an existing credential handle, the
  flags would not be set.
  
  Closes https://github.com/curl/curl/pull/7051

Dan Fandrich (12 May 2021)
- tests: Fix some tag matching issues in a number of tests

Daniel Stenberg (12 May 2021)
- sasl: use 'unsigned short' to store mechanism
  
  ... saves a few bytes of struct size in memory and it only uses
  10 bits anyway.
  
  Closes #7045

- hostip: remove the debug code for LocalHost
  
  The Curl_resolv() had special code (when built in debug mode) for when
  resolving the host name "LocalHost" (using that exact casing). It would
  then get the host name from the --interface option instead.
  
  This development-only feature was not used by anything (anymore) and we
  have the --resolve feature if we want to play similar tricks properly
  going forward.
  
  Closes #7044

- progress: reset limit_size variables at transfer start
  
  Otherwise the old value would linger from a previous use and would mess
  up the network speed cap logic.
  
  Reported-by: Ymir1711 on github
  
  Fixes #7042
  Closes #7043

- RELEASE-NOTES: synced

- [Daniel Gustafsson brought this change]

  cookies: use CURLcode for cookie_output reporting
  
  Writing the cookie file has multiple error conditions, and was using an
  int with magic numbers to report the different error (which in turn were
  disregarded anyways). This moves reporting to use a CURLcode value.
  
  Lightly-touched-by: Daniel Stenberg
  
  Closes #7037
  Closes #6749

- [Daniel Gustafsson brought this change]

  cookies: make use of string duplication function
  
  strstore() is defined as a strdup which ensures to free the target
  pointer before duping the source char * into it. Make use of it in
  two more cases where it can simplify the code.

- [Daniel Gustafsson brought this change]

  cookies: refactor comments
  
  Comments in the cookie code were a bit all over the place in terms of
  style and wording. This takes a stab at cleaning them up by keeping to
  a single style and overall shape. Some comments are moved a little and
  some removed alltogether due to being redundant. No functional changes
  have been made,

- [Peng-Yu Chen brought this change]

  http2: skip immediate parsing of payload following protocol switch
  
  This is considered not harmful as a following http2_recv shall be
  called very soon.
  
  This is considered helpful in the specific situation where some
  servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
  following the return of HTTP status 101, other than waiting for
  the client-side connection preface to arrive.
  
  Fixes #7036
  Closes #7040

- [Peng-Yu Chen brought this change]

  http2: use nghttp2_session_upgrade2 instead of nghttp2_session_upgrade
  
  Following the upstream deprecation of nghttp2_session_upgrade.
  
  Also provides further checks for requests with the HEAD method.
  
  Closes #7041

- progress/trspeed: use a local convenient pointer to beautify code
  
  The function becomes easier to read and understand with less repetition.

- trspeed: use long double for transfer speed calculation

- progress: move transfer speed calc into function
  
  This silences two scan-build-11 warnings: "The result of the '/'
  expression is undefined"
  
  Bug: https://curl.se/mail/lib-2021-05/0022.html
  Closes #7035

- [Cameron Cawley brought this change]

  openssl: remove unneeded cast for CertOpenSystemStore()
  
  Closes #7025

- travis: disable the libssh build
  
  It can't run on focal and causes warnings on bionic. Since the focal
  failure started rather suddenly a while ago, we can suspect it might be
  temporary.
  
  Added "bring back the build" to the TODO document.
  
  Fixes #7011
  Closes #7012

- [Peng-Yu Chen brought this change]

  http: use calculated offsets inst of integer literals for header parsing
  
  Assumed to be a minor coding style improvement with no behavior change.
  
  A modern compiler is expected to have the calculation optimized during
  compilation. It may be deemed okay even if that's not the case, since
  the added overhead is considered very low.
  
  Closes #7032

- [Peng-Yu Chen brought this change]

  GIT-INFO: suggest using autoreconf instead of buildconf
  
  Follow-up to 85868537d
  
  Closes #7033

- http: deal with partial CONNECT sends
  
  Also added 'CURL_SMALLSENDS' to make Curl_write() send short packets,
  which helped verifying this even more.
  
  Add test 363 to verify.
  
  Reported-by: ustcqidi on github
  Fixes #6950
  Closes #7024

- HTTP3: make the ngtcp2 build use the quictls fork
  
  ... as ngtcp2 itself documents the build this way.
  
  Closes #7031

- http: limit the initial send amount to used upload buffer size
  
  Previously this logic would cap the send to CURL_MAX_WRITE_SIZE bytes,
  but for the situations where a larger upload buffer has been set, this
  function can benefit from sending more bytes. With default size used,
  this does the same as before.
  
  Also changed the storage of the size to an 'unsigned int' as it is not
  allowed to be set larger than 2M.
  
  Also added cautions to the man pages about changing buffer sizes in
  run-time.
  
  Closes #7022

- RELEASE-NOTES: synced

- ngtcp2: fix the cb_acked_stream_data_offset proto
  
  The 'datalen' value should be 64 bit, not size_t!
  
  Reported-by: Dmitry Karpov
  Bug: https://curl.se/mail/lib-2021-05/0019.html
  Closes #7027

- progress: when possible, calculate transfer speeds with microseconds
  
  ... this improves precision, especially for transfers in the few or even
  sub millisecond range.
  
  Reported-by: J. Bromley
  Fixes #7017
  Closes #7020

- http: reset the header buffer when sending the request
  
  A reused transfer handle could otherwise reuse the previous leftover
  buffer and havoc would ensue.
  
  Reported-by: sergio-nsk on github
  Fixes #7018
  Closes #7021

- curl_mprintf.3: add description
  
  These functions have existed in the API since the dawn of time. It is
  about time we describe how they work, even if we discourage users from
  using them.
  
  Closes #7010

- [Timothy Gu brought this change]

  URL-SYNTAX: update IDNA section for WHATWG spec changes
  
  WHATWG URL has dictated the use of Nontransitional Processing (IDNA
  2008) for several years now. Chrome (and derivatives) still use
  Transitional Processing, but Firefox and Safari have both switched.
  
  Also document the fact that winidn functions differently from libidn2
  here.
  
  Closes #7026

- [Calvin Buckley brought this change]

  INSTALL: add IBM i specific quirks
  
  Fixes #6830
  Closes #7013

- libcurl.3: mention the URL API
  
  To make it easier to find. Also a minor polish of libcurl-url.3
  
  Closes #7009

- GnuTLS: don't allow TLS 1.3 for versions that don't support it
  
  Follow-up to 781864bedbc5
  
  ... as they don't understand it and will return error at us!
  
  Closes #7014

Kamil Dudka (6 May 2021)
- tool_getparam: handle failure of curlx_convert_tchar_to_UTF8()
  
  Reported by GCC analyzer:
  
  Error: GCC_ANALYZER_WARNING (CWE-476):
  src/tool_getparam.c: scope_hint: In function 'parse_args'
  src/tool_getparam.c:2318:38: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 'orig_opt'
  lib/curlx.h:56: included_from: Included from here.
  src/tool_getparam.c:28: included_from: Included from here.
  lib/curl_multibyte.h:70:51: note: in definition of macro 'curlx_convert_tchar_to_UTF8'
  src/tool_getparam.c:2316:16: note: in expansion of macro 'curlx_convert_tchar_to_UTF8'
  
  Reviewed-by: Marcel Raad
  Reviewed-by: Daniel Stenberg
  Closes #7023

Daniel Stenberg (6 May 2021)
- scripts/delta: also show total number of days

Marc Hoersken (5 May 2021)
- sockfilt: fix invalid increment of handles index variable nfd
  
  Only increment the array index if we actually stored a handle.
  
  Follow up to e917492048f4b85a0fd58a033d10072fc7666c3b
  Closes #6992

- sockfilt: avoid getting stuck waiting for writable socket
  
  Reset FD_WRITE event using the same approach as in multi.c
  
  Follow up to b36442b24305f3cda7c13cc64b46838995a4985b
  Closes #6992

Jay Satiro (5 May 2021)
- test678: Fix for Windows multibyte builds
  
  Follow-up to 77fc385 from yesterday.
  
  Bug: https://github.com/curl/curl/pull/6662#issuecomment-832966557
  Reported-by: Marc Hörsken

- [Dmitry Kostjuchenko brought this change]

  build: fix compilation for Windows UWP platform
  
  - Include afunix.h which is necessary for sockaddr_un when
    USE_UNIX_SOCKETS is defined on Windows.
  
  Closes https://github.com/curl/curl/pull/7006

Daniel Stenberg (5 May 2021)
- gnutls: make setting only the MAX TLS allowed version work
  
  Previously, settting only the max allowed TLS version, leaving the
  minimum one at default, didn't actually set it and left it to default
  (TLS 1.3) too!
  
  As a bonus, this change also removes the dead code handling of SSLv3
  since that version can't be set anymore (since eff614fb0242cb).
  
  Reported-by: Daniel Carpenter
  Fixes #6998
  Closes #7000

- openldap: replace ldap_ prefix on private functions
  
  Since openldap itself uses that prefix and with OpenĹDAP 2.5.4 (at
  least) there's a symbol collision because of that.
  
  The private functions now use the 'oldap_' prefix where it previously
  used 'ldap_'.
  
  Reported-by: 3eka on github
  Fixes #7004
  Closes #7005

Jay Satiro (5 May 2021)
- http2: fix potentially uninitialized variable
  
  introduced several days ago in 3193170. caught by visual studio linker.

- [Gilles Vollant brought this change]

  SSL: support in-memory CA certs for some backends
  
  - New options CURLOPT_CAINFO_BLOB and CURLOPT_PROXY_CAINFO_BLOB to
    specify in-memory PEM certificates for OpenSSL, Schannel (Windows)
    and Secure Transport (Apple) SSL backends.
  
  Prior to this change PEM certificates could only be imported from a file
  and not from memory.
  
  Co-authored-by: moparisthebest@users.noreply.github.com
  
  Ref: https://github.com/curl/curl/pull/4679
  Ref: https://github.com/curl/curl/pull/5677
  Ref: https://github.com/curl/curl/pull/6109
  
  Closes https://github.com/curl/curl/pull/6662

Daniel Stenberg (4 May 2021)
- [David Cook brought this change]

  tests: ignore case of chunked hex numbers in tests
  
  When hyper is used, it emits uppercase hexadecimal numbers for chunked
  encoding lengths. Without hyper, lowercase hexadecimal numbers are used.
  This change adds preprocessor statements to tests where this is an
  issue, and adapts the fixtures to match.
  
  Closes #6987

- cmake: check for getppid and utimes
  
  ... as they're checked for in the configure script and are used by
  source code.
  
  Removed checks for perror, setvbuf and strlcat since those defines are
  not checked for in source code.
  
  Bonus: removed HAVE_STRLCPY from a few config-*.h files since that
  symbol is not used in source code.
  
  Closes #6997

- libtest: remove lib530.c
  
  Follow up from e50a877df when test 530 was removed. Since then this
  source file has not been used/needed.
  
  Closes #6999

- FILEFORMAT: mention sectransp as a feature
  
  Been supported since at least 40259ca65
  
  Closes #7001

- RELEASE-NOTES: synced

- libssh2: ignore timeout during disconnect
  
  ... to avoid memory leaks!
  
  libssh2 is tricky as we have to deal with the non-blockiness even in
  close and shutdown cases. In the cases when we shutdown after a timeout
  already expired, it is crucial that curl doen't let the timeout abort
  the shutdown process as that then leaks memory!
  
  Reported-by: Benjamin Riefenstahl
  Fixes #6990

- KNOWN_BUGS: add two HTTP/2 bugs

- KNOWN_BUGS: add three HTTP/3 issues
  
  ... and moved the HTTP/2 issues to its own section
  
  Closes #6606
  Closes #6510
  Closes #6494

- [ejanchivdorj brought this change]

  CURLcode: add CURLE_SSL_CLIENTCERT
  
  When a TLS server requests a client certificate during handshake and
  none can be provided, libcurl now returns this new error code
  CURLE_SSL_CLIENTCERT
  
  Only supported by Secure Transport and OpenSSL for TLS 1.3 so far.
  
  Closes #6721

- [Tobias Gabriel brought this change]

  .github/FUNDING: add link to GitHub sponsors
  
  Closes #6985

- [Harry Sintonen brought this change]

  krb5/name_to_level: replace checkprefix with curl_strequal
  
  Closes #6993

- [Harry Sintonen brought this change]

  Curl_input_digest: require space after Digest
  
  Closes #6993

- [Harry Sintonen brought this change]

  Curl_http_header: check for colon when matching Persistent-Auth
  
  Closes #6993

- [Harry Sintonen brought this change]

  Curl_http_input_auth: require valid separator after negotiation type
  
  Closes #6993

- http: fix the check for 'Authorization' with Bearer
  
  The code would wrongly check for it using an additional colon.
  
  Reported-by: Blake Burkhart
  Closes #6988

- [Kamil Dudka brought this change]

  http2: fix a resource leak in push_promise()
  
  ... detected by Coverity:
  
  Error: RESOURCE_LEAK (CWE-772):
  lib/http2.c:532: alloc_fn: Storage is returned from allocation function "duphandle".
  lib/http2.c:532: var_assign: Assigning: "newhandle" = storage returned from "duphandle(data)".
  lib/http2.c:552: noescape: Resource "newhandle" is not freed or pointed-to in "set_transfer_url".
  lib/http2.c:555: leaked_storage: Variable "newhandle" going out of scope leaks the storage it points to.
  
  Closes #6986

- [Kamil Dudka brought this change]

  http2: fix resource leaks in set_transfer_url()
  
  ... detected by Coverity:
  
  Error: RESOURCE_LEAK (CWE-772):
  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  lib/http2.c:486: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:488: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  
  Error: RESOURCE_LEAK (CWE-772):
  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  lib/http2.c:493: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:495: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  
  Error: RESOURCE_LEAK (CWE-772):
  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  lib/http2.c:500: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:502: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  
  Error: RESOURCE_LEAK (CWE-772):
  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  lib/http2.c:505: noescape: Resource "u" is not freed or pointed-to in "curl_url_get". [Note: The source code implementation of the function has been overridden by a builtin model.]
  lib/http2.c:507: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  
  Closes #6986

- [Jacob Hoffman-Andrews brought this change]

  rustls: use ALPN
  
  Update required rustls to 0.5.0
  
  Closes #6960

- [MAntoniak brought this change]

  gskit: fix CURL_DISABLE_PROXY build
  
  Removed localfd and remotefd from ssl_backend_data (ued only with proxy
  connection). Function pipe_ssloverssl return always 0, when proxy is not
  used.
  
  Closes #6981

- [MAntoniak brought this change]

  gskit: fix undefined reference to 'conn'
  
  Closes #6980

- [Jacob Hoffman-Andrews brought this change]

  tls: add USE_HTTP2 define
  
  This abstracts across the two HTTP/2 backends: nghttp2 and Hyper.
  
  Add our own define for the "h2" ALPN protocol, so TLS backends can use
  it without depending on a specific HTTP backend.
  
  Closes #6959

- [Jacob Hoffman-Andrews brought this change]

  lib: fix 0-length Curl_client_write calls
  
  Closes #6954

- [Jacob Hoffman-Andrews brought this change]

  lib: remove strlen call from Curl_client_write
  
  At all call sites with an explicit 0 len, pass an appropriate nonzero
  len.
  
  Closes #6954

- [Ayushman Singh Chauhan brought this change]

  docs: camelcase it like GitHub everywhere
  
  Closes #6979

Jay Satiro (27 Apr 2021)
- [Lucas Servén Marín brought this change]

  docs: fix typo in fail-with-body doc
  
  This commit fixes a small typo in the documentation for the
  --fail-with-body flag.
  
  Closes https://github.com/curl/curl/pull/6977

- lib: fix some misuse of curlx_convert_UTF8_to_tchar
  
  curlx_convert_UTF8_to_tchar must be freed by curlx_unicodefree, but
  prior to this change some uses mistakenly called free.
  
  I've reviewed all other uses of curlx_convert_UTF8_to_tchar and
  curlx_convert_tchar_to_UTF8.
  
  Bug: https://github.com/curl/curl/pull/6602#issuecomment-825236763
  Reported-by: sergio-nsk@users.noreply.github.com
  
  Closes https://github.com/curl/curl/pull/6938

Daniel Stenberg (27 Apr 2021)
- ntlm: precaution against super huge type2 offsets
  
  ... which otherwise caused an integer overflow and circumvented the if()
  conditional size check.
  
  Detected by OSS-Fuzz
  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33720
  Assisted-by: Max Dymond
  Closes #6975

- c-hyper: fix unused variable ‘wrote’

- libcurl-security.3: be careful of setuid
  
  Reported-by: Harry Sintonen
  Closes #6970

- [Kevin Burke brought this change]

  c-hyper: don't write to set.writeheader if null
  
  Previously if a caller set CURLOPT_WRITEFUNCTION but did not set a
  CURLOPT_HEADERDATA buffer, Hyper would still attempt to write headers to
  the data->set.writeheader header buffer, even though it is null.  This
  led to NPE segfaults attempting to use libcurl+Hyper with Git, for
  example.
  
  Instead, process the client write for the status line using the same
  logic we use to process the client write for the later HTTP headers,
  which contains the appropriate guard logic. As a side benefit,
  data->set.writeheader is now only read in one file instead of two.
  
  Fixes #6619
  Fixes abetterinternet/crustls#49
  Fixes hyperium/hyper#2438
  Closes #6971

- wolfssl: handle SSL_write() returns 0 for error
  
  Reported-by: Timo Lange
  
  Closes #6967

- easy: ignore sigpipe in curl_easy_send
  
  Closes #6965

- sigpipe: ignore SIGPIPE when using wolfSSL as well
  
  Closes #6966

- libcurl-security.3: don't try to filter IPv4 hosts based on the URL
  
  Closes #6942

- [Harry Sintonen brought this change]

  nss_set_blocking: avoid static for sock_opt
  
  Reviewed-by: Kamil Dudka
  Closes #6945

- RELEASE-NOTES: synced

- [Yusuke Nakamura brought this change]

  docs/HTTP3.md: fix nghttp2's HTTP/3 server port
  
  Port 8443 does not work now.
  Correct origin is in the quicwg's wiki.
  https://github.com/quicwg/base-drafts/wiki/Implementations#ngtcp2
  
  Closes #6964

- krb5: don't use 'static' to store PBSZ size response
  
  ... because it makes the knowledge and usage cross-transfer in funny and
  unexpected ways.
  
  Reported-by: Harry Sintonen
  Closes #6963

- [Kevin Burke brought this change]

  m4: add security frameworks on Mac when compiling rustls
  
  Previously compiling rustls on Mac would only complete if you also
  compiled the SecureTransport TLS backend, which curl would prefer to
  the Rust backend.
  
  Appending these flags to LDFLAGS makes it possible to compile the
  Rustls backend on Mac without the SecureTransport backend, which means
  this patch will make it possible for Mac users to use the Rustls
  backend for TLS.
  
  Reviewed-by: Jacob Hoffman-Andrews
  
  Fixes #6955
  Cloes #6956

- krb5: remove the unused 'overhead' function
  
  Closes #6947

- [Johann150 brought this change]

  curl_url_set.3: add memory management information
  
  wording taken from man page for CURLOPT_URL.3
  
  As far as I can see, the URL part is either malloc'ed before due to
  encoding or it is strdup'ed.
  
  Closes #6953

- [Jacob Hoffman-Andrews brought this change]

  c-hpyer: fix handling of zero-byte chunk from hyper
  
  Closes #6951

- CURLOPT_POSTFIELDS.3: clarify how it gets the size of the data
  
  Ref: https://curl.se/mail/lib-2021-04/0085.html
  Closes #6943

- [Ralph Langendam brought this change]

  cmake: make libcurl output filename configurable
  
  Reviewed-by: Jakub Zakrzewski
  Closes #6933

- [Patrick Monnerat brought this change]

  vtls: reset ssl use flag upon negotiation failure
  
  Fixes the segfault in ldaps disconnect.
  
  Reported-by: Illarion Taev
  Fixes #6934
  Closes #6937

- configure: fix typo in TLS error message
  
  Reported-by: Pontus Lundkvist

- README: link to the commercial support option

Jay Satiro (22 Apr 2021)
- [Martin Halle brought this change]

  version: add gsasl_version to curl_version_info_data
  
  - Add gsasl_version string and bump to CURLVERSION_TENTH.
  
  Ref: https://curl.se/mail/lib-2021-04/0003.html
  
  Closes https://github.com/curl/curl/pull/6843

- [Morten Minde Neergaard brought this change]

  schannel: Support strong crypto option
  
  - Support enabling strong crypto via optional user cipher list when
    USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list.
  
  MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known
  weak cryptographic algorithms, cipher suites, and SSL/TLS protocol
  versions that may be otherwise enabled for better interoperability."
  
  Ref: https://curl.se/mail/lib-2021-02/0066.html
  Ref: https://curl.se/docs/manpage.html#--ciphers
  Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html
  Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred
  
  Closes https://github.com/curl/curl/pull/6734

Daniel Stenberg (22 Apr 2021)
- RELEASE-NOTES: synced

- ci: adapt to configure requiring an explicit TLS choice

- configure: split out each TLS library detector into its own function
  
  ... and put those functions in separate m4 files per TLS library.

- configure: make the TLS library choice(s) explicit
  
  configure no longer tries to find a TLS library by default, but all
  libraries are now equal: the user needs to explicitly ask what TLS
  library or libraries to use.
  
  If no TLS library is selected, configure will error out unless
  --without-ssl is explicitly used to request a built without TLS (as that
  is very rare these days).
  
  Removes: --with-winssl, --with-darwinssl and all --without-* options for
  TLS libraries.
  
  Closes #6897

- tests/disable-scan.pl: also scan all m4 files
  
  Fixes test 1165 when functions are moved from configure.ac to files in
  m4/

Jay Satiro (22 Apr 2021)
- schannel: Disable auto credentials; add an option to enable it
  
  - Disable auto credentials by default. This is a breaking change
    for clients that are using it, wittingly or not.
  
  - New libcurl ssl option value CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl
    to automatically locate and use a client certificate for
    authentication, when requested by the server.
  
  - New curl tool options --ssl-auto-client-cert and
    --proxy-ssl-auto-client-cert map to CURLSSLOPT_AUTO_CLIENT_CERT.
  
  This option is only supported for Schannel (the native Windows SSL
  library). Prior to this change Schannel would, with no notification to
  the client, attempt to locate a client certificate and send it to the
  server, when requested by the server. Since the server can request any
  certificate that supports client authentication in the OS certificate
  store it could be a privacy violation and unexpected.
  
  Fixes https://github.com/curl/curl/issues/2262
  Reported-by: Jeroen Ooms
  Assisted-by: Wes Hinsley
  Assisted-by: Rich FitzJohn
  
  Ref: https://curl.se/mail/lib-2021-02/0066.html
  Reported-by: Morten Minde Neergaard
  
  Closes https://github.com/curl/curl/pull/6673

Daniel Stenberg (22 Apr 2021)
- [Michał Antoniak brought this change]

  vtls: deduplicate some DISABLE_PROXY ifdefs
  
  continue from #5735
  
  - using SSL_HOST_NAME, SSL_HOST_DISPNAME, SSL_PINNED_PUB_KEY for other
    tls backend
  
  - create SSL_HOST_PORT
  
  Closes #6660

Jay Satiro (22 Apr 2021)
- OS400: fix typo
  
  CURLVERSION_HEIGHTH -> CURLVERSION_EIGHTH

Daniel Stenberg (22 Apr 2021)
- checksrc: complain on == NULL or != 0 checks in conditions
  
  ... to make them all consistenly use if(!var) and if(var)
  
  Also added a few missing warnings to the documentation.
  
  Closes #6912

- tidy-up: make conditional checks more consistent
  
  ... remove '== NULL' and '!= 0'
  
  Closes #6912

- [Patrick Monnerat brought this change]

  vauth: factor base64 conversions out of authentication procedures
  
  Input challenges and returned messages are now in binary.
  Conversions from/to base64 are performed by callers (currently curl_sasl.c
  and http_ntlm.c).
  
  Closes #6654

- [Patrick Monnerat brought this change]

  bufref: buffer reference support
  
  A struct bufref holds a buffer pointer, a data size and a destructor.
  When freed or its contents are changed, the previous buffer is implicitly
  released by the associated destructor. The data size, although not used
  internally, allows binary data support.
  
  A unit test checks its handling methods: test 1661
  
  Closes #6654

- [Patrick Monnerat brought this change]

  os400: additional support for options metadata
  
  New functions curl_easy_option_by_name_ccsid() and
  curl_easy_option_get_name_ccsid() allows accessing metadata in alternate
  character encoding.
  
  This commit also updates curl_version_info_ccsid() to handle info version 9
  and adds recent definitions to the ILE/RPG include file.
  
  Documentation updated accordingly.
  
  Reviewed-by: Jon Rumsey
  Closes #6574

- [Patrick Monnerat brought this change]

  test server: take care of siginterrupt() deprecation
  
  Closes #6529

Marc Hoersken (21 Apr 2021)
- lib1564.c: enable last wakeup test part on Windows
  
  Suggested-by: Gergely Nagy
  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad
  
  Closes #6245

- multi: fix slow write/upload performance on Windows
  
  Reset FD_WRITE by sending zero bytes which is permissible
  and will be treated by implementations as successful send.
  
  Without this we won't be notified in case a socket is still
  writable if we already received such a notification and did
  not send any data afterwards on the socket. This would lead
  to waiting forever on a writable socket being writable again.
  
  Assisted-by: Tommy Odom
  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad
  Tested-by: tmkk on github
  
  Bug: #6146
  Closes #6245

- multi: reduce Win32 API calls to improve performance
  
  1. Consolidate pre-checks into a single Curl_poll call:
  
  This is an attempt to restructure the code in Curl_multi_wait
  in such a way that less syscalls are made by removing individual
  calls to Curl_socket_check via SOCKET_READABLE/SOCKET_WRITABLE.
  
  2. Avoid resetting the WinSock event multiple times:
  
  We finally call WSAResetEvent anyway, so specifying it as
  an optional parameter to WSAEnumNetworkEvents is redundant.
  
  3. Wakeup directly in case no sockets are being monitoring:
  
  Fix the WinSock based implementation to skip extra waiting by
  not sleeping in case no sockets are to be waited on and just
  the WinSock event is being monitored for wakeup functionality.
  
  Assisted-by: Tommy Odom
  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad
  
  Bug: #6146
  Closes #6245

- Revert "Revert 'multi: implement wait using winsock events'"
  
  This reverts commit 2260e0ebe6d45529495231b3e37a0c58fb92a6a2,
  also restoring previous follow up changes which were reverted.
  
  Authored-by: rcombs on github
  Authored-by: Marc Hörsken
  Reviewed-by: Jay Satiro
  Reviewed-by: Marcel Raad
  
  Restores #5634
  Reverts #6281
  Part of #6245

Daniel Stenberg (21 Apr 2021)
- Revert "cmake: make libcurl library output name configurable"
  
  This reverts commit 1cba36d2166c396f987eea587cf92671b27acb92.
  
  CMake provides properties that can be set on a target to rename the
  output artifact without changing the name of a target.
  
  Ref: #6899

- [Michael Kolechkin brought this change]

  sectransp: allow cipher name to be specified
  
  Add parser for CURLOPT_SSL_CIPHER_LIST option for Secure Transport (ST)
  back-end. Similar to NSS and GSKit back-ends, new code parses string
  value and configures ST library to use those ciphers for communication.
  Create cipher spec data structure and initialize the array of specs with
  cipher number, name, alias, and 'weak' flag.
  
  Mark triple-DES ciphers as 'weak', and exclude them from the default
  ciphers list.
  
  Closes #6464

- [Michael Kolechkin brought this change]

  NSS: add ciphers to map
  
  Add cipher names to the `cipherlist` map, based on the list of ciphers
  implemented by the NSS in the source code file
  https://github.com/nss-dev/nss/blob/master/lib/ssl/sslenum.c
  
  Closes #6670

- http2: remove DEBUG_HTTP2
  
  Accidentally committed in 605e84235

- [Ralph Langendam brought this change]

  cmake: make libcurl library output name configurable
  
  Closes #6899

- sws: #ifdef S_IFSOCK use
  
  SCO OpenServer 5.0.7 does not define S_IFSOCK.
  
  Reported-by: Kevin R. Bulgrien
  Bug: https://curl.se/mail/lib-2021-04/0074.html
  Closes #6926

- curl_setup: provide the shutdown flags wider
  
  By using #ifdef on the symbol names to work on anything that don't
  provide them. SCO OpenServer 5.0.7, sys/socket.h does not define either
  SHUT_RDWR, SHUT_RD, and SHUT_WR.
  
  Reported-by: Kevin R. Bulgrien
  Bug: https://curl.se/mail/lib-2021-04/0073.html
  Closes #6925

- connect: use CURL_SA_FAMILY_T for portability
  
  Reported-by: Kevin R. Bulgrien
  Bug: https://curl.se/mail/lib-2021-04/0071.html
  
  Closes #6918

- urlapi: make sure no +/- signs are accepted in IPv4 numericals
  
  Follow-up to 56a037cc0ad1b2. Extends test 1560 to verify.
  
  Reported-by: Tuomas Siipola
  Fixes #6916
  Closes #6917

- ConnectionExists: respect requests for h1 connections better
  
  ... for situations when multiplexing isn't enabled on the h2 connection
  and h1 is explicitly requested for the transfer.
  
  Assisted-by: Gergely Nagy

- multi: don't close connection HTTP_1_1_REQUIRED
  
  The ConnectionExists() function will note that the new transfer wants
  less then h2 and that it can't multiplex it and therefor opt to open a
  new connection instead.

- http2: move the stream error field to the per-transfer storage
  
  Storing a stream error in the per-connection struct was an error that lead to
  race conditions as subsequent stream handling could overwrite the error code
  before it was used for the stream with the actual problem.
  
  Closes #6910

- http2: call the handle-closed function correctly on closed stream
  
  This was this one condition where the stream could be closed due to an
  error and the function would still wrongly just return 0 for it.
  
  Reported-by: Gergely Nagy
  Fixes #6862
  Closes #6910

- test1660: check the created HSTS file as text mode
  
  Closes #6922

- RELEASE-NOTES: synced

- test 493: require https in curl to run
  
  Closes #6927

Jay Satiro (20 Apr 2021)
- tool_operate: don't discard failed parallel transfer result
  
  - Save a parallel transfer's result code only when it fails and the
    transfer is not being retried.
  
  Prior to this change the result code was always set which meant that a
  failed result could be erroneously discarded if a different transfer
  later had a successful result (CURLE_OK).
  
  Before:
  
  > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10
  > echo %ERRORLEVEL%
  0
  
  After:
  
  > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10
  > echo %ERRORLEVEL%
  22
  
  Closes #xxxx

- [Georeth Zhou brought this change]

  openssl: fix build error with OpenSSL < 1.0.2
  
  Closes https://github.com/curl/curl/pull/6920

Viktor Szakats (19 Apr 2021)
- README.md: delete Codacy UTM parameters & follow permanent redirect [ci skip]
  
  UTM parameters leak referrer and various marketing/tracking information
  even if these would normally be stripped by website or client policy.
  This link also works fine without them. Also took the opportunity to
  update the URL to the one pointed to by the previous one via permanent
  redirect.
  
  Reviewed-by: Daniel Stenberg
  Closes #6919

Daniel Stenberg (19 Apr 2021)
- urlapi: "normalize" numerical IPv4 host names
  
  When the host name in a URL is given as an IPv4 numerical address, the
  address can be specified with dotted numericals in four different ways:
  a32, a.b24, a.b.c16 or a.b.c.d and each part can be specified in
  decimal, octal (0-prefixed) or hexadecimal (0x-prefixed).
  
  Instead of passing on the name as-is and leaving the handling to the
  underlying name functions, which made them not work with c-ares but work
  with getaddrinfo, this change now makes the curl URL API itself detect
  and "normalize" host names specified as IPv4 numericals.
  
  The WHATWG URL Spec says this is an okay way to specify a host name in a
  URL. RFC 3896 does not allow them, but curl didn't prevent them before
  and it seems other RFC 3896-using tools have not either. Host names used
  like this are widely supported by other tools as well due to the
  handling being done by getaddrinfo and friends.
  
  I decided to add the functionality into the URL API itself so that all
  users of these functions get the benefits, when for example wanting to
  compare two URLs. Also, it makes curl built to use c-ares now support
  them as well and make curl builds more consistent.
  
  The normalization makes HTTPS and virtual hosted HTTP work fine even
  when curl gets the address specified using one of the "obscure" formats.
  
  Test 1560 is extended to verify.
  
  Fixes #6863
  Closes #6871

- libssh: fix "empty expression statement has no effect" warnings
  
  ... by fixing macros to do-while constructs and moving out the calls to
  "break" outside of the actual macro. It also fixes the problem where the
  macro was used witin a loop and the break didn't do right.
  
  Reported-by: Emil Engler
  Fixes #6847
  Closes #6909

- hsts: enable by default
  
  No longer considered experimental.
  
  Closes #6700

- vtls: refuse setting any SSL version
  
  ... previously they were supported if a TLS library would (unexpectedly)
  still support them, but from this change they will be refused already in
  curl_easy_setopt(). SSLv2 and SSLv3 have been known to be insecure for
  many years now.
  
  Closes #6773

- curl: ignore options asking for SSLv2 or SSLv3
  
  Instead output a warning about it and continue with the defaults.
  
  These SSL versions are typically not supported by the TLS libraries since a
  long time back already since they are inherently insecure and broken. Asking
  for them to be used will just cause an error to be returned slightly later.
  
  In the unlikely event that a user's TLS library actually still supports these
  protocol versions, this change might make the request a little less insecure.
  
  Closes #6772

- test972: verify the json output with jsonlint
  
  Make sure one of the azure jobs has jsonlint installed so that the test
  runs there.
  
  Ref: #6905

- [Jay Satiro brought this change]

  tool_writeout: fix the HTTP_CODE json output
  
  Update test 970 accordingly.
  
  Reported-by: Michal Rus
  Fixes #6905
  Closes #6906

- openldap: protect SSL-specific code with proper #ifdef
  
  Closes #6901

- libssh2: fix Value stored to 'sshp' is never read
  
  Pointed out by scan-build
  
  Closes #6900

- [Victor Vieux brought this change]

  tool_getparam: replace (in-place) '%20' by '+' according to RFC1866
  
  Signed-off-by: Victor Vieux <victorvieux@gmail.com>
  
  Closes #6895

- configure: provide --with-openssl, deprecate --with-ssl
  
  Makes the option more explicit.
  
  Closes #6887

- RELEASE-NOTES: synced
  
  and bumped curlver to 7.77.0

- [Javier Blazquez brought this change]

  rustls: only return CURLE_AGAIN when TLS session is fully drained
  
  The code in cr_recv was returning prematurely as soon as the socket
  reported no more data to read. However, this could be leaving some
  unread plaintext data in the rustls session from a previous call,
  causing causing the transfer to hang if the socket never receives
  further data.
  
  We need to ensure that the session is fully drained of plaintext data
  before returning CURLE_AGAIN to the caller.
  
  Reviewed-by: Jacob Hoffman-Andrews
  Closes #6894

- cookie: CURLOPT_COOKIEFILE set to NULL switches off cookies
  
  Add test 676 to verify that setting CURLOPT_COOKIEFILE to NULL again clears
  the cookiejar from memory.
  
  Reported-by: Stefan Karpinski
  Fixes #6889
  Closes #6891

Version 7.76.1 (14 Apr 2021)

Daniel Stenberg (14 Apr 2021)
- RELEASE-NOTES: synced
  
  curl 7.76.1 release

- THANKS: add names from 7.76.1

- misc: update copyright year ranges to match latest updates

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: Use ALPN h3-29 for now
  
  Fixes #6864
  Cloes #6886

Jay Satiro (11 Apr 2021)
- TODO: remove 18.22 --fail-with-body
  
  --fail-with-body was added in 8a964cb (precedes curl-7_76_0).

Daniel Stenberg (10 Apr 2021)
- [Jürgen Gmach brought this change]

  src/tool_vms.c: remove duplicated word in comment
  
  Closes #6881

- configure: fix CURL_DARWIN_CFLAGS use
  
  The macro name change was not completely done.
  
  Follow-up to 5d2c384452543c
  Bug: https://github.com/curl/curl/commit/5d2c384452543c7b6c9fb02eaa0afc84fd5ab941#commitcomment-49315187
  Reported-by: Marcel Raad
  Closes #6878

- [Anthony Shaw brought this change]

  github/workflow: add "security-extended" to codeql-analysis.yml
  
  Extends the CodeQL code scan.
  
  Closes #6815

- [Jochem Broekhoff brought this change]

  examples/hiperfifo.c: check event_initialized before delete
  
  If event_del is called with the event struct (still) zeroed out, a
  segmentation fault may occur.  event_initialized checks whether the
  event struct is nonzero.
  
  Closes #6876

- [Patrick Monnerat brought this change]

  ntlm: fix negotiated flags usage
  
  According to Microsoft document MS-NLMP, current flags usage is not
  accurate: flag NTLMFLAG_NEGOTIATE_NTLM2_KEY controls the use of
  extended security in an NTLM authentication message and NTLM version 2
  cannot be negotiated within the protocol.
  
  The solution implemented here is: if the extended security flag is set,
  prefer using NTLM version 2 (as a server featuring extended security
  should also support version 2). If version 2 has been disabled at
  compile time, use extended security.
  
  Tests involving NTLM are adjusted to this new behavior.
  
  Fixes #6813
  Closes #6849

- [Patrick Monnerat brought this change]

  ntlm: support version 2 on 32-bit platforms
  
  Closes #6849

- [Patrick Monnerat brought this change]

  curl_ntlm_core.h: simplify conditionals for USE_NTLM2SESSION
  
  ... as !defined(CURL_DISABLE_CRYPTO_AUTH) is a prerequisite for the
  whole NTLM.
  
  Closes #6849

- lib: remove unused HAVE_INET_NTOA_R* defines
  
  Closes #6867

- [Michael Forney brought this change]

  configure: include <time.h> unconditionally
  
  In 2682e5f5, several instances of AC_HEADER_TIME were removed since
  it is a deprecated autoconf macro. However, this was the macro that
  defined TIME_WITH_SYS_TIME, which was used to indicate that <time.h>
  can be included alongside <sys/time.h>. TIME_WITH_SYS_TIME is still
  used in the configure test body and since it is no longer defined,
  <time.h> is *not* included on systems that have <sys/time.h>.
  
  In particular, at least on musl libc and glibc, <sys/time.h> does
  not implicitly include <time.h> and does not declare clock_gettime,
  gmtime_r, or localtime_r. This causes configure to fail to detect
  those functions.
  
  The AC_HEADER_TIME macro deprecation text says
  
  > All current systems provide time.h; it need not be checked for.
  > Not all systems provide sys/time.h, but those that do, all allow
  > you to include it and time.h simultaneously.
  
  So, to fix this issue, simply include <time.h> unconditionally when
  testing for time-related functions and in libcurl, and don't bother
  checking for it.
  
  Closes #6859

- [Michael Forney brought this change]

  configure: remove use of RETSIGTYPE
  
  This was previously defined by the obsolete AC_TYPE_SIGNAL macro,
  which was removed in 2682e5f5. The deprecation text says
  
  > Your code may safely assume C89 semantics that RETSIGTYPE is void.
  
  So, remove it and just use void instead.
  
  Closes #6861

- [Muhammed Yavuz Nuzumlalı brought this change]

  install: add instructions for Apple Darwin platforms
  
  Closes #6860

- [Muhammed Yavuz Nuzumlalı brought this change]

  configure: disable min version set for Darwin
  
  Fixes #6838
  Closes #6860

- [David Hu brought this change]

  docs/HTTP3.md: update the build instruction using gnutls
  
  In ngtcp2 the `with-gnutls` option is disabled by default, which will
  cause `curl` unable to be `make` because of lacking the libraries
  needed.
  
  Closes #6857

- RELEASE-NOTES: synced

- typecheck-gcc: make the ssl-ctx-cb check use SSL_CTX pointers
  
  ... and not values.
  
  Reported-by: locpyl-tidnyd on github
  Fixes #6818
  Closes #6819

- ngtcp2+gnutls: clear credentials when freed
  
  ... to avoid double-free.
  
  Reported-by: Kenneth Davidson
  Fixes #6824
  Closes #6856

Jay Satiro (5 Apr 2021)
- [Cherish98 brought this change]

  tool_progress: Fix progress meter in parallel mode
  
  Make sure the total amount of DL/UL bytes are counted before the
  transfer finalizes. Otherwise if a transfer finishes too quick, its
  total numbers are not added, and results in a DL%/UL% that goes above
  100%.
  
  Detail:
  
  progress_meter() is called periodically, and it may not catch a
  transfer's total bytes if the value was unknown during the last call,
  and the transfer is finished and deleted (i.e., lost) during the next
  call.
  
  Closes https://github.com/curl/curl/pull/6840

- [Emil Engler brought this change]

  libssh: get rid of PATH_MAX
  
  This removes the last occurrence of PATH_MAX inside our libssh
  implementation by calculating the path length from the string length of
  the two components.
  
  Closes #6829

Daniel Stenberg (5 Apr 2021)
- http_proxy: only loop on 407 + close if we have credentials
  
  ... to fix the retry-loop.
  
  Add test 718 to verify.
  
  Reported-by: Daniel Kurečka
  Fixes #6828
  Closes #6850

- h2: allow 100 streams by default
  
  instead of 13, before the server has told how many streams it
  accepts. The server can always reject new streams anyway if we go above
  what it accepts.
  
  Ref: #6826
  Closes #6852

- [Luke Granger-Brown brought this change]

  file: support GETing directories again
  
  After 957bc1881e686f9714c4e6a01bf33535091f0e21, we no longer compute an
  expected_size for directories. This has the upshot that when we compare
  even an empty Range with the available size, we fail.
  
  This brings back the previous behaviour, which was to succeed, but with
  empty content. This also removes the "Accept-ranges: bytes" header,
  which is nonsensical on directories.
  
  Adds test 3016
  Fixes #6845
  Closes #6846

- RELEASE-NOTES: synced
  
  and bumped to 7.76.1

- TLS: fix HTTP/2 selection
  
  for GnuTLS, BearSSL, mbedTLS, NSS, SChannnel, Secure Transport and
  wolfSSL...
  
  Regression since 88dd1a8a115b1f5ece (shipped in 7.76.0)
  Reported-by: Kenneth Davidson
  Reported-by: romamik om github
  Fixes #6825
  Closes #6827

Jay Satiro (2 Apr 2021)
- hostip: Fix for builds that disable all asynchronous DNS
  
  - Define Curl_resolver_error function only when USE_CURL_ASYNC.
  
  Prior to this change building curl without an asynchronous resolver
  backend (c-ares or threaded) and without DoH (DNS-over-HTTPS, which is
  also asynchronous but independent of resolver backend) would cause a
  build error since Curl_resolver_error is called by and evaluates
  variables only available in asynchronous builds.
  
  Reported-by: Benbuck Nason
  
  Fixes https://github.com/curl/curl/issues/6831
  Closes https://github.com/curl/curl/pull/6832

Daniel Stenberg (31 Mar 2021)
- [Gilles Vollant brought this change]

  openssl: Fix CURLOPT_SSLCERT_BLOB without CURLOPT_SSLCERT_KEY
  
  Reported-by: Christian Schmitz
  Fixes #6816
  Closes #6820

Version 7.76.0 (31 Mar 2021)

Daniel Stenberg (31 Mar 2021)
- RELEASE-NOTES: synced
  
  curl 7.76.0 release

- THANKS: added names from 7.76.0

- CURLOPT_AUTOREFERER.3: clarify that it sets the full URL
  
  ... some users may not want that!

- define: remove CURL_DISABLE_NTLM ifdefs
  
  It was never defined anywhere. Fixed disable-scan (test 1165) to also
  scan headers, which found this issue.
  
  Closes #6809

- vtls: fix addsessionid for non-proxy builds
  
  Follow-up to b09c8ee15771c61
  Fixes #6812
  Closes #6811

- [Li Xinwei brought this change]

  cmake: support WinIDN
  
  Closes #6807

- transfer: clear 'referer' in declaration
  
  To silence (false positive) compiler warnings about it.
  
  Follow-up to 7214288898f5625
  
  Reviewed-by: Marcel Raad
  Closes #6810

- [Marc Hoersken brought this change]

  config: fix SSPI enabling NTLM if crypto auth is disabled
  
  Avoid enabling NTLM feature based upon Windows SSPI
  being enabled in case that crypto auth is disabled.
  
  Reported-by: Marcel Raad
  
  Follow-up to #6277
  Fixes #6803
  Closes #6808

- HISTORY: add two 2021 events

- vtls: add 'isproxy' argument to Curl_ssl_get/addsessionid()
  
  To make sure we set and extract the correct session.
  
  Reported-by: Mingtao Yang
  Bug: https://curl.se/docs/CVE-2021-22890.html
  
  CVE-2021-22890

- [Viktor Szakats brought this change]

  transfer: strip credentials from the auto-referer header field
  
  Added test 2081 to verify.
  
  CVE-2021-22876
  
  Bug: https://curl.se/docs/CVE-2021-22876.html

- curl_sasl: fix compiler error with --disable-crypto-auth
  
  ... if libgsasl was found.
  
  Closes #6806

- [Patrick Monnerat brought this change]

  ldap: only set the callback ptr for TLS context when TLS is used
  
  Follow-up to a5eee22e594c2460f
  Fixes #6804
  Closes #6805

- copyright: update copyright year ranges to 2021
  
  Reviewed-by: Emil Engler
  Closes #6802

- send_speed: simplify the checks for if a speed limit is set
  
  ... as we know the value cannot be set to negative: enforced by
  setopt()

- http: cap body data amount during send speed limiting
  
  By making sure never to send off more than the allowed number of bytes
  per second the speed limit logic is given more room to actually work.
  
  Reported-by: Fabian Keil
  Bug: https://curl.se/mail/lib-2021-03/0042.html
  Closes #6797

- urldata: merge "struct DynamicStatic" into "struct UrlState"
  
  Both were used for the same purposes and there was no logical separation
  between them. Combined, this also saves 16 bytes in less holes in my
  test build.
  
  Closes #6798

- tests/README.md: mentioned that en_US.UTF-8 is required
  
  Reported-by: Oumph on github
  Fixes #6768

- HISTORY: fixed the Mac OS X 10.1 release date
  
  Based on what Wikipedia says

Jay Satiro (26 Mar 2021)
- examples: Remove threaded-shared-conn.c due to bug
  
  Known bug 11.11 is the shared object's connection cache is not thread
  safe, so we should not have an example for it.
  
  Ref: https://github.com/curl/curl/issues/4915
  Ref: https://curl.se/docs/knownbugs.html#A_shared_connection_cache_is_not
  
  Closes https://github.com/curl/curl/pull/6795

- KNOWN_BUGS: Update 11.9 - DoH option inheritance
  
  - Add description: Explain that some options aren't inherited because
    they are not relevant for the DoH SSL connections or may result in
    unexpected behavior.
  
  - Remove the reference to #4578 (SSL verify options not inherited) since
    that was fixed by #6597 (separate DoH-specific options for verify).
  
  - Explain that DoH-specific options (those created by #6597) are
    available: CURLOPT_DOH_SSL_VERIFYHOST, CURLOPT_DOH_SSL_VERIFYPEER and
    CURLOPT_DOH_SSL_VERIFYSTATUS.
  
  - Add a reference to #6605 and explain that the user's debug function is
    not inherited because it would be unexpected to pass internal handles
    (ie DoH handles) to the user's callback.
  
  Closes https://github.com/curl/curl/issues/6605

Daniel Stenberg (26 Mar 2021)
- curl_easy_setopt.3: add curl_easy_option* functions to SEE ALSO

- [Jean-Philippe Menil brought this change]

  openssl: ensure to check SSL_CTX_set_alpn_protos return values
  
  SSL_CTX_set_alpn_protos() return 0 on success, and non-0 on failure
  
  Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
  
  Closes #6794

- multi: close the connection when h2=>h1 downgrading
  
  Otherwise libcurl is likely to reuse the connection again in the next
  attempt since the connection reuse logic doesn't take downgrades into
  account.
  
  Reported-by: Anthony Ramine
  Fixes #6788
  Closes #6793

- openssl: set the transfer pointer for logging early
  
  Otherwise, the transfer will be NULL in the trace function when the
  early handshake details arrive and then curl won't show them.
  
  Regresssion in 7.75.0
  
  Reported-by: David Hu
  Fixes #6783
  Closes #6792

- RELEASE-NOTES: synced

- TODO: Custom progress meter update interval
  
  Ref: https://stackoverflow.com/q/66789977/93747

- docs/ABI: tighten up the language
  
  Make the promises more firm
  
  Closes #6786

- openldap: disconnect better
  
  Instead of clearing the callback argument in disconnect, set it to the
  (new) transfer to make sure the correct data is passed to the callbacks.
  
  Follow-up to e467ea3bd937f38
  Assisted-by: Patrick Monnerat
  Closes #6787

- libssh2: kdb_callback: get the right struct pointer
  
  After the recent conn/data refactor in this source file, this function
  was mistakenly still getting the old struct pointer which would lead to
  crash on servers with keyboard-interactive auth enabled.
  
  Follow-up to a304051620b92e12b (shipped in 7.75.0)
  
  Reported-by: Christian Schmitz
  Fixes #6691
  Closes #6782

- tftp: remove unused struct fields
  
  Follow-up to d3d90ad9c00530d
  
  Closes #6781

- openldap: avoid NULL pointer dereferences
  
  Follow-up to a59c33ceffb8f78
  Reported-by: Patrick Monnerat
  Fixes #6676
  Closes #6780

- http: strip default port from URL sent to proxy
  
  To make sure the Host: header and the URL provide the same authority
  portion when sent to the proxy, strip the default port number from the
  URL if one was provided.
  
  Reported-by: Michael Brown
  Fixes #6769
  Closes #6778

- azure: disable test 433 on azure-ubuntu
  
  Something in that environment sets XDG_CONFIG_HOME for us in a way that
  breaks the test.
  
  Reported-by: Marc Hörsken
  Fixes #6739
  Closes #6777

- tftp: remove the 3600 second default timeout
  
  ... it was never meant to be there.
  
  Reported-by: Tomas Berger
  Fixes #6774
  Closes #6776

- docs: make gen.pl support *italic* and **bold**
  
  Remove some nroffisms from the cmdline doc files to simplify editing,
  and instead support this markdown style.
  
  Closes #6771

- ngtcp2: sync with recent API updates
  
  Closes #6770

- RELEASE-NOTES: synced

- libssh2:ssh_connect: clear session pointer after free
  
  If libssh2_knownhost_init() returns NULL, like in an OOM situation, the
  ssh session was freed but the pointer wasn't cleared which made libcurl
  later call libssh2 to cleanup using the stale pointer.
  
  Fixes #6764
  Closes #6766

- [Jacob Hoffman-Andrews brought this change]

  docs: document version of crustls dependency
  
  This also pins a specific release in the Travis test so future
  API-breaking changins in crustls won't break curl builds.
  
  Add RUSTLS documentation to release tarball.
  
  Enable running tests for rustls, minus FTP tests (require
  connect_blocking, which rustls doesn't implement) and 313 (requires CRL
  handling).
  
  Closes #6763

- [Jacob Hoffman-Andrews brought this change]

  rustls: Handle close_notify.
  
  If we get a close_notify, treat that as EOF. If we get an EOF from the
  TCP stream, treat that as an error (because we should have ended the
  connection earlier, when we got a close_notify).
  
  Closes #6763

- docs: clarify timeouts for queued transfers in multi API
  
  Closes #6758

- ftpserver: only load the preprocessed test file
  
  We always preprocess and tests are no longer sensible to load "raw"
  
  Closes #6738

- tests: use %TESTNUMBER instead of fixed number
  
  This makes the tests easier to copy and relocate to other test numbers
  without having to update content.
  
  Closes #6738

- KNOWN_BUGS: CURLOPT_OPENSOCKETPAIRFUNCTION is missing
  
  Closes #5747

- TODO: provide timing info for each redirect
  
  Closes #6743

Jay Satiro (17 Mar 2021)
- docs: Add SSL backend names to CURL_SSL_BACKEND
  
  - Document the names that can be used with CURL_SSL_BACKEND:
    bearssl, gnutls, gskit, mbedtls, mesalink, nss, openssl, rustls,
    schannel, secure-transport, wolfssl
  
  Ref: https://github.com/curl/curl/issues/2209#issuecomment-360623286
  Ref: https://github.com/curl/curl/issues/6717#issuecomment-800745201
  
  Closes https://github.com/curl/curl/pull/6755

- docs: Explain DOH transfers inherit some SSL settings
  
  - Document in DOH that some SSL settings are inherited but DOH hostname
    and peer verification are not and are controlled separately.
  
  - Document that CURLOPT_SSL_CTX_FUNCTION is inherited by DOH handles but
    we're considering changing behavior to no longer inherit it. Request
    feedback.
  
  Closes https://github.com/curl/curl/pull/6688

Daniel Stenberg (17 Mar 2021)
- http: make 416 not fail with resume + CURLOPT_FAILONERRROR
  
  When asked to resume a download, libcurl will convert that to HTTP logic
  and if then the entire file is already transferred it will result in a
  416 response from the HTTP server. With CURLOPT_FAILONERRROR set in that
  scenario, it should *not* lead to an error return.
  
  Updated test 1156, added test 1273
  
  Reported-by: Jonathan Watt
  Fixes #6740
  Closes #6753

- Curl_timeleft: check both timeouts during connect
  
  The duration of a connect and the total transfer are calculated from two
  different time-stamps. It can end up with the total timeout triggering
  before the connect timeout expires and we should make sure to
  acknowledge whichever timeout that is reached first.
  
  This is especially notable when a transfer first sits in PENDING, as
  that time is counted in the total time but the connect timeout is based
  on the time since the handle changed to the CONNECT state.
  
  The CONNECTTIMEOUT is per connect attempt. The TIMEOUT is for the entire
  operation.
  
  Fixes #6744
  Closes #6745
  Reported-by: Andrei Bica
  Assisted-by: Jay Satiro

- configure: remove use of deprecated macros
  
  AC_HEADER_TIME, AC_HEADER_STDC and AC_TYPE_SIGNAL

- configure: make AC_TRY_* into AC_*_IFELSE
  
  ... as the former versions are deprecated.

- configure: s/AC_HELP_STRING/AS_HELP_STRING
  
  AC_HELP_STRING is deprecated in 2.70+ and I believe AS_HELP_STRING works
  already since 2.59 so bump the minimum required version to that.
  
  Reported-by: Emil Engler
  Fixes #6647
  Closes #6748

- RELEASE-NOTES: synced

- travis: use ubuntu nghttp2 package instead of build our own
  
  Closes #6751

- travis: bump wolfssl to 4.7.0

- travis: only build wolfssl when needed
  
  Closes #6751

- [Jacob Hoffman-Andrews brought this change]

  rustls: allocate a buffer for TLS data.
  
  Previously, rustls was using an on-stack array for TLS data. However,
  crustls has an (unusual) requirement that buffers it deals with are
  initialized before writing to them. By using calloc, we can ensure the
  buffer is initialized once and then reuse it across calls.
  
  Closes #6742

- travis: add a rustls build
  
  ... that doesn't run any tests (yet)
  
  Closes #6750

- HTTP2: remove the outdated remark about multiplexing for the tool

- [Robert Ronto brought this change]

  http2: don't set KEEP_SEND when there's no more data to be sent
  
  this should fix an issue where curl sometimes doesn't send out a request
  with authorization info after a 401 is received over http2
  
  Closes #6747

Marc Hoersken (15 Mar 2021)
- config: fix building SMB with configure using Win32 Crypto
  
  Align conditions for NTLM features between CMake and configure
  builds by differentiating between USE_NTLM and USE_CURL_NTLM_CORE,
  just like curl_setup.h does internally to detect support of:
  
  - USE_NTLM: required for NTLM crypto authentication feature
  - USE_CURL_NTLM_CORE: required for SMB protocol
  
  Implement USE_WIN32_CRYPTO detection by checking for Crypt functions
  in wincrypt.h which are not available in the Windows App environment.
  
  Link advapi32 and crypt32 for Crypto API and Schannel SSL backend.
  Fix condition of Schannel SSL backend in CMake build accordingly.
  
  Reviewed-by: Marcel Raad
  
  Closes #6277

- config: fix detection of restricted Windows App environment
  
  Move the detection of the restricted Windows App environment
  in curl_setup.h before the definition of USE_WIN32_CRYPTO
  via included config-win32.h in case no build system is used.
  
  Reviewed-by: Marcel Raad
  
  Part of #6277

Daniel Stenberg (15 Mar 2021)
- HISTORY: curl 7.7.2 was the first version used in Mac OS X 10.1

- gen.pl: quote "bare" minuses in the nroff curl.1
  
  Reported-by: Alejandro Colomar
  Fixes #6698
  Closes #6722

Daniel Gustafsson (14 Mar 2021)
- hsts: remove unused defines
  
  MAX_HSTS_SUBLEN and MAX_HSTS_SUBLENSTR were unused from the initial commit,
  and mostly likely leftovers from early development.  Remove as they're not
  used for anything.
  
  Closes #6741
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (12 Mar 2021)
- github: add torture-ftp for FTP-only torture testing
  
  and at 20% to try to keep the run-time reasonable
  
  Closes #6728

- travis: split "torture" into a separate "events" build as well
  
  Run torture without FTP and reducing coverage to 20%
  
  For some reason the torture tests now run a lot slower on travis and run
  into the 50 minute limit all the time.
  
  Closes #6728

- ftp: fix memory leak in ftp_done
  
  If after a transfer is complete Curl_GetFTPResponse() returns an error,
  curl would not free the ftp->pathalloc block.
  
  Found by torture-testing test 576
  
  Closes #6737

- [oxalica brought this change]

  http2: fail if connection terminated without END_STREAM
  
  Closes #6736

- RELEASE-NOTES: synced

- [Jacob Hoffman-Andrews brought this change]

  rustls: support CURLOPT_SSL_VERIFYPEER
  
  This requires the latest main branch of crustls, which provides
  rustls_client_config_builder_dangerous_set_certificate_verifier and
  rustls_client_config_builder_set_enable_sni.
  
  This refactors the session setup into its own function, and adds a new
  function cr_hostname_is_ip. Because crustls doesn't support verification
  of IP addresses, special handling is needed: We disable SNI and set a
  placeholder hostname (which never actually gets sent on the wire).
  
  Closes #6719

Daniel Gustafsson (12 Mar 2021)
- cookies: Fix potential NULL pointer deref with PSL
  
  Curl_cookie_init can be called with data being NULL, and this can in turn
  be passed to Curl_cookie_add, meaning that both functions must be careful
  to only use data where it's checked for being a NULL pointer.  The libpsl
  support code does however dereference data without checking, so if we are
  indeed having an unset data pointer we cannot PSL check the cookiedomain.
  
  This is currently not a reachable dereference, as the only caller with a
  NULL data isn't passing a file to initialize cookies from, but since the
  API has this contract let's ensure we hold it.
  
  Closes #6731
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (12 Mar 2021)
- [Michael Hordijk brought this change]

  configure: only add OpenSSL paths if they are defined
  
  Add paths for OpenSSL compiling and linking only if they have been
  defined.  If they haven't been defined, we'll assume that the paths are
  already available to the toolchain.
  
  Closes #6730

Jay Satiro (12 Mar 2021)
- retry.d: Clarify transient 5xx HTTP response codes
  
  - Clarify the only 5xx response codes that are treated as transient are
    500, 502, 503 and 504.
  
  Prior to this change it said it treated all 5xx as transient, but the
  code says otherwise.
  
  Ref: https://github.com/curl/curl/blob/curl-7_75_0/src/tool_operate.c#L462-L495
  
  Closes https://github.com/curl/curl/pull/6724

- retry-all-errors.d: Explain curl errors versus HTTP response errors
  
  - Add a paragraph explaining that curl does not consider HTTP response
    errors as curl errors, and how that behavior can be modified by using
    --retry and --fail.
  
  The --retry-all-errors doc says "Retry on any error" which some users
  may find misleading without the added explanation.
  
  Ref: https://curl.se/docs/faq.html#Why_do_I_get_downloaded_data_eve
  Ref: https://curl.se/docs/faq.html#curl_doesn_t_return_error_for_HT
  
  Reported-by: Lawrence Gripper
  
  Fixes https://github.com/curl/curl/issues/6712
  Closes https://github.com/curl/curl/pull/6720

Daniel Stenberg (11 Mar 2021)
- travis: switch ngtcp2 build over to quictls
  
  The ngtcp2 project switched over to using the quictls OpenSSL fork
  instead of their own patched OpenSSL. We follow suit.
  
  Closes #6729

- test220/314: adjust to run with Hyper

- c-hyper: support automatic content-encoding
  
  Closes #6727

- http: remove superfluous NULL assign
  
  Closes #6727

- tool_operate: bail if set CURLOPT_HTTP09_ALLOWED returns error
  
  Closes #6727

- setopt: error on CURLOPT_HTTP09_ALLOWED set true with Hyper
  
  Not supported.
  
  Closes #6727

- test306: make it not run with Hyper
  
  ... as it tests HTTP/0.9 which Hyper doesn't support.

- test304: header CRLF cleanup to work with Hyper

- FTP: allow SIZE to fail when doing (resumed) upload
  
  Added test 362 to verify.
  
  Reported-by: Jordan Brown
  Regression since 7ea2e1d0c5a7f (7.73.0)
  Fixes #6715
  Closes #6725

- configure: provide Largefile feature for curl-config
  
  ... as cmake now does it correctly, and make test1014 check for it
  
  Closes #6702

- config: remove CURL_SIZEOF_CURL_OFF_T use only SIZEOF_CURL_OFF_T
  
  Make the code consistently use a single name for the size of the
  "curl_off_t" type.
  
  Closes #6702

Jay Satiro (10 Mar 2021)
- [Jun-ya Kato brought this change]

  ngtcp2: Fix build error due to change in ngtcp2_addr_init
  
  ngtcp2/ngtcp2@b8d90a9 changed the function prototype.
  
  Closes https://github.com/curl/curl/pull/6716

Daniel Stenberg (10 Mar 2021)
- [ejanchivdorj brought this change]

  multi: update pending list when removing handle
  
  when removing a handle, most of the lists are updated but pending list
  is not updated. Updating now.
  
  Closes #6713

- [kokke brought this change]

  lib1536: check ptr against NULL before dereferencing it
  
  Closes #6710

- [kokke brought this change]

  lib1537: check ptr against NULL before dereferencing it
  
  Fixes #6707
  Closes #6708

- travis: make torture tests skip TLS-SRP tests
  
  ... as it seems to often hang.
  
  Also: skip the "normal" tests as they're already run by many other
  builds.
  
  Closes #6705

- openssl: adapt to v3's new const for a few API calls
  
  Closes #6703

- quiche: fix crash when failing to connect
  
  Reported-by: ウさん
  Fixes #6664
  Closes #6701

- RELEASE-NOTES: synced
  
  Fixed the release counter and added a missing contributor

- RELEASE-NOTES: synced

- dynbuf: bump the max HTTP request to 1MB
  
  Raised from 128KB to allow longer request headers.
  
  Reported-by: Carl Zogheib
  Fixes #6681
  Closes #6685

Jay Satiro (6 Mar 2021)
- schannel: Evaluate CURLOPT_SSL_OPTIONS via SSL_SET_OPTION macro
  
  - Change use of those options from CURLOPT_SSL_OPTIONS that are not
    already evaluated via SSL_SET_OPTION in schannel and secure transport
    to use that instead of data->set.ssl.optname.
  
  Example:
  
  Evaluate SSL_SET_OPTION(no_revoke) instead of data->set.ssl.no_revoke.
  
  This change is because options set via CURLOPT_SSL_OPTIONS
  (data->set.ssl.optname) are separate from those set for HTTPS proxy via
  CURLOPT_PROXY_SSL_OPTIONS (data->set.proxy_ssl.optname). The
  SSL_SET_OPTION macro determines whether the connection is for HTTPS
  proxy and based on that which option to evaluate.
  
  Since neither Schannel nor Secure Transport backends currently support
  HTTPS proxy in libcurl, this change is for posterity and has no other
  effect.
  
  Closes https://github.com/curl/curl/pull/6690

- [kokke brought this change]

  c-hyper: Remove superfluous pointer check
  
  `n` pointer is never NULL once set. Found by static analysis.
  
  Ref: https://github.com/curl/curl/issues/6696
  
  Closes https://github.com/curl/curl/pull/6697

- version.d: Add missing features to the features list
  
  - Add missing entries for gsasl, Kerberos, NTLM_WB, TrackMemory,
    Unicode and zstd.
  
  - Remove krb4 since it's no longer a feature.
  
  Reported-by: Ádler Jonas Gross
  
  Fixes https://github.com/curl/curl/issues/6677
  Closes https://github.com/curl/curl/pull/6687

- [Vladimir Varlamov brought this change]

  docs: add missing Arg tag to --stderr
  
  Prior to this change the required argument was not shown.
  
  curl.1 before: --stderr
  curl.1 after: --stderr <file>
  
  curl --help before:
       --stderr        Where to redirect stderr
  
  curl --help after:
       --stderr <file>  Where to redirect stderr
  
  Closes https://github.com/curl/curl/pull/6692

- projects: Update VS projects for OpenSSL 1.1.x
  
  - Update VS project templates to use the OpenSSL lib names and include
    directories for OpenSSL 1.1.x.
  
  This change means the VS project files will now build only with OpenSSL
  1.1.x when an OpenSSL configuration is chosen. Prior to this change the
  project files built only with OpenSSL 1.0.x (end-of-life) when an
  OpenSSL configuration was chosen.
  
  The template changes in this commit were made by script:
  
  libeay32.lib => libcrypto.lib
  ssleay32.lib => libssl.lib
  ..\..\..\..\..\openssl\inc32 => ..\..\..\..\..\openssl\include
  
  And since the output directory now contains the includes it's prepended:
  ..\..\..\..\..\openssl\build\Win{32,64}\VC{6..15}\{DLL,LIB}
  {Debug,Release}\include
  
  - Change build-openssl.bat to copy the build's include directory to the
    output directory (as seen above).
  
  Each build has its own opensslconf.h which is different so we can't just
  include the source include directory any longer.
  
  Note the include directory in the output directory is a full copy from
  the build so technically we don't need to include the OpenSSL source
  include directory in the template. However, I left it last in case the
  user made a custom OpenSSL build using the old method which would put
  opensslconf in the OpenSSL source include directory.
  
  - Change build-openssl.bat to use a temporary install directory that is
    different from the temporary build directory.
  
  For OpenSSL 1.1.x the temporary paths must be separate not a descendant
  of the other, otherwise pdb files will be lost between builds.
  
  Ref: https://curl.se/mail/lib-2018-10/0049.html
  Ref: https://gist.github.com/jay/125191c35bbeb894444eff827651f755
  Ref; https://github.com/openssl/openssl/issues/10005
  
  Fixes https://github.com/curl/curl/issues/984
  Closes https://github.com/curl/curl/pull/6675

- doh: Inherit CURLOPT_STDERR from user's easy handle
  
  Prior to this change if the user set their easy handle's error stream
  to something other than stderr it was not inherited by the doh handles,
  which meant that they would still write to the default standard error
  stream (stderr) for verbose output.
  
  Bug: https://github.com/curl/curl/issues/6605
  Reported-by: arvids-kokins-bidstack@users.noreply.github.com
  
  Closes https://github.com/curl/curl/pull/6661

Marc Hoersken (1 Mar 2021)
- CI/azure: replace python-impacket with python3-impacket
  
  As of this month Azure DevOps uses Ubuntu 20.04 LTS which
  no longer supports Python 2 and instead ships Python 3.
  
  Closes #6678

- runtests.pl: kill processes locking test log files
  
  Introduce a new runtests.pl command option: -rm
  
  For now only required and implemented for Windows.
  Ignore stunnel logs due to long running processes.
  
  Requires Sysinternals handle[64].exe to be on PATH.
  
  Reviewed-by: Jay Satiro
  
  Ref: #6058
  Closes #6179

- pathhelp.pm: fix use of pwd -L in Msys environment
  
  While Msys2 has a pwd binary which supports -L,
  Msys1 only has a shell built-in with that feature.
  
  Reviewed-by: Jay Satiro
  
  Part of #6179

Daniel Gustafsson (1 Mar 2021)
- ldap: use correct memory free function
  
  unescaped is coming from Curl_urldecode and not a unicode conversion
  function, so reclaiming its memory should be performed with a normal
  call to free rather than curlx_unicodefree.  In reality, this is the
  same thing as curlx_unicodefree is implemented as a call to free but
  that's not guaranteed to always hold.  Using the curlx macro present
  issues with memory debugging as well.
  
  Closes #6671
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- url: fix typo in comment
  
  Correct a small typo which snuck in with a304051620.

Jay Satiro (28 Feb 2021)
- tool_help: Increase space between option and description
  
  - Increase the minimum number of spaces between the option and the
    description from 1 to 2.
  
  Before:
  ~~~
   -u, --user <user:password> Server user and password
   -A, --user-agent <name> Send User-Agent <name> to server
   -v, --verbose       Make the operation more talkative
   -V, --version       Show version number and quit
   -w, --write-out <format> Use output FORMAT after completion
       --xattr         Store metadata in extended file attributes
  ~~~
  
  After:
  ~~~
   -u, --user <user:password>  Server user and password
   -A, --user-agent <name>  Send User-Agent <name> to server
   -v, --verbose       Make the operation more talkative
   -V, --version       Show version number and quit
   -w, --write-out <format>  Use output FORMAT after completion
       --xattr         Store metadata in extended file attributes
  ~~~
  
  Closes https://github.com/curl/curl/pull/6674

Daniel Stenberg (27 Feb 2021)
- curl: set CURLOPT_NEW_FILE_PERMS if requested
  
  The --create-file-mode code logic accepted the value but never actually
  passed it on to libcurl!
  
  Follow-up to a7696c73436f (shipped in 7.75.0)
  Reported-by: Johannes Lesr
  Fixes #6657
  Closes #6666

- tool_operate: check argc before accessing argv[1]
  
  Follow-up to 09363500b
  Reported-by: Emil Engler
  Reviewed-by: Daniel Gustafsson
  Closes #6668

Daniel Gustafsson (26 Feb 2021)
- [Jean-Philippe Menil brought this change]

  openssl: remove get_ssl_version_txt in favor of SSL_get_version
  
  openssl: use SSL_get_version to get connection protocol
  
  Replace our bespoke get_ssl_version_txt in favor of SSL_get_version.
  We can get rid of few lines of code, since SSL_get_version achieve
  the exact same thing
  
  Closes #6665
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>

- gnutls: Fix nettle discovery
  
  Commit e06fa7462ac258c removed support for libgcrypt leaving only
  support for nettle which has been the default crypto library in
  GnuTLS for a long time. There were however a few conditionals on
  USE_GNUTLS_NETTLE which cause compilation errors in the metalink
  code (as it used the gcrypt fallback instead as a result). See the
  below autobuild for an example of the error:
  
    https://curl.se/dev/log.cgi?id=20210225123226-30704#prob1
  
  This removes all uses of USE_GNUTLS_NETTLE and also removes the
  gcrypt support from the metalink code while at it.
  
  Closes #6656
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- cookies: Support multiple -b parameters
  
  Previously only a single -b cookie parameter was supported with the last
  one winning.  This adds support for supplying multiple -b params to have
  them serialized semicolon separated.  Both cookiefiles and cookies can be
  entered multiple times.
  
  Closes #6649
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (25 Feb 2021)
- build: remove all traces of USE_BLOCKING_SOCKETS
  
  libcurl doesn't behave properly with the define set
  
  Closes #6655

- RELEASE-NOTES: synced

Daniel Gustafsson (25 Feb 2021)
- docs: Fix typos
  
  Random typos spotted when skimming docs.

- cookies: Use named parameters in header prototypes
  
  Align header with project style of using named parameters in the
  function prototypes to aid readability and self-documentation.
  
  Closes #6653
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (24 Feb 2021)
- urldata: make 'actions[]' use unsigned char instead of int
  
  ... as it only needs a few bits per index anyway.
  
  Reviewed-by: Daniel Gustafsson
  Closes #6648

- configure: fail if --with-quiche is used and quiche isn't found
  
  Closes #6652

- [Gregor Jasny brought this change]

  cmake: use CMAKE_INSTALL_INCLUDEDIR indirection
  
  Reviewed-by: Sergei Nikulov
  Closes #6440

Viktor Szakats (23 Feb 2021)
- mingw: enable using strcasecmp()
  
  This makes the 'Features:' list sorted case-insensitively,
  bringing output in-line with *nix builds.
  
  Reviewed-by: Jay Satiro
  Closes #6644

- build: delete unused feature guards
  
  - `HAVE_STRNCASECMP`
  - `HAVE_TCGETATTR`
  - `HAVE_TCSETATTR`
  
  Reviewed-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  Closes #6645

Jay Satiro (23 Feb 2021)
- docs: add CURLOPT_CURLU to 'See also' in curl_url_ functions
  
  Closes https://github.com/curl/curl/pull/6639

Daniel Stenberg (23 Feb 2021)
- [Jacob Hoffman-Andrews brought this change]

  configure: make hyper opt-in, and fail if missing
  
  Previously, configure would look for hyper by default, and use it if
  found; otherwise it would not use hyper, and not error.
  
  Now, configure will not look for hyper unless --with-hyper is passed. If
  configure looks for hyper and fails, it will error.
  
  Also, add -ld -lpthread -lm to Hyper's libs. I think they are required.
  
  Closes #6598

- multi: do once-per-transfer inits in before_perform in DID state
  
  ... since the state machine might go to RATELIMITING and then back to
  PERFORMING doing once-per-transfer inits in that function is wrong and
  it caused problems with receiving chunked HTTP and it set the
  PRETRANSFER time much too often...
  
  Regression from b68dc34af341805aeb7b3715 (shipped in 7.75.0)
  
  Reported-by: Amaury Denoyelle
  Fixes #6640
  Closes #6641

- RELEASE-NOTES: synced

- CODE_STYLE.md: fix broken link to INTERNALS
  
  ... the link would only work if browsed on GitHub, while this link now
  takes the user to the website instead and thus should work on either.
  
  Reported-by: David Demelier

- curl_url_set.3: mention CURLU_PATH_AS_IS
  
  ... it has been supported since the URL API was added.
  
  Bug: https://curl.se/mail/lib-2021-02/0046.html
  
  Closes #6638

Viktor Szakats (21 Feb 2021)
- time: enable 64-bit time_t in supported mingw environments
  
  (Unless 32-bit `time_t` is selected manually via the `_USE_32BIT_TIME_T`
  mingw macro.)
  
  Previously, 64-bit `time_t` was enabled on VS2005 and newer only, and
  32-bit `time_t` was used on all other Windows builds.
  
  Assisted-by: Jay Satiro
  Closes #6636

Jay Satiro (20 Feb 2021)
- test1188: Check for --fail HTTP status
  
  - Change the test to check for curl error on HTTP 404 Not Found.
  
  test1188 tests "--write-out with %{onerror} and %{urlnum} to stderr".
  Prior to this change it did that by specifying a non-existent host which
  would cause an error. ISPs may hijack DNS and resolve non-existent hosts
  so the test would not work if that was the case.
  
  Ref: https://en.wikipedia.org/wiki/DNS_hijacking#Manipulation_by_ISPs
  Ref: https://github.com/curl/curl/issues/6621
  Ref: https://github.com/curl/curl/pull/6623
  
  Closes https://github.com/curl/curl/pull/6637

- memdebug: close debug logfile explicitly on exit
  
  - Use atexit to register a dbg cleanup function that closes the logfile.
  
  LeakSantizier (LSAN) calls _exit() instead of exit() when a leak is
  detected on exit so the logfile must be closed explicitly or data could
  be lost. Though _exit() does not call atexit handlers such as this,
  LSAN's call to _exit() comes after the atexit handlers are called.
  
  Prior to this change the logfile was not explicitly closed so it was
  possible that if LSAN detected a leak and called _exit (which does
  not flush or close files like exit) then the logfile could be missing
  data. That could then cause curl's memanalyze to report false leaks
  (eg a malloc was recorded to the logfile but the corresponding free was
  discarded from the buffer instead of written to the logfile, then
  memanalyze reports that as a leak).
  
  Ref: https://github.com/google/sanitizers/issues/1374
  
  Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541
  
  Closes https://github.com/curl/curl/pull/6620

- curl_multibyte: always return a heap-allocated copy of string
  
  - Change the Windows char <-> UTF-8 conversion functions to return an
    allocated copy of the passed in string instead of the original.
  
  Prior to this change the curlx_convert_ functions would, as what I
  assume was an optimization, not make a copy of the passed in string if
  no conversion was required. No conversion is required in non-UNICODE
  Windows builds since our tchar strings are type char and remain in
  whatever the passed in encoding is, which is assumed to be UTF-8 but may
  be other encoding.
  
  In contrast the UNICODE Windows builds require conversion
  (wchar <-> char) and do return a copy. That inconsistency could lead to
  programming errors where the developer expects a copy, and does not
  realize that won't happen in all cases.
  
  Closes https://github.com/curl/curl/pull/6602

Viktor Szakats (19 Feb 2021)
- http: add new files missed from referrer commit
  
  Ref: 44872aefc2d54f297caf2b0cc887df321bc9d791
  Ref: #6591

- http: add support to read and store the referrer header
  
  - add CURLINFO_REFERER libcurl option
  - add --write-out '%{referer}' command-line option
  - extend --xattr command-line option to fill user.xdg.referrer.url extended
    attribute with the referrer (if there was any)
  
  Closes #6591

Daniel Stenberg (19 Feb 2021)
- urldata: remove the _ORIG suffix from string names
  
  It doesn't provide any useful info but only makes the names longer.
  
  Closes #6624

- url: fix memory leak if OOM in the HSTS handling
  
  Reported-by: Viktor Szakats
  Bug: https://github.com/curl/curl/pull/6627#issuecomment-781626205
  
  Closes #6628

- gnutls: assume nettle crypto support
  
  nettle has been the default crypto library with GnuTLS since 2010. By
  dropping support for the previous libcrypto, we simplify code.
  
  Closes #6625

- asyn-ares: use consistent resolve error message
  
  ... with the help of Curl_resolver_error() which now is moved from
  asyn-thead.c and is provided globally for this purpose.
  
  Follow-up to 35ca04ce1b77636
  
  Makes test 1188 work for c-ares builds
  
  Closes #6626

Viktor Szakats (18 Feb 2021)
- ci: stop building on freebsd-12-1
  
  An updated freebsd-12-2 image was added a few months ago, and this
  older one is consistently failing to go past `pkginstall`:
  ```
  Newer FreeBSD version for package py37-mlt:
  To ignore this error set IGNORE_OSVERSION=yes
  - package: 1202000
  - running kernel: 1201000
  Ignore the mismatch and continue? [Y/n]: pkg: repository FreeBSD contains packages for wrong OS version: FreeBSD:12:amd64
  ```
  
  FreeBSD thread suggests that 12.1 is EOL, and best to avoid.
  
  Ref: https://forums.freebsd.org/threads/78856/
  
  Reviewed-by: Daniel Stenberg
  Closes #6622

Daniel Stenberg (18 Feb 2021)
- test1188: change error from connect to resolve error
  
  Using the %NOLISTENPORT to trigger a connection failure is somewhat
  "risky" (since it isn't guaranteed to not be listened to) and caused
  occasional CI problems. This fix changes the infused error to be a more
  reliable one but still verifies the --write-out functionality properly -
  which is the purpose of this test.
  
  Reported-by: Jay Satiro
  Fixes #6621
  Closes #6623

- url.c: use consistent error message for failed resolve

- BUGS: language polish

- wolfssl: don't store a NULL sessionid
  
  This caused a memory leak as the session id cache entry was still
  erroneously stored with a NULL sessionid and that would later be treated
  as not needed to get freed.
  
  Reported-by: Gisle Vanem
  Fixes #6616
  Closes #6617

- parse_proxy: fix a memory leak in the OOM path
  
  Reported-by: Jay Satiro
  Reviewed-by: Jay Satiro
  Reviewed-by: Emil Engler
  
  Closes #6614
  Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541

Jay Satiro (17 Feb 2021)
- url: fix possible use-after-free in default protocol
  
  Prior to this change if the user specified a default protocol and a
  separately allocated non-absolute URL was used then it was freed
  prematurely, before it was then used to make the replacement URL.
  
  Bug: https://github.com/curl/curl/issues/6604#issuecomment-780138219
  Reported-by: arvids-kokins-bidstack@users.noreply.github.com
  
  Closes https://github.com/curl/curl/pull/6613

Daniel Stenberg (16 Feb 2021)
- multi: rename the multi transfer states
  
  While working on documenting the states it dawned on me that step one is
  to use more descriptive names on the states. This also changes prefix on
  the states to make them shorter in the source.
  
  State names NOT ending with *ing are transitional ones.
  
  Closes #6612

Viktor Szakats (16 Feb 2021)
- http: do not add a referrer header with empty value
  
  Previously an empty 'Referer:' header was added to the HTTP request when
  passing `--referer ';auto'` or `--referer ''` on the command-line. This
  patch makes `--referer` work like `--header 'Referer:'` and will only add
  the header if it has a non-zero length value.
  
  Reviewed-by: Jay Satiro
  Closes #6610

Daniel Stenberg (16 Feb 2021)
- lib: remove 'conn->data' completely
  
  The Curl_easy pointer struct entry in connectdata is now gone. Just
  before commit 215db086e0 landed on January 8, 2021 there were 919
  references to conn->data.
  
  Closes #6608

- openldap: pass 'data' to the callbacks instead of 'conn'

Jay Satiro (15 Feb 2021)
- doh: Fix sharing user's resolve list with DOH handles
  
  - Share the shared object from the user's easy handle with the DOH
    handles.
  
  Prior to this change if the user had set a shared object with shared
  cached DNS (CURL_LOCK_DATA_DNS) for their easy handle then that wasn't
  used by any associated DOH handles, since they used the multi's default
  hostcache.
  
  This change means all the handles now use the same hostcache, which is
  either the shared hostcache from the user created shared object if it
  exists or if not then the multi's default hostcache.
  
  Reported-by: Manuj Bhatia
  
  Fixes https://github.com/curl/curl/issues/6589
  Closes https://github.com/curl/curl/pull/6607

Daniel Stenberg (15 Feb 2021)
- http2: remove conn->data use
  
  ... but instead use a private alternative that points to the "driving
  transfer" from the connection. We set the "user data" associated with
  the connection to be the connectdata struct, but when we drive transfers
  the code still needs to know the pointer to the transfer. We can change
  the user data to become the Curl_easy handle, but with older nghttp2
  version we cannot dynamically update that pointer properly when
  different transfers are used over the same connection.
  
  Closes #6520

- openssl: remove conn->data use
  
  We still make the trace callback function get the connectdata struct
  passed to it, since the callback is anchored on the connection.
  
  Repeatedly updating the callback pointer to set 'data' with
  SSL_CTX_set_msg_callback_arg() doesn't seem to work, probably because
  there might already be messages in the queue with the old pointer.
  
  This code therefore makes sure to set the "logger" handle before using
  OpenSSL calls so that the right easy handle gets used for tracing.
  
  Closes #6522

- RELEASE-NOTES: synced

Jay Satiro (14 Feb 2021)
- doh: add options to disable ssl verification
  
  - New libcurl options CURLOPT_DOH_SSL_VERIFYHOST,
    CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS do the
    same as their respective counterparts.
  
  - New curl tool options --doh-insecure and --doh-cert-status do the same
    as their respective counterparts.
  
  Prior to this change DOH SSL certificate verification settings for
  verifyhost and verifypeer were supposed to be inherited respectively
  from CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER, but due to a bug
  were not. As a result DOH verification remained at the default, ie
  enabled, and it was not possible to disable. This commit changes
  behavior so that the DOH verification settings are independent and not
  inherited.
  
  Ref: https://github.com/curl/curl/pull/4579#issuecomment-554723676
  
  Fixes https://github.com/curl/curl/issues/4578
  Closes https://github.com/curl/curl/pull/6597

- hostip: fix crash in sync resolver builds that use DOH
  
  - Guard some Curl_async accesses with USE_CURL_ASYNC instead of
    !CURLRES_SYNCH.
  
  This is another follow-up to 8335c64 which moved the async struct from
  the connectdata struct into the Curl_easy struct. A previous follow-up
  6cd167a fixed building for sync resolver by guarding some async struct
  accesses with !CURLRES_SYNCH. The problem is since DOH (DNS-over-HTTPS)
  is available as an asynchronous secondary resolver the async struct may
  be used even when libcurl is built for the sync resolver. That means
  that CURLRES_SYNCH and USE_CURL_ASYNC may be defined at the same time.
  
  Closes https://github.com/curl/curl/pull/6603

Daniel Stenberg (13 Feb 2021)
- KNOWN_BUGS: cannot enable LDAPS on Windows with cmake
  
  Reported-by: Jack Boos Yu
  Closes #6284

- KNOWN_BUGS: Excessive HTTP/2 packets with TCP_NODELAY
  
  Reported-by: Alex Xu
  Closes #6363

- http: use credentials from transfer, not connection
  
  HTTP auth "accidentally" worked before this cleanup since the code would
  always overwrite the connection credentials with the credentials from
  the most recent transfer and since HTTP auth is typically done first
  thing, this has not been an issue. It was still wrong and subject to
  possible race conditions or future breakage if the sequence of functions
  would change.
  
  The data.set.str[] strings MUST remain unmodified exactly as set by the
  user, and the credentials to use internally are instead set/updated in
  state.aptr.*
  
  Added test 675 to verify different credentials used in two requests done
  over a reused HTTP connection, which previously behaved wrongly.
  
  Fixes #6542
  Closes #6545

- test433: clear some home dir env variables
  
  Follow-up to bd6b54ba1f55b5
  
  ... so that XDG_CONFIG_HOME is the only home dir variable set and thus
  used correctly in the test!
  
  Fixes #6599
  Closes #6600

- RELEASE-NOTES: synced
  
  bumped the version to 7.76.0

- travis: install libgsasl-dev to add that to the builds
  
  Closes #6588

- urldata: don't touch data->set.httpversion at run-time
  
  Rename it to 'httpwant' and make a cloned field in the state struct as
  well for run-time updates.
  
  Also: refuse non-supported HTTP versions. Verified with test 129.
  
  Closes #6585

Viktor Szakats (11 Feb 2021)
- tests: disable .curlrc in more environments
  
  by also setting CURL_HOME and XDG_CONFIG_HOME envvars to the local
  directory.
  
  Reviewed-by: Daniel Stenberg
  Fixes #6595
  Closes #6596

- docs/Makefile.inc: format to be update-friendly
  
  - one source file per line
  - convert tabs to spaces
  - do not align line-continuation backslashes
  - sort source files alphabetically
  
  Reviewed-by: Daniel Stenberg
  Closes #6593

Daniel Stenberg (11 Feb 2021)
- curl: provide libgsasl version and feature info in -V output
  
  Closes #6592

- gsasl: provide CURL_VERSION_GSASL if built-in
  
  To let applications know the feature is available.
  
  Closes #6592

- curl: add --fail-with-body
  
  Prevent both --fail and --fail-with-body on the same command line.
  
  Verify with test 349, 360 and 361.
  
  Closes #6449

- TODO: remove HSTS
  
  Provided now since commit 7385610d0c74

Jay Satiro (10 Feb 2021)
- tests: Fix tests failing due to change in curl --help
  
  Follow-up to parent 3183217 which added add missing <mode> argument to
  --create-file-mode <mode>.
  
  Ref: https://github.com/curl/curl/issues/6590

- tool_help: add missing argument for --create-file-mode
  
  Prior to this change the required argument was not shown in curl --help.
  
  before:
       --create-file-mode File mode for created files
  
  after:
       --create-file-mode <mode> File mode (octal) for created files
  
  Reported-by: ZimCodes@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/6590

- create-file-mode.d: add missing Arg tag
  
  Prior to this change the required argument was not shown.
  
  curl.1 before: --create-file-mode
  curl.1 after: --create-file-mode <mode>
  
  Reported-by: ZimCodes@users.noreply.github.com
  
  Fixes https://github.com/curl/curl/issues/6590

Viktor Szakats (10 Feb 2021)
- gsasl: fix errors/warnings building against libgsasl
  
  - also fix an indentation
  - make Curl_auth_gsasl_token() use CURLcode (by Daniel Stenberg)
  
  Ref: https://github.com/curl/curl/pull/6372#issuecomment-776118711
  Ref: https://github.com/curl/curl/pull/6588
  
  Reviewed-by: Jay Satiro
  Assisted-by: Daniel Stenberg
  Reviewed-by: Simon Josefsson
  Closes #6587

- Makefile.m32: add support for libgsasl dependency
  
  Reviewed-by: Marcel Raad
  Closes #6586

Marcel Raad (10 Feb 2021)
- ngtcp2: clarify calculation precedence
  
  As suggested by Codacy/cppcheck.
  
  Closes https://github.com/curl/curl/pull/6576

- server: remove redundant condition
  
  `end` is always non-null here.
  
  Closes https://github.com/curl/curl/pull/6576

- lib: remove redundant code
  
  Closes https://github.com/curl/curl/pull/6576

- mqttd: remove unused variable
  
  Closes https://github.com/curl/curl/pull/6576

- tool_paramhlp: reduce variable scope
  
  Closes https://github.com/curl/curl/pull/6576

- tests: reduce variable scopes
  
  Closes https://github.com/curl/curl/pull/6576

- lib: reduce variable scopes
  
  Closes https://github.com/curl/curl/pull/6576

- ftp: fix Codacy/cppcheck warning about null pointer arithmetic
  
  Increment `bytes` only if it is non-null.
  
  Closes https://github.com/curl/curl/pull/6576

Daniel Stenberg (9 Feb 2021)
- ngtcp2: adapt to the new recv_datagram callback

- quiche: fix build error: use 'int' for port number
  
  Follow-up to cb2dc1ba8

- ftp: add 'list_only' to the transfer state struct
  
  and rename it from 'ftp_list_only' since it is also used for SSH and
  POP3. The state is updated internally for 'type=D' FTP URLs.
  
  Added test case 1570 to verify.
  
  Closes #6578

- ftp: add 'prefer_ascii' to the transfer state struct
  
  ... and make sure the code never updates 'set.prefer_ascii' as it breaks
  handle reuse which should use the setting as the user specified it.
  
  Added test 1569 to verify: it first makes an FTP transfer with ';type=A'
  and then another without type on the same handle and the second should
  then use binary. Previously, curl failed this.
  
  Closes #6578

- RELEASE-NOTES: synced

- [Jacob Hoffman-Andrews brought this change]

  vtls: initial implementation of rustls backend
  
  This adds a new TLS backend, rustls. It uses the C-to-rustls bindings
  from https://github.com/abetterinternet/crustls.
  
  Rustls is at https://github.com/ctz/rustls/.
  
  There is still a fair bit to be done, like sending CloseNotify on
  connection shutdown, respecting CAPATH, and properly indicating features
  like "supports TLS 1.3 ciphersuites." But it works well enough to make
  requests and receive responses.
  
  Blog post for context:
  https://www.abetterinternet.org/post/memory-safe-curl/
  
  Closes #6350

- [Simon Josefsson brought this change]

  sasl: support SCRAM-SHA-1 and SCRAM-SHA-256 via libgsasl
  
  Closes #6372

Jay Satiro (9 Feb 2021)
- lib: use int type for more port variables
  
  This is a follow-up to 764c6bd. Prior to that change port variables
  were usually type long.
  
  Closes https://github.com/curl/curl/pull/6553

- tool_writeout: refactor write-out and write-out json
  
  - Deduplicate the logic used by write-out and write-out json.
  
  Rather than have separate writeLong, writeString, etc, logic for
  each of write-out and write-out json instead have respective shared
  functions that can output either format and a 'use_json' parameter to
  indicate whether it is json that is output.
  
  This will make it easier to maintain. Rather than have to go through
  two sets of logic now we only have to go through one.
  
  - Support write-out %{errormsg} and %{exitcode} in json.
  
  - Clarify in the doc that %{exitcode} is the exit code of the transfer.
  
  Prior to this change it just said "The numerical exitcode" which
  implies it's the exit code of the tool, and it's not necessarily that.
  
  Closes https://github.com/curl/curl/pull/6544

- lib: drop USE_SOCKETPAIR in favor of CURL_DISABLE_SOCKETPAIR
  
  .. since the former is undocumented and they both do the same thing.
  
  Closes https://github.com/curl/curl/pull/6517

- curl_multibyte: fall back to local code page stat/access on Windows
  
  If libcurl is built with Unicode support for Windows then it is assumed
  the filename string is Unicode in UTF-8 encoding and it is converted to
  UTF-16 to be passed to the wide character version of the respective
  function (eg wstat). However the filename string may actually be in the
  local encoding so, even if it successfully converted to UTF-16, if it
  could not be stat/accessed then try again using the local code page
  version of the function (eg wstat fails try stat).
  
  We already do this with fopen (ie wfopen fails try fopen), so I think it
  makes sense to extend it to stat and access functions.
  
  Closes https://github.com/curl/curl/pull/6514

- [Stephan Szabo brought this change]

  file: Support unicode urls on windows
  
  Closes https://github.com/curl/curl/pull/6501

- [Vincent Torri brought this change]

  cmake: fix import library name for non-MS compiler on Windows
  
  - Use _imp.lib suffix only for Microsoft's compiler (MSVC).
  
  Prior to this change library suffix _imp.lib was used for the import
  library on Windows regardless of compiler.
  
  With this change the other compilers should now use their default
  suffix which should be .dll.a.
  
  This change is motivated by the usage of pkg-config on MSYS2.
  Indeed, when 'pkg-config --libs libcurl' is used, -lcurl is
  passed to ld. The documentation of ld on Windows :
  
  https://sourceware.org/binutils/docs/ld/WIN32.html
  
  lists, in the 'direct linking to a dll' section, the pattern
  of the searched import library, and libcurl_imp.lib is not there.
  
  Closes https://github.com/curl/curl/pull/6225

Daniel Stenberg (9 Feb 2021)
- urldata: move 'followlocation' to UrlState
  
  As this is a state variable it does not belong in UserDefined which is
  used to store values set by the user.
  
  Closes #6582

- [Ikko Ashimine brought this change]

  http_proxy: fix typo in http_proxy.c
  
  settting -> setting
  
  Closes #6583

- [Fabian Keil brought this change]

  tests/server: Bump MAX_TAG_LEN to 200
  
  This is useful for tests containing HTML inside of <data> sections.
  For <img> tags it's not uncommon to be longer than the previous
  limit of 79 bytes.
  
  An example of a previously problem-causing tag is:
  <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-http://www.privoxy.org/images/privoxy.png-by-size" width="88" height="31">
  which is needed for a Privoxy test for the banners-by-size filter.
  
  Previously it caused server failures like:
  12:29:05.786961 ====> Client connect
  12:29:05.787116 accept_connection 3 returned 4
  12:29:05.787194 accept_connection 3 returned 0
  12:29:05.787285 Read 119 bytes
  12:29:05.787345 Process 119 bytes request
  12:29:05.787407 Got request: GET /banners-by-size/9 HTTP/1.1
  12:29:05.787464 Requested test number 9 part 0
  12:29:05.787686 getpart() failed with error: -2
  12:29:05.787744 - request found to be complete (9)
  12:29:05.787912 getpart() failed with error: -2
  12:29:05.788048 Wrote request (119 bytes) input to log/server.input
  12:29:05.788157 Send response test9 section <data>
  12:29:05.788443 getpart() failed with error: -2
  12:29:05.788498 instructed to close connection after server-reply
  12:29:05.788550 ====> Client disconnect 0
  12:29:05.871448 exit_signal_handler: 15
  12:29:05.871714 signalled to die
  12:29:05.872040 ========> IPv4 sws (port 21108 pid: 51758) exits with signal (15)

- [Fabian Keil brought this change]

  tests/badsymbols.pl: when opening '$incdir' fails include it in the error message

- [Fabian Keil brought this change]

  runtests.1: document -o, -P, -L, and -E

- [Fabian Keil brought this change]

  runtests.pl: add %TESTNUMBER variable to make copying tests more convenient

- [Fabian Keil brought this change]

  runtests.pl: add an -o option to change internal variables
  
  runtests.pl has lots of internal variables one might want to
  change in certain situations, but adding a dedicated option
  for every single one of them isn't practical.
  
  Usage:
  ./runtests.pl -o TESTDIR=$privoxy_curl_test_dir -o HOSTIP=10.0.0.1 ...

- [Fabian Keil brought this change]

  runtests.pl: cleanups
  
  - show the summarized test result in the last line of the report
  - do not use $_ after mapping it to a named variable
    Doing that makes the code harder to follow.
  - log the restraints sorted by the number of their occurrences
  - fix language when logging restraints that only occured once
  - let runhttpserver() use $TESTDIR instead of $srcdir
    ... so it works if a non-default $TESTDIR is being used.

- [Fabian Keil brought this change]

  runtests.pl: add an -E option to specify an exclude file
  
  It can contain additional restraints for test numbers,
  keywords and tools.
  
  The idea is to let third parties like the Privoxy project
  distribute an exclude file with their tarballs that specifies
  which curl tests are not expected to work when using Privoxy
  as a proxy, without having to fork the whole curl test suite.
  
  The syntax could be changed to be extendable and maybe
  more closely reflect the "curl test" syntax. Currently
  it's a bunch of lines like these:
  
  test:$TESTNUMBER:Reason why this test with number $TESTNUMBER should be skipped
  keyword:$KEYWORD:Reason why tests whose keywords contain the $KEYWORD should be skipped
  tool:$TOOL:Reason why tests with tools that contain $TOOL should be skipped
  
  To specify multiple $TESTNUMBERs, $KEYWORDs and $TOOLs
  on a single line, split them with commas.

- [Fabian Keil brought this change]

  runtests.pl: add -L parameter to require additional perl libraries
  
  This is useful to change the behaviour of the script without
  having to modify the file itself, for example to use a custom
  compareparts() function that ignores header differences that
  are expected to occur when an external proxy is being used.
  
  Such differences are proxy-specific and thus the modifications
  should be maintained together with the proxy.

- [Fabian Keil brought this change]

  runtests.pl: add a -P option to specify an external proxy
  
  ... that should be used when executing the tests.
  
  The assumption is that the proxy is an HTTP proxy.
  
  This option should be used together with -L to provide
  a customized compareparts() version that knows which
  proxy-specific header differences should be ignored.
  
  This option doesn't work for all test types yet.

- [Fabian Keil brought this change]

  tests: fixup several tests
  
  missing CRs and modified %hostip
  
  lib556/test556: use a real HTTP version to make test reuse more convenient
  
  make sure the weekday in Date headers matches the date
  
  test61: replace stray "^M" (5e 4d) at the end of a cookie with a '^M' (0d)
  
  Gets the test working with external proxies like Privoxy again.
  
  Closes #6463

- ftp: never set data->set.ftp_append outside setopt
  
  Since the set value then risks getting used like that when the easy
  handle is reused by the application.
  
  Also: renamed the struct field from 'ftp_append' to 'remote_append'
  since it is also used for SSH protocols.
  
  Closes #6579

- urldata: remove the 'rtspversion' field
  
  from struct connectdata and the corresponding code in http.c that set
  it. It was never used for anything!
  
  Closes #6581

- CURLOPT_QUOTE.3: clarify that libcurl doesn't parse what's sent
  
  ... so passed in commands may confuse libcurl's knowledge of state.
  
  Reported-by: Bodo Bergmann
  Fixes #6577
  Closes #6580

- [Jacob Hoffman-Andrews brought this change]

  vtls: factor out Curl_ssl_getsock to field of Curl_ssl
  
  Closes #6558

- RELEASE-PROCEDURE: remove old release dates, add new

- docs/SSL-PROBLEMS: enhanced
  
  Elaborate on the intermediate cert issue, and mention that anything
  below TLS 1.2 is generally considered insecure these days.
  
  Closes #6572

- THANKS: remove a Jon Rumsey dupe

Daniel Gustafsson (5 Feb 2021)
- [nimaje brought this change]

  docs: fix FILE example url in --metalink documentation
  
  In a url after <scheme>:// follows the possibly empty authority part
  till the next /, so that url missed a /.
  
  Closes #6573
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (5 Feb 2021)
- hostip: fix build with sync resolver
  
  Reported-by: David Goerger
  Follow-up from 8335c6417
  Fixes #6566
  Closes #6568

- mailmap: Jon Rumsey

- [Jon Rumsey brought this change]

  gskit: correct the gskit_send() prototype
  
  gskit_send() first paramater is a pointer to Curl_easy not connectdata
  struct.
  
  Closes #6570
  Fixes #6569

- urldata: fix build without HTTP and MQTT
  
  Reported-by: Joseph Chen
  Fixes #6562
  Closes #6563

- ftp: avoid SIZE when asking for a TYPE A file
  
  ... as we ignore it anyway because servers don't report the correct size
  and proftpd even blatantly returns a 550.
  
  Updates a set of tests accordingly.
  
  Reported-by: awesomenode on github
  Fixes #6564
  Closes #6565

- pingpong: rename the curl_pp_transfer enum to use PP prefix
  
  Using an FTP prefix for PP provided functionality was misleading.

- RELEASE-NOTES: synced
  
  ... and bump pending version to 7.75.1 (for now)

Jay Satiro (4 Feb 2021)
- build: fix --disable-http-auth
  
  Broken since 215db08 (precedes 7.75.0).
  
  Reported-by: Benbuck Nason
  
  Fixes https://github.com/curl/curl/issues/6567

- build: fix --disable-dateparse
  
  Broken since 215db08 (precedes 7.75.0).
  
  Bug: https://curl.se/mail/lib-2021-02/0008.html
  Reported-by: Firefox OS

Daniel Stenberg (4 Feb 2021)
- [Jon Rumsey brought this change]

  OS400: update for CURLOPT_AWS_SIGV4
  
  chkstrings fails because a new string option that could require codepage
  conversion has been added.
  
  Closes #6561
  Fixes #6560

- BUG-BOUNTY: removed the cooperation mention

Version 7.75.0 (3 Feb 2021)

Daniel Stenberg (3 Feb 2021)
- RELEASE-NOTES: synced

- THANKS: added contributors from 7.75.0

- copyright: fix year ranges in need of updates

- TODO: remove items for next SONAME bump etc
  
  We want to avoid that completely, so we don't plan for things after such
  an event.

- [Jay Satiro brought this change]

  ngtcp2: Fix build error due to change in ngtcp2_settings
  
  - Separate ngtcp2_transport_params.
  
  ngtcp2/ngtcp2@05d7adc made ngtcp2_transport_params separate from
  ngtcp2_settings.
  
  ngtcp2 master is required to build curl with http3 support.
  
  Closes #6554

- vtls: remove md5sum
  
  As it is not used anymore.
  
  Reported-by: Jacob Hoffman-Andrews
  Bug: https://curl.se/mail/lib-2021-02/0000.html
  
  Closes #6557

- [Alessandro Ghedini brought this change]

  quiche: don't use primary_ip / primary_port
  
  Closes #6555

Alessandro Ghedini (1 Feb 2021)
- travis: enable quiche's FFI feature

Daniel Stenberg (30 Jan 2021)
- [Dmitry Wagin brought this change]

  http: improve AWS HTTP v4 Signature auth
  
  - Add support services without region and service prefixes in
  the URL endpoint (ex. Min.IO, GCP, Yandex Cloud, Mail.Ru Cloud Solutions, etc)
  by providing region and service parameters via aws-sigv4 option.
  - Add [:region[:service]] suffix to aws-sigv4 option;
  - Fix memory allocation errors.
  - Refactor memory management.
  - Use Curl_http_method instead() STRING_CUSTOMREQUEST.
  - Refactor canonical headers generating.
  - Remove repeated sha256_to_hex() usage.
  - Add some docs fixes.
  - Add some codestyle fixes.
  - Add overloaded strndup() for debug - curl_dbg_strndup().
  - Update tests.
  
  Closes #6524

- hyper: fix CONNECT to set 'data' as userdata
  
  Follow-up to 14e075d1a7fd

- [Layla brought this change]

  connect: fix compile errors in `Curl_conninfo_local`
  
  .. for the `#else` (`!HAVE_GETSOCKNAME`) case
  
  Fixes https://github.com/curl/curl/issues/6548
  Closes #6549
  
  Signed-off-by: Layla <layla@insightfulvr.com>

- [Michał Antoniak brought this change]

  transfer: fix GCC 10 warning with flag '-Wint-in-bool-context'
  
  ... and return the error code from the Curl_mime_rewind call.
  
  Closes #6537

- [Michał Antoniak brought this change]

  avoid warning: enum constant in boolean context

- copyright: fix missing year (range) updates

- RELEASE-NOTES: synced

- openssl: lowercase the hostname before using it for SNI
  
  ... because it turns out several servers out there don't actually behave
  correctly otherwise in spite of the fact that the SNI field is
  specifically said to be case insensitive in RFC 6066 section 3.
  
  Reported-by: David Earl
  Fixes #6540
  Closes #6543

- KNOWN_BUGS: cmake: ExternalProject_Add does not set CURL_CA_PATH
  
  Closes #6313

- KNOWN_BUGS: Multi perform hangs waiting for threaded resolver
  
  Closes #4852

- KNOWN_BUGS: "pulseUI VPN client" is known to be buggy
  
  First entry in the new section "applications" for known problems in
  libcurl using applications.
  
  Closes #6306

- tool_writeout: make %{errormsg} blank for no errors
  
  Closes #6539

Jay Satiro (27 Jan 2021)
- [Gisle Vanem brought this change]

  build: fix djgpp builds
  
  - Update build instructions in packages/DOS/README
  
  - Extend 'VPATH' with 'vquic' and 'vssh'.
  
  - Allow 'Makefile.dist' to build both 'lib' and 'src'.
  
  - Allow using the Windows hosted djgpp cross compiler to build for MSDOS
    under Windows.
  
  - 'USE_SSL' -> 'USE_OPENSSL'
  
  - Added a 'link_EXE' macro. Etc, etc.
  
  - Linking 'curl.exe' needs '$(CURLX_CFILES)' too.
  
  - Do not pick-up '../lib/djgpp/*.o' files. Recompile locally.
  
  - Generate a gzipped 'tool_hugehelp.c' if 'USE_ZLIB=1'.
  
  - Remove 'djgpp-clean'
  
  - Adapt to new C-ares directory structure
  
  - Use conditional variable assignments
  
  Clarify the 'conditional variable assignment' in 'common.dj'.
  
  Closes https://github.com/curl/curl/pull/6382

Daniel Stenberg (27 Jan 2021)
- [Ikko Ashimine brought this change]

  hyper: fix typo in c-hyper.c
  
  settting -> setting
  
  Closes #6538

- libssh2: fix CURL_LIBSSH2_DEBUG-enabled build
  
  Follow-up to 2dcc940959772a
  
  Reported-by: Gisle Vanem
  Bug: https://github.com/curl/curl/commit/2dcc940959772a652f6813fb6bd3092095a4877b#commitcomment-46420088

Jay Satiro (27 Jan 2021)
- asyn-thread: fix build for when getaddrinfo missing
  
  This is a follow-up to 8315343 which several days ago moved the resolver
  pointer into the async struct but did not update the code that uses it
  when getaddrinfo is not present.
  
  Closes https://github.com/curl/curl/pull/6536

Daniel Stenberg (27 Jan 2021)
- urldata: move 'ints' to the end of 'connectdata'
  
  To optimize storage slightly.
  
  Closes #6534

- urldata: store ip version in a single byte
  
  Closes #6534

- urldata: remove duplicate 'upkeep_interval_ms' from connectdata
  
  ... and rely only on the value already set in Curl_easy.
  
  Closes #6534

- urldata: remove 'local_ip' from the connectdata struct
  
  As the info is already stored in the transfer handle anyway, there's no
  need to carry around a duplicate buffer for the life-time of the handle.
  
  Closes #6534

- urldata: remove duplicate port number storage
  
  ... and use 'int' for ports. We don't use 'unsigned short' since -1 is
  still often used internally to signify "unknown value" and 0 - 65535 are
  all valid port numbers.
  
  Closes #6534

- urldata: remove the duplicate 'ip_addr_str' field
  
  ... as the numerical IP address is already stored and kept in 'primary_ip'.
  
  Closes #6534

- select: convert Curl_select() to private static function
  
  The old function should not be used anywhere anymore (the only remaining
  gskit use has to be fixed to instead use Curl_poll or none at all).
  
  The static function version is now called our_select() and is only built
  if necessary.
  
  Closes #6531

- Curl_chunker: shrink the struct
  
  ... by removing a field, converting the hex index into a byte and
  rearranging the order. Cuts it down from 48 bytes to 32 on x86_64.
  
  Closes #6527

- curl: include the file name in --xattr/--remote-time error msgs

- curl: s/config->global/global/ in single_transfer()

- curl: move fprintf outputs to warnf
  
  For setting and getting time of the download. To make the outputs
  respect --silent etc.
  
  Reported-by: Viktor Szakats
  Fixes #6533
  Closes #6535

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: Fix http3 upload stall
  
  Closes #6521

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: Fix stack buffer overflow
  
  Closes #6521

- warnless.h: remove the prototype for curlx_ultosi
  
  Follow-up to 217552503ff3

- warnless: remove curlx_ultosi
  
  ... not used anywhere
  
  Closes #6530

- [Patrick Monnerat brought this change]

  lib: remove conn->data uses
  
  Closes #6515

- pingpong: remove the 'conn' struct member
  
  ... as it's superfluous now when Curl_easy is passed in and we can
  derive the connection from that instead and avoid the duplicate copy.
  
  Closes #6525

- hostip/proxy: remove conn->data use
  
  Closes #6513

- url: reduce conn->data references
  
  ... there are a few left but let's keep them to last
  
  Closes #6512

- scripts/singleuse: add curl_easy_option*

Jay Satiro (25 Jan 2021)
- test410: fix for windows
  
  - Pass the very long request header via file instead of command line.
  
  Prior to this change the 49k very long request header string was passed
  via command line and on Windows that is too long so it was truncated and
  the test would fail (specifically msys CI).
  
  Closes https://github.com/curl/curl/pull/6516

Daniel Stenberg (25 Jan 2021)
- libssh2: move data from connection object to transfer object
  
  Readdir data, filenames and attributes are strictly related to the
  transfer and not the connection. This also reduces the total size of the
  fixed connectdata struct.
  
  Closes #6519

- RELEASE-NOTES: synced

- [Patrick Monnerat brought this change]

  lib: remove conn->data uses
  
  Closes #6499

- hyper: remove the conn->data references
  
  Closes #6508

- travis: build ngtcp2 --with-gnutls
  
  ... since they disable it by default since a few days back.
  
  Closes #6506
  Fixes #6493

- hostip: remove conn->data from resolver functions
  
  This also moves the 'async' struct from the connectdata struct into the
  Curl_easy struct, which seems like a better home for it.
  
  Closes #6497

Jay Satiro (22 Jan 2021)
- strerror: skip errnum >= 0 assertion on windows
  
  On Windows an error number may be greater than INT_MAX and negative once
  cast to int.
  
  The assertion is checked only in debug builds.
  
  Closes https://github.com/curl/curl/pull/6504

Daniel Stenberg (21 Jan 2021)
- doh: make Curl_doh_is_resolved survive a NULL pointer
  
  ... if Curl_doh() returned a NULL, this function gets called anyway as
  in a asynch procedure. Then the doh struct pointer is NULL and signifies
  an OOM situation.
  
  Follow-up to 6246a1d8c6776

- wolfssh: remove conn->data references
  
  ... and repair recent build breakage
  
  Closes #6507

- http: empty reply connection are not left intact
  
  ... so mark the connection as closed in this condition to prevent that
  verbose message to wrongly appear.
  
  Reported-by: Matt Holt
  Bug: https://twitter.com/mholt6/status/1352130240265375744
  Closes #6503

- chunk/encoding: remove conn->data references
  
  ... by anchoring more functions on Curl_easy instead of connectdata
  
  Closes #6498

Jay Satiro (20 Jan 2021)
- [Erik Olsson brought this change]

  lib: save a bit of space with some structure packing
  
  - Reorder some internal struct members so that less padding is used.
  
  This is an attempt at saving a bit of space by packing some structs
  (using pahole to find the holes) where it might make sense to do
  so without losing readability.
  
  I.e., I tried to avoid separating fields that seem grouped
  together (like the cwd... fields in struct ftp_conn for instance).
  Also abstained from touching fields behind conditional macros as
  that quickly can get complicated.
  
  Closes https://github.com/curl/curl/pull/6483

Daniel Stenberg (20 Jan 2021)
- INSTALL.md: fix typo
  
  Found-by: Marcel Raad

- [Fabian Keil brought this change]

  http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy
  
  Added test 1613 to verify.
  
  Closes #6490

- Merge branch 'bagder/curl_range-data-conn'

- ftp: remove conn->data leftover

- curl_range: remove conn->data
  
  Closes #6496

- INSTALL: now at 85 operating systems

- quiche: fix unused parameter ‘conn’
  
  Follow-up to 2bdec0b3

- transfer: fix ‘conn’ undeclared mistake for iconv build
  
  Follow-up to 219d9f8620d

- doh: allocate state struct on demand
  
  ... instead of having it static within the Curl_easy struct. This takes
  away 1176 bytes (18%) from the Curl_easy struct that aren't used very
  often and instead makes the code allocate it when needed.
  
  Closes #6492

- socks: use the download buffer instead
  
  The SOCKS code now uses the generic download buffer for temporary
  storage during the connection procedure, instead of having its own
  private 600 byte buffer that adds to the connectdata struct size. This
  works fine because this point the buffer is allocated but is not use for
  download yet since the connection hasn't completed.
  
  This reduces the connection struct size by 22% on a 64bit arch!
  
  The SOCKS buffer needs to be at least 600 bytes, and the download buffer
  is guaranteed to never be smaller than 1000 bytes.
  
  Closes #6491

- urldata: make magic be the first struct field
  
  By making the `magic` identifier the same size and at the same place
  within the structs (easy, multi, share), libcurl will be able to more
  reliably detect and safely error out if an application passes in the
  wrong handle to APIs. Easier to detect and less likely to cause crashes
  if done.
  
  Such mixups can't be detected at compile-time due to them being
  typedefed void pointers - unless `CURL_STRICTER` is defined.
  
  Closes #6484

- http_chunks: correct and clarify a comment on hexnumber length
  
  ... and also rename the define for max length.
  
  Closes #6489

- curl_path: remove conn->data use
  
  Closes #6487

- transfer: remove conn->data use
  
  Closes #6486

- quic: remove conn->data use
  
  Closes #6485

- [Fabian Keil brought this change]

  Add test1181: Proxy request with --proxy-header "Connection: Keep-Alive"

- [Fabian Keil brought this change]

  Add test1180: Proxy request with -H "Proxy-Connection: Keep-Alive"
  
  At the moment the test fails as curl sends two Proxy-Connection
  headers.

- c-hyper: avoid duplicated Proxy-Connection headers

- http: make providing Proxy-Connection header not cause duplicated headers
  
  Fixes test 1180
  
  Bug: https://curl.se/mail/lib-2021-01/0095.html
  Reported-by: Fabian Keil
  Closes #6472

- runtests: preprocess DISABLED to allow conditionals
  
  ... with this function provided, we can disable tests for specific
  environments and setups directly within this file.
  
  Closes #6477

- runtests: turn preprocessing into a separate function
  
  ... and remove all other variable substitutions as they're now done once
  and for all in the preprocessor.

- lib/Makefile.inc: convert to listing each file on its own line
  
  ... to make it diff friendlier and easier to read.
  
  Closes #6448

- ftplistparser: remove use of conn->data
  
  Closes #6482

- lib: more conn->data cleanups
  
  Closes #6479

- [Patrick Monnerat brought this change]

  vtls: reduce conn->data use
  
  Closes #6474

- hyper: deliver data to application with Curl_client_write
  
  ... just as the native code path does. Avoids sending too large data
  chunks in the callback and more.
  
  Reported-by: Gisle Vanem
  Fixes #6462
  Closes #6473

- gopher: remove accidental conn->data leftover

- libssh: avoid plain free() of libssh-memory
  
  Since curl's own memory debugging system redefines free() calls to track
  and fiddle with memory, it cannot be used on memory allocated by 3rd
  party libraries.
  
  Third party libraries SHOULD NOT require free() to release allocated
  resources for this reason - and libs can use separate healp allocators
  on some systems (like Windows) so free() doesn't necessarily work
  anyway.
  
  Filed as an issue with libssh: https://bugs.libssh.org/T268
  
  Closes #6481

- send: assert that Curl_write_plain() has a ->conn when called
  
  To help catch bad invokes.
  
  Closes #6476

- test410: verify HTTPS GET with a 49K request header
  
  skip test 410 for mesalink in the CI as it otherwise hangs "forever"

- lib: pass in 'struct Curl_easy *' to most functions
  
  ... in most cases instead of 'struct connectdata *' but in some cases in
  addition to.
  
  - We mostly operate on transfers and not connections.
  
  - We need the transfer handle to log, store data and more. Everything in
    libcurl is driven by a transfer (the CURL * in the public API).
  
  - This work clarifies and separates the transfers from the connections
    better.
  
  - We should avoid "conn->data". Since individual connections can be used
    by many transfers when multiplexing, making sure that conn->data
    points to the current and correct transfer at all times is difficult
    and has been notoriously error-prone over the years. The goal is to
    ultimately remove the conn->data pointer for this reason.
  
  Closes #6425

Emil Engler (17 Jan 2021)
- docs: fix typos in NEW-PROTOCOL.md
  
  This fixes a misspelled "it" and a grammatically wrong "-ing" suffix.
  
  Closes #6471

Daniel Stenberg (16 Jan 2021)
- RELEASE-NOTES: synced

Jay Satiro (16 Jan 2021)
- [Razvan Cojocaru brought this change]

  cmake: expose CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
  
  This does for cmake builds what --disable-openssl-auto-load-config
  does for autoconf builds.
  
  Closes https://github.com/curl/curl/pull/6435

Daniel Stenberg (15 Jan 2021)
- test1918: verify curl_easy_option_by_name() and curl_easy_option_by_id()
  
  ... and as a practical side-effect, make sure that the
  Curl_easyopts_check() function is asserted in debug builds, which we
  want to detect mismatches between the options list in easyoptions.c and
  the options in curl.h
  
  Found-by: Gisle Vanem
  Bug: https://github.com/curl/curl/commit/08e8455dddc5e48e58a12ade3815c01ae3da3b64#commitcomment-45991815
  
  Closes #6461

- [Gisle Vanem brought this change]

  easyoptions: add the missing AWS_SIGV4
  
  Follow-up from AWS_SIGV4

- schannel_verify: fix safefree call typo
  
  Follow-up from e87ad71d1ba00519
  
  Closes #6459

- mime: make sure setting MIMEPOST to NULL resets properly
  
  ... so that a function can first use MIMEPOST and then set it to NULL to
  reset it back to a blank POST.
  
  Added test 584 to verify the fix.
  
  Reported-by: Christoph M. Becker
  
  Fixes #6455
  Closes #6456

- multi: set the PRETRANSFER time-stamp when we switch to PERFORM
  
  ... instead of at end of the DO state. This makes the timer more
  accurate for the protocols that use the DOING state (such as FTP), and
  simplifies how the function (now called init_perform) is called.
  
  The timer will then include the entire procedure up to PERFORM -
  including all instructions for getting the transfer started.
  
  Closes #6454

- CURLINFO_PRETRANSFER_TIME.3: clarify
  
  ... the timer *does* include the instructions for getting the remote
  file.
  
  Ref: #6452
  Closes #6453

- [Gisle Vanem brought this change]

  schannel: plug a memory-leak
  
  ... when built without -DUNICODE.
  
  Closes #6457

Jay Satiro (14 Jan 2021)
- gitattributes: Set batch files to CRLF line endings on checkout
  
  If a batch file is run without CRLF line endings (ie LF-only) then
  arbitrary behavior may occur. I consider that a bug in Windows, however
  the effects can be serious enough (eg unintended code executed) that
  we're fixing it in the repo by requiring CRLF line endings for batch
  files on checkout.
  
  Prior to this change the checked-out line endings of batch files were
  dependent on a user's git preferences. On Windows it is common for git
  users to have automatic CRLF conversion enabled (core.autocrlf true),
  but those users that don't would run into this behavior.
  
  For example a user has reported running the Visual Studio project
  generator batch file (projects/generate.bat) and it looped forever.
  Output showed that the Windows OS interpreter was occasionally jumping
  to arbitrary points in the batch file and executing commands. This
  resulted in unintended files being removed (a removal sequence called)
  and looping forever.
  
  Ref: https://serverfault.com/q/429594
  Ref: https://stackoverflow.com/q/232651
  Ref: https://www.dostips.com/forum/viewtopic.php?t=8988
  Ref: https://git-scm.com/docs/gitattributes#_checking_out_and_checking_in
  Ref: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_core_autocrlf
  
  Bug: https://github.com/curl/curl/discussions/6427
  Reported-by: Ganesh Kamath
  
  Closes https://github.com/curl/curl/pull/6442

Daniel Stenberg (14 Jan 2021)
- tool_operate: spellfix a comment

- ROADMAP: refreshed
  
  o removed HSTS - already implemented
  o added HTTPS RR records
  o mention HTTP/3 completion

- http_chunks: remove Curl_ prefix from static functions

- transfer: remove Curl_ prefix from static functions

- tftp: remove Curl_ prefix from static functions

- multi: remove Curl_ prefix from static functions

- ldap: remove Curl_ prefix from static functions

- doh: remove Curl_ prefix from static functions

- asyn-ares: remove Curl_ prefix from static functions

- vtls: remove Curl_ prefix from static functions

- bearssl: remove Curl_ prefix from static functions

- mbedtls: remove Curl_ prefix from static functions

- wolfssl: remove Curl_ prefix from static functions

- nss: remove Curl_ prefix from static functions

- gnutls: remove Curl_ prefix from static functions

- openssl: remove Curl_ prefix from static functions
  
  ... as we reserve this prefix to library-wide functions.
  
  Closes #6443

- nss: get the run-time version instead of build-time
  
  Closes #6445

Jay Satiro (12 Jan 2021)
- tool_doswin: Restore original console settings on CTRL signal
  
  - Move Windows terminal init code from tool_main to tool_doswin.
  
  - Restore the original console settings on CTRL+C and CTRL+BREAK.
  
  Background: On Windows the curl tool changes the console settings to
  enable virtual terminal processing (eg color output) if supported
  (ie Win 10). The original settings are restored on exit but prior to
  this change were not restored in the case of the CTRL signals.
  
  Windows VT behavior varies depending on console/powershell/terminal;
  refer to the discussion in #6226.
  
  Assisted-by: Rich Turner
  
  Closes https://github.com/curl/curl/pull/6226

Daniel Stenberg (12 Jan 2021)
- gen.pl: fix perl syntax
  
  Follow-up to 324cf1d2e

- [Emil Engler brought this change]

  help: update to current codebase
  
  This commit bumps the help to the current state of the project.
  
  Closes #6437

- [Emil Engler brought this change]

  docs: fix line length bug in gen.pl
  
  The script warns if the length of $opt and $desc is > 78. However, these
  two variables are on totally separate lines so the check makes no sense.
  Also the $bitmask field is totally forgotten. Currently this leads to
  two warnings within `--resolve` and `--aws-sigv4`.
  
  Closes #6438

- [Emil Engler brought this change]

  docs: fix wrong documentation in help.d
  
  curl does not list all categories when you invoke "--help" without any
  parameters.
  
  Closes #6436

- aws-sigv4.d: polish the wording
  
  Make it shorter and imperative form
  
  Closes #6439

- [Fabian Keil brought this change]

  misc: fix typos
  
  Bug: https://curl.se/mail/lib-2021-01/0063.html
  Closes #6434

- multi_runsingle: bail out early on data->conn == NULL
  
  As that's a significant error condition and scan-build warns for NULL
  pointer dereferences if we don't.
  
  Closes #6433

- multi: skip DONE state if there's no connection left for ftp wildcard
  
  ... to avoid running in that state with data->conn being NULL.

- libssh2: fix "Value stored to 'readdir_len' is never read"
  
  Detected by scan-build

- connect: mark intentional ignores of setsockopt return values
  
  Pointed out by Coverity
  
  Closes #6431

Jay Satiro (11 Jan 2021)
- http_proxy: Fix CONNECT chunked encoding race condition
  
  - During the end-of-headers response phase do not mark the tunnel
    complete unless the response body was completely parsed/ignored.
  
  Prior to this change if the entirety of a CONNECT response with chunked
  encoding was not received by the time the final header was parsed then
  the connection would be marked done prematurely, before all the chunked
  data could be read in and ignored (since this is what we do with any
  CONNECT response body) and the connection could not be used.
  
  Bug: https://curl.se/mail/lib-2021-01/0033.html
  Reported-by: Fabian Keil
  
  Closes https://github.com/curl/curl/pull/6432

Daniel Stenberg (11 Jan 2021)
- RELEASE-NOTES: synced

- url: if IDNA conversion fails, fallback to Transitional
  
  This improves IDNA2003 compatiblity.
  
  Reported-by: Bubu on github
  Fixes #6423
  Closes #6428

- travis: make the Hyper build from its master branch
  
  Closes #6430

- http: make 'authneg' also work for Hyper
  
  When doing a request with a request body expecting a 401/407 back, that
  initial request is sent with a zero content-length. Test 177 and more.
  
  Closes #6424

Jay Satiro (8 Jan 2021)
- cmake: Add an option to disable libidn2
  
  New option USE_LIBIDN2 defaults to ON for libidn2 detection. Prior to
  this change libidn2 detection could not be turned off in cmake builds.
  
  Reported-by: William A Rowe Jr
  
  Fixes https://github.com/curl/curl/issues/6361
  Closes https://github.com/curl/curl/pull/6362

Daniel Stenberg (8 Jan 2021)
- HYPER: no longer needs the special branch

- test179: use consistent header line endings
  
  ... to make "Hyper mode" work better.

- file: don't provide content-length for directories
  
  ... as it is misleading.
  
  Ref #6379
  Closes #6421

- TODO: Directory listing for FILE:
  
  Ref #6379

- curl.h: add CURLPROTO_GOPHERS as own protocol identifier
  
  Follow-up to a1f06f32b860, to make sure it can be handled separately
  from plain gopher.
  
  Closes #6418

- http: have CURLOPT_FAILONERROR fail after all headers
  
  ... so that Retry-After and other meta-content can still be used.
  
  Added 1634 to verify. Adjusted test 194 and 281 since --fail now also
  includes the header-terminating CRLF in the output before it exits.
  
  Fixes #6408
  Closes #6409

- global_init: debug builds allocates a byte in init
  
  ... to make build tools/valgrind warn if no curl_global_cleanup is
  called.
  
  This is conditionally only done for debug builds with the env variable
  CURL_GLOBAL_INIT set.
  
  Closes #6410

- lib/unit tests: add missing curl_global_cleanup() calls

- travis: adapt to Hyper build change
  
  Closes #6419

- pretransfer: setup the User-Agent header here
  
  ... and not in the connection setup, as for multiplexed transfers the
  connection setup might be skipped and then the transfer would end up
  without the set user-agent!
  
  Reported-by: Flameborn on github
  Assisted-by: Andrey Gursky
  Assisted-by: Jay Satiro
  Assisted-by: Mike Gelfand
  Fixes #6312
  Closes #6417

- test66: disable with Hyper
  
  ...as Hyper doesn't support HTTP/0.9

- c-hyper: poll the tasks until end correctly
  
  ... makes test 36 work.
  
  Closes #6412

- [Gergely Nagy brought this change]

  mk-ca-bundle.pl: deterministic output when using -t
  
  Printing trust purposes are now sorted, making the output deterministic
  when running on the same input certdata.txt.
  
  Closes #6413

- KNOWN_BUGS: fixed "wolfSSL lacks support for renegotiation"
  
  Fixed by #6411

- [Himanshu Gupta brought this change]

  wolfssl: add SECURE_RENEGOTIATION support
  
  Closes #6411

- RELEASE-NOTES: synced

- wolfssl: update copyright year range
  
  Follow-up to 7de2e96535e9

- c-hyper: make CURLE_GOT_NOTHING work
  
  Test 30
  
  Closes #6407

- http_proxy: make CONNECT work with the Hyper backend
  
  Makes test 80 run
  
  Closes #6406

- TODO: --fail-with-body perchance?

Jay Satiro (4 Jan 2021)
- tool_operate: fix the suppression logic of some error messages
  
  - Fix the failed truncation and failed writing body error messages to
    not be shown unless error messages are shown. (ie the user has
    specified -sS, or has not specified -s).
  
  - Also prefix same error messages with "curl: ", for example:
    curl: (23) Failed to truncate, exiting
  
  Prior to this change the failed truncation error messages would be shown
  if not -s, but did not account for -sS which should show.
  
  Prior to this change the failed writing body error messages would be
  shown always.
  
  Ref: https://curl.se/docs/manpage.html#-S
  
  Bug: https://curl.se/mail/archive-2020-12/0017.html
  Reported-by: Hongyi Zhao
  
  Closes https://github.com/curl/curl/pull/6402

- wolfssl: Support wolfSSL builds missing TLS 1.1
  
  The wolfSSL TLS library defines NO_OLD_TLS in some of their build
  configurations and that causes the library to be built without TLS 1.1.
  For example if MD5 is explicitly disabled when building wolfSSL then
  that defines NO_OLD_TLS and the library is built without TLS 1.1 [1].
  
  Prior to this change attempting to build curl with a wolfSSL that was
  built with NO_OLD_TLS would cause a build link error undefined reference
  to wolfTLSv1_client_method.
  
  [1]: https://github.com/wolfSSL/wolfssl/blob/v4.5.0-stable/configure.ac#L2366
  
  Bug: https://curl.se/mail/lib-2020-12/0121.html
  Reported-by: Julian Montes
  
  Closes https://github.com/curl/curl/pull/6388

Daniel Stenberg (4 Jan 2021)
- test1633: set appropriate name
  
  "--retry with a 429 response and Retry-After:"

- travis: limit the tests with quiche builds to HTTPS and FTPS only
  
  ... since it runs into the 50 minute time limit too often otherwise.
  
  Closes #6403

- HISTORY: added dates to early history
  
  Mostly thanks to this archived web page for urlget:
  
  https://web.archive.org/web/19980216125115/http://www.inf.ufrgs.br/~sagula/urlget.html

- httpauth: make multi-request auth work with custom port
  
  When doing HTTP authentication and a port number set with CURLOPT_PORT,
  the code would previously have the URL's port number override as if it
  had been a redirect to an absolute URL.
  
  Added test 1568 to verify.
  
  Reported-by: UrsusArctos on github
  Fixes #6397
  Closes #6400

- [Emil Engler brought this change]

  language: s/behaviour/behavior/g
  
  We currently use both spellings the british "behaviour" and the american
  "behavior". However "behavior" is more used in the project so I think
  it's worth dropping the british name.
  
  Closes #6395

- cmdline-opts/retry.d: mention response code 429 as well
  
  Reported-by: Cherish98
  Bug: https://curl.se/mail/archive-2020-12/0018.html

- docs/HYPER.md: mention outstanding issues
  
  To make it more obvious to users what doesn't work (yet)
  
  Closes #6389

- COPYING/configure: bump copyright year range

- c-hyper: add timecondition to the request
  
  Test 77-78
  
  Closes #6391

- c-hyper: make Digest and NTLM work
  
  Test 64, 65, 67, 68, 69, 70, 72
  
  Closes #6390

- examples/curlgtk.c: fix the copyright year range
  
  ... and make private functions static.

- [Olaf Hering brought this change]

  docs/examples: adjust prototypes for CURLOPT_READFUNCTION
  
  The type of the buffer in curl_read_callback is 'char *', not 'void *'.
  
  Signed-off-by: Olaf Hering <olaf@aepfle.de>
  Closes #6392

- examples: fix more empty expression statement has no effect
  
  Follow-up to 26e46617b9

- cleanup: fix two empty expression statement has no effect
  
  Follow-up to 26e46617b9

- configure: set -Wextra-semi-stmt for clang with --enable-debug
  
  To have it properly complain on empty statements with no effect.
  
  Ref: #6376
  Closes #6378

- tests/unit: fix empty statements with no effect
  
  ... by making macros use "do {} while(0)"

- [Paul Groke brought this change]

  dns: extend CURLOPT_RESOLVE syntax for adding non-permanent entries
  
  Extend the syntax of CURLOPT_RESOLVE strings: allow using a '+' prefix
  (similar to the existing '-' prefix for removing entries) to add
  DNS cache entries that will time out just like entries that are added
  by libcurl itself.
  
  Append " (non-permanent)" to info log message in case a non-permanent
  entry is added.
  
  Adjust relevant comments to reflect the new behavior.
  
  Adjust documentation.
  
  Extend unit1607 to test the new functionality.
  
  Closes #6294

- schannel: fix "empty expression statement has no effect"
  
  Bug: https://github.com/curl/curl/commit/8ab78f720ae478d533e30b202baec4b451741579#commitcomment-45445950
  Reported-by: Gisle Vanem
  Closes #6381

- [Denis Laxalde brought this change]

  docs: remove redundant "better" in --fail help
  
  Closes #6385

- [Kevin Ushey brought this change]

  curl.1: fix typo microsft -> microsoft
  
  Closes #6380

- [XhmikosR brought this change]

  misc: assorted typo fixes
  
  Closes #6375

- RELEASE-NOTES: synced

- tool_operate: avoid NULL dereference of first_arg
  
  Follow-up to 6a5e020d4d2b04a
  Identified by OSS-Fuzz
  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28999
  Closes #6377

- misc: fix "warning: empty expression statement has no effect"
  
  Turned several macros into do-while(0) style to allow their use to work
  find with semicolon.
  
  Bug: https://github.com/curl/curl/commit/08e8455dddc5e48e58a12ade3815c01ae3da3b64#commitcomment-45433279
  Follow-up to 08e8455dddc5e4
  Reported-by: Gisle Vanem
  Closes #6376

- KNOWN_BUGS: 6.10 curl never completes Negotiate over HTTP
  
  Closes #5235
  Closes #6370

- writeout: fix NULL dereference for "this url"
  
  Detected by torture test 1029
  
  Follow-up to 7a90ddf88f5a
  
  Closes #6374

- failf: remove newline from formatting strings
  
  ... as failf adds one itself.
  
  Also: add an assert() to failf() that triggers on a newline in the
  format string!
  
  Closes #6365

- [XhmikosR brought this change]

  CI: fix warning with the latest versions
  
  `git checkout HEAD^2` is no longer needed
  
  Closes #6369

- INSTALL: update the list known OSes and CPU archs curl has run on
  
  Closes #6366

- [Cherish98 brought this change]

  curl: fix handling of -q option
  
  The match of the "-q" option (short for "--disable") should:
  a) allow concatenation with other single-letters; and
  b) be case-sensitive, lest confusing with "-Q" ("--quote")
  
  Closes #6364

- tests/badsymbols.pl: ignore stand-alone single hash lines
  
  Bug: https://curl.se/mail/lib-2020-12/0084.html
  Reported-by: Dennis Clarke
  Assisted-by: Jay Satiro
  
  Closes #6355

- curl_easy_pause.3: add multiplexed pause effects
  
  and generally refresh and update. Remove details for ancient versions.
  
  Reviewed-by: Jay Satiro
  Closes #6360

Jay Satiro (22 Dec 2020)
- curl_easy_pause.3: fix man page reference
  
  Follow-up to ac9a724 from earlier today.
  
  Ref: https://github.com/curl/curl/pull/6359

Daniel Stenberg (22 Dec 2020)
- EXPERIMENTAL: add the Hyper backend to the list
  
  ... of current experimental features in curl.

- speedcheck: exclude paused transfers
  
  Paused transfers should not be stopped due to slow speed even when
  CURLOPT_LOW_SPEED_LIMIT is set. Additionally, the slow speed timer is
  now reset when the transfer is unpaused - as otherwise it would easily
  just trigger immediately after unpausing.
  
  Reported-by: Harry Sintonen
  Fixes #6358
  Closes #6359

- h2: do not wait for RECV on paused transfers
  
  ... as the socket might be readable all the time when paused and thus
  causing a busy-loop.
  
  Reported-by: Harry Sintonen
  Reviewed-by: Jay Satiro
  Fixes #6356
  Closes #6357

- RELEASE-NOTES: synced

- cmdline-opts/gen.pl: return hard on errors
  
  ... as the warnings tend to go unnoticed otherwise!
  
  Closes #6354

- examples/libtest: add .checksrc to dist
  
  ... so that (auto)builds from tarballs also get the correct instructions.
  
  Fixes #6176
  Closes #6353

- test: verify new --write-out variables
  
  Extended test 1029 and added 1188

- test970: adapted to the new internal order of variables

- curl: add variables to --write-out
  
  In particular, these ones can help a user to create its own error
  message when one or transfers fail.
  
  writeout: add 'onerror', 'url', 'urlnum', 'exitcode', 'errormsg'
  
  onerror - lets a user only show the rest on non-zero exit codes
  
  url - the input URL used for this transfer
  
  urlnum - the numerical URL counter (0 indexed) for this transfer
  
  exitcode - the numerical exit code for the transfer
  
  errormsg - obvious
  
  Reported-by: Earnestly on github
  Fixes #6199
  Closes #6207

- [Matthias Gatto brought this change]

  tests: add very simple AWS HTTP v4 Signature test
  
  Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>

- [Matthias Gatto brought this change]

  docs: add AWS HTTP v4 Signature

- [Matthias Gatto brought this change]

  tool: add AWS HTTP v4 Signature support
  
  Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>

- [Matthias Gatto brought this change]

  http: Make the call to v4 signature
  
  This patch allow to call the v4 signature introduce in previous commit
  
  Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>

- [Matthias Gatto brought this change]

  http: introduce AWS HTTP v4 Signature
  
  It is a security process for HTTP.
  
  It doesn't seems to be standard, but it is used by some cloud providers.
  
  Aws:
  https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
  Outscale:
  https://wiki.outscale.net/display/EN/Creating+a+Canonical+Request
  GCP (I didn't test that this code work with GCP though):
  https://cloud.google.com/storage/docs/access-control/signing-urls-manually
  
  most of the code is in lib/http_v4_signature.c
  
  Information require by the algorithm:
  - The URL
  - Current time
  -  some prefix that are append to some of the signature parameters.
  
  The data extracted from the URL are: the URI, the region,
  the host and the API type
  
  example:
  https://api.eu-west-2.outscale.com/api/latest/ReadNets
          ~~~ ~~~~~~~~               ~~~~~~~~~~~~~~~~~~~
          ^       ^                          ^
         /         \                        URI
     API type     region
  
  Small description of the algorithm:
  - make canonical header using content type, the host, and the date
  - hash the post data
  - make canonical_request using custom request, the URI,
    the get data, the canonical header, the signed header
    and post data hash
  - hash canonical_request
  - make str_to_sign using one of the prefix pass in parameter,
    the date, the credential scope and the canonical_request hash
  - compute hmac from date, using secret key as key.
  - compute hmac from region, using above hmac as key
  - compute hmac from api_type, using above hmac as key
  - compute hmac from request_type, using above hmac as key
  - compute hmac from str_to_sign using above hmac as key
  - create Authorization header using above hmac, prefix pass in parameter,
    the date, and above hash
  
  Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
  
  Closes #5703

- [Matthias Gatto brought this change]

  http: add hmac support for sha256
  
  It seems current hmac implementation use md5 for the hash,
  V4 signature require sha256, so I've added the needed struct in
  this commit.
  
  I've added the functions that do the hmac in v4 signature file
  as a static function ,in the next patch of the serie,
  because it's used only by this file.
  
  Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>

- [Cristian Rodríguez brought this change]

  connect: on linux, enable reporting of all ICMP errors on UDP sockets
  
  The linux kernel does not report all ICMP errors back to userspace due
  to historical reasons.
  
  IP*_RECVERR sockopt must be turned on to have the correct behaviour
  which is to pass all ICMP errors to userspace.
  
  See https://bugzilla.kernel.org/show_bug.cgi?id=202355
  
  Closes #6341

- curl: add --create-file-mode [mode]
  
  This option sets the (octal) mode to use for the remote file when one is
  created, using the SFTP, SCP or FILE protocols. When not set, the
  default is 0644.
  
  Closes #6244

- c-hyper: fix compiler warnings
  
  Identified by clang on windows.
  
  Reported-by: Gisle Vanem
  Bug: 58974d25d8173aec154e593ed9d866da566c9811
  
  Closes #6351

- KNOWN_BUGS: Remote recursive folder creation with SFTP
  
  Closes #5204

Jay Satiro (20 Dec 2020)
- badsymbols.pl: Add verbose mode -v
  
  Use -v as the first option to enable verbose mode which will show source
  input, extracted symbol and line info. For example:
  
  Source: ./../include/curl/typecheck-gcc.h
  Symbol: curlcheck_socket_info(info)
  Line #423: #define curlcheck_socket_info(info)                     \
  
  Ref: https://curl.se/mail/lib-2020-12/0084.html
  
  Closes https://github.com/curl/curl/pull/6349

- KNOWN_BUGS: Secure Transport disabling hostname validation also disables SNI
  
  That behavior is a limitation of Apple's Secure Transport.
  
  Reported-by: Cory Benfield
  Reported-by: Ian Spence
  Confirmed-by: Nick Zitzmann
  
  Ref: https://github.com/curl/curl/issues/998
  
  Closes https://github.com/curl/curl/issues/6347
  Closes https://github.com/curl/curl/pull/6348

Daniel Stenberg (18 Dec 2020)
- TODO: alt-svc should fallback if alt-svc doesn't work
  
  Closes #4908

- travis: restrict the openssl3 job to only run https and ftps tests
  
  ... as it runs too long otherwise and the other tests are verified in
  other builds anyway.
  
  Closes #6345

- build: repair http disabled but mqtt enabled build
  
  ... as the mqtt code reuses the "method" originally used for HTTP.
  
  Closes #6344

- [Jon Wilkes brought this change]

  cookie: avoid the C1001 internal compiler error with MSVC 14
  
  Fixes #6112
  Closes #6135

- RELEASE-NOTES: synced

- mqtt: handle POST/PUBLISH without a set POSTFIELDSIZE
  
  Detected by OSS-Fuzz
  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28735
  
  Added test 1916 and 1917 to verify.
  
  Closes #6338

- travis: add CI job for Hyper build

- tests: updated tests for Hyper

- lib: introduce c-hyper for using Hyper
  
  ... as an alternative HTTP backend within libcurl.

- tool_setopt: provide helper output in debug builds
  
  ... for when setopt() returns error.

- setopt: adjust to Hyper and disabled HTTP builds

- rtsp: disable if Hyper is used

- getinfo: build with disabled HTTP support

- version: include hyper version

- docs: add HYPER.md

- configure: add --with-hyper
  
  As the first (optional) HTTP backend alternative instead of native
  
  Close #6110

- test1522: add debug tracing
  
  I used this to track down some issues and I figured I could just as well
  keep this extra logging in here for future needs.
  
  Closes #6331

- http: show the request as headers even when split-sending
  
  When the initial request isn't possible to send in its entirety, the
  remainder of request would be delivered to the debug callback as data
  and would wrongly be counted internally as body-bytes sent.
  
  Extended test 1295 to verify.
  
  Closes #6328

- multi: when erroring in TOOFAST state, act as for PERFORM
  
  When failing in TOOFAST, the multi_done() wasn't called so the same
  cleanup and handling wasn't done like when it fails in PERFORM, which in
  the case of FTP could mean that the control connection wouldn't be
  marked as "dead" for the CURLE_ABORTED_BY_CALLBACK case. Which caused
  ftp_disconnect() to use it to send "QUIT", which could end up waiting
  for a response a long time before giving up!
  
  Reported-by: Tomas Berger
  Fixes #6333
  Closes #6337

- cmake: enable gophers correctly in curl-config
  
  Closes #6336

- test1198/9: add two mqtt publish tests without payload lengths
  
  Closes #6335

- tests/mqttd: extract the client id from the correct offset
  
  Closes #6334

- TODO: Prevent terminal injection when writing to terminal
  
  Closes #6150

- Revert "CI/github: work-around for brew breakage on macOS"
  
  This reverts commit 4cbb17a2cbbbe6337142d39479e21c3990b9c22f.
  
  ... as the work-around now causes failures.
  
  Closes #6332

- examples: remove superfluous asterisk uses
  
  ... for function pointers. Breaks in ancient compilers.

- RELEASE-NOTES: synced

- test1272: fix line ending
  
  Follow-up to f24784f9143

- URL-SYNTAX: add gophers details

- test1272: test gophers

- runtests: add support for gophers, gopher over TLS

- [parazyd brought this change]

  gopher: Implement secure gopher protocol.
  
  This commit introduces a "gophers" handler inside the gopher protocol if
  USE_SSL is defined. This protocol is no different than the usual gopher
  prococol, with the added TLS encapsulation upon connecting. The protocol
  has been adopted in the gopher community, and many people have enabled
  TLS in their gopher daemons like geomyidae(8), and clients, like clic(1)
  and hurl(1).
  
  I have not implemented test units for this protocol because my knowledge
  of Perl is sub-par. However, for someone more knowledgeable it might be
  fairly trivial, because the same test that tests the plain gopher
  protocol can be used for "gophers" just by adding a TLS listener.
  
  Signed-off-by: parazyd <parazyd@dyne.org>
  
  Closes #6208

- TODO: Package curl for Windows in a signed installer
  
  Closes #5424

- mqtt: deal with 0 byte reads correctly
  
  OSS-Fuzz found it
  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28676
  
  Closes #6327

- BUG-BOUNTY: minor language update
  
  ... and remove the wording about entries from before 2019 as the "within
  12 months" is still there and covers that.
  
  Closes #6318

- tooĺ_writeout: fix the -w time output units
  
  Fix regression from commit fc813f80e1bcac (#6248) that changed the unit
  to microseconds instead of seconds with fractions
  
  Reported-by: 不确定
  Fixes #6321
  Closes #6322

- quiche: remove fprintf() leftover

Jay Satiro (14 Dec 2020)
- KNOWN_BUGS: SHA-256 digest not supported in Windows SSPI builds
  
  Closes https://github.com/curl/curl/issues/6302

- digest_sspi: Show InitializeSecurityContext errors in verbose mode
  
  The error is shown with infof rather than failf so that the user will
  see the extended error message information only in verbose mode, and
  will still see the standard CURLE_AUTH_ERROR message. For example:
  
  ---
  
  * schannel: InitializeSecurityContext failed: SEC_E_QOP_NOT_SUPPORTED
  (0x8009030A) - The per-message Quality of Protection is not supported by
  the security package
  * multi_done
  * Connection #1 to host 127.0.0.1 left intact
  curl: (94) An authentication function returned an error
  
  ---
  
  Ref: https://github.com/curl/curl/issues/6302
  
  Closes https://github.com/curl/curl/pull/6315

Daniel Stenberg (13 Dec 2020)
- URL-SYNTAX: add default port numbers and IDNA details
  
  Closes #6316

- URL-SYNTAX: mention how FILE:// access can access network on windows
  
  Closes #6314

Jay Satiro (12 Dec 2020)
- URL-SYNTAX: Document default SMTP port 25
  
  Note that ports 25 and 587 are common ports for smtp, the former being
  the default.
  
  Closes https://github.com/curl/curl/pull/6310

Daniel Stenberg (12 Dec 2020)
- CURLOPT_URL.3: remove scheme specific details
  
  ... that are now found in URL-SYNTAX.md
  
  Closes #6307

Dan Fandrich (12 Dec 2020)
- docs: Fix some typos
  
  [skip ci]

Daniel Stenberg (12 Dec 2020)
- URL-SYNTAX: mention all supported schemes
  
  Closes #6311

- [Douglas R. Reno brought this change]

  URL-SYNTAX.md: minor language improvements
  
  Closes #6308

- docs/URL-SYNTAX: the URL syntax curl accepts and works with
  
  Closes #6285

- [0xflotus brought this change]

  docs: enable syntax highlighting in several docs files
  
  ... for better readability
  
  Closes #6286

- test1564/1565: require the 'wakeup' feature to run
  
  Fixes #6299
  Fixes #6300
  Closes #6301

- runtests: add 'wakeup' as a feature

- tests/server/disabled: add "wakeup"
  
  To allow the test suite to know if wakeup support is disabled in the
  build.

- lib1564/5: verify that curl_multi_wakeup returns OK

- tests: make --libcurl tests only test FTP options if ftp enabled
  
  Adjust six --libcurl tests to only check the FTP option if FTP is
  actually present in the build.
  
  Fixes #6303
  Closes #6305

- runtests.pl: fix "uninitialized value" warning
  
  follow-up to e12825c642a88774

- runtests: add support for %if [feature] conditions
  
  ... to make tests run differently or expect different results depending
  on what features that are present or not in curl.
  
  Bonus: initial minor 'Hyper' awareness but nothing is using that yet
  
  Closes #6304

- [Jon Rumsey brought this change]

  OS400: update ccsidcurl.c
  
  Add 'struct' to cast and declaration of cfcdata to fix compilation
  error.
  
  Fixes #6292
  Closes #6297

- ngtcp2: make it build it current master again
  
  Closes #6296

- [Cristian Rodríguez brought this change]

  connect: defer port selection until connect() time
  
  If supported, defer port selection until connect() time
  if --interface is given and source port is 0.
  
  Reproducer:
  
  * start fast webserver on port 80
  * starve system of ephemeral ports
  $  sysctl net.ipv4.ip_local_port_range="60990 60999"
  
  * start a curl/libcurl "crawler"
  $curl --keepalive --parallel --parallel-immediate --head --interface
  127.0.0.2 "http://127.0.0.[1-254]/file[001-002].txt"
  
  current result:
  (possible some successful data)
  curl: (45) bind failed with errno 98: Address already in use
  
  result after patch:
  (complete success or few connections failing, higlhy depending on load)
  
  Fail only when all the possible 4-tuple combinations are exhausted,
  which is impossible to do when port is selected at bind() time becuse
  the kernel does not know if socket will be listen()'ed on or connect'ed
  yet.
  
  Closes #6295

- [Hans-Christian Noren Egtvedt brought this change]

  connect: zero variable on stack to silence valgrind complaint
  
  Valgrind will complain that ssrem buffer usage if not explicit
  initialized, hence initialize it to zero.
  
  This completes the change intially started in commit 2c0d7212151 ('ftp:
  retry getpeername for FTP with TCP_FASTOPEN') where the ssloc buffer has
  a similar memset to zero.
  
  Signed-off-by: Hans-Christian Noren Egtvedt <hegtvedt@cisco.com>
  Closes #6289

- RELEASE-NOTES: synced
  
  start over on the next release cycle

Version 7.74.0 (9 Dec 2020)

Daniel Stenberg (9 Dec 2020)
- RELEASE-NOTES: synced
  
  for 7.74.0

Jay Satiro (7 Dec 2020)
- [Jacob Hoffman-Andrews brought this change]

  urldata: restore comment on ssl_connect_data.use
  
  This comment was originally on the `use` field, but was separated from
  its field in 62a2534.
  
  Closes https://github.com/curl/curl/pull/6287

Daniel Stenberg (7 Dec 2020)
- VERSIONS: refreshed
  
  We always use the patch number these days: all releases are
  "major.minor.patch"

- [Jakub Zakrzewski brought this change]

  cmake: don't use reserved target name 'test'
  
  CMake up to 3.10 always reserves this name
  
  Fixes #6257
  Closes #6258

- openssl: make the OCSP verification verify the certificate id
  
  CVE-2020-8286
  
  Reported by anonymous
  
  Bug: https://curl.se/docs/CVE-2020-8286.html

- ftp: make wc_statemach loop instead of recurse
  
  CVE-2020-8285
  
  Fixes #6255
  Bug: https://curl.se/docs/CVE-2020-8285.html
  Reported-by: xnynx on github

- ftp: CURLOPT_FTP_SKIP_PASV_IP by default
  
  The command line tool also independently sets --ftp-skip-pasv-ip by
  default.
  
  Ten test cases updated to adapt the modified --libcurl output.
  
  Bug: https://curl.se/docs/CVE-2020-8284.html
  CVE-2020-8284
  
  Reported-by: Varnavas Papaioannou

- urlapi: don't accept blank port number field without scheme
  
  ... as it makes the URL parser accept "very-long-hostname://" as a valid
  host name and we don't want that. The parser now only accepts a blank
  (no digits) after the colon if the URL starts with a scheme.
  
  Reported-by: d4d on hackerone
  
  Closes #6283

- Revert "multi: implement wait using winsock events"
  
  This reverts commit d2a7d7c185f98df8f3e585e5620cbc0482e45fac.
  
  This commit also reverts the subsequent follow-ups to that commit, which
  were all done within windows #ifdefs that are removed in this
  change. Marc helped me verify this.
  
  Fixes #6146
  Closes #6281

- [Klaus Crusius brought this change]

  ftp: retry getpeername for FTP with TCP_FASTOPEN
  
  In the case of TFO, the remote host name is not resolved at the
  connetion time.
  
  For FTP that has lead to missing hostname for the secondary connection.
  Therefore the name resolution is done at the time, when FTP requires it.
  
  Fixes #6252
  Closes #6265
  Closes #6282

- [Thomas Danielsson brought this change]

  scripts/completion.pl: parse all opts
  
  For tab-completion it may be preferable to include all the
  available options.
  
  Closes #6280

- RELEASE-NOTES: synced

- openssl: use OPENSSL_init_ssl() with >= 1.1.0
  
  Reported-by: Kovalkov Dmitrii and Per Nilsson
  Fixes #6254
  Fixes #6256
  Closes #6260

- SECURITY-PROCESS: disclose on hackerone
  
  Once a vulnerability has been published, the hackerone issue should be
  disclosed. For tranparency.
  
  Closes #6275

Marc Hoersken (3 Dec 2020)
- tests/util.py: fix compatibility with Python 2
  
  Backporting the Python 3 implementation of setStream
  to ClosingFileHandler as a fallback within Python 2.
  
  Reported-by: Jay Satiro
  
  Fixes #6259
  Closes #6270

Daniel Gustafsson (3 Dec 2020)
- docs: fix typos and markup in ETag manpage sections
  
  Reported-by: emanruse on github
  Fixes #6273

Daniel Stenberg (2 Dec 2020)
- quiche: close the connection
  
  Reported-by: Junho Choi
  Fixes #6213
  Closes #6217

Jay Satiro (2 Dec 2020)
- ngtcp2: Fix build error due to symbol name change
  
  - NGTCP2_CRYPTO_LEVEL_APP -> NGTCP2_CRYPTO_LEVEL_APPLICATION
  
  ngtcp2/ngtcp2@76232e9 changed the name.
  
  ngtcp2 master is required to build curl with http3 support.
  
  Closes https://github.com/curl/curl/pull/6271

Daniel Stenberg (1 Dec 2020)
- [Klaus Crusius brought this change]

  cmake: check for linux/tcp.h
  
  The HAVE_LINUX_TCP_H define was not set by cmake.
  
  Closes #6252
