1curl and libcurl 7.75.0 2 3 Public curl releases: 197 4 Command line options: 237 5 curl_easy_setopt() options: 285 6 Public functions in libcurl: 85 7 Contributors: 2322 8 9This release includes the following changes: 10 11 o curl: add --create-file-mode [mode] [28] 12 o curl: add new variables to --write-out [25] 13 o dns: extend CURLOPT_RESOLVE syntax for adding non-permanent entries [53] 14 o gopher: implement secure gopher protocol [2] 15 o http: add Hyper as new optional HTTP backend [24] 16 o http: introduce AWS HTTP v4 Signature support [26] 17 18This release includes the following bugfixes: 19 20 o badsymbols.pl: add verbose mode -v [31] 21 o badsymbols.pl: ignore stand-alone single hash lines [40] 22 o BUG-BOUNTY: minor language updates [5] 23 o build: fix djgpp builds [84] 24 o cleanup: fix empty expression statement has no effect 25 o cmake: Add an option to disable libidn2 [48] 26 o cmake: enable gophers correctly in curl-config [10] 27 o cmake: expose CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG [32] 28 o cmdline-opts/gen.pl: return hard on errors [11] 29 o cmdline-opts/retry.d: mention response code 429 as well [47] 30 o configure: set -Wextra-semi-stmt for clang with --enable-debug [52] 31 o connect: defer port selection until connect() time [22] 32 o connect: mark intentional ignores of setsockopt return values [75] 33 o connect: on linux, enable reporting of all ICMP errors on UDP sockets [27] 34 o connect: zero variable on stack to silence valgrind complaint [23] 35 o cookie: avoid the C1001 internal compiler error with MSVC 14 [36] 36 o curl.1: fix typo microsft -> microsoft [56] 37 o curl: fix handling of -q option [39] 38 o curl: include the file name in --xattr/--remote-time error msgs 39 o curl: move fprintf outputs to warnf [105] 40 o Curl_chunker: shrink the struct [104] 41 o curl_easy_pause.3: add multiplexed pause effects [41] 42 o CURLINFO_PRETRANSFER_TIME.3: clarify [61] 43 o CURLOPT_URL.3: remove scheme specific details [12] 44 o digest_sspi: Show InitializeSecurityContext errors in verbose mode [8] 45 o docs/examples: adjust prototypes for CURLOPT_READFUNCTION [51] 46 o docs/URL-SYNTAX: the URL syntax curl accepts and works with [15] 47 o docs: enable syntax highlighting in several docs files [16] 48 o docs: fix line length bug in gen.pl [70] 49 o docs: fix typos in NEW-PROTOCOL.md [102] 50 o docs: fix wrong documentation in help.d [71] 51 o docs: remove redundant "better" in --fail help [55] 52 o doh: allocate state struct on demand [85] 53 o examples/libtest: add .checksrc to dist [14] 54 o examples: remove superfluous asterisk uses 55 o failf: remove newline from formatting strings [35] 56 o file: don't provide content-length for directories [49] 57 o getinfo: build with disabled HTTP support 58 o gitattributes: Set batch files to CRLF line endings on checkout [65] 59 o h2: do not wait for RECV on paused transfers [43] 60 o HISTORY: added dates to early history 61 o http: empty reply connection are not left intact [80] 62 o http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy [83] 63 o http: have CURLOPT_FAILONERROR fail after all headers [54] 64 o http: make providing Proxy-Connection header not cause duplicated headers [92] 65 o http: show the request as headers even when split-sending [7] 66 o http_chunks: correct and clarify a comment on hexnumber length [88] 67 o http_proxy: Fix CONNECT chunked encoding race condition [76] 68 o httpauth: make multi-request auth work with custom port [45] 69 o INSTALL: now at 85 operating systems 70 o INSTALL: update the list known OSes and CPU archs curl has run on [38] 71 o lib/unit tests: add missing curl_global_cleanup() calls 72 o lib1564/5: verify that curl_multi_wakeup returns OK 73 o lib: pass in 'struct Curl_easy *' to most functions [101] 74 o lib: remove Curl_ prefix from many static functions [66] 75 o lib: save a bit of space with some structure packing [82] 76 o libssh2: fix "Value stored to 'readdir_len' is never read" 77 o libssh2: move data from connection object to transfer object [114] 78 o libssh: avoid plain free() of libssh-memory [99] 79 o mime: make sure setting MIMEPOST to NULL resets properly [58] 80 o misc: assorted typo fixes [57] 81 o misc: fix "warning: empty expression statement has no effect" [30] 82 o misc: fix typos [73] 83 o mk-ca-bundle.pl: deterministic output when using -t [62] 84 o mqtt: deal with 0 byte reads correctly [4] 85 o mqtt: handle POST/PUBLISH without a set POSTFIELDSIZE [1] 86 o multi: set the PRETRANSFER time-stamp when we switch to PERFORM [59] 87 o multi: skip DONE state if there's no connection left for ftp wildcard 88 o multi: when erroring in TOOFAST state, act as for PERFORM [9] 89 o multi_runsingle: bail out early on data->conn == NULL [74] 90 o ngtcp2: Fix http3 upload stall [106] 91 o ngtcp2: Fix stack buffer overflow [107] 92 o ngtcp2: make it build it current master again [21] 93 o nss: get the run-time version instead of build-time [67] 94 o openssl: lowercase the hostname before using it for SNI [46] 95 o OS400: update ccsidcurl.c [20] 96 o pretransfer: setup the User-Agent header here [60] 97 o quiche: remove fprintf() leftover 98 o Revert "CI/github: work-around for brew breakage on macOS" [17] 99 o runtests: add 'wakeup' as a feature 100 o runtests: add support for %if [feature] conditions [19] 101 o runtests: preprocess DISABLED to allow conditionals [93] 102 o schannel: plug a memory-leak [64] 103 o schannel_verify: fix safefree call typo [50] 104 o select: convert Curl_select() to private static function [103] 105 o socks: use the download buffer instead [86] 106 o speedcheck: exclude paused transfers [42] 107 o strerror: skip errnum >= 0 assertion on windows [78] 108 o test1522: add debug tracing [3] 109 o test1633: set appropriate name 110 o test179: use consistent header line endings 111 o test410: verify HTTPS GET with a 49K request header 112 o tests/mqttd: extract the client id from the correct offset [13] 113 o tests: make --libcurl tests only test FTP options if ftp enabled [18] 114 o tool_doswin: Restore original console settings on CTRL signal [68] 115 o tool_operate: fix the suppression logic of some error messages [33] 116 o tool_operate: spellfix a comment 117 o tooĺ_writeout: fix the -w time output units [6] 118 o transfer: fix GCC 10 warning with flag '-Wint-in-bool-context' [79] 119 o travis: build ngtcp2 --with-gnutls [72] 120 o travis: limit the tests with quiche builds to HTTPS and FTPS only [44] 121 o travis: restrict the openssl3 job to only run https and ftps tests [34] 122 o url: if IDNA conversion fails, fallback to Transitional [29] 123 o urldata: make magic be the first struct field [87] 124 o urldata: remove 'local_ip' from the connectdata struct [97] 125 o urldata: remove duplicate 'upkeep_interval_ms' from connectdata [96] 126 o urldata: remove duplicate port number storage [98] 127 o urldata: remove the duplicate 'ip_addr_str' field [100] 128 o urldata: store ip version in a single byte [95] 129 o vtls: remove md5sum [69] 130 o warnless: remove curlx_ultosi [108] 131 o wolfssl: add SECURE_RENEGOTIATION support [63] 132 o wolfssl: Support wolfSSL builds missing TLS 1.1 [37] 133 134This release includes the following known bugs: 135 136 o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html) 137 138This release would not have looked like this without help, code, reports and 139advice from friends like these: 140 141 0xflotus on github, Alessandro Ghedini, Andrey Gursky, Bubu on github, 142 Cherish98 on github, Christoph M. Becker, Cory Benfield, Cristian Rodríguez, 143 Dan Fandrich, Daniel Stenberg, David Earl, Denis Laxalde, Dennis Clarke, 144 Dmitry Wagin, Douglas R. Reno, Earnestly on github, Emil Engler, Erik Olsson, 145 Fabian Keil, Flameborn on github, Ganesh Kamath, Gergely Nagy, Gisle Vanem, 146 Hans-Christian Noren Egtvedt, Harry Sintonen, Himanshu Gupta, Hongyi Zhao, 147 Ian Spence, Ikko Ashimine, Jacob Hoffman-Andrews, Jeremy Thibault, 148 Jon Rumsey, Jon Wilkes, Julian Montes, Kevin Ushey, Marcel Raad, 149 Matthias Gatto, Matt Holt, Michał Antoniak, Mike Gelfand, Mike Tzou, 150 Nick Zitzmann, Olaf Hering, parazyd on github, Patrick Monnerat, Paul Groke, 151 Ray Satiro, Razvan Cojocaru, Rich Turner, Sai Ram Kunala, Sean McArthur, 152 Tatsuhiro Tsujikawa, Tomas Berger, UrsusArctos on github, Viktor Szakats, 153 William A. Rowe Jr, XhmikosR on github, 不确定 154 (58 contributors) 155 156 Thanks! (and sorry if I forgot to mention someone) 157 158References to bug reports and discussions on issues: 159 160 [1] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28735 161 [2] = https://curl.se/bug/?i=6208 162 [3] = https://curl.se/bug/?i=6331 163 [4] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28676 164 [5] = https://curl.se/bug/?i=6318 165 [6] = https://curl.se/bug/?i=6321 166 [7] = https://curl.se/bug/?i=6328 167 [8] = https://curl.se/bug/?i=6315 168 [9] = https://curl.se/bug/?i=6333 169 [10] = https://curl.se/bug/?i=6336 170 [11] = https://curl.se/bug/?i=6354 171 [12] = https://curl.se/bug/?i=6307 172 [13] = https://curl.se/bug/?i=6334 173 [14] = https://curl.se/bug/?i=6176 174 [15] = https://curl.se/bug/?i=6285 175 [16] = https://curl.se/bug/?i=6286 176 [17] = https://curl.se/bug/?i=6332 177 [18] = https://curl.se/bug/?i=6303 178 [19] = https://curl.se/bug/?i=6304 179 [20] = https://curl.se/bug/?i=6292 180 [21] = https://curl.se/bug/?i=6296 181 [22] = https://curl.se/bug/?i=6295 182 [23] = https://curl.se/bug/?i=6289 183 [24] = https://curl.se/bug/?i=6110 184 [25] = https://curl.se/bug/?i=6199 185 [26] = https://curl.se/bug/?i=5703 186 [27] = https://curl.se/bug/?i=6341 187 [28] = https://curl.se/bug/?i=6244 188 [29] = https://curl.se/bug/?i=6423 189 [30] = https://github.com/curl/curl/commit/08e8455dddc5e48e58a12ade3815c01ae3da3b64#commitcomment-45433279 190 [31] = https://curl.se/bug/?i=6349 191 [32] = https://curl.se/bug/?i=6435 192 [33] = https://curl.se/mail/archive-2020-12/0017.html 193 [34] = https://curl.se/bug/?i=6345 194 [35] = https://curl.se/bug/?i=6365 195 [36] = https://curl.se/bug/?i=6112 196 [37] = https://curl.se/mail/lib-2020-12/0121.html 197 [38] = https://curl.se/bug/?i=6366 198 [39] = https://curl.se/bug/?i=6364 199 [40] = https://curl.se/mail/lib-2020-12/0084.html 200 [41] = https://curl.se/bug/?i=6360 201 [42] = https://curl.se/bug/?i=6358 202 [43] = https://curl.se/bug/?i=6356 203 [44] = https://curl.se/bug/?i=6403 204 [45] = https://curl.se/bug/?i=6397 205 [46] = https://curl.se/bug/?i=6540 206 [47] = https://curl.se/mail/archive-2020-12/0018.html 207 [48] = https://curl.se/bug/?i=6361 208 [49] = https://curl.se/bug/?i=6421 209 [50] = https://curl.se/bug/?i=6459 210 [51] = https://curl.se/bug/?i=6392 211 [52] = https://curl.se/bug/?i=6378 212 [53] = https://curl.se/bug/?i=6294 213 [54] = https://curl.se/bug/?i=6408 214 [55] = https://curl.se/bug/?i=6385 215 [56] = https://curl.se/bug/?i=6380 216 [57] = https://curl.se/bug/?i=6375 217 [58] = https://curl.se/bug/?i=6455 218 [59] = https://curl.se/bug/?i=6454 219 [60] = https://curl.se/bug/?i=6312 220 [61] = https://curl.se/bug/?i=6453 221 [62] = https://curl.se/bug/?i=6413 222 [63] = https://curl.se/bug/?i=6411 223 [64] = https://curl.se/bug/?i=6457 224 [65] = https://github.com/curl/curl/discussions/6427 225 [66] = https://curl.se/bug/?i=6443 226 [67] = https://curl.se/bug/?i=6445 227 [68] = https://curl.se/bug/?i=6226 228 [69] = https://curl.se/bug/?i=6557 229 [70] = https://curl.se/bug/?i=6438 230 [71] = https://curl.se/bug/?i=6436 231 [72] = https://curl.se/bug/?i=6493 232 [73] = https://curl.se/mail/lib-2021-01/0063.html 233 [74] = https://curl.se/bug/?i=6433 234 [75] = https://curl.se/bug/?i=6431 235 [76] = https://curl.se/mail/lib-2021-01/0033.html 236 [78] = https://curl.se/bug/?i=6504 237 [79] = https://curl.se/bug/?i=6537 238 [80] = https://twitter.com/mholt6/status/1352130240265375744 239 [82] = https://curl.se/bug/?i=6483 240 [83] = https://curl.se/bug/?i=6490 241 [84] = https://curl.se/bug/?i=6382 242 [85] = https://curl.se/bug/?i=6492 243 [86] = https://curl.se/bug/?i=6491 244 [87] = https://curl.se/bug/?i=6484 245 [88] = https://curl.se/bug/?i=6489 246 [92] = https://curl.se/mail/lib-2021-01/0095.html 247 [93] = https://curl.se/bug/?i=6477 248 [95] = https://curl.se/bug/?i=6534 249 [96] = https://curl.se/bug/?i=6534 250 [97] = https://curl.se/bug/?i=6534 251 [98] = https://curl.se/bug/?i=6534 252 [99] = https://curl.se/bug/?i=6481 253 [100] = https://curl.se/bug/?i=6534 254 [101] = https://curl.se/bug/?i=6425 255 [102] = https://curl.se/bug/?i=6471 256 [103] = https://curl.se/bug/?i=6531 257 [104] = https://curl.se/bug/?i=6527 258 [105] = https://curl.se/bug/?i=6533 259 [106] = https://curl.se/bug/?i=6521 260 [107] = https://curl.se/bug/?i=6521 261 [108] = https://curl.se/bug/?i=6530 262 [114] = https://curl.se/bug/?i=6519 263