diff options
Diffstat (limited to 'libs/libcurl/docs/CHANGES')
-rw-r--r-- | libs/libcurl/docs/CHANGES | 3098 |
1 files changed, 1369 insertions, 1729 deletions
diff --git a/libs/libcurl/docs/CHANGES b/libs/libcurl/docs/CHANGES index f77f0a9e13..692f78f2bb 100644 --- a/libs/libcurl/docs/CHANGES +++ b/libs/libcurl/docs/CHANGES @@ -6,6 +6,1375 @@ Changelog +Version 7.81.0 (5 Jan 2022) + +Daniel Stenberg (5 Jan 2022) +- RELEASE-NOTES: synced + + curl 7.81.0 release + +- THANKS: add names from 7.81.0 release + +- curl_multi_init.3: fix the copyright year range + +- test719-721: require "proxy" feature present to run + + Bug: https://github.com/curl/curl/pull/8223#issuecomment-1005188696 + Reported-by: Marc Hörsken + + Closes #8226 + +- test719: require ipv6 support to run + + Follow-up to effd2bd7ba2a5fd244 + Reported-by: Marc Hörsken + Bug: https://github.com/curl/curl/pull/8217#issuecomment-1004681145 + + Closes #8223 + +- test719-721: verify SOCKS details + + Using the new verify/socks details + +- runtests: add verify/socks check + + If used, this data is compared with the data in log/socksd-request.log + which the socksd server logs. + + Added to FILEFORMAT.md + +- server/socksd: log atyp + address in a separate log + + To allow the test suite to verify that the right data arrived + +- socks5: use appropriate ATYP for numerical IP address host names + + When not resolving the address locallly (known as socks5h). + + Add test 719 and 720 to verify. + + Reported-by: Peter Piekarski + Fixes #8216 + Closes #8217 + +Jay Satiro (3 Jan 2022) +- curl_multi_init.3: fix EXAMPLE formatting + +Daniel Stenberg (3 Jan 2022) +- RELEASE-NOTES: synced + +- libtest: avoid "assignment within conditional expression" + + In lib530, lib540 and lib582 + + Closes #8218 + +- ftp: disable warning 4706 in MSVC + + Follow-up to 21248e052d + + Disabling "assignment within conditional expression" for MSVC needs to + be done before the function starts, for it to take effect. + + Closes #8218 + +- tool_operate: warn if too many output arguments were found + + More output instructions than URLs is likely a user error. + + Add test case 371 to verify + + Closes #8210 + +- .github/workflows/mbedtls.yml: bump to mbedtls 3.1.0 + + Closes #8215 + +- zuul: remove the mbedtls jobs + + Now running as github workflows + + Closes #8215 + +- github/workflows: add mbedtls and mbedtls-clang + + Closes #8215 + +- [Valentin Richter brought this change] + + mbedtls: fix private member designations for v3.1.0 + + "As a last resort, you can access the field foo of a structure bar by + writing bar.MBEDTLS_PRIVATE(foo). Note that you do so at your own risk, + since such code is likely to break in a future minor version of Mbed + TLS." - + https://github.com/ARMmbed/mbedtls/blob/f2d1199edc5834df4297f247f213e614f7782d1d/docs/3.0-migration-guide.md + + That future minor version is v3.1.0. I set the >= to == for the version + checks because v3.1.0 is a release, and I am not sure when the private + designation was reverted after v3.0.0. + + Closes #8214 + +- [Valentin Richter brought this change] + + cmake: prevent dev warning due to mismatched arg + + -- curl version=[7.81.0-DEV] + CMake Warning (dev) at /usr/share/cmake-3.22.1/Modules/FindPackageHandleStandardArgs.cmake:438 (message): + The package name passed to `find_package_handle_standard_args` (MBEDTLS) + does not match the name of the calling package (MbedTLS). This can lead to + problems in calling code that expects `find_package` result variables + (e.g., `_FOUND`) to follow a certain pattern. + Call Stack (most recent call first): + deps/curl/CMake/FindMbedTLS.cmake:31 (find_package_handle_standard_args) + deps/curl/CMakeLists.txt:473 (find_package) + This warning is for project developers. Use -Wno-dev to suppress it. + + Closes #8207 + +- urlapi: if possible, shorten given numerical IPv6 addresses + + Extended test 1560 to verify + + Closes #8206 + +- [Michał Antoniak brought this change] + + url: reduce ssl backend count for CURL_DISABLE_PROXY builds + + Closes #8212 + +- KNOWN_BUGS: "Trying local ports fails on Windows" + + Reported-by: gclinch on github + Closes #8112 + +- misc: update copyright year range + +- zuul: remove the wolfssl even more + + Follow-up to 1914465cf180d32b3d + +- examples/multi-single.c: remove WAITMS() + + As it isn't used. + + Reported-by: Melroy van den Berg + Fixes #8200 + Closes #8201 + +- gtls: add gnutls include for the session type + + Follow-up to 8fbd6feddfa5 to make it build more universally + +- m4/curl-compilers: tell clang -Wno-pointer-bool-conversion + + To hush compiler warnings we don't care for: error: address of function + 'X' will always evaluate to 'true' + + Fixes #8197 + Closes #8198 + +- http_proxy: don't close the socket (too early) + + ... and double-check in the OpenSSL shutdown that the socket is actually + still there before it is used. + + Fixes #8193 + Closes #8195 + + Reported-by: Leszek Kubik + +- ngtcp2: verify the server certificate for the gnutls case + + Closes #8178 + +- ngtcp2: verify the server cert on connect (quictls) + + Make ngtcp2+quictls correctly acknowledge `CURLOPT_SSL_VERIFYPEER` and + `CURLOPT_SSL_VERIFYHOST`. + + The name check now uses a function from lib/vtls/openssl.c which will + need attention for when TLS is not done by OpenSSL or is disabled while + QUIC is enabled. + + Possibly the servercert() function in openssl.c should be adjusted to be + able to use for both regular TLS and QUIC. + + Ref: #8173 + Closes #8178 + +- zuul: remove the wolfssl build + +- github workflow: add wolfssl + + Closes #8196 + +- [Nicolas Sterchele brought this change] + + zuul: fix quiche build pointing to wrong Cargo + + Fixes #8184 + Closes #8189 + +- checksrc: detect more kinds of NULL comparisons we avoid + + Co-authored-by: Jay Satiro + Closes #8180 + +- RELEASE-NOTES: synced + +- mesalink: remove the BACKEND define kludge + + Closes #8183 + +- schannel: remove the BACKEND define kludge + + Closes #8182 + +- gtls: check return code for gnutls_alpn_set_protocols + + Closes #8181 + +- [Stefan Huber brought this change] + + README: label the link to the support document + + Closes #8185 + +- docs/HTTP3: describe how to setup a h3 reverse-proxy for testing + + Assisted-by: Matt Holt + + Closes #8177 + +- libcurl-multi.3: "SOCKS proxy handshakes" are not blocking + + Since 4a4b63daaa0 + +- [Vladimir Panteleev brought this change] + + tests: Add test for CURLOPT_HTTP200ALIASES + +- [Vladimir Panteleev brought this change] + + http: Fix CURLOPT_HTTP200ALIASES + + The httpcode < 100 check was also triggered when none of the fields were + parsed, thus making the if(!nc) block unreachable. + + Closes #8171 + +- RELEASE-NOTES: synced + +- language: "email" + + Missed three occurrences. + + Follow-up to 7a92f86 + +- nss:set_cipher don't clobber the cipher list + + The string is set by the user and needs to remain intact for proper + connection reuse etc. + + Reported-by: Eric Musser + Fixes #8160 + Closes #8161 + +- misc: s/e-mail/email + + Consistency is king. Following the lead in everything curl. + + Closes #8159 + +- [Tobias Nießen brought this change] + + docs: fix typo in OpenSSL 3 build instructions + + Closes #8162 + +- linkcheck.yml: add CI job that checks markdown links + + Closes #8158 + +- RELEASE-PROCEDURE.md: remove ICAL link and old release dates + +- BINDINGS.md: "markdown-link-check-disable" + + It feels a bit unfortunate to litter an ugly tag for this functionality, + but if we get link scans of all markdown files, this might be worth the + price. + +- docs: fix dead links, remove ECH.md + +Jay Satiro (16 Dec 2021) +- openssl: define HAVE_OPENSSL_VERSION for OpenSSL 1.1.0+ + + Prior to this change OpenSSL_version was only detected in configure + builds. For other builds the old version parsing code was used which + would result in incorrect versioning for OpenSSL 3: + + Before: + + curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.0a zlib/1.2.11 + WinIDN libssh2/1.9.0 + + After: + + curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.1 zlib/1.2.11 + WinIDN libssh2/1.9.0 + + Reported-by: lllaffer@users.noreply.github.com + + Fixes https://github.com/curl/curl/issues/8154 + Closes https://github.com/curl/curl/pull/8155 + +Daniel Stenberg (16 Dec 2021) +- [James Fuller brought this change] + + docs: add known bugs list to HTTP3.md + + Closes #8156 + +Dan Fandrich (15 Dec 2021) +- BINDINGS: add one from Everything curl and update a link + +- libcurl-security.3: mention address and URL mitigations + + The new CURLOPT_PREREQFUNCTION callback is another way to sanitize + addresses. + Using the curl_url API is a way to mitigate against attacks relying on + URL parsing differences. + +Daniel Stenberg (15 Dec 2021) +- RELEASE-NOTES: synced + +- x509asn1: return early on errors + + Overhaul to make sure functions that detect errors bail out early with + error rather than trying to continue and risk hiding the problem. + + Closes #8147 + +- [Patrick Monnerat brought this change] + + openldap: several minor improvements + + - Early check proper LDAP URL syntax. Reject URLs with a userinfo part. + - Use dynamic memory for ldap_init_fd() URL rather than a + stack-allocated buffer. + - Never chase referrals: supporting it would require additional parallel + connections and alternate authentication credentials. + - Do not wait 1 microsecond while polling/reading query response data. + - Store last received server code for retrieval with CURLINFO_RESPONSE_CODE. + + Closes #8140 + +- [Michał Antoniak brought this change] + + misc: remove unused doh flags when CURL_DISABLE_DOH is defined + + Closes #8148 + +- mbedtls: fix CURLOPT_SSLCERT_BLOB + + The memory passed to mbedTLS for this needs to be null terminated. + + Reported-by: Florian Van Heghe + Closes #8146 + +- asyn-ares: ares_getaddrinfo needs no happy eyeballs timer + + Closes #8142 + +- mailmap: add Yongkang Huang + + From #8141 + +- [Yongkang Huang brought this change] + + check ssl_config when re-use proxy connection + +- mbedtls: do a separate malloc for ca_info_blob + + Since the mbedTLS API requires the data to the null terminated. + + Follow-up to 456c53730d21b1fad0c7f72c1817 + + Fixes #8139 + Closes #8145 + +Marc Hoersken (14 Dec 2021) +- CI: build examples for additional code verification + + Some CIs already build them, let's do it on more of them. + + Reviewed-by: Daniel Stenberg + + Follow up to #7690 and 77311f420a541a0de5b3014e0e40ff8b4205d4af + Replaces #7591 + Closes #7922 + +- docs/examples: workaround broken -Wno-pedantic-ms-format + + Avoid CURL_FORMAT_CURL_OFF_T by using unsigned long instead. + Improve size_t to long conversion in imap-append.c example. + + Ref: https://github.com/curl/curl/issues/6079 + Ref: https://github.com/curl/curl/pull/6082 + Assisted-by: Jay Satiro + Reviewed-by: Daniel Stenberg + + Preparation of #7922 + +- tests/data/test302[12]: fix MSYS2 path conversion of hostpubsha256 + + Ref: https://www.msys2.org/wiki/Porting/#filesystem-namespaces + + Reviewed-by: Marcel Raad + Reviewed-by: Jay Satiro + + Fixes #8084 + Closes #8138 + +Daniel Stenberg (13 Dec 2021) +- [Patrick Monnerat brought this change] + + openldap: simplify ldif generation code + + and take care of zero-length values, avoiding conversion to base64 + and/or trailing spaces. + + Closes #8136 + +- example/progressfunc: remove code for old libcurls + + 7.61.0 is over three years old now, remove all #ifdefs for handling + ancient libcurl versions so that the example gets easier to read and + understand + + Closes #8137 + +- [x2018 brought this change] + + sha256/md5: return errors when init fails + + Closes #8133 + +- TODO: 13.3 Defeat TLS fingerprinting + + Closes #8119 + +- RELEASE-NOTES: synced + +- [Patrick Monnerat brought this change] + + openldap: process search query response messages one by one + + Upon receiving large result sets, this reduces memory consumption and + allows starting to output results while the transfer is still in + progress. + + Closes #8101 + +- hash: lazy-alloc the table in Curl_hash_add() + + This makes Curl_hash_init() infallible which saves error paths. + + Closes #8132 + +- multi: cleanup the socket hash when destroying it + + Since each socket hash entry may themselves have a hash table in them, + the destroying of the socket hash needs to make sure all the subhashes + are also correctly destroyed to avoid leaking memory. + + Fixes #8129 + Closes #8131 + +- test1156: fixup the stdout check for Windows + + It is not text mode. + + Follow-up to 6f73e68d182 + + Closes #8134 + +- test1528: enable for hyper + + Closes #8128 + +- test1527: enable for hyper + + Closes #8128 + +- test1526: enable for hyper + + Closes #8128 + +- test1525: slightly tweaked for hyper + + Closes #8128 + +- test1156: enable for hyper + + Minor reorg of the lib1156 code and it works fine for hyper. + + Closes #8127 + +- test661: enable for hyper + + Closes #8126 + +- docs: fix proselint nits + + - remove a lot of exclamation marks + - use consistent spaces (1, not 2) + - use better words at some places + + Closes #8123 + +- [RekGRpth brought this change] + + BINDINGS.md: add cURL client for PostgreSQL + + Closes #8125 + +- [RekGRpth brought this change] + + CURLSHOPT_USERDATA.3: fix copy-paste mistake + + Closes #8124 + +- docs: fix minor nroff format nits + + Repairs test 1140 + + Follow-up to 436cdf82041 + +- docs/URL-SYNTAX.md: space is not fine in a given URL + +- curl_multi_perform/socket_action.3: clarify what errors mean + + An error returned from one of these funtions mean that ALL still ongoing + transfers are to be considered failed. + + Ref: #8114 + Closes #8120 + +- libcurl-errors.3: add CURLM_ABORTED_BY_CALLBACK + + Follow-up to #8089 (2b3dd01) + + Closes #8116 + +- hash: add asserts to help detect bad usage + + For example trying to add entries after the hash has been "cleaned up" + + Closes #8115 + +- lib530: abort on curl_multi errors + + This makes torture tests run more proper. + + Also add an assert to trap situations where it would end up with no + sockets to wait for. + + Closes #8121 + +- FAQ: we never pronounced it "see URL", we say "kurl" + +- RELEASE-NOTES: synced + +- CURLOPT_RESOLVE.3: minor polish + + Minor rephrasing for some explanations. + + Put the format strings in stand-alone lines with .nf/.fi to be easier to spot. + + Move "added in" to AVAILABILITY + + Closed #8110 + +- test1556: adjust for hyper + + Closes #8105 + +- test1554: adjust for hyper + + Closes #8104 + +- retry-all-errors.d: make the example complete + + ... as it needs --retry too to work + +- TODO: 5.7 Require HTTP version X or higher + + Closes #7980 + +- CURLOPT_STDERR.3: does not work with libcurl as a win32 DLL + + This is the exact same limitation already documented for + CURLOPT_WRITEDATA but should be clarified here. It also has a different + work-around. + + Reported-by: Stephane Pellegrino + Bug: https://github.com/curl/curl/issues/8102 + Closes #8103 + +- multi: handle errors returned from socket/timer callbacks + + The callbacks were partially documented to support this. Now the + behavior is documented and returning error from either of these + callbacks will effectively kill all currently ongoing transfers. + + Added test 530 to verify + + Reported-by: Marcelo Juchem + Fixes #8083 + Closes #8089 + +- http2:set_transfer_url() return early on OOM + + If curl_url() returns NULL this should return early to avoid mistakes - + even if right now the subsequent function invokes are all OK. + + Coverity (wrongly) pointed out this as a NULL deref. + + Closes #8100 + +- tool_parsecfg: use correct free() call to free memory + + Detected by Coverity. CID 1494642. + Follow-up from 2be1aa619bca + + Closes #8099 + +- tool_operate: fix potential memory-leak + + A 'CURLU *' would leak if url_proto() is called with no URL. + + Detected by Coverity. CID 1494643. + Follow-up to 18270893abdb19 + Closes #8098 + +- [Patrick Monnerat brought this change] + + openldap: implement STARTTLS + + As this introduces use of CURLOPT_USE_SSL option for LDAP, also check + this option in ldap.c as it is not supported by this backend. + + Closes #8065 + +- [Jun Tseng brought this change] + + curl_easy_unescape.3: call curl_easy_cleanup in example + + Closes #8097 + +- [Jun Tseng brought this change] + + curl_easy_escape.3: call curl_easy_cleanup in example + + Closes #8097 + +- tool_listhelp: sync + + Follow-up to 172068b76f + +- [Damien Walsh brought this change] + + request.d: refer to 'method' rather than 'command' + + Closes #8094 + +- RELEASE-NOTES: synced + +- writeout: fix %{http_version} for HTTP/3 + + Output "3" properly when HTTP/3 was used. + + Reported-by: Bernat Mut + Fixes #8072 + Closes #8092 + +- urlapi: accept port number zero + + This is a regression since 7.62.0 (fb30ac5a2d). + + Updated test 1560 accordingly + + Reported-by: Brad Fitzpatrick + Fixes #8090 + Closes #8091 + +- [Mark Dodgson brought this change] + + lift: ignore is a deprecated config option, use ignoreRules + + Closes #8082 + +- [Alessandro Ghedini brought this change] + + HTTP3: update quiche build instructions + + The repo repo was re-organized a bit, so the build instructions need to + be updated. + + Closes #8076 + +- CURLMOPT_TIMERFUNCTION.3: call it expire time, not interval + + Since we say it is a non-repating timer + +- [Florian Van Heghe brought this change] + + mbedTLS: include NULL byte in blob data length for CURLOPT_CAINFO_BLOB + + Fixes #8079 + Closes #8081 + +Jay Satiro (2 Dec 2021) +- [Wyatt O'Day brought this change] + + version_win32: Check build number and platform id + + Prior to this change the build number was not checked during version + comparison, and the platform id was supposed to be checked but wasn't. + + Checking the build number is required for enabling "evergreen" + Windows 10/11 features (like TLS 1.3). + + Ref: https://github.com/curl/curl/pull/7784 + + Closes https://github.com/curl/curl/pull/7824 + Closes https://github.com/curl/curl/pull/7867 + +- libssh2: fix error message for sha256 mismatch + + - On mismatch error show sha256 fingerprint in base64 format. + + Prior to this change the fingerprint was mistakenly printed in binary. + +Daniel Stenberg (1 Dec 2021) +- [x2018 brought this change] + + openssl: check the return value of BIO_new() + + Closes #8078 + +Dan Fandrich (30 Nov 2021) +- docs: Update the Reducing Size section + + Add many more options that can reduce the size of the binary that were + added since the last update. Update the sample minimal binary size for + version 7.80.0. + +- tests: Add some missing keywords to tests + + These are needed to skip some tests when configure options have disabled + certain features. + +Daniel Stenberg (30 Nov 2021) +- [Florian Van Heghe brought this change] + + mbedTLS: add support for CURLOPT_CAINFO_BLOB + + Closes #8071 + +- [Glenn Strauss brought this change] + + digest: compute user:realm:pass digest w/o userhash + + https://datatracker.ietf.org/doc/html/rfc7616#section-3.4.4 + ... the client MUST calculate a hash of the username after + any other hash calculation ... + + Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com> + Closes #8066 + +- config.d: update documentation to match the path search + + Assisted-by: Jay Satiro + +- tool_findfile: search for a file in the homedir + + The homedir() function is now renamed into findfile() and iterates over + all the environment variables trying to access the file in question + until it finds it. Last resort is then getpwuid() if + available. Previously it would first try to find a home directory and if + that was set, insist on checking only that directory for the file. This + now returns the full file name it finds. + + The Windows specific checks are now done differently too and in this + order: + + 1 - %USERPROFILE% + 2 - %APPDATA% + 3 - %USERPROFILE%\\Application Data + + The windows order is modified to match how the Windows 10 ssh tool works + when it searches for .ssh/known_hosts. + + Reported-by: jeffrson on github + Co-authored-by: Jay Satiro + Fixes #8033 + Closes #8035 + +- docs: consistent manpage SYNOPSIS + + Make all libcurl related options use .nf (no fill) for the SYNOPSIS + section - for consistent look. roffit then renders that section using + <pre> (monospace font) in html for the website. + + Extended manpage-syntax (test 1173) with a basic check for it. + + Closes #8062 + +- RELEASE-NOTES: synced + +- [Patrick Monnerat brought this change] + + openldap: handle connect phase with a state machine + + Closes #8054 + +- docs: address proselint nits + + - avoid exclamation marks + - use consistent number of spaces after periods: one + - avoid clichés + - avoid using 'very' + + Closes #8060 + +- [Bruno Baguette brought this change] + + FAQ: typo fix : "yout" ➤ "your" + + Closes #8059 + +- [Bruno Baguette brought this change] + + docs/INSTALL.md: typo fix : added missing "get" verb + + Closes #8058 + +- insecure.d: detail its use for SFTP and SCP as well + + Closes #8056 + +Viktor Szakats (25 Nov 2021) +- Makefile.m32: rename -winssl option to -schannel and tidy up + + - accept `-schannel` as an alternative to `CFG` option `-winssl` + (latter still accepted, but deprecated) + - rename internal variable `WINSSL` to `SCHANNEL` + - make the `CFG` option evaluation shorter, without repeating the option + name + + Reviewed-by: Marcel Raad + Reviewed-by: Daniel Stenberg + Closes #8053 + +Daniel Stenberg (25 Nov 2021) +- KNOWN_BUGS: 5.6 make distclean loops forever + + Reported-by: David Bohman + Closes #7716 + +- KNOWN_BUGS: add one, remove one + + - 5.10 SMB tests fail with Python 2 + + Just use python 3. + + + 5.10 curl hangs on SMB upload over stdin + + Closes #7896 + +- urlapi: provide more detailed return codes + + Previously, the return code CURLUE_MALFORMED_INPUT was used for almost + 30 different URL format violations. This made it hard for users to + understand why a particular URL was not acceptable. Since the API cannot + point out a specific position within the URL for the problem, this now + instead introduces a number of additional and more fine-grained error + codes to allow the API to return more exactly in what "part" or section + of the URL a problem was detected. + + Also bug-fixes curl_url_get() with CURLUPART_ZONEID, which previously + returned CURLUE_OK even if no zoneid existed. + + Test cases in 1560 have been adjusted and extended. Tests 1538 and 1559 + have been updated. + + Updated libcurl-errors.3 and curl_url_strerror() accordingly. + + Closes #8049 + +- urlapi: make Curl_is_absolute_url always use MAX_SCHEME_LEN + + Instad of having all callers pass in the maximum length, always use + it. The passed in length is instead used only as the length of the + target buffer for to storing the scheme name in, if used. + + Added the scheme max length restriction to the curl_url_set.3 man page. + + Follow-up to 45bcb2eaa78c79 + + Closes #8047 + +- [Jay Satiro brought this change] + + cmake: warn on use of the now deprecated symbols + + Follow-up to 9108da2c26d + + Closes #8052 + +- [Kevin Burke brought this change] + + tests/CI.md: add more information on CI environments + + Fixes #8012 + Closes #8022 + +- cmake: private identifiers use CURL_ instead of CMAKE_ prefix + + Since the 'CMAKE_' prefix is reserved for cmake's own private use. + Ref: https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html + + Reported-by: Boris Rasin + Fixes #7988 + Closes #8044 + +- urlapi: reject short file URLs + + file URLs that are 6 bytes or shorter are not complete. Return + CURLUE_MALFORMED_INPUT for those. Extended test 1560 to verify. + + Triggered by #8041 + Closes #8042 + +- curl: improve error message for --head with -J + + ... it now focuses on the "output of headers" combined with the + --remote-header-name option, as that is actually the problem. Both + --head and --include can output headers. + + Reported-by: nimaje on github + Fixes #7987 + Closes #8045 + +- RELEASE-NOTES: synced + +- [Stefan Eissing brought this change] + + urlapi: cleanup scheme parsing + + Makea Curl_is_absolute_url() always leave a defined 'buf' and avoids + copying on urls that do not start with a scheme. + + Closes #8043 + +- tool_operate: only set SSH related libcurl options for SSH URLs + + For example, this avoids trying to find and set the known_hosts file (or + warn for its absence) if SFTP or SCP are not used. + + Closes #8040 + +- [Jacob Hoffman-Andrews brought this change] + + rustls: remove comment about checking handshaking + + The comment is incorrect in two ways: + - It says the check needs to be last, but the check is actually first. + - is_handshaking actually starts out true. + + Closes #8038 + +Marcel Raad (20 Nov 2021) +- openssl: use non-deprecated API to read key parameters + + With OpenSSL 3.0, the parameters are read directly from the `EVP_PKEY` + using `EVP_PKEY_get_bn_param`. + + Closes https://github.com/curl/curl/pull/7893 + +- openssl: reduce code duplication + + `BN_print`'s `BIGNUM` parameter has been `const` since OpenSSL 0.9.4. + + Closes https://github.com/curl/curl/pull/7893 + +- openssl: remove `RSA_METHOD_FLAG_NO_CHECK` handling if unavailable + + The flag has been deprecated without replacement in OpenSSL 3.0. + + Closes https://github.com/curl/curl/pull/7893 + +- openssl: remove usage of deprecated `SSL_get_peer_certificate` + + The function name was changed to `SSL_get1_peer_certificate` in OpenSSL + 3.0. + + Closes https://github.com/curl/curl/pull/7893 + +Daniel Stenberg (19 Nov 2021) +- page-footer: fix typo + + Closes #8036 + +- http: enable haproxy support for hyper backend + + This is done by having native code do the haproxy header output before + hyper issues its request. The little downside with this approach is that + we need the entire Curl_buffer_send() function built, which is otherwise + not used for hyper builds. + + If hyper ends up getting native support for the haproxy protocols we can + backpedal on this. + + Enables test 1455 and 1456 + + Closes #8034 + +- [Bernhard Walle brought this change] + + configure: fix runtime-lib detection on macOS + + With a non-standard installation of openssl we get this error: + + checking run-time libs availability... failed + configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz + + There's already code to set LD_LIBRARY_PATH on Linux, so set + DYLD_LIBRARY_PATH equivalent on macOS. + + Closes #8028 + +- [Don J Olmstead brought this change] + + cmake: don't set _USRDLL on a static Windows build + + Closes #8030 + +- page-footer: document more environment variables + + ... that curl might use. + + Closes #8027 + +- netrc.d: edit the .netrc example to look nicer + + Works nicely thanks to d1828b470f43d + + Closes #8025 + +- tftp: mark protocol as not possible to do over CONNECT + + ... and make connect_init() refusing trying to tunnel protocols marked + as not working. Avoids a double-free. + + Reported-by: Even Rouault + Fixes #8018 + Closes #8020 + +- docs/cmdline-opts: do not say "protocols: all" + + Remove the lines saying "protocols: all". It makes the output in the + manpage look funny, and the expectation is probably by default that if + not anything is mentioned about protocols the option apply to them all. + + Closes #8021 + +- curl.1: require "see also" for every documented option + + gen.pl now generates a warning if the "See Also" field is not filled in for a + command line option + + All command line options now provide one or more related options. 167 + "See alsos" added! + + Closes #8019 + +- insecure.d: expand and clarify + + Closes #8017 + +- gen.pl: improve example output format + + Treat consecutive lines that start with a space to be "examples". They + are output enclosed by .nf and .fi + + Updated form.d to use this new fanciness + + Closes #8016 + +- Revert "form-escape.d: double the back-slashes for proper man page output" + + This reverts commit a2d8eac04a4eb1d5a98cf24b4e5cec5cec565d27. + + silly me, it was intended to be one backslash! + +- form-escape.d: double the back-slashes for proper man page output + +- page-footer: add a mention of how to report bugs to the man page + +- RELEASE-NOTES: synced + + and bump to 7.81.0-DEV + +- [Patrick Monnerat brought this change] + + mime: use percent-escaping for multipart form field and file names + + Until now, form field and file names where escaped using the + backslash-escaping algorithm defined for multipart mails. This commit + replaces this with the percent-escaping method for URLs. + + As this may introduce incompatibilities with server-side applications, a + new libcurl option CURLOPT_MIME_OPTIONS with bitmask + CURLMIMEOPT_FORMESCAPE is introduced to revert to legacy use of + backslash-escaping. This is controlled by new cli tool option + --form-escape. + + New tests and documentation are provided for this feature. + + Reported by: Ryan Sleevi + Fixes #7789 + Closes #7805 + +- [Kevin Burke brought this change] + + zuul.d: update rustls-ffi to version 0.8.2 + + This version fixes errors with ALPN negotiation in rustls, which is + necessary for HTTP/2 support. For more information see the rustls-ffi + changelog. + + Closes #8013 + +- configure: better diagnostics if hyper is built wrong + + If hyper is indeed present in the specified directory but couldn't be + used to find the correct symbol, then offer a different error message to + better help the user understand the issue. + + Suggested-by: Jacob Hoffman-Andrews + Fixes #8001 + Closes #8005 + +- test1939: require proxy support to run + + Follow-up to f0b7099a10d1a + + Closes #8011 + +- test302[12]: run only with the libssh2 backend + + ... as the others don't support --hostpubsha256 + + Reported-by: Paul Howarth + Fixes #8009 + Closes #8010 + +- runtests: make the SSH library a testable feature + + libssh2, libssh and wolfssh + +- [Jacob Hoffman-Andrews brought this change] + + rustls: read of zero bytes might be okay + + When we're reading out plaintext from rustls' internal buffers, we might + get a read of zero bytes (meaning a clean TCP close, including + close_notify). However, we shouldn't return immediately when that + happens, since we may have already copied out some plaintext bytes. + Break out of the loop when we get a read of zero bytes, and figure out + which path we're dealing with. + + Acked-by: Kevin Burke + + Closes #8003 + +- [Jacob Hoffman-Andrews brought this change] + + rustls: remove incorrect EOF check + + The update to rustls-ffi 0.8.0 changed handling of EOF and close_notify. + From the CHANGELOG: + + > Handling of unclean close and the close_notify TLS alert. Mirroring + > upstream changes, a rustls_connection now tracks TCP closed state like + > so: rustls_connection_read_tls considers a 0-length read from its + > callback to mean "TCP stream was closed by peer." If that happens + > before the peer sent close_notify, rustls_connection_read will return + > RUSTLS_RESULT_UNEXPECTED_EOF once the available plaintext bytes are + > exhausted. This is useful to protect against truncation attacks. Note: + > some TLS implementations don't send close_notify. If you are already + > getting length information from your protocol (e.g. Content-Length in + > HTTP) you may choose to ignore UNEXPECTED_EOF so long as the number of + > plaintext bytes was as expected. + + That means we don't need to check for unclean EOF in `cr_recv()`, + because `process_new_packets()` will give us an error if appropriate. + + Closes #8003 + +- lib1939: make it endure torture tests + + Follow-up to f0b7099a10d1a + + Closes #8007 + +- azure: make the "w/o HTTP/SMTP/IMAP" build disable SSL proper + + The configure line would previously depend on a configure mistake using + --without-openssl that is fixed and now this configure line needs + adjusting to use --without-ssl. + + Follow-up to b589696f0312d + + Closes #8006 + +- [Jacob Hoffman-Andrews brought this change] + + configure: add -lm to configure for rustls build. + + Note: The list of libraries that rustc tells us we need to include is + longer, but also includes some more platform-specific libraries that I + am not sure how to effectively incorporate. Adding just -lm seems to + solve an immediate problem, so I'm adding just that. + + Closes #8002 + +- curl_share_setopt.3: refer to CURLSHOPT_USERDATA(3) properly + +- curl_share_setopt.3: split out options into their own manpages + + CURLSHOPT_LOCKFUNC.3 + CURLSHOPT_SHARE.3 + CURLSHOPT_UNLOCKFUNC.3 + CURLSHOPT_UNSHARE.3 + CURLSHOPT_USERDATA.3 + + Closes #7998 + +- http_proxy: make Curl_connect_done() work for proxy disabled builds + + ... by making it an empty macro then. + + Follow-up to f0b7099a10d1a + Reported-by: Vincent Grande + Fixes #7995 + Closes #7996 + +- Curl_connect_done: handle being called twice + + Follow-up to f0b7099a10d1a7c + + When torture testing 1021, it turns out the Curl_connect_done function + might be called twice and that previously then wrongly cleared the HTTP + pointer in the second invoke. + + Closes #7999 + +- [Stan Hu brought this change] + + configure: don't enable TLS when --without-* flags are used + + Previously specifying `--without-gnutls` would unexpectedly attempt to + compile with GnuTLS, effectively interpreting this as + `--with-gnutls`. This caused a significant amount of confusion when + `libcurl` was built with SSL disabled since GnuTLS wasn't present. + + 68d89f24 dropped the `--without-*` options from the configure help, but + `AC_ARG_WITH` still defines these flags automatically. As + https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/External-Software.html + describes, the `action-if-given` is called when the user specifies + `--with-*` or `--without-*` options. + + To prevent this confusion, we make the `--without` flag do the right + thing by ignoring the value if it set to "no". + + Closes #7994 + +- [Rikard Falkeborn brought this change] + + docs/checksrc: Add documentation for STRERROR + + Closes #7991 + +- vtls/rustls: adapt to the updated rustls_version proto + + Closes #7956 + +- [Kevin Burke brought this change] + + vtls/rustls: handle RUSTLS_RESULT_PLAINTEXT_EMPTY + + Previously we'd return CURLE_READ_ERROR if we received this, instead + of triggering the error handling logic that's present in the next if + block down. + + After this change, curl requests to https://go.googlesource.com using + HTTP/2 complete successfully. + + Fixes #7949 + Closes #7948 + +- [Kevin Burke brought this change] + + zuul: update build environment for rustls-ffi 0.8.0 + +- [Kevin Burke brought this change] + + vtls/rustls: update to compile with rustls-ffi v0.8.0 + + Some method names, as well as the generated library name, were changed + in a recent refactoring. + + Further, change the default configuration instructions to check for + Hyper in either "target/debug" or "target/release" - the latter + contains an optimized build configuration. + + Fixes #7947 + Closes #7948 + +- RELEASE-NOTES: synced + + and bump the version to 7.80.1 + +- multi: shut down CONNECT in Curl_detach_connnection + + ... to prevent a lingering pointer that would lead to a double-free. + + Added test 1939 to verify. + + Reported-by: Stephen M. Coakley + Fixes #7982 + Closes #7986 + +- curl_easy_cleanup.3: remove from multi handle first + + Easy handles that are used by the multi interface should be removed from + the multi handle before they are cleaned up. + + Reported-by: Stephen M. Coakley + Ref: #7982 + Closes #7983 + +- url.c: fix the SIGPIPE comment for Curl_close + + Closes #7984 + Version 7.80.0 (10 Nov 2021) Daniel Stenberg (10 Nov 2021) @@ -6569,1732 +7938,3 @@ Daniel Stenberg (22 Apr 2021) - 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> |