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