curl and libcurl 7.71.0 Public curl releases: 192 Command line options: 232 curl_easy_setopt() options: 277 Public functions in libcurl: 82 Contributors: 2181 This release includes the following changes: o CURLOPT_SSL_OPTIONS: optional use of Windows' CA store (with openssl) [10] o setopt: add CURLOPT_PROXY_ISSUERCERT(_BLOB) for coherency [31] o setopt: support certificate options in memory with struct curl_blob [41] o tool: Add option --retry-all-errors to retry on any error [27] This release includes the following bugfixes: o *_sspi: fix bad uses of CURLE_NOT_BUILT_IN [21] o appveyor: disable flaky test 1501 and ignore broken 1056 o appveyor: disable test 1139 instead of ignoring it o asyn-*: remove support for never-used NULL entry pointers [19] o checksrc: enhance the ASTERISKSPACE and update code accordingly [52] o cirrus: disable SFTP and SCP tests [7] o CMake: add ENABLE_ALT_SVC option o CMake: add HTTP/3 support (ngtcp2+nghttp3, quiche) [34] o CMake: add libssh build support [37] o CMake: do not build test programs by default [30] o CMake: fix runtests.pl with CMake, add new test targets [29] o configure: fix pthread check with static boringssl o configure: the wolfssh backend does not provide SCP [57] o connect: make happy eyeballs work for QUIC (again) [16] o curl.1: Quote globbed URLs [51] o curl: remove -J "informational" written on stdout [36] o doc: add missing closing parenthesis in CURLINFO_SSL_VERIFYRESULT.3 [5] o doc: Rename VERSIONS to VERSIONS.md as it already has Markdown syntax [20] o docs/HTTP3: add qlog to the quiche build instruction o docs/options-in-versions: which version added each cmdline option [53] o docs: unify protocol lists [54] o dynbuf: introduce internal generic dynamic buffer functions [17] o easy: fix dangling pointer on easy_perform fail [26] o examples: remove asiohiper.cpp [4] o ftp: make domore_getsock() return the secondary socket properly o ftp: mark return-ignoring calls to Curl_GetFTPResponse with (void) [64] o ftp: shut down the secondary connection properly when SSL is used [43] o GnuTLS: Backend support for CURLINFO_SSL_VERIFYRESULT [9] o hostip: make Curl_printable_address not return anything [63] o http2: keep trying to send pending frames after req.upload_done [40] o http2: simplify and clean up trailer handling [6] o libcurl.pc: Merge Libs.private into Libs for static-only builds [28] o libssh2: set the expected total size in SCP upload init [2] o libtest/cmake: Remove commented code [13] o list-only.d: this option existed already in 4.0 o ngtcp2: introduce qlog support [23] o OpenSSL: have CURLOPT_CRLFILE imply CURLSSLOPT_NO_PARTIALCHAIN [55] o quiche: enable qlog output [14] o runtests: remove sleep calls [18] o runtests: show elapsed test time with higher precision (ms) o select: fix overflow protection in Curl_socket_check [22] o sendf: make failf() use the mvsnprintf() return code [62] o sha256: fixed potentially uninitialized variable [61] o sockfilt: make select_ws stop waiting on exit signal event o source cleanup: remove all custom typedef structs [42] o test1177: look for curl.h in source directory [1] o test1238: avoid tftpd being busy for tests shortly following [33] o test613.pl: make tests 613 and 614 work with OpenSSH for Windows [8] o test75: Remove precheck test o tests: add https-proxy support to the test suite [49] o tests: add support for SSH server variant specific transfer paths [24] o tests: make test 1248 + 1249 use %NOLISTENPORT [3] o tests: pick a random port number for SSH [12] o tests: run stunnel for HTTPS and FTPS on dynamic ports [11] o tool: fixup a few --help descriptions [56] o tool: support UTF-16 command line on Windows [46] o tool_operate: fixed potentially uninitialized variables [60] o tool_paramhlp: fixed potentially uninitialized strtol() variable [59] o travis: add "qlog" as feature in the quiche build o travis: Add ngtcp2 and quiche tests for CMake o travis: upgrade to bionic, clang-9, improve readability [35] o typecheck-gcc.h: CURLINFO_PRIVATE does not need a 'char *' [44] o url: make the updated credentials URL-encoded in the URL [48] o url: reject too long input when parsing credentials [25] o url: sort the protocol schemes in rough popularity order [32] o urlapi: accept :: as a valid IPv6 address [15] o vauth/cleartext: fix theoretical integer overflow [50] o write-out.d: added "response_code" 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: Billyzou0741326 on github, Brian Carpenter, Dan Fandrich, Daniel Stenberg, Emil Engler, Gilles Vollant, Gregory Jefferis, James Le Cuirot, Jeroen Ooms, John Simpson, Kamil Dudka, Kane York, Lucas Pardue, Marcel Raad, Marc Hörsken, Michael Kaufmann, Murugan Balraj, Neal Poole, Pavel Volgarev, Peter Wang, Peter Wu, Ray Satiro, Rikard Falkeborn, rl1987 on github, Samuel Marks, Siva Sivaraman, Thomas Bouzerar, Vyron Tsingaras, Коваленко Анатолий Викторович, (29 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=5310 [2] = https://curl.haxx.se/mail/archive-2020-05/0000.html [3] = https://curl.haxx.se/bug/?i=5318 [4] = https://curl.haxx.se/bug/?i=5090 [5] = https://curl.haxx.se/bug/?i=5320 [6] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22030 [7] = https://curl.haxx.se/bug/?i=5315 [8] = https://curl.haxx.se/bug/?i=5328 [9] = https://curl.haxx.se/bug/?i=5287 [10] = https://curl.haxx.se/bug/?i=4346 [11] = https://curl.haxx.se/bug/?i=5267 [12] = https://curl.haxx.se/bug/?i=5273 [13] = https://curl.haxx.se/bug/?i=5311 [14] = https://curl.haxx.se/bug/?i=5341 [15] = https://curl.haxx.se/bug/?i=5344 [16] = https://curl.haxx.se/bug/?i=5334 [17] = https://curl.haxx.se/bug/?i=5300 [18] = https://curl.haxx.se/bug/?i=5323 [19] = https://curl.haxx.se/bug/?i=5324 [20] = https://curl.haxx.se/bug/?i=5325 [21] = https://curl.haxx.se/bug/?i=5355 [22] = https://curl.haxx.se/bug/?i=5286 [23] = https://curl.haxx.se/bug/?i=5353 [24] = https://curl.haxx.se/bug/?i=5298 [25] = https://curl.haxx.se/bug/?i=5383 [26] = https://curl.haxx.se/bug/?i=5363 [27] = https://curl.haxx.se/bug/?i=5185 [28] = https://curl.haxx.se/bug/?i=5373 [29] = https://curl.haxx.se/bug/?i=5358 [30] = https://curl.haxx.se/bug/?i=5368 [31] = https://curl.haxx.se/bug/?i=5431 [32] = https://curl.haxx.se/bug/?i=5377 [33] = https://curl.haxx.se/bug/?i=5364 [34] = https://curl.haxx.se/bug/?i=5359 [35] = https://curl.haxx.se/bug/?i=5370 [36] = https://curl.haxx.se/mail/archive-2020-05/0044.html [37] = https://curl.haxx.se/bug/?i=5372 [40] = https://curl.haxx.se/bug/?i=1410 [41] = https://curl.haxx.se/bug/?i=5357 [42] = https://curl.haxx.se/bug/?i=5338 [43] = https://curl.haxx.se/bug/?i=5340 [44] = https://curl.haxx.se/bug/?i=5432 [46] = https://curl.haxx.se/bug/?i=3784 [48] = https://github.com/jeroen/curl/issues/224 [49] = https://curl.haxx.se/bug/?i=5399 [50] = https://curl.haxx.se/bug/?i=5391 [51] = https://github.com/curl/curl/issues/5388 [52] = https://curl.haxx.se/bug/?i=5386 [53] = https://curl.haxx.se/bug/?i=5381 [54] = https://curl.haxx.se/bug/?i=5384 [55] = https://curl.haxx.se/bug/?i=5374 [56] = https://curl.haxx.se/bug/?i=5379 [57] = https://curl.haxx.se/bug/?i=5387 [59] = https://curl.haxx.se/bug/?i=5417 [60] = https://curl.haxx.se/bug/?i=5416 [61] = https://curl.haxx.se/bug/?i=5414 [62] = https://curl.haxx.se/bug/?i=5413 [63] = https://curl.haxx.se/bug/?i=5411 [64] = https://curl.haxx.se/bug/?i=5412