curl and libcurl 7.69.0 Public curl releases: 189 Command line options: 230 curl_easy_setopt() options: 270 Public functions in libcurl: 82 Contributors: 2113 This release includes the following changes: o polarssl: removed [16] o smtp: introducing CURLOPT_MAIL_RCPT_ALLLOWFAILS and --mail-rcpt-allowfails [23] o wolfSSH: new support SSH backend [5] This release includes the following bugfixes: o CMake: Add support for CMAKE_LTO option [22] o CMake: use check_symbol_exists also for inet_pton [19] o CURLINFO_COOKIELIST.3: Fix example [67] o CURLOPT_ALTSVC_CTRL.3: fix the DEFAULT wording [74] o CURLOPT_PROXY_SSL_OPTIONS.3: Sync with CURLOPT_SSL_OPTIONS.3 o CURLOPT_REDIR_PROTOCOLS.3: update the DEFAULT section [83] o GnuTLS: Always send client cert [76] o HTTP-COOKIES.md: describe the cookie file format [21] o HTTP-COOKIES: mention that a trailing newline is required [81] o KNOWN_BUGS: Multiple methods in a single WWW-Authenticate: header o README: mention that the docs is in docs/ [49] o RELEASE-PROCEDURE: feature win is closed post-release a few days [62] o SOCKS: make the connect phase non-blocking [64] o altsvc: improved header parser [63] o altsvc: keep a copy of the file name to survive handle reset [50] o altsvc: make saving the cache an atomic operation [84] o altsvc: use h3-25 [40] o azure: disable brotli on the macos debug-builds [68] o checksrc.bat: Fix not being able to run script from the main curl dir [54] o cleanup: fix several comment typos [78] o cleanup: fix typos and wording in docs and comments [39] o cmake: Enable SMB for Windows builds [12] o cmake: Improve libssh2 check on Windows [8] o cmake: support specifying the target Windows version [27] o configure.ac: fix comments about --with-quiche [53] o conn: do not reuse connection if SOCKS proxy credentials differ [32] o conncache: removed unused Curl_conncache_bundle_size() [33] o connect: remove some spurious infof() calls [80] o connection reuse: respect the max_concurrent_streams limits [3] o contributors: Also include people who contributed to curl-www [58] o contrithanks: Use the most recent tag by default [59] o cookie: check __Secure- and __Host- case sensitively [43] o cookies: make saving atomic with a rename [85] o create-dirs.d: mention the mode [73] o curl: Let -D merge headers in one file again [25] o curl: avoid using strlen for testing if a string is empty [37] o curl: error on --alt-svc use w/o support [61] o curl: make #0 not output the full URL [4] o curl: make the -# spaceship bar not wrap the line [30] o curl: remove 'config' field from OutStruct [6] o curl:progressbarinit: ignore column width from terminals < 20 [18] o curl_global_init: assume the EINTR bit by default [31] o curl_global_init: move the IPv6 works status bool to multi handle [48] o data.d: remove "Multiple files can also be specified" [26] o digest: Do not quote algorithm in HTTP authorisation [55] o docs/HTTP3: add --enable-alt-svc to curl's configure o docs/HTTP3: update the OpenSSL branch to use for ngtcp2 o easy: remove dead code [72] o form.d: fix two minor typos [34] o ftp: convert 'sock_accepted' to a plain boolean [66] o ftp: remove superfluous checking for crlf in user or pwd [56] o ftp: shrink temp buffers used for PORT [60] o github action: add CIFuzz [77] o github: Instructions to post "uname -a" on Unix systems in issues [52] o hostip: move code to resolve IP address literals to `Curl_resolv` [13] o http2: now requires nghttp2 >= 1.12.0 [75] o http: increase EXPECT_100_THRESHOLD to 1Mb [28] o http: move "oauth_bearer" from connectdata to Curl_easy [24] o include: remove non-curl prefixed defines [15] o libssh2: add support for forcing a hostkey type [7] o libssh2: fix variable type [17] o llist: removed unused Curl_llist_move() [33] o location.d: the method change is from POST to GET only [46] o mk-ca-bundle: add support for CKA_NSS_SERVER_DISTRUST_AFTER [36] o multi: Change curl_multi_wait/poll to error on negative timeout [11] o multi: fix outdated comment [71] o multi: if Curl_readwrite sets 'comeback' use expire, not loop [65] o multi_done: if multiplexed, make conn->data point to another transfer [45] o ngtcp2: Add an error code for QUIC connection errors [10] o ngtcp2: fixed to only use AF_INET6 when ENABLE_IPV6 [63] o ngtcp2: update to git master and its draft-25 support [42] o ntlm: Move the winbind data into the NTLM data structure o ntlm: Pass the Curl_easy structure to the private winbind functions o ntlm_wb: Use Curl_socketpair() for greater portability [57] o oauth2-bearer.d: works for HTTP too [44] o openssl: make CURLINFO_CERTINFO not truncate x509v3 fields [35] o openssl: remove redundant assignment [38] o os400: fixed the build [29] o quiche: update to draft-25 [41] o runtests: make random seed fixed for a month [1] o schannel: Make CURLOPT_CAINFO work better on Windows 7 [9] o schannel_verify: Fix alt names manual verify for UNICODE builds [20] o singleuse.pl: support new API functions, fix curl_dbg_ handling [33] o strcase: turn Curl_raw_tolower into static [33] o strerror: Increase STRERROR_LEN 128 -> 256 [70] o tool_dirhie: Allow directory traversal during creation [2] o tool_homedir: Change GetEnv() to use libcurl's curl_getenv() [69] o tool_util: Improve Windows version of tvnow() [82] o travis: update non-OpenSSL Linux jobs to Bionic [38] o url: Include the failure reason when curl_win32_idn_to_ascii() fails [51] o urlapi: guess scheme properly with credentials given [47] o urldata: do string enums without #ifdefs for build scripts [29] o vtls: Refactor Curl_multissl_version to make the code clearer [14] o win32: USE_WIN32_CRYPTO to enable Win32 based MD4, MD5 and SHA256 functions [79] This release includes the following known bugs: o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html) This release would not have looked like this without help, code, reports and advice from friends like these: 3dyd on github, Alessandro Ghedini, Andrew Potter, Andrius Merkys, Aron Rotteveel, Austin Green, bnfp on github, Brian Carpenter, bsammon on github, Christian Heimes, Christoph M. Becker, Craig Andrews, crazydef on github, Cristian Greco, Dan Fandrich, Daniel Gustafsson, Daniel Marjamäki, Daniel Stenberg, Dan Jacobson, dmitrmax on github, Edgaras Janušauskas, Emil Engler, Faizur Rahman, Frank Gevaerts, hamstergene on github, Harry Sintonen, James Fuller, Jeroen Ooms, jethrogb on github, Johannes Schindelin, Jon Rumsey, Joonas Kuorilehto, Kunal Ekawde, Leo Neat, Marc Aldorasi, Marcel Raad, mbeifuss on github, Mike Frysinger, Mike Norton, Mischa Salle, naost3rn on github, Nicolas Guillier, Orgad Shaneh, Pavel Volgarev, Pedro Monreal, Peter Piekarski, Pierre-Yves Bigourdan, Ray Satiro, Santino Keupp, Steve Holme, Sunny Bean, Tobias Hieta, vshmuk on hackerone, 加藤郁之, (54 contributors) Thanks! (and sorry if I forgot to mention someone) References to bug reports and discussions on issues: [1] = https://curl.haxx.se/bug/?i=4734 [2] = https://curl.haxx.se/bug/?i=4796 [3] = https://curl.haxx.se/bug/?i=4779 [4] = https://curl.haxx.se/bug/?i=4812 [5] = https://daniel.haxx.se/blog/2020/01/12/curl-even-more-wolfed/ [6] = https://curl.haxx.se/bug/?i=4807 [7] = https://curl.haxx.se/bug/?i=4747 [8] = https://curl.haxx.se/bug/?i=4804 [9] = https://curl.haxx.se/bug/?i=3711 [10] = https://curl.haxx.se/bug/?i=4754 [11] = https://curl.haxx.se/bug/?i=4763 [12] = https://curl.haxx.se/bug/?i=4717 [13] = https://curl.haxx.se/bug/?i=4798 [14] = https://curl.haxx.se/bug/?i=4803 [15] = https://curl.haxx.se/bug/?i=4793 [16] = https://curl.haxx.se/bug/?i=4825 [17] = https://curl.haxx.se/bug/?i=4823 [18] = https://curl.haxx.se/bug/?i=4818 [19] = https://curl.haxx.se/bug/?i=4808 [20] = https://curl.haxx.se/bug/?i=4761 [21] = https://curl.haxx.se/bug/?i=4805 [22] = https://curl.haxx.se/bug/?i=4799 [23] = https://curl.haxx.se/bug/?i=4816 [24] = https://curl.haxx.se/bug/?i=4824 [25] = https://curl.haxx.se/bug/?i=4762 [26] = https://curl.haxx.se/mail/archive-2020-01/0016.html [27] = https://curl.haxx.se/bug/?i=4815 [28] = https://curl.haxx.se/bug/?i=4814 [29] = https://curl.haxx.se/bug/?i=4822 [30] = https://curl.haxx.se/bug/?i=4849 [31] = https://curl.haxx.se/bug/?i=4840 [32] = https://curl.haxx.se/bug/?i=4835 [33] = https://curl.haxx.se/bug/?i=4842 [34] = https://curl.haxx.se/bug/?i=4843 [35] = https://curl.haxx.se/bug/?i=4837 [36] = https://curl.haxx.se/bug/?i=4834 [37] = https://curl.haxx.se/bug/?i=4873 [38] = https://curl.haxx.se/bug/?i=4872 [39] = https://curl.haxx.se/bug/?i=4869 [40] = https://curl.haxx.se/bug/?i=4868 [41] = https://curl.haxx.se/bug/?i=4867 [42] = https://curl.haxx.se/bug/?i=4865 [43] = https://curl.haxx.se/bug/?i=4864 [44] = https://curl.haxx.se/bug/?i=4862 [45] = https://curl.haxx.se/bug/?i=4845 [46] = https://curl.haxx.se/bug/?i=4859 [47] = https://curl.haxx.se/bug/?i=4856 [48] = https://curl.haxx.se/bug/?i=4851 [49] = https://curl.haxx.se/bug/?i=4830 [50] = https://curl.haxx.se/bug/?i=4898 [51] = https://curl.haxx.se/bug/?i=4899 [52] = https://curl.haxx.se/bug/?i=4896 [53] = https://curl.haxx.se/bug/?i=4897 [54] = https://curl.haxx.se/bug/?i=4894 [55] = https://curl.haxx.se/bug/?i=4890 [56] = https://curl.haxx.se/bug/?i=4887 [57] = https://curl.haxx.se/bug/?i=4886 [58] = https://curl.haxx.se/bug/?i=4884 [59] = https://curl.haxx.se/bug/?i=4883 [60] = https://curl.haxx.se/bug/?i=4880 [61] = https://curl.haxx.se/bug/?i=4878 [62] = https://curl.haxx.se/bug/?i=4877 [63] = https://curl.haxx.se/bug/?i=4875 [64] = https://curl.haxx.se/bug/?i=4907 [65] = https://curl.haxx.se/bug/?i=4927 [66] = https://curl.haxx.se/bug/?i=4929 [67] = https://curl.haxx.se/bug/?i=4930 [68] = https://curl.haxx.se/bug/?i=4925 [69] = https://curl.haxx.se/bug/?i=4774 [70] = https://curl.haxx.se/bug/?i=4920 [71] = https://curl.haxx.se/bug/?i=4901 [72] = https://curl.haxx.se/bug/?i=4900 [73] = https://curl.haxx.se/bug/?i=4766 [74] = https://curl.haxx.se/bug/?i=4909 [75] = https://curl.haxx.se/bug/?i=4961 [76] = https://curl.haxx.se/bug/?i=1411 [77] = https://curl.haxx.se/bug/?i=4960 [78] = https://curl.haxx.se/bug/?i=4957 [79] = https://curl.haxx.se/bug/?i=4955 [80] = https://curl.haxx.se/bug/?i=4951 [81] = https://curl.haxx.se/bug/?i=4946 [82] = https://curl.haxx.se/bug/?i=4947 [83] = https://curl.haxx.se/bug/?i=4943 [84] = https://curl.haxx.se/bug/?i=4936 [85] = https://curl.haxx.se/bug/?i=4914