1curl and libcurl 7.73.0 2 3 Public curl releases: 195 4 Command line options: 234 5 curl_easy_setopt() options: 278 6 Public functions in libcurl: 85 7 Contributors: 2270 8 9This release includes the following changes: 10 11 o curl: add --output-dir [25] 12 o curl: support XDG_CONFIG_HOME to find .curlrc [3] 13 o curl: update --help with categories [77] 14 o curl_easy_option_*: new API for meta-data about easy options [40] 15 o CURLE_PROXY: new error code [7] 16 o mqtt: enable by default [28] 17 o sftp: add new quote commands 'atime' and 'mtime' [6] 18 o ssh: add the option CURLKHSTAT_FINE_REPLACE [27] 19 o tls: add CURLOPT_SSL_EC_CURVES and --curves [29] 20 21This release includes the following bugfixes: 22 23 o altsvc: clone setting in curl_easy_duphandle [60] 24 o base64: also build for smtp, pop3 and imap [81] 25 o BUGS: convert document to markdown [107] 26 o build-wolfssl: fix build with Visual Studio 2019 [114] 27 o buildconf: invoke 'autoreconf -fi' instead [37] 28 o checksrc: detect // comments on column 0 [132] 29 o checksrc: verify do-while and spaces between the braces [2] 30 o checksrc: warn on space after exclamation mark [129] 31 o CI/azure: disable test 571 in the msys2 builds [93] 32 o CI/azure: MQTT is now enabled by default [64] 33 o CI/azure: no longer ignore results of test 1013 [43] 34 o CI/tests: fix invocation of tests for CMake builds [117] 35 o CI/travis: add a CI job with openssl3 (from git master) [51] 36 o cleanups: avoid curl_ on local variables [53] 37 o CMake: add option to enable Unicode on Windows [48] 38 o cmake: make HTTP_ONLY also disable MQTT [58] 39 o CMake: remove explicit `CMAKE_ANSI_CFLAGS` [45] 40 o cmake: remove scary warning [96] 41 o cmdline-opts/gen.pl: generate nicer "See Also" in curl.1 [66] 42 o configure: don't say HTTPS-proxy is enabled when disabled [120] 43 o configure: fix pkg-config detecting wolfssl [26] 44 o configure: let --enable-debug set -Wenum-conversion with gcc >= 10 [56] 45 o conn: check for connection being dead before reuse [39] 46 o connect.c: remove superfluous 'else' in Curl_getconnectinfo [42] 47 o curl.1: add see also no-progress-meter on two spots [67] 48 o curl.1: fix typo invokved -> invoked [36] 49 o curl: in retry output don't call all problems "transient" [74] 50 o curl: make --libcurl show binary posts correctly [130] 51 o curl: make checkpasswd use dynbuf [100] 52 o curl: make file2memory use dynbuf [102] 53 o curl: make file2string use dynbuf [103] 54 o curl: make glob_match_url use dynbuf [101] 55 o curl: make sure setopt CURLOPT_IPRESOLVE passes on a long [134] 56 o curl: retry delays in parallel mode no longer sleeps blocking [70] 57 o curl: use curlx_dynbuf for realloc when loading config files [73] 58 o curl:parallel_transfers: make sure retry readds the transfer [71] 59 o curl_get_line: build only if cookies or alt-svc are enabled [13] 60 o curl_mime_headers.3: fix the example's use of curl_slist_append [83] 61 o Curl_pgrsTime - return new time to avoid timeout integer overflow [32] 62 o Curl_send: return error when pre_receive_plain can't malloc [111] 63 o dist: add missing CMake Find modules to the distribution [14] 64 o docs/LICENSE-MIXING: remove [79] 65 o docs/opts: fix typos in two manual pages [119] 66 o docs/RESOURCES: remove [105] 67 o docs/TheArtOfHttpScripting: convert to markdown [106] 68 o docs: add description about CI platforms to CONTRIBUTE.md [44] 69 o docs: correct non-existing macros in man pages [35] 70 o doh: add error message for DOH_DNS_NAME_TOO_LONG [17] 71 o dynbuf: make sure Curl_dyn_tail() zero terminates [78] 72 o easy_reset: clear retry counter [82] 73 o easygetopt: pass a valid enum to avoid compiler warning [75] 74 o etag: save and use the full received contents [4] 75 o ftp: a 550 response to SIZE returns CURLE_REMOTE_FILE_NOT_FOUND [99] 76 o ftp: avoid risk of reading uninitialized integers [76] 77 o ftp: get rid of the PPSENDF macro [85] 78 o ftp: make a 552 response return CURLE_REMOTE_DISK_FULL [87] 79 o ftp: separate FTPS from FTP over "HTTPS proxy" [112] 80 o git: ignore libtests in 3XXX area [16] 81 o github: use new issue template feature [88] 82 o HISTORY: mention alt-svc added in 2019 83 o HTTP/3: update to OpenSSL_1_1_1g-quic-draft-29 [41] 84 o http: consolidate nghttp2_session_mem_recv() call paths [80] 85 o http_proxy: do not count proxy headers in the header bytecount [90] 86 o http_proxy: do not crash with HTTPS_PROXY and NO_PROXY set [50] 87 o imap: make imap_send use dynbuf for the send buffer management [110] 88 o imap: set cselect_bits to CURL_CSELECT_IN initially [104] 89 o ldap: reduce the amount of #ifdefs needed [124] 90 o lib/Makefile.am: bump VERSIONINFO due to new functions [65] 91 o lib1560: verify "redirect" to double-slash leading URL [20] 92 o lib583: fix enum mixup 93 o lib: fix -Wassign-enum warnings [84] 94 o lib: make Curl_gethostname accept a const pointer [38] 95 o libssh2: handle the SSH protocols done over HTTPS proxy [125] 96 o libssh2: pass on the error from ssh_force_knownhost_key_type [47] 97 o Makefile.m32: add ability to override zstd libs [ci skip] [10] 98 o man pages: switch to https://example.com URLs [86] 99 o MANUAL: update examples to resolve without redirects [122] 100 o mbedtls: add missing header when defining MBEDTLS_DEBUG [133] 101 o memdebug: remove 9 year old unused debug function [126] 102 o multi: expand pre-check for socket readiness [21] 103 o multi: handle connection state winsock events [31] 104 o multi: implement wait using winsock events [22] 105 o ngtcp2: adapt to new NGTCP2_PROTO_VER_MAX define [108] 106 o ngtcp2: adapt to the new pkt_info arguments [18] 107 o ntlm: fix condition for curl_ntlm_core usage [46] 108 o openssl: avoid error conditions when importing native CA [52] 109 o openssl: consider ALERT_CERTIFICATE_EXPIRED a failed verification [57] 110 o openssl: Fix wincrypt symbols conflict with BoringSSL [9] 111 o parsedate: tune the date to epoch conversion [95] 112 o pause: only trigger a reread if the unpause sticks [92] 113 o pingpong: use a dynbuf for the *_pp_sendf() function [113] 114 o READMEs: convert several to markdown [115] 115 o runtests: add %repeat[]% for test files [116] 116 o runtests: allow creating files without newlines [72] 117 o runtests: allow generating a binary sequence from hex 118 o runtests: clear pid variables when failing to start a server [12] 119 o runtests: make cleardir() erase dot files too [8] 120 o runtests: provide curl's version string as %VERSION for tests [127] 121 o schannel: fix memory leak when using get_cert_location [15] 122 o schannel: return CURLE_PEER_FAILED_VERIFICATION for untrusted root [128] 123 o scripts: improve the "get latest curl release tag" logic 124 o sectransp: make it build with --disable-proxy [123] 125 o select.h: make socket validation macros test for INVALID_SOCKET [24] 126 o select: align poll emulation to return all relevant events [63] 127 o select: fix poll-based check not detecting connect failure 128 o select: reduce duplication of Curl_poll in Curl_socket_check [23] 129 o select: simplify return code handling for poll and select [49] 130 o setopt: if the buffer exists, refuse the new BUFFERSIZE [5] 131 o setopt: return CURLE_BAD_FUNCTION_ARGUMENT on bad argument [91] 132 o socketpair: allow CURL_DISABLE_SOCKETPAIR [11] 133 o sockfilt: handle FD_CLOSE winsock event on write socket [30] 134 o src: spell whitespace without whitespace [121] 135 o SSLCERTS: fix English syntax [34] 136 o strerror: honor Unicode API choice on Windows [109] 137 o symbian: drop support [118] 138 o telnet.c: depend on static requirement of WinSock version 2 [61] 139 o test1541: remove since it is a known bug [68] 140 o test163[12]: require http to be built-in to run [94] 141 o test434: test -K use in a single line without newline [59] 142 o test971: show test mismatches "inline" 143 o tests/data: Fix some mismatched XML tags in test cases 144 o tests/FILEFORMAT: document nonewline support for <file> 145 o tests/FILEFORMAT: document type=shell for <command> 146 o tests/server/util.c: fix support for Windows Unicode builds [131] 147 o tests: remove pipelining tests [69] 148 o tls: fix SRP detection by using the proper #ifdefs [33] 149 o tls: provide the CApath verbose log on its own line [1] 150 o tool_setopt: escape binary data to hex, not octal 151 o tool_writeout: add new writeout variable, %{num_headers} [97] 152 o travis: add a build using libressl (from git master) [55] 153 o url: use blank credentials when using proxy w/o username and password [54] 154 o urlapi: use more Curl_safefree [89] 155 o vtls: deduplicate client certificates in ssl_config_data [98] 156 o win32: drop support for WinSock version 1, require version 2 [62] 157 o winbuild: convert the instruction text to README.md [19] 158 159This release includes the following known bugs: 160 161 o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html) 162 163This release would not have looked like this without help, code, reports and 164advice from friends like these: 165 166 Alessandro Ghedini, Anders Bakken, Andrew Barnes, anio on github, 167 Antarpreet Singh, beckenc on github, Chris Paulson-Ellis, 168 Christian Weisgerber, COFFEETALES on github, Dan Fandrich, Daniel Gustafsson, 169 Daniel Stenberg, Dan Kenigsberg, Diven Qi, Don J Olmstead, Duncan Wilcox, 170 Eli Schwartz, Emil Engler, Eric Curtin, Frederik Wedel-Heinen, 171 fullincome on github, Gaurav Malhotra, Gergely Nagy, Gisle Vanem, 172 Harry Sintonen, htasta on github, iammrtau on github, ihsinme on github, 173 Ionuț-Francisc Oancea, Javier Blazquez, Javier Navarro, Jeroen Ooms, 174 jmdavitt on github, Kamil Dudka, Kunal Chandarana, Laramie Leavitt, 175 Marcel Raad, Marc Hörsken, Martin Bašti, Michael Baentsch, Michael Musset, 176 Michael Olbrich, Mingtao Yang, M.R.T on github, Peter Körner, Peter Wu, 177 Quentin Balland, Rasmus Melchior Jacobsen, Ray Satiro, rcombs on github, 178 Robin Douine, Samanta Navarro, Samuel Marks, Samuel Tranchet, Sergei Nikulov, 179 sofaboss on github, Stefan Strogin, Stephan Mühlstrasser, 180 Tatsuhiro Tsujikawa, Tomas Berger, Tom van der Woerdt, Viktor Szakats, 181 xwxbug on github, 182 (63 contributors) 183 184 Thanks! (and sorry if I forgot to mention someone) 185 186References to bug reports and discussions on issues: 187 188 [1] = https://curl.haxx.se/bug/?i=5826 189 [2] = https://curl.haxx.se/bug/?i=5845 190 [3] = https://curl.haxx.se/bug/?i=5829 191 [4] = https://curl.haxx.se/bug/?i=5610 192 [5] = https://curl.haxx.se/bug/?i=5842 193 [6] = https://curl.haxx.se/bug/?i=5810 194 [7] = https://curl.haxx.se/bug/?i=5770 195 [8] = https://curl.haxx.se/bug/?i=5838 196 [9] = https://curl.haxx.se/bug/?i=5669 197 [10] = https://curl.haxx.se/bug/?i=5840 198 [11] = https://curl.haxx.se/bug/?i=5850 199 [12] = https://curl.haxx.se/mail/lib-2020-08/0018.html 200 [13] = https://curl.haxx.se/bug/?i=5851 201 [14] = https://curl.haxx.se/bug/?i=5836 202 [15] = https://curl.haxx.se/bug/?i=5855 203 [16] = https://curl.haxx.se/bug/?i=5859 204 [17] = https://curl.haxx.se/bug/?i=5863 205 [18] = https://curl.haxx.se/bug/?i=5864 206 [19] = https://curl.haxx.se/bug/?i=5861 207 [20] = https://curl.haxx.se/bug/?i=5849 208 [21] = https://curl.haxx.se/bug/?i=5634 209 [22] = https://curl.haxx.se/bug/?i=5634 210 [23] = https://curl.haxx.se/bug/?i=5707 211 [24] = https://curl.haxx.se/bug/?i=5760 212 [25] = https://curl.haxx.se/bug/?i=5637 213 [26] = https://curl.haxx.se/bug/?i=5848 214 [27] = https://curl.haxx.se/bug/?i=5685 215 [28] = https://curl.haxx.se/bug/?i=5858 216 [29] = https://curl.haxx.se/bug/?i=5892 217 [30] = https://curl.haxx.se/bug/?i=5879 218 [31] = https://curl.haxx.se/bug/?i=5867 219 [32] = https://curl.haxx.se/bug/?i=5583 220 [33] = https://curl.haxx.se/bug/?i=5865 221 [34] = https://curl.haxx.se/bug/?i=5876 222 [35] = https://curl.haxx.se/bug/?i=5846 223 [36] = https://curl.haxx.se/bug/?i=5846 224 [37] = https://curl.haxx.se/bug/?i=5853 225 [38] = https://curl.haxx.se/bug/?i=5866 226 [39] = https://curl.haxx.se/bug/?i=5884 227 [40] = https://curl.haxx.se/bug/?i=5365 228 [41] = https://curl.haxx.se/bug/?i=5871 229 [42] = https://curl.haxx.se/bug/?i=5912 230 [43] = https://curl.haxx.se/bug/?i=5889 231 [44] = https://curl.haxx.se/bug/?i=5882 232 [45] = https://curl.haxx.se/bug/?i=5439 233 [46] = https://curl.haxx.se/bug/?i=1262 234 [47] = https://curl.haxx.se/bug/?i=5909 235 [48] = https://curl.haxx.se/bug/?i=5843 236 [49] = https://curl.haxx.se/bug/?i=5880 237 [50] = https://bugzilla.redhat.com/1873327 238 [51] = https://curl.haxx.se/bug/?i=5908 239 [52] = https://curl.haxx.se/bug/?i=5907 240 [53] = https://curl.haxx.se/bug/?i=5906 241 [54] = https://curl.haxx.se/bug/?i=5914 242 [55] = https://curl.haxx.se/bug/?i=5932 243 [56] = https://curl.haxx.se/bug/?i=5930 244 [57] = https://curl.haxx.se/bug/?i=5934 245 [58] = https://curl.haxx.se/bug/?i=5931 246 [59] = https://curl.haxx.se/bug/?i=5946 247 [60] = https://curl.haxx.se/bug/?i=5923 248 [61] = https://curl.haxx.se/bug/?i=5854 249 [62] = https://curl.haxx.se/bug/?i=5854 250 [63] = https://curl.haxx.se/bug/?i=5883 251 [64] = https://curl.haxx.se/bug/?i=5903 252 [65] = https://curl.haxx.se/bug/?i=5899 253 [66] = https://curl.haxx.se/bug/?i=5898 254 [67] = https://curl.haxx.se/bug/?i=5897 255 [68] = https://curl.haxx.se/bug/?i=5922 256 [69] = https://curl.haxx.se/bug/?i=5921 257 [70] = https://curl.haxx.se/bug/?i=5917 258 [71] = https://curl.haxx.se/bug/?i=5905 259 [72] = https://curl.haxx.se/bug/?i=5946 260 [73] = https://curl.haxx.se/bug/?i=5946 261 [74] = https://curl.haxx.se/bug/?i=5916 262 [75] = https://github.com/curl/curl/commit/6ebe63fac23f38df911edc348e8ccc72280f9434#commitcomment-42042843 263 [76] = https://curl.haxx.se/bug/?i=5972 264 [77] = https://curl.haxx.se/bug/?i=5680 265 [78] = https://curl.haxx.se/bug/?i=5959 266 [79] = https://curl.haxx.se/bug/?i=5955 267 [80] = https://curl.haxx.se/bug/?i=5648 268 [81] = https://curl.haxx.se/bug/?i=5937 269 [82] = https://curl.haxx.se/bug/?i=5974 270 [83] = https://curl.haxx.se/bug/?i=5942 271 [84] = https://github.com/curl/curl/commit/879007f8118771f4896334731aaca5850a154675#commitcomment-42087553 272 [85] = https://curl.haxx.se/bug/?i=5971 273 [86] = https://curl.haxx.se/bug/?i=5969 274 [87] = https://curl.haxx.se/bug/?i=6016 275 [88] = https://curl.haxx.se/bug/?i=5936 276 [89] = https://curl.haxx.se/bug/?i=5968 277 [90] = https://curl.haxx.se/bug/?i=5992 278 [91] = https://curl.haxx.se/bug/?i=5993 279 [92] = https://curl.haxx.se/mail/lib-2020-09/0081.html 280 [93] = https://curl.haxx.se/bug/?i=5954 281 [94] = https://curl.haxx.se/bug/?i=6014 282 [95] = https://curl.haxx.se/bug/?i=5985 283 [96] = https://curl.haxx.se/bug/?i=5984 284 [97] = https://curl.haxx.se/bug/?i=5947 285 [98] = https://curl.haxx.se/bug/?i=5629 286 [99] = https://curl.haxx.se/bug/?i=5953 287 [100] = https://curl.haxx.se/bug/?i=5952 288 [101] = https://curl.haxx.se/bug/?i=5952 289 [102] = https://curl.haxx.se/bug/?i=5952 290 [103] = https://curl.haxx.se/bug/?i=5952 291 [104] = https://curl.haxx.se/bug/?i=5961 292 [105] = https://curl.haxx.se/bug/?i=5980 293 [106] = https://curl.haxx.se/bug/?i=5981 294 [107] = https://curl.haxx.se/bug/?i=5979 295 [108] = https://curl.haxx.se/bug/?i=6012 296 [109] = https://curl.haxx.se/bug/?i=6005 297 [110] = https://curl.haxx.se/bug/?i=6010 298 [111] = https://curl.haxx.se/bug/?i=6011 299 [112] = https://curl.haxx.se/bug/?i=5523 300 [113] = https://curl.haxx.se/bug/?i=6004 301 [114] = https://curl.haxx.se/bug/?i=6033 302 [115] = https://curl.haxx.se/bug/?i=6028 303 [116] = https://curl.haxx.se/bug/?i=6040 304 [117] = https://curl.haxx.se/bug/?i=6052 305 [118] = https://curl.haxx.se/bug/?i=5989 306 [119] = https://curl.haxx.se/bug/?i=6039 307 [120] = https://github.com/curl/curl/pull/5735#issuecomment-701376388 308 [121] = https://curl.haxx.se/bug/?i=6023 309 [122] = https://curl.haxx.se/bug/?i=6024 310 [123] = https://curl.haxx.se/bug/?i=6025 311 [124] = https://curl.haxx.se/bug/?i=6035 312 [125] = https://curl.haxx.se/bug/?i=4295 313 [126] = https://curl.haxx.se/bug/?i=5973 314 [127] = https://curl.haxx.se/bug/?i=6037 315 [128] = https://curl.haxx.se/bug/?i=6003 316 [129] = https://curl.haxx.se/bug/?i=6034 317 [130] = https://curl.haxx.se/bug/?i=6031 318 [131] = https://curl.haxx.se/bug/?i=6070 319 [132] = https://curl.haxx.se/bug/?i=6048 320 [133] = https://curl.haxx.se/bug/?i=6045 321 [134] = https://curl.haxx.se/bug/?i=6042 322