curl and libcurl 7.70.0 Public curl releases: 191 Command line options: 231 curl_easy_setopt() options: 270 Public functions in libcurl: 82 Contributors: 2159 This release includes the following changes: o curl: add --ssl-revoke-best-effort to allow a "best effort" revocation check [5] o mqtt: add new experimental protocol [57] o schannel: add "best effort" revocation check option: CURLSSLOPT_REVOKE_BEST_EFFORT [5] o writeout: support to generate JSON output with '%{json}' [8] This release includes the following bugfixes: o appveyor: completely disable tests that fail to timeout early o appveyor: show failed tests in log even if test is ignored o appveyor: sort builds by type and add two new variants o appveyor: turn disabled tests into ignored result tests o appveyor: use random test server ports based upon APPVEYOR_API_URL [52] o build: fixed build for systems with select() in unistd.h [43] o checksrc: warn on obvious conditional blocks on the same line as if() [44] o CI-fuzz: increase fuzz time to 40 minutes [59] o ci/tests: fix Azure Pipelines not running Windows containers [25] o CI: add build with ngtcp2 + gnutls on Travis CI o CI: bring GitHub Actions fuzzing job in line with macOS jobs o CI: migrate macOS jobs from Azure and Travis CI to GitHub Actions [36] o CI: remove default Ubuntu build from GitHub Actions o cirrus: no longer ignore test 504 which is working again o cirrus: re-enable the FreeBSD 13 CI builds [29] o cleanup: insert newline after if() conditions o cmake: add aliases so exported target names are available in tree [73] o cmake: add CMAKE_MSVC_RUNTIME_LIBRARY [45] o cmake: add support for building with wolfSSL [9] o cmdline: fix handling of OperationConfig linked list (--next) [24] o compressed.d: stress that the headers are not modified [80] o config: remove all defines of HAVE_DES_H [37] o configure: convert -I to -isystem as a last step [2] o configure: document 'compiler_num' for gcc [4] o configure: don't check for Security.framework when cross-compiling [47] o configure: fix -pedantic-errors for GCC 5 and later [3] o configure: remove use of -vec-report0 from CFLAGS with icc [71] o connect: happy eyeballs cleanup [15] o connect: store connection info for QUIC connections [68] o copyright: fix out-of-date copyright ranges and missing headers [38] o curl-functions.m4: remove inappropriate AC_REQUIRE [26] o curl.h: remnove CURL_VERSION_ESNI. Never supported nor documented [49] o curl: allow both --etag-compare and --etag-save with same file name [56] o curl_setup: define _WIN32_WINNT_[OS] symbols [27] o CURLINFO_CONDITION_UNMET: return true for 304 http status code [54] o CURLINFO_NUM_CONNECTS: improve accuracy [28] o CURLOPT_WRITEFUNCTION.3: add inline example and new see-also [70] o dist: add mail-rcpt-allowfails.d to the tarball [35] o docs/make: generate curl.1 from listed files only [33] o docs: add warnings about FILE: URLs on Windows [19] o easy: fix curl_easy_duphandle for builds missing IPv6 that use c-ares [18] o examples/sessioninfo.c: add include to fix compiler warning [42] o github actions: run when pushed to master or */ci + PRs [64] o gnutls: ensure TLS 1.3 when SRP isn't requested [79] o gopher: check remaining time left during write busy loop [78] o gskit: use our internal select wrapper for portability [12] o http2: Fix erroneous debug message that h2 connection closed [21] o http: don't consider upload done if the request isn't completely sent off [67] o lib670: use the same Win32 API check as all other lib tests o lib: never define CURL_CA_BUNDLE with a getenv [51] o mailmap: fixup a few author names/fields o Makefile.m32: Improve windres parameter compatibility [17] o Makefile: run the cd commands in a subshell [1] o memdebug: don't log free(NULL) o multi: improve parameter check for curl_multi_remove_handle [6] o nghttp2: 1.12.0 required [40] o ngtcp2: update to git master for the key installation API change [46] o openssl: adapt to functions marked as deprecated since version 3 [34] o OS400: update strings for ccsid-ifier (fixes the build) [30] o output.d: quote the URL when globbing [48] o packages: add OS400/chkstrings.c to the dist [39] o RELEASE-PROCEDURE.md: run the copyright.pl script! o Revert "file: on Windows, refuse paths that start with \\" [50] o runtests: provide nicer errormsg when protocol "dump" file is empty o schannel: Fix blocking timeout logic [76] o schannel: support .P12 or .PFX client certificates [65] o scripts/release-notes.pl: add helper script for RELEASE-NOTES maintenance o select: move duplicate select preparation code into Curl_select [14] o select: remove typecast from SOCKET_WRITABLE/READABLE macros [69] o server/getpart: make the "XML-parser" stricter [20] o server/resolve: remove AI_CANONNAME to make macos tell the truth [63] o sockfilt: add logmsg output to select_ws_wait_thread on Windows [32] o sockfilt: fix handling of ready closed sockets on Windows o sockfilt: fix race-condition of waiting threads and event handling [58] o socks: Fix blocking timeout logic [77] o SSLCERTS.md: Fix example code for setting CA cert file [31] o test1148: tolerate progress updates better (again) [60] o test1177: verify that all the CURL_VERSION_ bits are documented o test1566: verify --etag-compare that gets a 304 back [53] o test1908: avoid using fixed port number in test data [75] o test2100: fix static port instead of dynamic value being used o tests/data: fix some XML formatting issues in test cases o tests/server/util.c: use curl_off_t instead of long for pid o tests: add Windows compatible pidwait like pidkill and pidterm o tests: fix conflict between Cygwin/msys and Windows PIDs [81] o tests: make Python-based servers compatible with Python 2 and 3 [22] o tests: remove python_dependencies for smbserver from our tree [16] o tests: use Cygwin/msys PIDs for stunnel and sshd on Windows o tls: remove the BACKEND define kludge from most backends [23] o tool: do not declare functions with Curl_ prefix [66] o tool_operate: fix add_parallel_transfers when more are in queue [10] o transfer: cap retries of "dead connections" to 5 [13] o travis: update the ngtcp2 build to use the latest OpenSSL patch o url: allow non-HTTPS altsvc-matching for debug builds [62] o version: add 'cainfo' and 'capath' to version info struct [55] o version: increase buffer space for ssl version output [74] o vquic: add support for GnuTLS backend of ngtcp2 [41] o vtls: fix ssl_config memory-leak on out-of-memory [11] o warnless: remove code block for icc that didn't work [72] o windows: enable UnixSockets with all build toolchains o windows: suppress UI in all CryptAcquireContext() calls [7] 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: Alain Miniussi, Alex Gaynor, Andrew Kurushin, Björn Stenberg, Brad King, Calvin Buckley, Chris Roberts, Clément Notin, Daiki Ueno, Dan Fandrich, Daniel Stenberg, Dennis Felsing, Dima Tisnek, Dirkjan Bussink, Eylem Ugurel, Frank Gevaerts, FuccDucc on github, Gavin Wong, Gilles Vollant, Gisle Vanem, Harry Sintonen, hydra3333 on github, James Fuller, Johannes Schindelin, Jon Rumsey, Kamil Dudka, Karl Chen, Kwon-Young Choi, Leo Neat, Maksim Stsepanenka, Marcel Raad, Marc Hörsken, Markus Olsson, Mathias Gumz, Michael Kaufmann, Michael Osipov, Muhammad Herdiansyah, Nathaniel R. Lewis, Paul Vixie, Ray Satiro, Rici Lake, Roger Orr, Ross Burton, Simon Chalifoux, Stepan Efremov, Steven Penny, Timothe Litt, Tim Sedlmeyer, Tommy Petty, Viktor Szakats, (50 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=5073 [2] = https://curl.haxx.se/bug/?i=5060 [3] = https://curl.haxx.se/bug/?i=5067 [4] = https://curl.haxx.se/bug/?i=5069 [5] = https://curl.haxx.se/bug/?i=4981 [6] = https://curl.haxx.se/bug/?i=5116 [7] = https://curl.haxx.se/bug/?i=5088 [8] = https://curl.haxx.se/bug/?i=4870 [9] = https://curl.haxx.se/bug/?i=5095 [10] = https://curl.haxx.se/bug/?i=4937 [11] = https://curl.haxx.se/bug/?i=5108 [12] = https://curl.haxx.se/bug/?i=5106 [13] = https://curl.haxx.se/mail/lib-2020-03/0044.html [14] = https://curl.haxx.se/bug/?i=5078 [15] = https://curl.haxx.se/bug/?i=4954 [16] = https://curl.haxx.se/bug/?i=5094 [17] = https://curl.haxx.se/bug/?i=5099 [18] = https://curl.haxx.se/bug/?i=5097 [19] = https://curl.haxx.se/bug/?i=5066 [20] = https://curl.haxx.se/bug/?i=5071 [21] = https://curl.haxx.se/bug/?i=5118 [22] = https://curl.haxx.se/bug/?i=5104 [23] = https://curl.haxx.se/bug/?i=5122 [24] = https://curl.haxx.se/bug/?i=5120 [25] = https://curl.haxx.se/bug/?i=5117 [26] = https://curl.haxx.se/bug/?i=5126 [27] = https://curl.haxx.se/bug/?i=4995 [28] = https://curl.haxx.se/bug/?i=5135 [29] = https://curl.haxx.se/bug/?i=5091 [30] = https://curl.haxx.se/bug/?i=5132 [31] = https://curl.haxx.se/mail/lib-2020-03/0121.html [32] = https://curl.haxx.se/bug/?i=5086 [33] = https://curl.haxx.se/bug/?i=5149 [34] = https://curl.haxx.se/bug/?i=5139 [35] = https://curl.haxx.se/bug/?i=5146 [36] = https://curl.haxx.se/bug/?i=5124 [37] = https://curl.haxx.se/bug/?i=5144 [38] = https://curl.haxx.se/bug/?i=5141 [39] = https://curl.haxx.se/bug/?i=5142 [40] = https://curl.haxx.se/bug/?i=5140 [41] = https://curl.haxx.se/bug/?i=5148 [42] = https://curl.haxx.se/bug/?i=5171 [43] = https://curl.haxx.se/bug/?i=5169 [44] = https://curl.haxx.se/bug/?i=5164 [45] = https://curl.haxx.se/bug/?i=5165 [46] = https://curl.haxx.se/bug/?i=5166 [47] = https://curl.haxx.se/bug/?i=5189 [48] = https://curl.haxx.se/bug/?i=5160 [49] = https://curl.haxx.se/bug/?i=5157 [50] = https://curl.haxx.se/mail/archive-2020-04/0013.html [51] = https://github.com/curl/curl/commit/6de756c#r38127030 [52] = https://curl.haxx.se/bug/?i=5034 [53] = https://curl.haxx.se/bug/?i=5186 [54] = https://curl.haxx.se/bug/?i=5181 [55] = https://curl.haxx.se/bug/?i=5150 [56] = https://curl.haxx.se/bug/?i=5179 [57] = https://curl.haxx.se/bug/?i=5173 [58] = https://curl.haxx.se/bug/?i=5156 [59] = https://curl.haxx.se/bug/?i=5174 [60] = https://curl.haxx.se/bug/?i=5194 [62] = https://curl.haxx.se/bug/?i=5205 [63] = https://curl.haxx.se/bug/?i=5202 [64] = https://curl.haxx.se/bug/?i=5201 [65] = https://curl.haxx.se/bug/?i=5193 [66] = https://curl.haxx.se/bug/?i=5219 [67] = https://curl.haxx.se/bug/?i=4919 [68] = https://curl.haxx.se/bug/?i=5196 [69] = https://curl.haxx.se/bug/?i=5190 [70] = https://curl.haxx.se/bug/?i=5192 [71] = https://curl.haxx.se/bug/?i=5096 [72] = https://curl.haxx.se/bug/?i=5096 [73] = https://curl.haxx.se/bug/?i=5206 [74] = https://curl.haxx.se/bug/?i=5222 [75] = https://curl.haxx.se/bug/?i=5225 [76] = https://curl.haxx.se/bug/?i=5177 [77] = https://curl.haxx.se/bug/?i=5220 [78] = https://curl.haxx.se/bug/?i=5214 [79] = https://curl.haxx.se/bug/?i=5223 [80] = https://github.com/curl/curl/issues/5182#issuecomment-611638008 [81] = https://curl.haxx.se/bug/?i=5188