| _ _ ____ _ |
| ___| | | | _ \| | |
| / __| | | | |_) | | |
| | (__| |_| | _ <| |___ |
| \___|\___/|_| \_\_____| |
| |
| Changelog |
| |
| Version 7.78.0 (21 Jul 2021) |
| |
| Daniel Stenberg (21 Jul 2021) |
| - RELEASE-NOTES: synced |
| |
| curl 7.78.0 release |
| |
| - winbuild/MakefileBuild.vc: bump copyright year |
| |
| Jay Satiro (21 Jul 2021) |
| - docs: mention max-filesize options also apply to MQTT transfers |
| |
| Also make it clearer that the caveat 'if the file size is unknown it |
| the option will have no effect' may apply to protocols other than FTP |
| and HTTP. |
| |
| Reported-by: Josh Soref |
| |
| Fixes https://github.com/curl/curl/issues/7453 |
| |
| - [Josh Soref brought this change] |
| |
| docs/cmdline: fix grammar and typos |
| |
| - [Josh Soref brought this change] |
| |
| dump-header.d: Drop suggestion to use for cookie storage |
| |
| Since --cookie-jar is the preferred way to store cookies, no longer |
| suggest using --dump-header to do so. |
| |
| Co-authored-by: Daniel Stenberg |
| |
| Closes https://github.com/curl/curl/issues/7414 |
| |
| - [Josh Soref brought this change] |
| |
| doc/cmdline: fix grammar and typos |
| |
| Closes https://github.com/curl/curl/pull/7454 |
| Closes https://github.com/curl/curl/pull/7455 |
| Closes https://github.com/curl/curl/pull/7456 |
| Closes https://github.com/curl/curl/pull/7459 |
| Closes https://github.com/curl/curl/pull/7460 |
| Closes https://github.com/curl/curl/pull/7461 |
| Closes https://github.com/curl/curl/pull/7462 |
| Closes https://github.com/curl/curl/pull/7463 |
| |
| Daniel Stenberg (20 Jul 2021) |
| - vtls: fix connection reuse checks for issuer cert and case sensitivity |
| |
| CVE-2021-22924 |
| |
| Reported-by: Harry Sintonen |
| Bug: https://curl.se/docs/CVE-2021-22924.html |
| |
| - sectransp: check for client certs by name first, then file |
| |
| CVE-2021-22926 |
| |
| Bug: https://curl.se/docs/CVE-2021-22926.html |
| |
| Assisted-by: Daniel Gustafsson |
| Reported-by: Harry Sintonen |
| |
| - telnet: fix option parser to not send uninitialized contents |
| |
| CVS-2021-22925 |
| |
| Reported-by: Red Hat Product Security |
| Bug: https://curl.se/docs/CVE-2021-22925.html |
| |
| Jay Satiro (20 Jul 2021) |
| - connect: fix wrong format specifier in connect error string |
| |
| 0842175 (not in any release) used the wrong format specifier (long int) |
| for timediff_t. On an OS such as Windows libcurl's timediff_t (usually |
| 64-bit) is bigger than long int (32-bit). In 32-bit Windows builds the |
| upper 32-bits of the timediff_t were erroneously then used by the next |
| format specifier. Usually since the timeout isn't larger than 32-bits |
| this would result in null as a pointer to the string with the reason for |
| the connection failing. On other OSes or maybe other compilers it could |
| probably result in garbage values (ie crash on deref). |
| |
| Before: |
| Failed to connect to localhost port 12345 after 1201 ms: (nil) |
| |
| After: |
| Failed to connect to localhost port 12345 after 1203 ms: Connection refused |
| |
| Closes https://github.com/curl/curl/pull/7449 |
| |
| - winbuild: support alternate nghttp2 static lib name |
| |
| - Support both nghttp2.lib and nghttp2_static.lib for static nghttp2. |
| |
| nghttp2 briefly changed its static lib name to nghttp2_static, but then |
| made the _static suffix optional. |
| |
| Ref: https://github.com/nghttp2/nghttp2/pull/1394 |
| Ref: https://github.com/nghttp2/nghttp2/pull/1418 |
| Ref: https://github.com/nghttp2/nghttp2/issues/1466 |
| |
| Reported-by: Pierre Yager |
| |
| Fixes https://github.com/curl/curl/issues/7446 |
| Closes https://github.com/curl/curl/pull/7447 |
| |
| - [Josh Soref brought this change] |
| |
| docs/cmdline: fix grammar and typos |
| |
| Closes https://github.com/curl/curl/pull/7432 |
| Closes https://github.com/curl/curl/pull/7436 |
| Closes https://github.com/curl/curl/pull/7438 |
| Closes https://github.com/curl/curl/pull/7440 |
| Closes https://github.com/curl/curl/pull/7445 |
| |
| - [Josh Soref brought this change] |
| |
| delegation.d: mention what happens when used multiple times |
| |
| Closes https://github.com/curl/curl/pull/7408 |
| |
| - [Josh Soref brought this change] |
| |
| create-file-mode.d: mention what happens when used multiple times |
| |
| Closes https://github.com/curl/curl/pull/7407 |
| |
| - [Josh Soref brought this change] |
| |
| config.d: split comments and option-per line |
| |
| Closes https://github.com/curl/curl/pull/7405 |
| |
| Daniel Stenberg (19 Jul 2021) |
| - misc: copyright year range updates |
| |
| - mailmap: add Tobias and Timur |
| |
| Daniel Gustafsson (18 Jul 2021) |
| - [Josh Soref brought this change] |
| |
| docs: spell out directories instead of dirs in create-dirs |
| |
| Write out directories rather than using the dirs abbrevation. Also |
| use plural form consistently, even if the code in the end might just |
| create a single directory. |
| |
| Closes #7406 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| |
| - [Tobias Nyholm brought this change] |
| |
| docs: correct spelling errors and a broken link |
| |
| Update grammar and spelling in docs and source code comments. |
| |
| Closes: #7427 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Marc Hoersken (18 Jul 2021) |
| - CI/cirrus: install impacket from PyPI instead of FreeBSD packages |
| |
| Availability of impacket as FreeBSD package is too flaky. |
| |
| Stick to legacy version of cryptography which still |
| supports OpenSSL version 1.0.2 due to FreeBSD 11. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #7418 |
| |
| Daniel Stenberg (18 Jul 2021) |
| - [Josh Soref brought this change] |
| |
| docs/cmdline: mention what happens when used multiple times |
| |
| For --dns-ipv4-addr, --dns-ipv6-addr and --dns-servers |
| |
| Closes #7410 |
| Closes #7411 |
| Closes #7412 |
| |
| - [MAntoniak brought this change] |
| |
| lib: fix compiler warnings with CURL_DISABLE_NETRC |
| |
| warning C4189: 'netrc_user_changed': local variable is initialized but |
| not referenced |
| |
| warning C4189: 'netrc_passwd_changed': local variable is initialized but |
| not referenced |
| |
| Closes #7423 |
| |
| - disable-epsv.d: remove duplicate "(FTP)" |
| |
| ... since the tooling adds that to the output based on the "Protocols:" |
| tag. |
| |
| - [Max Zettlmeißl brought this change] |
| |
| docs: make the documentation for --etag-save match the program behaviour |
| |
| When using curl with the option `--etag-save` I expected it to save the |
| ETag without its surrounding quotes, as stated by the documentation in |
| the repository and by the generated man pages. |
| |
| My first endeavour was to fix the program, but while investigating the |
| history of the relevant parts, I discovered that curl once saved the |
| ETag without the quotes. This was undone by Daniel Stenberg in commit |
| `98c94596f5928840177b6bd3c7b0f0dd03a431af`, therefore I decided that in |
| this case the documentation should be adjusted to match the behaviour of |
| curl. |
| |
| The changed save behaviour also made parts of the `--etag-compare` |
| documentation wrong or superfluous, so I adjusted those accordingly. |
| |
| Closes #7429 |
| |
| - [Josh Soref brought this change] |
| |
| write-out.d: add missing periods |
| |
| Closes #7404 |
| |
| - [Josie Huddleston brought this change] |
| |
| easy: during upkeep, attach Curl_easy to connections in the cache |
| |
| During the protocol-specific parts of connection upkeep, some code |
| assumes that the data->conn pointer already is set correctly. However, |
| there's currently no guarantee of that in the code. |
| |
| This fix temporarily attaches each connection to the Curl_easy object |
| before performing the protocol-specific connection check on it, in a |
| similar manner to the connection checking in extract_if_dead(). |
| |
| Fixes #7386 |
| Closes #7387 |
| Reported-by: Josie Huddleston |
| |
| - [Josh Soref brought this change] |
| |
| cleanup: spell DoH with a lowercase o |
| |
| Signed-off-by: Josh Soref <[email protected]> |
| |
| Closes #7413 |
| |
| - [Josh Soref brought this change] |
| |
| TheArtOfHttpScripting: polish |
| |
| - add missing backticks and comma |
| |
| - fix proxy description: |
| |
| * example proxy isn't local |
| * locally doesn't really make sense |
| |
| Closes #7416 |
| |
| - [Josh Soref brought this change] |
| |
| form.d: add examples of `,`/`;` for file[name] |
| |
| Fixes #7415 |
| Closes #7417 |
| |
| - [MAntoniak brought this change] |
| |
| mbedtls: Remove unnecessary include |
| |
| - curl_setup.h: all references to mbedtls_md4* functions and structures |
| are in the md4.c. This file already includes the <mbedtls/md4.h> file |
| along with the file existence control (defined (MBEDTLS_MD4_C)) |
| |
| - curl_ntlm_core.c: unnecessary include - repeated below |
| |
| Closes #7419 |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (16 Jul 2021) |
| - [User Sg brought this change] |
| |
| multi: fix crash in curl_multi_wait / curl_multi_poll |
| |
| Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a |
| VALID_SOCK check to one of the loops through the sockets but not the |
| other. |
| |
| Reported-by: [email protected] |
| Authored-by: [email protected] |
| |
| Fixes https://github.com/curl/curl/issues/7379 |
| Closes https://github.com/curl/curl/pull/7389 |
| |
| - [Daniel Gustafsson brought this change] |
| |
| tool_help: remove unused define |
| |
| The PRINT_LINES_PAUSE macro is no longer used, and has been mostly |
| cleaned out but one occurrence remained. |
| |
| Closes https://github.com/curl/curl/pull/7380 |
| |
| - [Sergey Markelov brought this change] |
| |
| build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS |
| |
| fix compiler warnings about unused variables and parameters when |
| built with --disable-verbose. |
| |
| Closes https://github.com/curl/curl/pull/7377 |
| |
| - [Andrea Pappacoda brought this change] |
| |
| build: fix IoctlSocket FIONBIO check |
| |
| Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked |
| for (lowercase) ioctlsocket when it should have checked for IoctlSocket. |
| |
| Closes https://github.com/curl/curl/pull/7375 |
| |
| - [Timur Artikov brought this change] |
| |
| configure: fix nghttp2 library name for static builds |
| |
| Don't hardcode the nghttp2 library name, |
| because it can vary, be "nghttp2_static" for example. |
| |
| Fixes https://github.com/curl/curl/issues/7367 |
| Closes https://github.com/curl/curl/pull/7368 |
| |
| Gisle Vanem (16 Jul 2021) |
| - [PellesC] fix _lseeki64() macro |
| |
| - [SChannel] Use '_tcsncmp()' instead |
| |
| Revert previous change for PellesC. |
| |
| Instead replace all use of `_tcsnccmp()` with `_tcsncmp()`. |
| |
| - [PellesC] missing '_tcsnccmp' |
| |
| PellesC compiler does not have this macro in it's `<tchar.h>` |
| |
| Daniel Gustafsson (14 Jul 2021) |
| - TODO: add mention of mbedTLS 3 incompatibilities |
| |
| Wyatt OʼDay reported in #7385 that mbedTLS isn't backwards compatible |
| and curl no longer builds with it. Document the need to fix our support |
| until so has been done. |
| |
| Closes #7390 |
| Fixes #7385 |
| Reported-by: Wyatt OʼDay |
| Reviewed-by: Jay Satiro <[email protected]> |
| |
| - docs: fix inconsistencies in EGDSOCKET documentation |
| |
| Only the OpenSSL backend actually use the EGDSOCKET, and also use |
| TLS consistently rather than mixing SSL and TLS. While there, also |
| fix a minor spelling nit. |
| |
| Closes: #7391 |
| Reviewed-by: Jay Satiro <[email protected]> |
| |
| - [Борис Верховский brought this change] |
| |
| docs: document missing arguments to commands |
| |
| This is a followup to commit f410b9e538129e77607fef1 fixing a few |
| more commands which takes arguments. |
| |
| Closes #7382 |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| |
| - [Randolf J brought this change] |
| |
| docs: fix incorrect argument name reference |
| |
| The documentation for the read callback was erroneously referencing |
| the nitems argument by nmemb. The error was introduced in commit |
| ce0881edee3c7. |
| |
| Closes #7383 |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| |
| - [Борис Верховский brought this change] |
| |
| tool_help: Document that --tlspassword takes a password |
| |
| Closes #7378 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| - scripts: Fix typo in release-notes instructions |
| |
| The command to run had a typo in the pathname which prevented copy |
| pasting it to work, which has annoyed me enough to fix this now. |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (10 Jul 2021) |
| - write-out.d: Clarify urlnum is not unique for de-globbed URLs |
| |
| Reported-by: Коваленко Анатолий Викторович |
| |
| Fixes https://github.com/curl/curl/issues/7342 |
| Closes https://github.com/curl/curl/pull/7369 |
| |
| Daniel Gustafsson (3 Jul 2021) |
| - [William Desportes brought this change] |
| |
| docs: Fix typos |
| |
| Closes: #7370 |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| |
| Daniel Stenberg (8 Jul 2021) |
| - [Jonathan Wernberg brought this change] |
| |
| Revert "ftp: Expression 'ftpc->wait_data_conn' is always false" |
| |
| The reverted commit introduced a logic error in code that was |
| correct. |
| |
| The client using libcurl would notice the error since FTP file |
| uploads in active transfer mode would somtimes complete with |
| success despite no transfer having been performed and the |
| "uploaded" file thus not being on the remote server afterwards. |
| |
| The FTP server would notice the error because it receives a |
| RST on the data connection it has established with the client |
| before any data was transferred at all. |
| |
| The logic error happens if the STOR response from the server have |
| arrived by the time ftp_multi_statemach() in the affected code path |
| is called, but the incoming data connection have not arrived yet. |
| In that case, the processing of the STOR response will cause |
| 'ftpc->wait_data_conn' to be set to TRUE, contradicting the comment |
| in the code. Since 'complete' will also be set, later logic would |
| believe the transfer was done. |
| |
| In most cases, the STOR response will not have arrived yet when |
| the affected code path is executed, or the incoming connection will |
| also have arrived, and thus the error would not express itself. |
| But if the speed difference of the device using libcurl and the |
| FTP server is exactly right, the error may happen as often as in |
| one out of hundred file transfers. |
| |
| This reverts commit 49f3117a238b6eac0e22a32f50699a9eddcb66ab. |
| |
| Bug: https://curl.se/mail/lib-2021-07/0025.html |
| Closes #7362 |
| |
| - msnprintf: return number of printed characters excluding null byte |
| |
| ... even when the output is "capped" by the maximum length argument. |
| |
| Clarified in the docs. |
| |
| Closes #7361 |
| |
| - infof: remove newline from format strings, always append it |
| |
| - the data needs to be "line-based" anyway since it's also passed to the |
| debug callback/application |
| |
| - it makes infof() work like failf() and consistency is good |
| |
| - there's an assert that triggers on newlines in the format string |
| |
| - Also removes a few instances of "..." |
| |
| - Removes the code that would append "..." to the end of the data *iff* |
| it was truncated in infof() |
| |
| Closes #7357 |
| |
| - examples/multi-single: fix scan-build warning |
| |
| warning: Value stored to 'mc' during its initialization is never read |
| |
| Follow-up to ae8e11ed5fd2ce |
| |
| Closes #7360 |
| |
| - wolfssl: failing to set a session id is not reason to error out |
| |
| ... as it is *probably* just timed out. |
| |
| Reported-by: Francisco Munoz |
| |
| Closes #7358 |
| |
| - docs/examples: use curl_multi_poll() in multi examples |
| |
| The API is soon two years old and deserves being shown as the primary |
| way to drive multi code as it makes it much easier to write code. |
| |
| multi-poll: removed |
| |
| multi-legacy: add to show how we did multi API use before |
| curl_multi_wait/poll. |
| |
| Closes #7352 |
| |
| - KNOWN_BUGS: flaky Windows CI builds |
| |
| Closes #6972 |
| |
| - RELEASE-NOTES: synced |
| |
| - test1147: hyper doesn't allow "crazy" request headers like built-in |
| |
| ... so strip that from the test. |
| |
| Closes #7349 |
| |
| - c-hyper: bail on too long response headers |
| |
| To match with built-in behaviors. Makes test 1154 work. |
| |
| Closes #7350 |
| |
| - test1151: added missing CRLF to work with hyper |
| |
| Closes #7350 |
| |
| - c-hyper: add support for transfer-encoding in the request |
| |
| Closes #7348 |
| |
| - [Andrea Pappacoda brought this change] |
| |
| cmake: remove libssh2 feature checks |
| |
| libssh2 features are detected based on version since commit |
| 9dbbba997608f7c3c5de1c627c77c8cd2aa85b73 |
| |
| Closes #7343 |
| |
| - test1116: hyper doesn't pass through "surprise-trailers" |
| |
| Closes #7344 |
| |
| - socks4: scan for the IPv4 address in resolve results |
| |
| Follow-up to 84d2839740 which changed the resolving to always resolve |
| both address families, but since SOCKS4 only supports IPv4 it should |
| scan for and use the first available IPv4 address. |
| |
| Reported-by: shithappens2016 on github |
| Fixes #7345 |
| Closes #7346 |
| |
| Jay Satiro (5 Jul 2021) |
| - proto.d: fix formatting for paragraphs after margin changes |
| |
| Closes https://github.com/curl/curl/pull/7341 |
| |
| - pinnedpubkey.d: fix formatting for version support lists |
| |
| Closes https://github.com/curl/curl/pull/7340 |
| |
| Daniel Stenberg (2 Jul 2021) |
| - TODO: "Support in-memory certs/ca certs/keys" done |
| |
| Has been suppored for a while now with the *BLOB options. |
| |
| - examples: safer and more proper read callback logic |
| |
| The same callback code is used in: |
| |
| imap-append.c |
| smtp-authzid.c |
| smtp-mail.c |
| smtp-multi.c |
| smtp-ssl.c |
| smtp-tls.c |
| |
| It should not assume that it can copy full lines into the buffer as it |
| will encourage sloppy coding practices. Instead use byte-wise logic and |
| check/acknowledge the buffer size appropriately. |
| |
| Reported-by: Harry Sintonen |
| Fixes #7330 |
| Closes #7331 |
| |
| - test1519: adjusted to work with hyper |
| |
| Closes #7333 |
| |
| - test1518: adjusted to work with hyper |
| |
| ... by making sure the stdout output doesn't look like HTTP headers. |
| |
| Closes #7333 |
| |
| - test1514: add a CRLF to the response to make it correct |
| |
| Makes hyper accept it fine instead returning HYPERE_UNEXPECTED_EOF on |
| us. |
| |
| Closes #7334 |
| |
| - formdata: avoid "Argument cannot be negative" warning |
| |
| ... when converting a curl_off_t to size_t, by using |
| CURL_ZERO_TERMINATED before passing the argument to the function. |
| |
| Detected by Coverity CID 1486590. |
| |
| Closes #7328 |
| Assisted-by: Daniel Gustafsson |
| |
| - lib: more %u for port and int for %*s fixes |
| |
| Detected by Coverity |
| |
| Closes #7329 |
| |
| - doh: (void)-prefix call to curl_easy_setopt |
| |
| - lib: fix type of len passed to *printf's %*s |
| |
| ... it needs to be 'int'. Detected by Coverity CID 1486611 (etc) |
| |
| Closes #7326 |
| |
| - lib: use %u instead of %ld for port number printf |
| |
| Follow-up to 764c6bd3bf which changed the type of some port number |
| fields. Detected by Coverity (CID 1486624) etc. |
| |
| Closes #7325 |
| |
| - version: turn version number functions into returning void |
| |
| ... as we never use the return codes from them. |
| |
| Reviewed-by: Daniel Gustafsson |
| Closes #7319 |
| |
| - mqtt: extend the error message for no topic |
| |
| ... and mention that it needs URL encoding. |
| |
| Reported-by: Peter Körner |
| Fixes #7316 |
| Closes #7317 |
| |
| - formdata: correct typecast in curl_mime_data call |
| |
| Coverity pointed out it the mismatch. CID 1486590 |
| |
| Closes #7327 |
| |
| - url: (void)-prefix a curl_url_get() call |
| |
| Coverity (CID 1486645) pointed out a use of curl_url_get() in the |
| parse_proxy function where the return code wasn't checked. A |
| (void)-prefix makes the intention obvious. |
| |
| Closes #7320 |
| |
| - glob: pass an 'int' as len when using printf's %*s |
| |
| Detected by Coverity CID 1486629. |
| |
| Closes #7324 |
| |
| - vtls: use free() not curl_free() |
| |
| curl_free() is provided for users of the API to free returned data, |
| there's no need to use it internally. |
| |
| Closes #7318 |
| |
| - zuul: use the new rustls directory name |
| |
| Follow-up to 6d972c8b1cbb3 which missed updating this directory name. |
| |
| Also no longer call it crustls in the docs and bump to rusttls-ffi 0.7.1 |
| |
| Closes #7311 |
| |
| Jay Satiro (29 Jun 2021) |
| - http: fix crash in rate-limited upload |
| |
| - Don't set the size of the piece of data to send to the rate limit if |
| that limit is larger than the buffer size that will hold the piece. |
| |
| Prior to this change if CURLOPT_MAX_SEND_SPEED_LARGE |
| (curl tool: --limit-rate) was set then it was possible that a temporary |
| buffer used for uploading could be written to out of bounds. A likely |
| scenario for this would be a non-trivial amount of post data combined |
| with a rate limit larger than CURLOPT_UPLOAD_BUFFERSIZE (default 64k). |
| |
| The bug was introduced in 24e469f which is in releases since 7.76.0. |
| |
| perl -e "print '0' x 200000" > tmp |
| curl --limit-rate 128k -d @tmp httpbin.org/post |
| |
| Reported-by: Richard Marion |
| |
| Fixes https://github.com/curl/curl/issues/7308 |
| Closes https://github.com/curl/curl/pull/7315 |
| |
| Daniel Stenberg (29 Jun 2021) |
| - copyright: add boiler-plate headers to CI config files |
| |
| And whitelist .zuul.ignore |
| |
| Closes #7314 |
| |
| - CI: remove travis details |
| |
| Rename still used leftovers to "zuul" as that's now the CI using them. |
| |
| Closes #7313 |
| |
| - RELEASE-NOTES: synced |
| |
| - openssl: avoid static variable for seed flag |
| |
| Avoid the race condition risk by instead storing the "seeded" flag in |
| the multi handle. Modern OpenSSL versions handle the seeding itself so |
| doing the seeding once per multi-handle instead of once per process is |
| less of an issue. |
| |
| Reported-by: Gerrit Renker |
| Fixes #7296 |
| Closes #7306 |
| |
| - configure: inhibit the implicit-fallthrough warning on gcc-12 |
| |
| ... since it no longer acknowledges the comment markup we use for that |
| purpose. |
| |
| Reported-by: Younes El-karama |
| Fixes #7295 |
| Closes #7307 |
| |
| Daniel Gustafsson (28 Jun 2021) |
| - [Andrei Rybak brought this change] |
| |
| misc: fix typos in comments which repeat a word |
| |
| Fix typos in code comments which repeat various words. In trivial |
| cases, just delete the repeated word. Reword the affected sentence in |
| "lib/url.c" for it to make sense. |
| |
| Closes #7303 |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| |
| Daniel Stenberg (27 Jun 2021) |
| - lib677: make it survive torture testing |
| |
| Follow-up to a5ab72d5edd7 |
| |
| Closes #7300 |
| |
| - [Tommy Chiang brought this change] |
| |
| docs/BINDINGS: fix outdated links |
| |
| * luacurl page is now not accessible, fix it with wayback machine page |
| * Scheme one seems not providing https now, change it back to http one |
| |
| Closes #7301 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| curstls: bump crustls version and use new URL |
| |
| crustls moved to https://github.com/rustls/rustls-ffi. This also bumps |
| the expected version to 0.7.0. |
| |
| Closes #7297 |
| |
| - RELEASE-NOTES: synced |
| |
| - examples: length-limit two sscanf() uses of %s |
| |
| Reported-by: Jishan Shaikh |
| Fixes #7293 |
| Closes #7294 |
| |
| - [Richard Whitehouse brought this change] |
| |
| multi: alter transfer timeout ordering |
| |
| - Check whether a connection has succeded before checking whether it's |
| timed out. |
| |
| This means if we've connected quickly, but subsequently been |
| descheduled, we allow the connection to succeed. Note, if we timeout, |
| but between checking the timeout, and connecting to the server the |
| connection succeeds, we will allow it to go ahead. This is viewed as |
| an acceptable trade off. |
| |
| - Add additional failf logging around failed connection attempts to |
| propogate the cause up to the caller. |
| |
| Co-Authored-by: Martin Howarth |
| Closes #7178 |
| |
| - test677: IMAP CONNECT_ONLY, custom command and then exit |
| |
| Adjusted ftpserver.pl to add support for the IMAP IDLE command |
| |
| Adjusted test 660 to sync with the fix |
| |
| - multi: do not switch off connect_only flag when closing |
| |
| ... as it made protocol specific disconnect commands wrongly get used. |
| |
| Bug: https://curl.se/mail/lib-2021-06/0024.html |
| Reported-by: Aleksander Mazur |
| Closes #7288 |
| |
| - http: make the haproxy support work with unix domain sockets |
| |
| ... it should then pass on "PROXY UNKNOWN" since it doesn't know the |
| involved IP addresses. |
| |
| Reported-by: Valentín Gutiérrez |
| Fixes #7290 |
| Closes #7291 |
| |
| - [Xiang Xiao brought this change] |
| |
| curl.h: include sys/select.h for NuttX RTOS |
| |
| Closes #7287 |
| |
| - [Bin Meng brought this change] |
| |
| curl.h: remove the execution bit |
| |
| The execution bit of curl.h file was wrongly added: |
| |
| commit 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7") |
| |
| and should be removed. |
| |
| Follow-up to 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7") |
| Signed-off-by: Bin Meng <[email protected]> |
| Closes #7286 |
| |
| - [Bin Lan brought this change] |
| |
| curl.h: <sys/select.h> is supported by VxWorks7 |
| |
| Closes #7285 |
| |
| - [Bachue Zhou brought this change] |
| |
| quiche: use send() instead of sendto() to avoid macOS issue |
| |
| sendto() always returns "Socket is already connected" error on macos |
| |
| Closes #7260 |
| |
| - [Li Xinwei brought this change] |
| |
| cmake: fix support for UnixSockets feature on Win32 |
| |
| Move the definition of sockaddr_un struct from config-win32.h to |
| curl_setup.h, so that it could be shared by all build systems. |
| |
| Add ADDRESS_FAMILY typedef for old mingw, now old mingw can also use |
| unix sockets. |
| |
| Also fix the build of tests/server/sws.c on Win32 when USE_UNIX_SOCKETS |
| is defined. |
| |
| Closes #7034 |
| |
| - [Gregory Muchka brought this change] |
| |
| hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies |
| |
| From Apples documentation on SCDynamicStoreCopyProxies, "Return Value: A |
| dictionary of key-value pairs that represent the current internet proxy |
| settings, or NULL if no proxy settings have been defined or if an error |
| occurred. You must release the returned value." |
| |
| Failure to release the returned value of SCDynamicStoreCopyProxies can |
| result in a memory leak. |
| |
| Source: https://developer.apple.com/documentation/systemconfiguration/1517088-scdynamicstorecopyproxies |
| |
| Closes #7265 |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (21 Jun 2021) |
| - vtls: fix warning due to function prototype mismatch |
| |
| b09c8ee changed the function prototype. Caught by Visual Studio. |
| |
| - curl_multibyte: Remove local encoding fallbacks |
| |
| - If the UTF-8 to UTF-16 conversion fails in Windows Unicode builds then |
| no longer fall back to assuming the string is in a local encoding. |
| |
| Background: |
| |
| Some functions in Windows Unicode builds must convert UTF-8 to UTF-16 to |
| pass to the Windows CRT API wide-character functions since in Windows |
| UTF-8 is not a valid locale (or at least 99% of the time right now). |
| |
| Prior to this change if the Unicode encoding conversion failed then |
| libcurl would assume, for backwards compatibility with applications that |
| may have written their code for non-Unicode builds, attempt to convert |
| the string from local encoding to UTF-16. |
| |
| That type of "best effort" could theoretically cause some type of |
| security or other problem if a string that was locally encoded was also |
| valid UTF-8, and therefore an unexpected UTF-8 to UTF-16 conversion |
| could occur. |
| |
| Ref: https://github.com/curl/curl/pull/7246 |
| |
| Closes https://github.com/curl/curl/pull/7257 |
| |
| Daniel Stenberg (20 Jun 2021) |
| - curl_endian: remove the unused Curl_write64_le function |
| |
| The last usage was removed in cca455a36 |
| |
| Closes #7280 |
| |
| - vtls: only store TIMER_APPCONNECT for non-proxy connect |
| |
| Introducing a 'isproxy' argument to the connect function so that it |
| knows wether to store the time stamp or not. |
| |
| Reported-by: Yongkang Huang |
| Fixes #7274 |
| Closes #7274 |
| |
| - gnutls: set the preferred TLS versions in correct order |
| |
| Regression since 781864bedbc57 (curl 7.77.0) |
| |
| Reported-by: civodul on github |
| Assisted-by: Nikos Mavrogiannopoulos |
| Fixes #7277 |
| Closes #7278 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_r |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_r |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove unused define HAVE_PERROR |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure: remove unused check for gai_strerror |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove unused define HAVE_FREEIFADDRS |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove unused define HAVE_FORK |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove unused define HAVE_FDOPEN |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove checks for unused sgtty.h |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove remaining checks for rsa.h |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove remaining checks for err.h |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove remaining checks for crypto.h |
| |
| Closes #7276 |
| |
| - [Gergely Nagy brought this change] |
| |
| configure/cmake: remove checks for unused getservbyport_r |
| |
| Closes #7276 |
| |
| - --socks4[a]: clarify where the host name is resolved |
| |
| Closes #7273 |
| |
| - libcurl-security.3: mention file descriptors and forks |
| |
| ... and move the security report section last. |
| |
| Reported-by: Harry Sintonen |
| Closes #7270 |
| |
| - [Alex Xu (Hello71) brought this change] |
| |
| configure.ac: make non-executable |
| |
| it needs to be processed by autoconf or autoreconf, and doesn't have a |
| suitable shebang to be directly executed. other projects normally set |
| configure.ac -x. |
| |
| Closes #7272 |
| |
| - configure: do not strip out debug flags |
| |
| To allow users to set them when invoking configure without using |
| --with-debug. |
| |
| Reported-by: Alex Xu |
| Fixes #7216 |
| Closes #7267 |
| |
| - libssh2: limit time a disconnect can take to 1 second |
| |
| Closes #7271 |
| |
| - TLS: prevent shutdown loops to get stuck |
| |
| ... by making sure the loops are only allowed to read the shutdown |
| traffic a limited number of times. |
| |
| Reported-by: Harry Sintonen |
| Closes #7271 |
| |
| - hyper: propagate errors back up from read callbacks |
| |
| Makes test 513 work with hyper |
| |
| Closes #7266 |
| |
| - KNOWN_BUGS: Negotiate on Windows fails |
| |
| Closes #5881 |
| |
| - KNOWN_BUGS: renames instead of locking for atomic operations |
| |
| Closes #6882 |
| Closes #6884 |
| |
| - zuul: add two missing CI jobs |
| |
| ... that were configured, just not run |
| |
| Closes #7261 |
| |
| Viktor Szakats (15 Jun 2021) |
| - idn: fix libidn2 with windows unicode builds |
| |
| Unicode Windows builds use UTF-8 strings internally in libcurl, |
| so make sure to call the UTF-8 flavour of the libidn2 API. Also |
| document that Windows builds with libidn2 and UNICODE do expect |
| CURLOPT_URL as an UTF-8 string. |
| |
| Reported-by: dEajL3kA on github |
| Assisted-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| Closes #7246 |
| Fixes #7228 |
| |
| Daniel Stenberg (15 Jun 2021) |
| - curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE |
| |
| They were never officially allowed and slipped in only due to sloppy |
| parsing. Spaces (ascii 32) should be correctly encoded (to %20) before |
| being part of a URL. |
| |
| The new flag bit CURLU_ALLOW_SPACE when a full URL is set, makes libcurl |
| allow spaces. |
| |
| Updated test 1560 to verify. |
| |
| Closes #7073 |
| |
| - RELEASE-NOTES: synced |
| |
| ... and bump to version 7.78.0 for the next planned release. |
| |
| Jay Satiro (15 Jun 2021) |
| - docs: Remove outdated curl tool limitation |
| |
| - Document that HTTP/2 multiplexing is supported by the curl tool when |
| parallel transfers are used. |
| |
| Supported since 7.66.0 via --parallel, but the doc wasn't updated. |
| |
| Closes https://github.com/curl/curl/pull/7259 |
| |
| - http2: Clarify 'Using HTTP2' verbose message |
| |
| - Change phrasing from multi-use to multiplexing since the former may |
| not be as well understood. |
| |
| Before: * Using HTTP2, server supports multi-use |
| |
| After: * Using HTTP2, server supports multiplexing |
| |
| Bug: https://github.com/curl/curl/discussions/7255 |
| Reported-by: David Hu |
| |
| Closes https://github.com/curl/curl/pull/7258 |
| |
| Daniel Stenberg (14 Jun 2021) |
| - winbuild/README: VC should be set to 6 'or larger' |
| |
| Previously it listed all versions up to 15 (missing 16) but this new |
| phrasing is more open ended. |
| |
| Reported-by: Hugh Macdonald |
| Fixes #7253 |
| Closes #7254 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| rustls: remove native_roots fallback |
| |
| For the commandline tool, we expect to be passed |
| SSL_CONN_CONFIG(CAfile); for library use, the use should pass a set of |
| trusted roots (like in other TLS backends). |
| |
| This also removes a dependency on Security.framework when building on |
| macOS. |
| |
| Closes #7250 |
| |
| - [Albin Vass brought this change] |
| |
| travis: remove jobs that have migrated to zuul |
| |
| Closes #7245 |
| |
| - [Mohammed Naser brought this change] |
| |
| CI: add jobs using Zuul |
| |
| It also includes a few changes to get the builds going: |
| - Added autoconf to common dependencies |
| - Added automake to common dependencies |
| - Added libtool to common dependencies |
| - Added libssl-dev to common dependencies |
| |
| Co-authored-by: Albin Vass |
| |
| Closes #7245 |
| |
| - netrc: skip 'macdef' definitions |
| |
| Add test 494 to verify |
| |
| Reported-by: Harry Sintonen |
| Fixes #7238 |
| Closes #7244 |
| |
| - multi: add scan-build-6 work-around in curl_multi_fdset |
| |
| scan-build-6 otherwise warns, saying: warning: The left operand of '>=' |
| is a garbage value otherwise, which is false. |
| |
| Later scan-builds don't claim this on the same code. |
| |
| Closes #7248 |
| |
| - asyn-ares: remove check for 'data' in Curl_resolver_cancel |
| |
| It implied it would survive a NULL in there which it won't. Instead do |
| an assert. |
| |
| Pointed out by scan-build. |
| |
| Closes #7248 |
| |
| - url.c: remove two variable assigns that are never read |
| |
| Pointed out by scan-build |
| |
| Closes #7248 |
| |
| - [Gealber Morales brought this change] |
| |
| mqtt: add support for username and password |
| |
| Minor-edits-by: Daniel Stenberg |
| Added test 2200 to 2205 |
| |
| Closes #7243 |
| |
| - travis: remove the arm job |
| |
| We do it on circle CI instead |
| |
| - CI: add .circleci/config.yml |
| |
| Assisted-by: Gabriel Simmer |
| |
| Closes #7239 |
| |
| - RELEASE-NOTES: synced |
| |
| - runtests: init $VERSION to avoid warnings when using -l |
| |
| - openssl: don't remove session id entry in disassociate |
| |
| When a connection is disassociated from a transfer, the Session ID entry |
| should remain. |
| |
| Regression since 7f4a9a9 (shipped in libcurl 7.77.0) |
| Reported-by: Gergely Nagy |
| Reported-by: Paul Groke |
| |
| Fixes #7222 |
| Closes #7230 |
| |
| - single_transfer: ignore blank --output-dir |
| |
| ... as otherwise it creates a rather unexpected target directory with a |
| leading slash. |
| |
| Reported-by: Harry Sintonen |
| Fixes #7218 |
| Closes #7233 |
| |
| - tests: update README about servers and port numbers |
| |
| Closes #7242 |
| |
| - conn_shutdown: if closed during CONNECT cleanup properly |
| |
| Reported-by: Alex Xu |
| Reported-by: Phil E. Taylor |
| |
| Fixes #7236 |
| Closes #7237 |
| |
| - [Christian Weisgerber brought this change] |
| |
| sws: malloc request struct instead of using stack |
| |
| ... 2MB requests is otherwise just too big for some systems. |
| |
| (The allocations are not freed properly.) |
| |
| Bug: https://curl.se/mail/lib-2021-06/0018.html |
| |
| Closes #7235 |
| |
| - [Mark Swaanenburg brought this change] |
| |
| lib: don't compare fd to FD_SETSIZE when using poll |
| |
| FD_SETSIZE is irrelevant when using poll. So ensuring that the file |
| descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause |
| multi_wait to ignore perfectly valid file descriptors and simply wait |
| for 1s to avoid hammering the CPU in a busy loop. |
| |
| Fixes #7240 |
| Closes #7241 |
| |
| - [zhangxiuhua brought this change] |
| |
| doh: fix wrong DEBUGASSERT for doh private_data |
| |
| Closes #7227 |
| |
| - [yb999 brought this change] |
| |
| tests: update README.md with a missing single quote |
| |
| Closes #7231 |
| |
| - GHA: run all tests for hyper too |
| |
| As it lists disabled ones in DISABLED now |
| |
| Closes #7209 |
| |
| - tests/data/DISABLED: add tests not working with hyper |
| |
| The goal is to remove them all from here over time. |
| |
| Closes #7209 |
| |
| - runtests: also find the last test in Makefile.inc |
| |
| Closes #7209 |
| |
| - test3010: work with hyper mode |
| |
| Closes #7209 |
| |
| - configure: disable RTSP when hyper is selected |
| |
| Makes test 1013 work |
| |
| Closes #7209 |
| |
| - test1594/1595/1596: fix to work in hyper mode |
| |
| Closes #7209 |
| |
| - test1438/1457: add HTTP keyword to make hyper mode work |
| |
| Closes #7209 |
| |
| - test1340/1341: adjusted for hyper mode |
| |
| Closes #7209 |
| |
| - test1218: adjusted for hyper mode |
| |
| Closes #7209 |
| |
| - test1216: adjusted for hyper mode |
| |
| Closes #7209 |
| |
| - test1230: adjust to work in hyper mode |
| |
| Closes #7209 |
| |
| - c-hyper: abort CONNECT response reading early on non 2xx responses |
| |
| Fixes test 493 |
| |
| Closes #7209 |
| |
| - test434: add HTTP keyword |
| |
| Closes #7209 |
| |
| - test599: adjusted to work in hyper mode |
| |
| Closes #7209 |
| |
| - c-hyper: fix the uploaded field in progress callbacks |
| |
| Makes test 578 work |
| |
| Closes #7209 |
| |
| - test566: adjust to work with hyper mode |
| |
| Closes #7209 |
| |
| - [Fawad Mirza brought this change] |
| |
| CURLOPT_WRITEFUNCTION.3: minor update of the example |
| |
| Safely avoid chunk.size garbage value if declared non globally. |
| |
| Closes #7219 |
| |
| - [Bastian Krause brought this change] |
| |
| configure: rename get-easy-option configure option to get-easy-options |
| |
| "get-easy-options" is the configure option advertised by the help text |
| anyway, so use that. |
| |
| Fixes #7211 |
| Closes #7213 |
| |
| Follow-up to ad691b191 ("configure: added --disable-get-easy-options") |
| Suggested-by: Daniel Stenberg <[email protected]> |
| Signed-off-by: Bastian Krause <[email protected]> |
| |
| - runtests: skip disabled tests unless -f is used |
| |
| To make it easier to write ranges like '115 to 229' without that |
| explicitly enabling tests that are listed in DISABLED, this makes |
| runtests always skip disabled tests unless the -f command line option is |
| used. |
| |
| Previously the code attempted to not run such tests, but didn't do it |
| correctly. |
| |
| Closes #7212 |
| |
| - [Jun-ya Kato brought this change] |
| |
| ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS |
| |
| The latest GnuTLS-3.7.2 implements disable switch for TLSv1.3 compatible |
| mode for middle box but it is enabled by default, which is unnecessary |
| for QUIC. |
| |
| Fixes #6896 |
| Closes #7202 |
| |
| - test644: remove as duplicate of test 587 |
| |
| Closes #7208 |
| |
| Daniel Gustafsson (8 Jun 2021) |
| - RELEASE-NOTES: synced |
| |
| - cookies: track expiration in jar to optimize removals |
| |
| Removing expired cookies needs to be a fast operation since we want to |
| be able to perform it often and speculatively. By tracking the timestamp |
| of the next known expiration we can exit early in case the timestamp is |
| in the future. |
| |
| Closes: #7172 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Daniel Stenberg (7 Jun 2021) |
| - GHA: add several libcurl tests to the hyper job |
| |
| 500 to 512 |
| |
| - test500: adjust to work with hyper mode |
| |
| - c-hyper: support CURLINFO_STARTTRANSFER_TIME |
| |
| Closes #7204 |
| |
| - c-hyper: support CURLOPT_HEADER |
| |
| When enabled, the headers are passed to the body write callback as well. |
| |
| Like in test 500 |
| |
| Closes #7204 |
| |
| - GHA: run the newly fixed tests with hyper |
| |
| Closes #7205 |
| |
| - test433: adjust for hyper mode |
| |
| Closes #7205 |
| |
| - test395: hyper cannot work around > 64 bit content-lengths like built-in |
| |
| Closes #7205 |
| |
| - test394: hyper returns a different error |
| |
| Closes #7205 |
| |
| - test393: make Content-Length fit within 64 bit for hyper |
| |
| Closes #7205 |
| |
| - test347: CRLFify to work in hyper mode |
| |
| Closes #7205 |
| |
| - test339: CRLFify better to work in hyper mode |
| |
| Closes #7205 |
| |
| - travis: remove the hyper build |
| |
| - GHA: add a linux-hyper job |
| |
| Closes #7206 |
| |
| - test328: avoid a header-looking body to make hyper mode work |
| |
| The test still works the same, just modified two bytes in the content. |
| |
| Closes #7203 |
| |
| - release-notes.pl: also spot common 'closes' typo |
| |
| - metalink: remove |
| |
| Warning: this will make existing curl command lines that use metalink to |
| stop working. |
| |
| Reasons for removal: |
| |
| 1. We've found several security problems and issues involving the |
| metalink support in curl. The issues are not detailed here. When |
| working on those, it become apparent to the team that several of the |
| problems are due to the system design, metalink library API and what |
| the metalink RFC says. They are very hard to fix on the curl side |
| only. |
| |
| 2. The metalink usage with curl was only very briefly documented and was |
| not following the "normal" curl usage pattern in several ways, making |
| it surprising and non-intuitive which could lead to further security |
| issues. |
| |
| 3. The metalink library was last updated 6 years ago and wasn't so |
| active the years before that either. An unmaintained library means |
| there's a security problem waiting to happen. This is probably reason |
| enough. |
| |
| 4. Metalink requires an XML parsing library, which is complex code (even |
| the smaller alternatives) and to this day often gets security |
| updates. |
| |
| 5. Metalink is not a widely used curl feature. In the 2020 curl user |
| survey, only 1.4% of the responders said that they'd are using it. In |
| 2021 that number was 1.2%. Searching the web also show very few |
| traces of it being used, even with other tools. |
| |
| 6. The torrent format and associated technology clearly won for |
| downloading large files from multiple sources in parallel. |
| |
| Cloes #7176 |
| |
| - docs/INSTALL: remove mentions of configure --with-darwin-ssl |
| |
| ... as it isn't supported since a while back. |
| |
| Make configure fail with a warning if used. |
| |
| Reported-by: Vadim Grinshpun |
| Bug: https://curl.se/mail/lib-2021-06/0008.html |
| Closes #7200 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Gregor Jasny brought this change] |
| |
| cmake: Avoid leaking absolute paths into exported config |
| |
| The `find_libarary` command resolves the library or framework |
| into an absolute path. In case of system frameworks which are |
| located within an Xcode-provided SDK this results in the Xcode |
| path and SDK version being part of the library path. |
| |
| Because those library paths end up in the exported CMake config |
| importing curl will fail once the Xcode location or SDK version |
| changes: |
| |
| ```cmake |
| set_target_properties(CURL::libcurl PROPERTIES |
| INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" |
| INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB" |
| ) |
| ``` |
| |
| A work-around is to link against system-level frameworks with |
| `-framework XYZ`. In case of `SystemConfiguration` we might be able |
| to omit the lookup-check because we could assume the framework is |
| always present. |
| |
| Closes #7152 |
| |
| - [Shikha Sharma brought this change] |
| |
| http2_connisdead: handle trailing GOAWAY better |
| |
| When checking the connection the input processing returns error |
| immediately, we now consider that a dead connnection. |
| |
| Bug: https://curl.se/mail/lib-2021-06/0001.html |
| Closes #7192 |
| |
| - [Dmitry Karpov brought this change] |
| |
| ares: always store IPv6 addresses first |
| |
| Trying dual-stack on some embedded platform, I noticed that quite |
| frequently (20%) libCurl starts from IPv4 regardless the Happy Eyeballs |
| timeout value. After debugging this issue, I noticed that this happens |
| if c-ares resolver response for IPv6 family comes before IPv4 (which was |
| randomly happening in my tests). |
| |
| In such cases, because libCurl puts the last resolver response on top of |
| the address list, when IPv4 resolver response comes after IPv6 one - the |
| IPv4 family starts the connection phase instead of IPv6 family. |
| |
| The solution for this issue is to always put IPv6 addresses on top of |
| the address list, regardless the order of resolver responses. |
| |
| Bug: https://curl.se/mail/lib-2021-06/0003.html |
| |
| Closes #7188 |
| |
| - Revert "Revert "socketpair: fix potential hangs"" |
| |
| This reverts commit 3e70c3430a370a31eff2c1d8fea29edaca8f1127. |
| |
| Thus brings back the change from #7144 as was originally landed in |
| c769d1eab4de8b |
| |
| Closes #7144 (again) |
| |
| - [Ebe Janchivdorj brought this change] |
| |
| schannel: move code out of SChannel_connect_step1 |
| |
| Reviewed-by: Marc Hoersken |
| Closes #7168 |
| |
| - tests/data/Makefile.inc: error: trailing backslash on last line |
| |
| Follow-up to d8dcb399b8009d |
| |
| - TODO: Support rate-limiting for MQTT |
| |
| - [Dmitry Kostjuchenko brought this change] |
| |
| warnless: simplify type size handling |
| |
| By using sizeof(T), existing defines and relying on the compiler to |
| define the required signed/unsigned mask. |
| |
| Closes #7181 |
| |
| Gisle Vanem (4 Jun 2021) |
| - [Win32] Fix for USE_WATT32 |
| |
| My Watt-32 tcp/ip stack works on Windows but it does not have `WSAIoctl()` |
| |
| Daniel Stenberg (4 Jun 2021) |
| - [Alexis Vachette brought this change] |
| |
| url: bad CURLOPT_CONNECT_TO syntax now returns error |
| |
| Added test 3020 to verify |
| |
| Closes #7183 |
| |
| - github: remove the cmake macOS gcc-8 jobs |
| |
| They're too similar to the gcc-9 ones to be useful (and seems to not |
| work anymore). |
| |
| Closes #7187 |
| |
| - test269: disable for hyper |
| |
| --ignore-content-length / CURLOPT_IGNORE_CONTENT_LENGTH doesn't work |
| with hyper. |
| |
| Closes #7184 |
| |
| - runtests: enable 'hyper mode' only for HTTP tests |
| |
| The 'hyper mode' makes line-ending checks work in the test suite for |
| when hyper is used. Now it also requires that HTTP or HTTPS are |
| mentioned as keywords to be enabled so that it doesn't wrongly adjusts |
| tests for other protocols. |
| |
| This makes test 271 (TFTP) work again in hyper enabled builds. |
| |
| Closes #7185 |
| |
| - [Alexis Vachette brought this change] |
| |
| hostip: bad CURLOPT_RESOLVE syntax now returns error |
| |
| Added test 3019 |
| Fixes #7170 |
| Closes #7174 |
| |
| Daniel Gustafsson (3 Jun 2021) |
| - cookies: fix typo and expand comment |
| |
| Fix a typo in the sorting comment, and while in there elaborate slightly |
| on why creationtime can be used as a tiebreaker. |
| |
| - cookies: remove unused header |
| |
| Commit 1c1d9f1affbd3367bcb24062e261d0ea5d185e3a removed the last use |
| for the inet_pton.h headerfile, this removes the inclusion of the |
| header. |
| |
| Closes: #7182 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Daniel Stenberg (3 Jun 2021) |
| - Revert "socketpair: fix potential hangs" |
| |
| This reverts commit c769d1eab4de8b9f1bd84d992c63692fdc43c5be. |
| |
| See #7144 for details |
| |
| - [Paul Groke brought this change] |
| |
| socketpair: fix potential hangs |
| |
| Fixes potential hang in accept by using select + non-blocking accept. |
| |
| Fixes potential hang in peer check by replacing the send/recv check with |
| a getsockname/getpeername check. |
| |
| Adds length check for returned sockaddr data. |
| |
| Closes #7144 |
| |
| - runtests: parse data/Makefile.inc instead of using make |
| |
| The warning about missing entries in that file then doesn't require that |
| the Makefile has been regenerated which was confusing. |
| |
| The scan for the test num is a little more error prone than before |
| (since now it doesn't actually verify that it is legitimate Makefile |
| syntax), but I think it is good enough. |
| |
| Closes #7177 |
| |
| - [Harry Sintonen brought this change] |
| |
| filecheck: quietly remove test-place/*~ |
| |
| Closes #7179 |
| |
| - CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax |
| |
| For options that pass in lists or strings that are subsequently parsed |
| and must be correct. This broadens the scope for the option previously |
| known as CURLE_TELNET_OPTION_SYNTAX but the old name is of course still |
| provided as a #define for existing applications. |
| |
| Closes #7175 |
| |
| - tests: fix Accept-Encoding strips to work with Hyper builds |
| |
| The previous strip also removed the CR which turned problematic. |
| |
| valgrind.supp: add zstd suppression using hyper |
| |
| Reported-and-analyzed-by: Kevin Burke |
| Fixes #7169 |
| Closes #7171 |
| |
| - github: timeout jobs on macOS after 90 minutes |
| |
| Assisted-by: Marc Hoersken |
| Closes #7173 |
| |
| - [Harry Sintonen brought this change] |
| |
| mqtt: detect illegal and too large file size |
| |
| Add test 3017 and 3018 to verify. |
| Closes #7166 |
| |
| - [theawless brought this change] |
| |
| cmake: add CURL_DISABLE_NTLM option |
| |
| Closes #7028 |
| |
| - [theawless brought this change] |
| |
| configure: add --disable-ntlm option |
| |
| Closes #7028 |
| |
| - [theawless brought this change] |
| |
| define: re-add CURL_DISABLE_NTLM and corresponding ifdefs |
| |
| This flag will be further exposed by adding build options. |
| |
| Reverts #6809 |
| Closes #7028 |
| |
| - RELEASE-NOTES: synced |
| |
| Viktor Szakats (1 Jun 2021) |
| - travis: delete --enable-hsts option (it is the default now) [ci skip] |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #7167 |
| |
| Daniel Stenberg (1 Jun 2021) |
| - hostip: fix 3 coverity complaints |
| |
| Follow-up to 1a0ebf6632f889eed |
| |
| - Check the return code to Curl_inet_pton() in two instances, even |
| though we know the input is valid so the functions won't fail. |
| |
| - Clear the 'struct sockaddr_in' struct before use so that the |
| 'sin_zero' field isn't left uninitialized. |
| |
| Detected by Coverity. |
| Assisted-by: Harry Sintonen |
| Closes #7163 |
| |
| - c-hyper: fix NTLM on closed connection tested with test159 |
| |
| Closes #7154 |
| |
| - conncache: lowercase the hash key for better match |
| |
| As host names are case insensitive, the use of case sensitive hashing |
| caused unnecesary cache misses and therefore lost performance. This |
| lowercases the hash key. |
| |
| Reported-by: Harry Sintonen |
| Fixes #7159 |
| Closes #7161 |
| |
| - mbedtls: make mbedtls_strerror always work |
| |
| If the function doesn't exist, provide a macro that just clears the |
| error message. Removes #ifdef uses from the code. |
| |
| Closes #7162 |
| |
| - vtls: exit addsessionid if no cache is inited |
| |
| Follow-up to b249592d29ae0 |
| |
| Avoids NULL pointer derefs. |
| |
| Closes #7165 |
| |
| - [Harry Sintonen brought this change] |
| |
| Curl_ntlm_core_mk_nt_hash: fix OOM in error path |
| |
| Closes #7164 |
| |
| Michael Kaufmann (1 Jun 2021) |
| - ssl: read pending close notify alert before closing the connection |
| |
| This avoids a TCP reset (RST) if the server initiates a connection |
| shutdown by sending an SSL close notify alert and then closes the TCP |
| connection. |
| |
| For SSL connections, usually the server announces that it will close the |
| connection with an SSL close notify alert. curl should read this alert. |
| If curl does not read this alert and just closes the connection, some |
| operating systems close the TCP connection with an RST flag. |
| |
| See RFC 1122, section 4.2.2.13 |
| |
| If curl reads the close notify alert, the TCP connection is closed |
| normally with a FIN flag. |
| |
| The new code is similar to existing code in the "SSL shutdown" function: |
| try to read an alert (non-blocking), and ignore any read errors. |
| |
| Closes #7095 |
| |
| Daniel Stenberg (1 Jun 2021) |
| - [Laurent Dufresne brought this change] |
| |
| setopt: fix incorrect comments |
| |
| Closes #7157 |
| |
| - [Laurent Dufresne brought this change] |
| |
| mbedtls: add support for cert and key blob options |
| |
| CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB weren't usable with |
| mbedtls backend, so the support was added. |
| |
| Closes #7157 |
| |
| - [Gregor Jasny brought this change] |
| |
| cmake: try well-known send/recv signature for Apple |
| |
| The CMake `try_compile` command is especially slow for |
| the Xcode generator. With this patch applied it first tests |
| for the currently used (and Open Group specified) send/recv |
| signature. In case this fails testing falls-back to the |
| permutations. |
| |
| speed-up: |
| |
| ``` |
| time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF |
| before: 11.64s user 11.09s system 55% cpu 40.754 total |
| after: 7.84s user 6.57s system 51% cpu 28.074 total |
| ``` |
| |
| ``` |
| time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF |
| before: 217.07s user 104.15s system 60% cpu 8:51.79 total |
| after: 108.76s user 51.80s system 58% cpu 4:32.58 total |
| ``` |
| |
| Closes #7158 |
| |
| - http2: init recvbuf struct for pushed streams |
| |
| Debug builds would warn that these structs were not initialized properly |
| for pushed streams. |
| |
| Ref: #7148 |
| Closes #7153 |
| |
| - Curl_ssl_getsessionid: fail if no session cache exists |
| |
| This function might get called for an easy handle for which the session |
| cache hasn't been setup. It now just returns a "miss" in that case. |
| |
| Reported-by: Christoph M. Becker |
| Fixes #7148 |
| Closes #7153 |
| |
| - GOVERNANCE: add 'user', 'committer' and 'contributor' |
| |
| As those are commonly used terms in the project. |
| |
| Closes #7151 |
| |
| - URL-SYNTAX.md: document the new 'localhost' treatment |
| |
| - hostip: make 'localhost' return fixed values |
| |
| Resolving the case insensitive host name 'localhost' now returns the |
| addresses 127.0.0.1 and (if IPv6 is enabled) ::1 without using any |
| resolver. |
| |
| This removes the risk that users accidentally resolves 'localhost' to |
| something else. By making sure 'localhost' is always local, we can |
| assume a "secure context" for such transfers (for cookies etc). |
| |
| Closes #7039 |
| |
| Daniel Gustafsson (31 May 2021) |
| - docs: fix typos |
| |
| Daniel Stenberg (30 May 2021) |
| - hsts: ignore numberical IP address hosts |
| |
| Also, use a single function library-wide for detecting if a given hostname is |
| a numerical IP address. |
| |
| Reported-by: Harry Sintonen |
| Fixes #7146 |
| Closes #7149 |
| |
| - test178: adjust for hyper |
| |
| Hyper returns the same error for wrong HTTP version as for negative |
| content-length. Test 178 verifies that negative content-length is |
| rejected but the hyper backend will return a different error for it (and |
| without any helpful message telling why the message was bad). It will |
| also not return any headers at all for the response, not even the ones |
| that arrived before the error. |
| |
| Closes #7147 |
| |
| - HYPER: remove mentions of deprecated development branch |
| |
| - c-hyper: handle NULL from hyper_buf_copy() |
| |
| Closes #7143 |
| |
| - HSTS: not experimental anymore |
| |
| - [Douglas R. Reno brought this change] |
| |
| INSTALL: use correct extension for CURL-DISABLE.md |
| |
| In INSTALL.MD, it's currently set to CURL-DISABLE-md instead of |
| CURL-DISABLE.md. This generates a 404 on the cURL website as well as |
| when viewing the docs through Github. |
| |
| Closes #7142 |
| |
| - travis: run tests 1 - 153 with hyper |
| |
| - c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL |
| |
| Makes test 129 work (HTTP/1.2 response). |
| |
| Closes #7141 |
| |
| - http_proxy: deal with non-200 CONNECT response with Hyper |
| |
| Makes test 94 and 95 work |
| |
| Closes #7141 |
| |
| - c-hyper: clear NTLM auth buffer when request is issued |
| |
| To prevent previous ones to get reused on subsequent requests. Matches |
| how the built-in HTTP code works. Makes test 90 to 93 work. |
| |
| Add test 90 to 93 in travis. |
| |
| Closes #7139 |
| |
| - [Joel Depooter brought this change] |
| |
| schannel: set ALPN length correctly for HTTP/2 |
| |
| In a3268eca792f1 this code was changed to use the ALPN_H2 constant |
| instead of the NGHTTP2_PROTO_ALPN constant. However, these constants are |
| not the same. The nghttp2 constant included the length of the string, |
| like this: "\x2h2". The ALPN_H2 constant is just "h2". Therefore we need |
| to re-add the length of the string to the ALPN buffer. |
| |
| Closes #7138 |
| |
| - travis: run tests 1-89 in the hyper build |
| |
| Closes #7137 |
| |
| - Revert "c-hyper: handle body on HYPER_TASK_EMPTY" |
| |
| This reverts commit c3eefa95c31f55657f0af422e8268d738f689066. |
| |
| Reported-by: Kevin Burke |
| Fixes #7122 |
| Closes #7136 |
| |
| - [Jon Rumsey brought this change] |
| |
| ccsidcurl: fix the compile errors |
| |
| Looks like the declaration of cpp shoule be const char ** and return |
| null if convert_version_info_string fails. |
| |
| Fixes #7134 |
| Closes #7135 |
| |
| - [Viktor Szakats brought this change] |
| |
| docs: use --max-redirs instead of --max-redir |
| |
| For consistency. |
| |
| Closes #7130 |
| |
| - RELEASE-NOTES: synced |
| |
| ... and bump to 7.77.1 |
| |
| - [Michael Forney brought this change] |
| |
| travis: add bearssl build |
| |
| Closes #7133 |
| |
| - [Michael Forney brought this change] |
| |
| bearssl: explicitly initialize all fields of Curl_ssl |
| |
| Also, add comments like the other vtls backends. |
| |
| Closes #7133 |
| |
| - [Michael Forney brought this change] |
| |
| bearssl: remove incorrect const on variable that is modified |
| |
| hostname may be set to NULL later on in this function if it is an |
| IP address. |
| |
| Closes #7133 |
| |
| Version 7.77.0 (26 May 2021) |
| |
| Daniel Stenberg (26 May 2021) |
| - RELEASE-NOTES: synced |
| |
| - THANKS: added contributors from 7.77.0 cycle |
| |
| - copyright: update copyright year ranges to 2021 |
| |
| - [Radek Zajic brought this change] |
| |
| hostip: fix broken macOS/CMake/GCC builds |
| |
| Follow-up to 31f631a142d855f06 |
| |
| Fixes #7128 |
| Closes #7129 |
| |
| - TODO: netrc caching and sharing |
| |
| URL: https://curl.se/mail/archive-2021-05/0018.html |
| |
| - [Orgad Shaneh brought this change] |
| |
| setopt: streamline ssl option code |
| |
| Make it use the same style as the code next to it |
| |
| Closes #7123 |
| |
| - [Radek Zajic brought this change] |
| |
| lib/hostip6.c: make NAT64 address synthesis on macOS work |
| |
| Closes #7121 |
| |
| - [ejanchivdorj brought this change] |
| |
| sectransp: fix EXC_BAD_ACCESS caused by uninitialized buffer |
| |
| When the SecCertificateCopyCommonName function fails, it leaves |
| common_name in a invalid state so CFStringCompare uses the invalid |
| result, causing EXC_BAD_ACCESS. |
| |
| The fix is to check the return value of the function before using the |
| name. |
| |
| Closes #7126 |
| |
| - [Paweł Wegner brought this change] |
| |
| CMake: add CURL_ENABLE_EXPORT_TARGET option |
| |
| install(EXPORT ...) causes trouble when embedding curl dependencies |
| which don't provide install(EXPORT ...) targets (e.g libressl and |
| nghttp2) with cmake's add_subdirectory. |
| |
| Reviewed-by: Jakub Zakrzewski |
| Closes #7060 |
| |
| - [Alessandro Ghedini brought this change] |
| |
| quiche: update for network path aware API |
| |
| Latest version of quiche requires the application to pass the peer |
| address of received packets, and it provides the address for outgoing |
| packets back. |
| |
| Closes #7120 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| rustls: switch read_tls and write_tls to callbacks |
| |
| And update to 0.6.0, including a rename from session to connection for |
| many fields. |
| |
| Closes #7071 |
| |
| - [Koichi Shiraishi brought this change] |
| |
| sectransp: fix 7f4a9a9b2a49 commit about missing comma |
| |
| Follow-up to 7f4a9a9b2a495 |
| |
| Closes #7119 |
| |
| - [Harry Sintonen brought this change] |
| |
| openssl: associate/detach the transfer from connection |
| |
| CVE-2021-22901 |
| |
| Bug: https://curl.se/docs/CVE-2021-22901.html |
| |
| - [Harry Sintonen brought this change] |
| |
| telnet: check sscanf() for correct number of matches |
| |
| CVE-2021-22898 |
| |
| Bug: https://curl.se/docs/CVE-2021-22898.html |
| |
| - schannel: don't use static to store selected ciphers |
| |
| CVE-2021-22897 |
| |
| Bug: https://curl.se/docs/CVE-2021-22897.html |
| |
| - docs/tests: remove freenode references |
| |
| - RELEASE-NOTES: synced |
| |
| - [Sergey Markelov brought this change] |
| |
| NSS: make colons, commas and spaces valid separators in cipher list |
| |
| Fixes #7110 |
| Closes #7115 |
| |
| - curl: include libmetalink version in --version output |
| |
| Closes #7112 |
| |
| Jay Satiro (21 May 2021) |
| - [Matias N. Goldberg brought this change] |
| |
| cmake: Use multithreaded compilation on VS 2008+ |
| |
| Multithreaded compilation has been supported since at least VS 2005 and |
| been robustly stable since at least VS 2008 |
| |
| Closes https://github.com/curl/curl/pull/7109 |
| |
| Daniel Stenberg (21 May 2021) |
| - [Matias N. Goldberg brought this change] |
| |
| cmake: fix two invokes result in different curl_config.h |
| |
| Fixes #7100 |
| Closes #7101 |
| |
| Reviewed-by: Jakub Zakrzewski |
| Signed-off-by: Matias N. Goldberg <[email protected]> |
| |
| - [Peng-Yu Chen brought this change] |
| |
| cmake: detect CURL_SA_FAMILY_T |
| |
| Fixes #7049 |
| Closes #7065 |
| |
| - [Lucas Clemente Vella brought this change] |
| |
| CURLOPT_IPRESOLVE: preventing wrong IP version from being used |
| |
| In some situations, it was possible that a transfer was setup to |
| use an specific IP version, but due do DNS caching or connection |
| reuse, it ended up using a different IP version from requested. |
| |
| This commit changes the effect of CURLOPT_IPRESOLVE from simply |
| restricting address resolution to preventing the wrong connection |
| type being used, when choosing a connection from the pool, and |
| to restricting what addresses could be used when establishing |
| a new connection. |
| |
| It is important that all addresses versions are resolved, even if |
| not used in that transfer in particular, because the result is |
| cached, and could be useful for a different transfer with a |
| different CURLOPT_IPRESOLVE setting. |
| |
| Closes #6853 |
| |
| - [Oliver Urbann brought this change] |
| |
| AmigaOS: add functions definitions for SHA256 |
| |
| AmiSSL replaces many functions with macros. Curl requires pointer |
| to some of these functions. Thus, we have to encapsulate these macros: |
| SHA256_Init, SHA256_Update, SHA256_Final, X509_INFO_free. |
| |
| Bug: https://github.com/jens-maus/amissl/issues/15 |
| Co-authored-by: Daniel Stenberg <[email protected]> |
| |
| Closes #7099 |
| |
| - test2100: make it run with and require IPv6 |
| |
| Closes #7083 |
| |
| - tests/getpart: generate output URL encoded for better diffs |
| |
| Closes #7083 |
| |
| - [Ryan Beck-Buysse brought this change] |
| |
| docs/TheArtOfHttpScripting: fix markdown links |
| |
| extra parens cause the links to be incorrectly formatted |
| and inconsistent with the rest of the document. |
| |
| Signed-off-by: Ryan Beck-Buysse <[email protected]> |
| Closes #7097 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Emil Engler brought this change] |
| |
| docs: replace dots with dashes in markdown enums |
| |
| We use dashes instead of dots nearly everywhere except for those few |
| cases. This commit addresses this issues and brings more coherency into |
| it. |
| |
| Closes #7093 |
| |
| - [Emil Engler brought this change] |
| |
| docs: improve INTERNALS.md regarding getsock cb |
| |
| This adds the I/O prefix to indicate that those "actions" are kind-of |
| related to those found in select(2) or poll(2) (reading/writing). |
| |
| It also adds a note where the prototypes of those functions can be found |
| in the source code. |
| |
| Closes #7092 |
| |
| - [Emil Engler brought this change] |
| |
| docs: document attach in INTERNALS.md |
| |
| The new field in the Curl_handler struct still lacks documentation. This |
| adds it it from the information extracted from lib/urldata.h:797 |
| |
| Closes #7091 |
| |
| - [Marc Aldorasi brought this change] |
| |
| config: remove now-unused macros |
| |
| Closes #7094 |
| |
| - [Marc Aldorasi brought this change] |
| |
| hostip.h: remove declaration of unimplemented function |
| |
| Closes #7094 |
| |
| - h3: add 'attach' callback to protocol handlers |
| |
| Follow-up to 0c55fbab45be |
| |
| Reviewed-by: Emil Engler |
| Closes #7090 |
| |
| - wolfssl: remove SSLv3 support leftovers |
| |
| Closes #7088 |
| |
| - curl-wolfssl.m4: without custom include path, assume /usr/include |
| |
| ... so that we can point out the root of the OpenSSL emulation headers. |
| Previously this used the '$includedir' variable which is wrong since |
| that defaults to the dir where the current configure invoke will install |
| the built libcurl headers: /usr/local by default. |
| |
| Fixes #7085 |
| Reported-by: Joel Jakobsson |
| Closes #7087 |
| |
| - [Joel Depooter brought this change] |
| |
| data_pending: check only SECONDARY socket for FTP(S) transfers |
| |
| Check the FIRST for all other protocols. |
| |
| This fixes a timeout in an ftps download. The server sends a TLS |
| close_notify message in the same packet as the file data. The |
| close_notify seems to not be handled in the schannel_recv function, so |
| libcurl is not aware that the server has closed the connection. Thus |
| libcurl ends up waiting for action on the socket until a timeout is |
| reached. With the secondary socket check added to the data_pending |
| function, the close_notify is properly handled, and the ftps transfer |
| terminates as expected. |
| |
| Fixes #7068 |
| Closes #7069 |
| |
| - github: inhibit deprecated declarations for clang on macOS |
| |
| ... as they otherwise cause ldap build errors in the CI. |
| |
| Fixes #7081 |
| Closes #7082 |
| |
| - conn: add 'attach' to protocol handler, make libssh2 use it |
| |
| The libssh2 backend has SSH session associated with the connection but |
| the callback context is the easy handle, so when a connection gets |
| attached to a transfer, the protocol handler now allows for a custom |
| function to get used to set things up correctly. |
| |
| Reported-by: Michael O'Farrell |
| Fixes #6898 |
| Closes #7078 |
| |
| - http2: make sure pause is done on HTTP |
| |
| Since the function is called for any protocol, we can't assume that the |
| HTTP struct is there without first making sure it is HTTP. |
| |
| Reported-by: Denis Goleshchikhin |
| Fixes #7079 |
| Closes #7080 |
| |
| - docs: cookies from HTTP headers need domain set |
| |
| ... or the cookies won't get sent. Push users to using the "Netscape" |
| format instead, which curl uses when saving a cookie "jar". |
| |
| Reported-by: Martin Dorey |
| Reviewed-by: Daniel Gustafsson |
| Fixes #6723 |
| Closes #7077 |
| |
| - RELEASE-NOTES: synced |
| |
| - github: add a workflow with libssh2 on macOS using cmake |
| |
| Closes #7047 |
| |
| - sws: allow HTTP requests up to 2MB in size |
| |
| To allow tests with slightly larger payloads. Like #7071 ... |
| |
| Closes #7075 |
| |
| Marc Hoersken (16 May 2021) |
| - CI/azure: increase verbosity and fix outdated task names |
| |
| Closes #7063 |
| |
| - CI/cirrus: add shared and static Windows release builds |
| |
| Azure Pipelines is currently being used for debug builds, |
| let's also run some non-debug (release) Windows builds and |
| make use of previously underutilized Cirrus CI for that. |
| |
| Reviewed-by: Marcel Raad |
| |
| Closes #6991 |
| |
| Daniel Stenberg (16 May 2021) |
| - CURLOPT_CAPATH.3: defaults to a path, not NULL |
| |
| Reported-by: Andrew Barnert |
| |
| Closes #7062 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| c-hyper: handle body on HYPER_TASK_EMPTY |
| |
| Some of the time, we get a HYPER_TASK_EMPTY response before the status |
| line, headers, and body have been read. Previously, that would cause us |
| to poll again, leading to a 1 second timeout. |
| |
| The HYPER_TASK_EMPTY docs say: |
| |
| The value of this task is null (does not imply an error). |
| |
| So, if we receive a HYPER_TASK_EMPTY, continue on with processing the |
| response. |
| |
| Reported-by: Kevin Burke |
| Fixes #7064 |
| Closes #7070 |
| |
| - [Ikko Ashimine brought this change] |
| |
| tool_getparam: fix comment typo in tool_getparam.c |
| |
| enfore -> enforce |
| |
| Closes #7074 |
| |
| - mem-include-scan.pl: require a non-word letter before memory funcs |
| |
| ... so that ldap_memfree() for example doesn't match the scan for free. |
| |
| Closes #7061 |
| |
| - version: free the openldap info correctly |
| |
| ... to avoid memory leaks. |
| |
| Follow-up to: bf0feae7768d9 |
| Closes #7061 |
| |
| - dupset: remove totally off comment |
| |
| Closes #7067 |
| |
| - configure: if asked for, fail if ldap is not found |
| |
| Reported-by: Jakub Zakrzewski |
| Fixes #7053 |
| Closes #7055 |
| |
| - version: add OpenLDAP version in the output |
| |
| Assisted-by: Howard Chu |
| Closes #7054 |
| |
| Jay Satiro (13 May 2021) |
| - [Joel Depooter brought this change] |
| |
| schannel: Ensure the security context request flags are always set |
| |
| As of commit 54e7475, these flags would only be set when using a new |
| credential handle. When re-using an existing credential handle, the |
| flags would not be set. |
| |
| Closes https://github.com/curl/curl/pull/7051 |
| |
| Dan Fandrich (12 May 2021) |
| - tests: Fix some tag matching issues in a number of tests |
| |
| Daniel Stenberg (12 May 2021) |
| - sasl: use 'unsigned short' to store mechanism |
| |
| ... saves a few bytes of struct size in memory and it only uses |
| 10 bits anyway. |
| |
| Closes #7045 |
| |
| - hostip: remove the debug code for LocalHost |
| |
| The Curl_resolv() had special code (when built in debug mode) for when |
| resolving the host name "LocalHost" (using that exact casing). It would |
| then get the host name from the --interface option instead. |
| |
| This development-only feature was not used by anything (anymore) and we |
| have the --resolve feature if we want to play similar tricks properly |
| going forward. |
| |
| Closes #7044 |
| |
| - progress: reset limit_size variables at transfer start |
| |
| Otherwise the old value would linger from a previous use and would mess |
| up the network speed cap logic. |
| |
| Reported-by: Ymir1711 on github |
| |
| Fixes #7042 |
| Closes #7043 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Daniel Gustafsson brought this change] |
| |
| cookies: use CURLcode for cookie_output reporting |
| |
| Writing the cookie file has multiple error conditions, and was using an |
| int with magic numbers to report the different error (which in turn were |
| disregarded anyways). This moves reporting to use a CURLcode value. |
| |
| Lightly-touched-by: Daniel Stenberg |
| |
| Closes #7037 |
| Closes #6749 |
| |
| - [Daniel Gustafsson brought this change] |
| |
| cookies: make use of string duplication function |
| |
| strstore() is defined as a strdup which ensures to free the target |
| pointer before duping the source char * into it. Make use of it in |
| two more cases where it can simplify the code. |
| |
| - [Daniel Gustafsson brought this change] |
| |
| cookies: refactor comments |
| |
| Comments in the cookie code were a bit all over the place in terms of |
| style and wording. This takes a stab at cleaning them up by keeping to |
| a single style and overall shape. Some comments are moved a little and |
| some removed alltogether due to being redundant. No functional changes |
| have been made, |
| |
| - [Peng-Yu Chen brought this change] |
| |
| http2: skip immediate parsing of payload following protocol switch |
| |
| This is considered not harmful as a following http2_recv shall be |
| called very soon. |
| |
| This is considered helpful in the specific situation where some |
| servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately |
| following the return of HTTP status 101, other than waiting for |
| the client-side connection preface to arrive. |
| |
| Fixes #7036 |
| Closes #7040 |
| |
| - [Peng-Yu Chen brought this change] |
| |
| http2: use nghttp2_session_upgrade2 instead of nghttp2_session_upgrade |
| |
| Following the upstream deprecation of nghttp2_session_upgrade. |
| |
| Also provides further checks for requests with the HEAD method. |
| |
| Closes #7041 |
| |
| - progress/trspeed: use a local convenient pointer to beautify code |
| |
| The function becomes easier to read and understand with less repetition. |
| |
| - trspeed: use long double for transfer speed calculation |
| |
| - progress: move transfer speed calc into function |
| |
| This silences two scan-build-11 warnings: "The result of the '/' |
| expression is undefined" |
| |
| Bug: https://curl.se/mail/lib-2021-05/0022.html |
| Closes #7035 |
| |
| - [Cameron Cawley brought this change] |
| |
| openssl: remove unneeded cast for CertOpenSystemStore() |
| |
| Closes #7025 |
| |
| - travis: disable the libssh build |
| |
| It can't run on focal and causes warnings on bionic. Since the focal |
| failure started rather suddenly a while ago, we can suspect it might be |
| temporary. |
| |
| Added "bring back the build" to the TODO document. |
| |
| Fixes #7011 |
| Closes #7012 |
| |
| - [Peng-Yu Chen brought this change] |
| |
| http: use calculated offsets inst of integer literals for header parsing |
| |
| Assumed to be a minor coding style improvement with no behavior change. |
| |
| A modern compiler is expected to have the calculation optimized during |
| compilation. It may be deemed okay even if that's not the case, since |
| the added overhead is considered very low. |
| |
| Closes #7032 |
| |
| - [Peng-Yu Chen brought this change] |
| |
| GIT-INFO: suggest using autoreconf instead of buildconf |
| |
| Follow-up to 85868537d |
| |
| Closes #7033 |
| |
| - http: deal with partial CONNECT sends |
| |
| Also added 'CURL_SMALLSENDS' to make Curl_write() send short packets, |
| which helped verifying this even more. |
| |
| Add test 363 to verify. |
| |
| Reported-by: ustcqidi on github |
| Fixes #6950 |
| Closes #7024 |
| |
| - HTTP3: make the ngtcp2 build use the quictls fork |
| |
| ... as ngtcp2 itself documents the build this way. |
| |
| Closes #7031 |
| |
| - http: limit the initial send amount to used upload buffer size |
| |
| Previously this logic would cap the send to CURL_MAX_WRITE_SIZE bytes, |
| but for the situations where a larger upload buffer has been set, this |
| function can benefit from sending more bytes. With default size used, |
| this does the same as before. |
| |
| Also changed the storage of the size to an 'unsigned int' as it is not |
| allowed to be set larger than 2M. |
| |
| Also added cautions to the man pages about changing buffer sizes in |
| run-time. |
| |
| Closes #7022 |
| |
| - RELEASE-NOTES: synced |
| |
| - ngtcp2: fix the cb_acked_stream_data_offset proto |
| |
| The 'datalen' value should be 64 bit, not size_t! |
| |
| Reported-by: Dmitry Karpov |
| Bug: https://curl.se/mail/lib-2021-05/0019.html |
| Closes #7027 |
| |
| - progress: when possible, calculate transfer speeds with microseconds |
| |
| ... this improves precision, especially for transfers in the few or even |
| sub millisecond range. |
| |
| Reported-by: J. Bromley |
| Fixes #7017 |
| Closes #7020 |
| |
| - http: reset the header buffer when sending the request |
| |
| A reused transfer handle could otherwise reuse the previous leftover |
| buffer and havoc would ensue. |
| |
| Reported-by: sergio-nsk on github |
| Fixes #7018 |
| Closes #7021 |
| |
| - curl_mprintf.3: add description |
| |
| These functions have existed in the API since the dawn of time. It is |
| about time we describe how they work, even if we discourage users from |
| using them. |
| |
| Closes #7010 |
| |
| - [Timothy Gu brought this change] |
| |
| URL-SYNTAX: update IDNA section for WHATWG spec changes |
| |
| WHATWG URL has dictated the use of Nontransitional Processing (IDNA |
| 2008) for several years now. Chrome (and derivatives) still use |
| Transitional Processing, but Firefox and Safari have both switched. |
| |
| Also document the fact that winidn functions differently from libidn2 |
| here. |
| |
| Closes #7026 |
| |
| - [Calvin Buckley brought this change] |
| |
| INSTALL: add IBM i specific quirks |
| |
| Fixes #6830 |
| Closes #7013 |
| |
| - libcurl.3: mention the URL API |
| |
| To make it easier to find. Also a minor polish of libcurl-url.3 |
| |
| Closes #7009 |
| |
| - GnuTLS: don't allow TLS 1.3 for versions that don't support it |
| |
| Follow-up to 781864bedbc5 |
| |
| ... as they don't understand it and will return error at us! |
| |
| Closes #7014 |
| |
| Kamil Dudka (6 May 2021) |
| - tool_getparam: handle failure of curlx_convert_tchar_to_UTF8() |
| |
| Reported by GCC analyzer: |
| |
| Error: GCC_ANALYZER_WARNING (CWE-476): |
| src/tool_getparam.c: scope_hint: In function 'parse_args' |
| src/tool_getparam.c:2318:38: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 'orig_opt' |
| lib/curlx.h:56: included_from: Included from here. |
| src/tool_getparam.c:28: included_from: Included from here. |
| lib/curl_multibyte.h:70:51: note: in definition of macro 'curlx_convert_tchar_to_UTF8' |
| src/tool_getparam.c:2316:16: note: in expansion of macro 'curlx_convert_tchar_to_UTF8' |
| |
| Reviewed-by: Marcel Raad |
| Reviewed-by: Daniel Stenberg |
| Closes #7023 |
| |
| Daniel Stenberg (6 May 2021) |
| - scripts/delta: also show total number of days |
| |
| Marc Hoersken (5 May 2021) |
| - sockfilt: fix invalid increment of handles index variable nfd |
| |
| Only increment the array index if we actually stored a handle. |
| |
| Follow up to e917492048f4b85a0fd58a033d10072fc7666c3b |
| Closes #6992 |
| |
| - sockfilt: avoid getting stuck waiting for writable socket |
| |
| Reset FD_WRITE event using the same approach as in multi.c |
| |
| Follow up to b36442b24305f3cda7c13cc64b46838995a4985b |
| Closes #6992 |
| |
| Jay Satiro (5 May 2021) |
| - test678: Fix for Windows multibyte builds |
| |
| Follow-up to 77fc385 from yesterday. |
| |
| Bug: https://github.com/curl/curl/pull/6662#issuecomment-832966557 |
| Reported-by: Marc Hörsken |
| |
| - [Dmitry Kostjuchenko brought this change] |
| |
| build: fix compilation for Windows UWP platform |
| |
| - Include afunix.h which is necessary for sockaddr_un when |
| USE_UNIX_SOCKETS is defined on Windows. |
| |
| Closes https://github.com/curl/curl/pull/7006 |
| |
| Daniel Stenberg (5 May 2021) |
| - gnutls: make setting only the MAX TLS allowed version work |
| |
| Previously, settting only the max allowed TLS version, leaving the |
| minimum one at default, didn't actually set it and left it to default |
| (TLS 1.3) too! |
| |
| As a bonus, this change also removes the dead code handling of SSLv3 |
| since that version can't be set anymore (since eff614fb0242cb). |
| |
| Reported-by: Daniel Carpenter |
| Fixes #6998 |
| Closes #7000 |
| |
| - openldap: replace ldap_ prefix on private functions |
| |
| Since openldap itself uses that prefix and with OpenĹDAP 2.5.4 (at |
| least) there's a symbol collision because of that. |
| |
| The private functions now use the 'oldap_' prefix where it previously |
| used 'ldap_'. |
| |
| Reported-by: 3eka on github |
| Fixes #7004 |
| Closes #7005 |
| |
| Jay Satiro (5 May 2021) |
| - http2: fix potentially uninitialized variable |
| |
| introduced several days ago in 3193170. caught by visual studio linker. |
| |
| - [Gilles Vollant brought this change] |
| |
| SSL: support in-memory CA certs for some backends |
| |
| - New options CURLOPT_CAINFO_BLOB and CURLOPT_PROXY_CAINFO_BLOB to |
| specify in-memory PEM certificates for OpenSSL, Schannel (Windows) |
| and Secure Transport (Apple) SSL backends. |
| |
| Prior to this change PEM certificates could only be imported from a file |
| and not from memory. |
| |
| Co-authored-by: [email protected] |
| |
| Ref: https://github.com/curl/curl/pull/4679 |
| Ref: https://github.com/curl/curl/pull/5677 |
| Ref: https://github.com/curl/curl/pull/6109 |
| |
| Closes https://github.com/curl/curl/pull/6662 |
| |
| Daniel Stenberg (4 May 2021) |
| - [David Cook brought this change] |
| |
| tests: ignore case of chunked hex numbers in tests |
| |
| When hyper is used, it emits uppercase hexadecimal numbers for chunked |
| encoding lengths. Without hyper, lowercase hexadecimal numbers are used. |
| This change adds preprocessor statements to tests where this is an |
| issue, and adapts the fixtures to match. |
| |
| Closes #6987 |
| |
| - cmake: check for getppid and utimes |
| |
| ... as they're checked for in the configure script and are used by |
| source code. |
| |
| Removed checks for perror, setvbuf and strlcat since those defines are |
| not checked for in source code. |
| |
| Bonus: removed HAVE_STRLCPY from a few config-*.h files since that |
| symbol is not used in source code. |
| |
| Closes #6997 |
| |
| - libtest: remove lib530.c |
| |
| Follow up from e50a877df when test 530 was removed. Since then this |
| source file has not been used/needed. |
| |
| Closes #6999 |
| |
| - FILEFORMAT: mention sectransp as a feature |
| |
| Been supported since at least 40259ca65 |
| |
| Closes #7001 |
| |
| - RELEASE-NOTES: synced |
| |
| - libssh2: ignore timeout during disconnect |
| |
| ... to avoid memory leaks! |
| |
| libssh2 is tricky as we have to deal with the non-blockiness even in |
| close and shutdown cases. In the cases when we shutdown after a timeout |
| already expired, it is crucial that curl doen't let the timeout abort |
| the shutdown process as that then leaks memory! |
| |
| Reported-by: Benjamin Riefenstahl |
| Fixes #6990 |
| |
| - KNOWN_BUGS: add two HTTP/2 bugs |
| |
| - KNOWN_BUGS: add three HTTP/3 issues |
| |
| ... and moved the HTTP/2 issues to its own section |
| |
| Closes #6606 |
| Closes #6510 |
| Closes #6494 |
| |
| - [ejanchivdorj brought this change] |
| |
| CURLcode: add CURLE_SSL_CLIENTCERT |
| |
| When a TLS server requests a client certificate during handshake and |
| none can be provided, libcurl now returns this new error code |
| CURLE_SSL_CLIENTCERT |
| |
| Only supported by Secure Transport and OpenSSL for TLS 1.3 so far. |
| |
| Closes #6721 |
| |
| - [Tobias Gabriel brought this change] |
| |
| .github/FUNDING: add link to GitHub sponsors |
| |
| Closes #6985 |
| |
| - [Harry Sintonen brought this change] |
| |
| krb5/name_to_level: replace checkprefix with curl_strequal |
| |
| Closes #6993 |
| |
| - [Harry Sintonen brought this change] |
| |
| Curl_input_digest: require space after Digest |
| |
| Closes #6993 |
| |
| - [Harry Sintonen brought this change] |
| |
| Curl_http_header: check for colon when matching Persistent-Auth |
| |
| Closes #6993 |
| |
| - [Harry Sintonen brought this change] |
| |
| Curl_http_input_auth: require valid separator after negotiation type |
| |
| Closes #6993 |
| |
| - http: fix the check for 'Authorization' with Bearer |
| |
| The code would wrongly check for it using an additional colon. |
| |
| Reported-by: Blake Burkhart |
| Closes #6988 |
| |
| - [Kamil Dudka brought this change] |
| |
| http2: fix a resource leak in push_promise() |
| |
| ... detected by Coverity: |
| |
| Error: RESOURCE_LEAK (CWE-772): |
| lib/http2.c:532: alloc_fn: Storage is returned from allocation function "duphandle". |
| lib/http2.c:532: var_assign: Assigning: "newhandle" = storage returned from "duphandle(data)". |
| lib/http2.c:552: noescape: Resource "newhandle" is not freed or pointed-to in "set_transfer_url". |
| lib/http2.c:555: leaked_storage: Variable "newhandle" going out of scope leaks the storage it points to. |
| |
| Closes #6986 |
| |
| - [Kamil Dudka brought this change] |
| |
| http2: fix resource leaks in set_transfer_url() |
| |
| ... detected by Coverity: |
| |
| Error: RESOURCE_LEAK (CWE-772): |
| lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()". |
| lib/http2.c:486: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:488: leaked_storage: Variable "u" going out of scope leaks the storage it points to. |
| |
| Error: RESOURCE_LEAK (CWE-772): |
| lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()". |
| lib/http2.c:493: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:495: leaked_storage: Variable "u" going out of scope leaks the storage it points to. |
| |
| Error: RESOURCE_LEAK (CWE-772): |
| lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()". |
| lib/http2.c:500: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:502: leaked_storage: Variable "u" going out of scope leaks the storage it points to. |
| |
| Error: RESOURCE_LEAK (CWE-772): |
| lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()". |
| lib/http2.c:505: noescape: Resource "u" is not freed or pointed-to in "curl_url_get". [Note: The source code implementation of the function has been overridden by a builtin model.] |
| lib/http2.c:507: leaked_storage: Variable "u" going out of scope leaks the storage it points to. |
| |
| Closes #6986 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| rustls: use ALPN |
| |
| Update required rustls to 0.5.0 |
| |
| Closes #6960 |
| |
| - [MAntoniak brought this change] |
| |
| gskit: fix CURL_DISABLE_PROXY build |
| |
| Removed localfd and remotefd from ssl_backend_data (ued only with proxy |
| connection). Function pipe_ssloverssl return always 0, when proxy is not |
| used. |
| |
| Closes #6981 |
| |
| - [MAntoniak brought this change] |
| |
| gskit: fix undefined reference to 'conn' |
| |
| Closes #6980 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| tls: add USE_HTTP2 define |
| |
| This abstracts across the two HTTP/2 backends: nghttp2 and Hyper. |
| |
| Add our own define for the "h2" ALPN protocol, so TLS backends can use |
| it without depending on a specific HTTP backend. |
| |
| Closes #6959 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| lib: fix 0-length Curl_client_write calls |
| |
| Closes #6954 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| lib: remove strlen call from Curl_client_write |
| |
| At all call sites with an explicit 0 len, pass an appropriate nonzero |
| len. |
| |
| Closes #6954 |
| |
| - [Ayushman Singh Chauhan brought this change] |
| |
| docs: camelcase it like GitHub everywhere |
| |
| Closes #6979 |
| |
| Jay Satiro (27 Apr 2021) |
| - [Lucas Servén Marín brought this change] |
| |
| docs: fix typo in fail-with-body doc |
| |
| This commit fixes a small typo in the documentation for the |
| --fail-with-body flag. |
| |
| Closes https://github.com/curl/curl/pull/6977 |
| |
| - lib: fix some misuse of curlx_convert_UTF8_to_tchar |
| |
| curlx_convert_UTF8_to_tchar must be freed by curlx_unicodefree, but |
| prior to this change some uses mistakenly called free. |
| |
| I've reviewed all other uses of curlx_convert_UTF8_to_tchar and |
| curlx_convert_tchar_to_UTF8. |
| |
| Bug: https://github.com/curl/curl/pull/6602#issuecomment-825236763 |
| Reported-by: [email protected] |
| |
| Closes https://github.com/curl/curl/pull/6938 |
| |
| Daniel Stenberg (27 Apr 2021) |
| - ntlm: precaution against super huge type2 offsets |
| |
| ... which otherwise caused an integer overflow and circumvented the if() |
| conditional size check. |
| |
| Detected by OSS-Fuzz |
| Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33720 |
| Assisted-by: Max Dymond |
| Closes #6975 |
| |
| - c-hyper: fix unused variable ‘wrote’ |
| |
| - libcurl-security.3: be careful of setuid |
| |
| Reported-by: Harry Sintonen |
| Closes #6970 |
| |
| - [Kevin Burke brought this change] |
| |
| c-hyper: don't write to set.writeheader if null |
| |
| Previously if a caller set CURLOPT_WRITEFUNCTION but did not set a |
| CURLOPT_HEADERDATA buffer, Hyper would still attempt to write headers to |
| the data->set.writeheader header buffer, even though it is null. This |
| led to NPE segfaults attempting to use libcurl+Hyper with Git, for |
| example. |
| |
| Instead, process the client write for the status line using the same |
| logic we use to process the client write for the later HTTP headers, |
| which contains the appropriate guard logic. As a side benefit, |
| data->set.writeheader is now only read in one file instead of two. |
| |
| Fixes #6619 |
| Fixes abetterinternet/crustls#49 |
| Fixes hyperium/hyper#2438 |
| Closes #6971 |
| |
| - wolfssl: handle SSL_write() returns 0 for error |
| |
| Reported-by: Timo Lange |
| |
| Closes #6967 |
| |
| - easy: ignore sigpipe in curl_easy_send |
| |
| Closes #6965 |
| |
| - sigpipe: ignore SIGPIPE when using wolfSSL as well |
| |
| Closes #6966 |
| |
| - libcurl-security.3: don't try to filter IPv4 hosts based on the URL |
| |
| Closes #6942 |
| |
| - [Harry Sintonen brought this change] |
| |
| nss_set_blocking: avoid static for sock_opt |
| |
| Reviewed-by: Kamil Dudka |
| Closes #6945 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Yusuke Nakamura brought this change] |
| |
| docs/HTTP3.md: fix nghttp2's HTTP/3 server port |
| |
| Port 8443 does not work now. |
| Correct origin is in the quicwg's wiki. |
| https://github.com/quicwg/base-drafts/wiki/Implementations#ngtcp2 |
| |
| Closes #6964 |
| |
| - krb5: don't use 'static' to store PBSZ size response |
| |
| ... because it makes the knowledge and usage cross-transfer in funny and |
| unexpected ways. |
| |
| Reported-by: Harry Sintonen |
| Closes #6963 |
| |
| - [Kevin Burke brought this change] |
| |
| m4: add security frameworks on Mac when compiling rustls |
| |
| Previously compiling rustls on Mac would only complete if you also |
| compiled the SecureTransport TLS backend, which curl would prefer to |
| the Rust backend. |
| |
| Appending these flags to LDFLAGS makes it possible to compile the |
| Rustls backend on Mac without the SecureTransport backend, which means |
| this patch will make it possible for Mac users to use the Rustls |
| backend for TLS. |
| |
| Reviewed-by: Jacob Hoffman-Andrews |
| |
| Fixes #6955 |
| Cloes #6956 |
| |
| - krb5: remove the unused 'overhead' function |
| |
| Closes #6947 |
| |
| - [Johann150 brought this change] |
| |
| curl_url_set.3: add memory management information |
| |
| wording taken from man page for CURLOPT_URL.3 |
| |
| As far as I can see, the URL part is either malloc'ed before due to |
| encoding or it is strdup'ed. |
| |
| Closes #6953 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| c-hpyer: fix handling of zero-byte chunk from hyper |
| |
| Closes #6951 |
| |
| - CURLOPT_POSTFIELDS.3: clarify how it gets the size of the data |
| |
| Ref: https://curl.se/mail/lib-2021-04/0085.html |
| Closes #6943 |
| |
| - [Ralph Langendam brought this change] |
| |
| cmake: make libcurl output filename configurable |
| |
| Reviewed-by: Jakub Zakrzewski |
| Closes #6933 |
| |
| - [Patrick Monnerat brought this change] |
| |
| vtls: reset ssl use flag upon negotiation failure |
| |
| Fixes the segfault in ldaps disconnect. |
| |
| Reported-by: Illarion Taev |
| Fixes #6934 |
| Closes #6937 |
| |
| - configure: fix typo in TLS error message |
| |
| Reported-by: Pontus Lundkvist |
| |
| - README: link to the commercial support option |
| |
| Jay Satiro (22 Apr 2021) |
| - [Martin Halle brought this change] |
| |
| version: add gsasl_version to curl_version_info_data |
| |
| - Add gsasl_version string and bump to CURLVERSION_TENTH. |
| |
| Ref: https://curl.se/mail/lib-2021-04/0003.html |
| |
| Closes https://github.com/curl/curl/pull/6843 |
| |
| - [Morten Minde Neergaard brought this change] |
| |
| schannel: Support strong crypto option |
| |
| - Support enabling strong crypto via optional user cipher list when |
| USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list. |
| |
| MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known |
| weak cryptographic algorithms, cipher suites, and SSL/TLS protocol |
| versions that may be otherwise enabled for better interoperability." |
| |
| Ref: https://curl.se/mail/lib-2021-02/0066.html |
| Ref: https://curl.se/docs/manpage.html#--ciphers |
| Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html |
| Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred |
| |
| Closes https://github.com/curl/curl/pull/6734 |
| |
| Daniel Stenberg (22 Apr 2021) |
| - RELEASE-NOTES: synced |
| |
| - ci: adapt to configure requiring an explicit TLS choice |
| |
| - configure: split out each TLS library detector into its own function |
| |
| ... and put those functions in separate m4 files per TLS library. |
| |
| - configure: make the TLS library choice(s) explicit |
| |
| configure no longer tries to find a TLS library by default, but all |
| libraries are now equal: the user needs to explicitly ask what TLS |
| library or libraries to use. |
| |
| If no TLS library is selected, configure will error out unless |
| --without-ssl is explicitly used to request a built without TLS (as that |
| is very rare these days). |
| |
| Removes: --with-winssl, --with-darwinssl and all --without-* options for |
| TLS libraries. |
| |
| Closes #6897 |
| |
| - tests/disable-scan.pl: also scan all m4 files |
| |
| Fixes test 1165 when functions are moved from configure.ac to files in |
| m4/ |
| |
| Jay Satiro (22 Apr 2021) |
| - schannel: Disable auto credentials; add an option to enable it |
| |
| - Disable auto credentials by default. This is a breaking change |
| for clients that are using it, wittingly or not. |
| |
| - New libcurl ssl option value CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl |
| to automatically locate and use a client certificate for |
| authentication, when requested by the server. |
| |
| - New curl tool options --ssl-auto-client-cert and |
| --proxy-ssl-auto-client-cert map to CURLSSLOPT_AUTO_CLIENT_CERT. |
| |
| This option is only supported for Schannel (the native Windows SSL |
| library). Prior to this change Schannel would, with no notification to |
| the client, attempt to locate a client certificate and send it to the |
| server, when requested by the server. Since the server can request any |
| certificate that supports client authentication in the OS certificate |
| store it could be a privacy violation and unexpected. |
| |
| Fixes https://github.com/curl/curl/issues/2262 |
| Reported-by: Jeroen Ooms |
| Assisted-by: Wes Hinsley |
| Assisted-by: Rich FitzJohn |
| |
| Ref: https://curl.se/mail/lib-2021-02/0066.html |
| Reported-by: Morten Minde Neergaard |
| |
| Closes https://github.com/curl/curl/pull/6673 |
| |
| Daniel Stenberg (22 Apr 2021) |
| - [Michał Antoniak brought this change] |
| |
| vtls: deduplicate some DISABLE_PROXY ifdefs |
| |
| continue from #5735 |
| |
| - using SSL_HOST_NAME, SSL_HOST_DISPNAME, SSL_PINNED_PUB_KEY for other |
| tls backend |
| |
| - create SSL_HOST_PORT |
| |
| Closes #6660 |
| |
| Jay Satiro (22 Apr 2021) |
| - OS400: fix typo |
| |
| CURLVERSION_HEIGHTH -> CURLVERSION_EIGHTH |
| |
| Daniel Stenberg (22 Apr 2021) |
| - checksrc: complain on == NULL or != 0 checks in conditions |
| |
| ... to make them all consistenly use if(!var) and if(var) |
| |
| Also added a few missing warnings to the documentation. |
| |
| Closes #6912 |
| |
| - tidy-up: make conditional checks more consistent |
| |
| ... remove '== NULL' and '!= 0' |
| |
| Closes #6912 |
| |
| - [Patrick Monnerat brought this change] |
| |
| vauth: factor base64 conversions out of authentication procedures |
| |
| Input challenges and returned messages are now in binary. |
| Conversions from/to base64 are performed by callers (currently curl_sasl.c |
| and http_ntlm.c). |
| |
| Closes #6654 |
| |
| - [Patrick Monnerat brought this change] |
| |
| bufref: buffer reference support |
| |
| A struct bufref holds a buffer pointer, a data size and a destructor. |
| When freed or its contents are changed, the previous buffer is implicitly |
| released by the associated destructor. The data size, although not used |
| internally, allows binary data support. |
| |
| A unit test checks its handling methods: test 1661 |
| |
| Closes #6654 |
| |
| - [Patrick Monnerat brought this change] |
| |
| os400: additional support for options metadata |
| |
| New functions curl_easy_option_by_name_ccsid() and |
| curl_easy_option_get_name_ccsid() allows accessing metadata in alternate |
| character encoding. |
| |
| This commit also updates curl_version_info_ccsid() to handle info version 9 |
| and adds recent definitions to the ILE/RPG include file. |
| |
| Documentation updated accordingly. |
| |
| Reviewed-by: Jon Rumsey |
| Closes #6574 |
| |
| - [Patrick Monnerat brought this change] |
| |
| test server: take care of siginterrupt() deprecation |
| |
| Closes #6529 |
| |
| Marc Hoersken (21 Apr 2021) |
| - lib1564.c: enable last wakeup test part on Windows |
| |
| Suggested-by: Gergely Nagy |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| |
| Closes #6245 |
| |
| - multi: fix slow write/upload performance on Windows |
| |
| Reset FD_WRITE by sending zero bytes which is permissible |
| and will be treated by implementations as successful send. |
| |
| Without this we won't be notified in case a socket is still |
| writable if we already received such a notification and did |
| not send any data afterwards on the socket. This would lead |
| to waiting forever on a writable socket being writable again. |
| |
| Assisted-by: Tommy Odom |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| Tested-by: tmkk on github |
| |
| Bug: #6146 |
| Closes #6245 |
| |
| - multi: reduce Win32 API calls to improve performance |
| |
| 1. Consolidate pre-checks into a single Curl_poll call: |
| |
| This is an attempt to restructure the code in Curl_multi_wait |
| in such a way that less syscalls are made by removing individual |
| calls to Curl_socket_check via SOCKET_READABLE/SOCKET_WRITABLE. |
| |
| 2. Avoid resetting the WinSock event multiple times: |
| |
| We finally call WSAResetEvent anyway, so specifying it as |
| an optional parameter to WSAEnumNetworkEvents is redundant. |
| |
| 3. Wakeup directly in case no sockets are being monitoring: |
| |
| Fix the WinSock based implementation to skip extra waiting by |
| not sleeping in case no sockets are to be waited on and just |
| the WinSock event is being monitored for wakeup functionality. |
| |
| Assisted-by: Tommy Odom |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| |
| Bug: #6146 |
| Closes #6245 |
| |
| - Revert "Revert 'multi: implement wait using winsock events'" |
| |
| This reverts commit 2260e0ebe6d45529495231b3e37a0c58fb92a6a2, |
| also restoring previous follow up changes which were reverted. |
| |
| Authored-by: rcombs on github |
| Authored-by: Marc Hörsken |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| |
| Restores #5634 |
| Reverts #6281 |
| Part of #6245 |
| |
| Daniel Stenberg (21 Apr 2021) |
| - Revert "cmake: make libcurl library output name configurable" |
| |
| This reverts commit 1cba36d2166c396f987eea587cf92671b27acb92. |
| |
| CMake provides properties that can be set on a target to rename the |
| output artifact without changing the name of a target. |
| |
| Ref: #6899 |
| |
| - [Michael Kolechkin brought this change] |
| |
| sectransp: allow cipher name to be specified |
| |
| Add parser for CURLOPT_SSL_CIPHER_LIST option for Secure Transport (ST) |
| back-end. Similar to NSS and GSKit back-ends, new code parses string |
| value and configures ST library to use those ciphers for communication. |
| Create cipher spec data structure and initialize the array of specs with |
| cipher number, name, alias, and 'weak' flag. |
| |
| Mark triple-DES ciphers as 'weak', and exclude them from the default |
| ciphers list. |
| |
| Closes #6464 |
| |
| - [Michael Kolechkin brought this change] |
| |
| NSS: add ciphers to map |
| |
| Add cipher names to the `cipherlist` map, based on the list of ciphers |
| implemented by the NSS in the source code file |
| https://github.com/nss-dev/nss/blob/master/lib/ssl/sslenum.c |
| |
| Closes #6670 |
| |
| - http2: remove DEBUG_HTTP2 |
| |
| Accidentally committed in 605e84235 |
| |
| - [Ralph Langendam brought this change] |
| |
| cmake: make libcurl library output name configurable |
| |
| Closes #6899 |
| |
| - sws: #ifdef S_IFSOCK use |
| |
| SCO OpenServer 5.0.7 does not define S_IFSOCK. |
| |
| Reported-by: Kevin R. Bulgrien |
| Bug: https://curl.se/mail/lib-2021-04/0074.html |
| Closes #6926 |
| |
| - curl_setup: provide the shutdown flags wider |
| |
| By using #ifdef on the symbol names to work on anything that don't |
| provide them. SCO OpenServer 5.0.7, sys/socket.h does not define either |
| SHUT_RDWR, SHUT_RD, and SHUT_WR. |
| |
| Reported-by: Kevin R. Bulgrien |
| Bug: https://curl.se/mail/lib-2021-04/0073.html |
| Closes #6925 |
| |
| - connect: use CURL_SA_FAMILY_T for portability |
| |
| Reported-by: Kevin R. Bulgrien |
| Bug: https://curl.se/mail/lib-2021-04/0071.html |
| |
| Closes #6918 |
| |
| - urlapi: make sure no +/- signs are accepted in IPv4 numericals |
| |
| Follow-up to 56a037cc0ad1b2. Extends test 1560 to verify. |
| |
| Reported-by: Tuomas Siipola |
| Fixes #6916 |
| Closes #6917 |
| |
| - ConnectionExists: respect requests for h1 connections better |
| |
| ... for situations when multiplexing isn't enabled on the h2 connection |
| and h1 is explicitly requested for the transfer. |
| |
| Assisted-by: Gergely Nagy |
| |
| - multi: don't close connection HTTP_1_1_REQUIRED |
| |
| The ConnectionExists() function will note that the new transfer wants |
| less then h2 and that it can't multiplex it and therefor opt to open a |
| new connection instead. |
| |
| - http2: move the stream error field to the per-transfer storage |
| |
| Storing a stream error in the per-connection struct was an error that lead to |
| race conditions as subsequent stream handling could overwrite the error code |
| before it was used for the stream with the actual problem. |
| |
| Closes #6910 |
| |
| - http2: call the handle-closed function correctly on closed stream |
| |
| This was this one condition where the stream could be closed due to an |
| error and the function would still wrongly just return 0 for it. |
| |
| Reported-by: Gergely Nagy |
| Fixes #6862 |
| Closes #6910 |
| |
| - test1660: check the created HSTS file as text mode |
| |
| Closes #6922 |
| |
| - RELEASE-NOTES: synced |
| |
| - test 493: require https in curl to run |
| |
| Closes #6927 |
| |
| Jay Satiro (20 Apr 2021) |
| - tool_operate: don't discard failed parallel transfer result |
| |
| - Save a parallel transfer's result code only when it fails and the |
| transfer is not being retried. |
| |
| Prior to this change the result code was always set which meant that a |
| failed result could be erroneously discarded if a different transfer |
| later had a successful result (CURLE_OK). |
| |
| Before: |
| |
| > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10 |
| > echo %ERRORLEVEL% |
| 0 |
| |
| After: |
| |
| > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10 |
| > echo %ERRORLEVEL% |
| 22 |
| |
| Closes #xxxx |
| |
| - [Georeth Zhou brought this change] |
| |
| openssl: fix build error with OpenSSL < 1.0.2 |
| |
| Closes https://github.com/curl/curl/pull/6920 |
| |
| Viktor Szakats (19 Apr 2021) |
| - README.md: delete Codacy UTM parameters & follow permanent redirect [ci skip] |
| |
| UTM parameters leak referrer and various marketing/tracking information |
| even if these would normally be stripped by website or client policy. |
| This link also works fine without them. Also took the opportunity to |
| update the URL to the one pointed to by the previous one via permanent |
| redirect. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #6919 |
| |
| Daniel Stenberg (19 Apr 2021) |
| - urlapi: "normalize" numerical IPv4 host names |
| |
| When the host name in a URL is given as an IPv4 numerical address, the |
| address can be specified with dotted numericals in four different ways: |
| a32, a.b24, a.b.c16 or a.b.c.d and each part can be specified in |
| decimal, octal (0-prefixed) or hexadecimal (0x-prefixed). |
| |
| Instead of passing on the name as-is and leaving the handling to the |
| underlying name functions, which made them not work with c-ares but work |
| with getaddrinfo, this change now makes the curl URL API itself detect |
| and "normalize" host names specified as IPv4 numericals. |
| |
| The WHATWG URL Spec says this is an okay way to specify a host name in a |
| URL. RFC 3896 does not allow them, but curl didn't prevent them before |
| and it seems other RFC 3896-using tools have not either. Host names used |
| like this are widely supported by other tools as well due to the |
| handling being done by getaddrinfo and friends. |
| |
| I decided to add the functionality into the URL API itself so that all |
| users of these functions get the benefits, when for example wanting to |
| compare two URLs. Also, it makes curl built to use c-ares now support |
| them as well and make curl builds more consistent. |
| |
| The normalization makes HTTPS and virtual hosted HTTP work fine even |
| when curl gets the address specified using one of the "obscure" formats. |
| |
| Test 1560 is extended to verify. |
| |
| Fixes #6863 |
| Closes #6871 |
| |
| - libssh: fix "empty expression statement has no effect" warnings |
| |
| ... by fixing macros to do-while constructs and moving out the calls to |
| "break" outside of the actual macro. It also fixes the problem where the |
| macro was used witin a loop and the break didn't do right. |
| |
| Reported-by: Emil Engler |
| Fixes #6847 |
| Closes #6909 |
| |
| - hsts: enable by default |
| |
| No longer considered experimental. |
| |
| Closes #6700 |
| |
| - vtls: refuse setting any SSL version |
| |
| ... previously they were supported if a TLS library would (unexpectedly) |
| still support them, but from this change they will be refused already in |
| curl_easy_setopt(). SSLv2 and SSLv3 have been known to be insecure for |
| many years now. |
| |
| Closes #6773 |
| |
| - curl: ignore options asking for SSLv2 or SSLv3 |
| |
| Instead output a warning about it and continue with the defaults. |
| |
| These SSL versions are typically not supported by the TLS libraries since a |
| long time back already since they are inherently insecure and broken. Asking |
| for them to be used will just cause an error to be returned slightly later. |
| |
| In the unlikely event that a user's TLS library actually still supports these |
| protocol versions, this change might make the request a little less insecure. |
| |
| Closes #6772 |
| |
| - test972: verify the json output with jsonlint |
| |
| Make sure one of the azure jobs has jsonlint installed so that the test |
| runs there. |
| |
| Ref: #6905 |
| |
| - [Jay Satiro brought this change] |
| |
| tool_writeout: fix the HTTP_CODE json output |
| |
| Update test 970 accordingly. |
| |
| Reported-by: Michal Rus |
| Fixes #6905 |
| Closes #6906 |
| |
| - openldap: protect SSL-specific code with proper #ifdef |
| |
| Closes #6901 |
| |
| - libssh2: fix Value stored to 'sshp' is never read |
| |
| Pointed out by scan-build |
| |
| Closes #6900 |
| |
| - [Victor Vieux brought this change] |
| |
| tool_getparam: replace (in-place) '%20' by '+' according to RFC1866 |
| |
| Signed-off-by: Victor Vieux <[email protected]> |
| |
| Closes #6895 |
| |
| - configure: provide --with-openssl, deprecate --with-ssl |
| |
| Makes the option more explicit. |
| |
| Closes #6887 |
| |
| - RELEASE-NOTES: synced |
| |
| and bumped curlver to 7.77.0 |
| |
| - [Javier Blazquez brought this change] |
| |
| rustls: only return CURLE_AGAIN when TLS session is fully drained |
| |
| The code in cr_recv was returning prematurely as soon as the socket |
| reported no more data to read. However, this could be leaving some |
| unread plaintext data in the rustls session from a previous call, |
| causing causing the transfer to hang if the socket never receives |
| further data. |
| |
| We need to ensure that the session is fully drained of plaintext data |
| before returning CURLE_AGAIN to the caller. |
| |
| Reviewed-by: Jacob Hoffman-Andrews |
| Closes #6894 |
| |
| - cookie: CURLOPT_COOKIEFILE set to NULL switches off cookies |
| |
| Add test 676 to verify that setting CURLOPT_COOKIEFILE to NULL again clears |
| the cookiejar from memory. |
| |
| Reported-by: Stefan Karpinski |
| Fixes #6889 |
| Closes #6891 |
| |
| Version 7.76.1 (14 Apr 2021) |
| |
| Daniel Stenberg (14 Apr 2021) |
| - RELEASE-NOTES: synced |
| |
| curl 7.76.1 release |
| |
| - THANKS: add names from 7.76.1 |
| |
| - misc: update copyright year ranges to match latest updates |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Use ALPN h3-29 for now |
| |
| Fixes #6864 |
| Cloes #6886 |
| |
| Jay Satiro (11 Apr 2021) |
| - TODO: remove 18.22 --fail-with-body |
| |
| --fail-with-body was added in 8a964cb (precedes curl-7_76_0). |
| |
| Daniel Stenberg (10 Apr 2021) |
| - [Jürgen Gmach brought this change] |
| |
| src/tool_vms.c: remove duplicated word in comment |
| |
| Closes #6881 |
| |
| - configure: fix CURL_DARWIN_CFLAGS use |
| |
| The macro name change was not completely done. |
| |
| Follow-up to 5d2c384452543c |
| Bug: https://github.com/curl/curl/commit/5d2c384452543c7b6c9fb02eaa0afc84fd5ab941#commitcomment-49315187 |
| Reported-by: Marcel Raad |
| Closes #6878 |
| |
| - [Anthony Shaw brought this change] |
| |
| github/workflow: add "security-extended" to codeql-analysis.yml |
| |
| Extends the CodeQL code scan. |
| |
| Closes #6815 |
| |
| - [Jochem Broekhoff brought this change] |
| |
| examples/hiperfifo.c: check event_initialized before delete |
| |
| If event_del is called with the event struct (still) zeroed out, a |
| segmentation fault may occur. event_initialized checks whether the |
| event struct is nonzero. |
| |
| Closes #6876 |
| |
| - [Patrick Monnerat brought this change] |
| |
| ntlm: fix negotiated flags usage |
| |
| According to Microsoft document MS-NLMP, current flags usage is not |
| accurate: flag NTLMFLAG_NEGOTIATE_NTLM2_KEY controls the use of |
| extended security in an NTLM authentication message and NTLM version 2 |
| cannot be negotiated within the protocol. |
| |
| The solution implemented here is: if the extended security flag is set, |
| prefer using NTLM version 2 (as a server featuring extended security |
| should also support version 2). If version 2 has been disabled at |
| compile time, use extended security. |
| |
| Tests involving NTLM are adjusted to this new behavior. |
| |
| Fixes #6813 |
| Closes #6849 |
| |
| - [Patrick Monnerat brought this change] |
| |
| ntlm: support version 2 on 32-bit platforms |
| |
| Closes #6849 |
| |
| - [Patrick Monnerat brought this change] |
| |
| curl_ntlm_core.h: simplify conditionals for USE_NTLM2SESSION |
| |
| ... as !defined(CURL_DISABLE_CRYPTO_AUTH) is a prerequisite for the |
| whole NTLM. |
| |
| Closes #6849 |
| |
| - lib: remove unused HAVE_INET_NTOA_R* defines |
| |
| Closes #6867 |
| |
| - [Michael Forney brought this change] |
| |
| configure: include <time.h> unconditionally |
| |
| In 2682e5f5, several instances of AC_HEADER_TIME were removed since |
| it is a deprecated autoconf macro. However, this was the macro that |
| defined TIME_WITH_SYS_TIME, which was used to indicate that <time.h> |
| can be included alongside <sys/time.h>. TIME_WITH_SYS_TIME is still |
| used in the configure test body and since it is no longer defined, |
| <time.h> is *not* included on systems that have <sys/time.h>. |
| |
| In particular, at least on musl libc and glibc, <sys/time.h> does |
| not implicitly include <time.h> and does not declare clock_gettime, |
| gmtime_r, or localtime_r. This causes configure to fail to detect |
| those functions. |
| |
| The AC_HEADER_TIME macro deprecation text says |
| |
| > All current systems provide time.h; it need not be checked for. |
| > Not all systems provide sys/time.h, but those that do, all allow |
| > you to include it and time.h simultaneously. |
| |
| So, to fix this issue, simply include <time.h> unconditionally when |
| testing for time-related functions and in libcurl, and don't bother |
| checking for it. |
| |
| Closes #6859 |
| |
| - [Michael Forney brought this change] |
| |
| configure: remove use of RETSIGTYPE |
| |
| This was previously defined by the obsolete AC_TYPE_SIGNAL macro, |
| which was removed in 2682e5f5. The deprecation text says |
| |
| > Your code may safely assume C89 semantics that RETSIGTYPE is void. |
| |
| So, remove it and just use void instead. |
| |
| Closes #6861 |
| |
| - [Muhammed Yavuz Nuzumlalı brought this change] |
| |
| install: add instructions for Apple Darwin platforms |
| |
| Closes #6860 |
| |
| - [Muhammed Yavuz Nuzumlalı brought this change] |
| |
| configure: disable min version set for Darwin |
| |
| Fixes #6838 |
| Closes #6860 |
| |
| - [David Hu brought this change] |
| |
| docs/HTTP3.md: update the build instruction using gnutls |
| |
| In ngtcp2 the `with-gnutls` option is disabled by default, which will |
| cause `curl` unable to be `make` because of lacking the libraries |
| needed. |
| |
| Closes #6857 |
| |
| - RELEASE-NOTES: synced |
| |
| - typecheck-gcc: make the ssl-ctx-cb check use SSL_CTX pointers |
| |
| ... and not values. |
| |
| Reported-by: locpyl-tidnyd on github |
| Fixes #6818 |
| Closes #6819 |
| |
| - ngtcp2+gnutls: clear credentials when freed |
| |
| ... to avoid double-free. |
| |
| Reported-by: Kenneth Davidson |
| Fixes #6824 |
| Closes #6856 |
| |
| Jay Satiro (5 Apr 2021) |
| - [Cherish98 brought this change] |
| |
| tool_progress: Fix progress meter in parallel mode |
| |
| Make sure the total amount of DL/UL bytes are counted before the |
| transfer finalizes. Otherwise if a transfer finishes too quick, its |
| total numbers are not added, and results in a DL%/UL% that goes above |
| 100%. |
| |
| Detail: |
| |
| progress_meter() is called periodically, and it may not catch a |
| transfer's total bytes if the value was unknown during the last call, |
| and the transfer is finished and deleted (i.e., lost) during the next |
| call. |
| |
| Closes https://github.com/curl/curl/pull/6840 |
| |
| - [Emil Engler brought this change] |
| |
| libssh: get rid of PATH_MAX |
| |
| This removes the last occurrence of PATH_MAX inside our libssh |
| implementation by calculating the path length from the string length of |
| the two components. |
| |
| Closes #6829 |
| |
| Daniel Stenberg (5 Apr 2021) |
| - http_proxy: only loop on 407 + close if we have credentials |
| |
| ... to fix the retry-loop. |
| |
| Add test 718 to verify. |
| |
| Reported-by: Daniel Kurečka |
| Fixes #6828 |
| Closes #6850 |
| |
| - h2: allow 100 streams by default |
| |
| instead of 13, before the server has told how many streams it |
| accepts. The server can always reject new streams anyway if we go above |
| what it accepts. |
| |
| Ref: #6826 |
| Closes #6852 |
| |
| - [Luke Granger-Brown brought this change] |
| |
| file: support GETing directories again |
| |
| After 957bc1881e686f9714c4e6a01bf33535091f0e21, we no longer compute an |
| expected_size for directories. This has the upshot that when we compare |
| even an empty Range with the available size, we fail. |
| |
| This brings back the previous behaviour, which was to succeed, but with |
| empty content. This also removes the "Accept-ranges: bytes" header, |
| which is nonsensical on directories. |
| |
| Adds test 3016 |
| Fixes #6845 |
| Closes #6846 |
| |
| - RELEASE-NOTES: synced |
| |
| and bumped to 7.76.1 |
| |
| - TLS: fix HTTP/2 selection |
| |
| for GnuTLS, BearSSL, mbedTLS, NSS, SChannnel, Secure Transport and |
| wolfSSL... |
| |
| Regression since 88dd1a8a115b1f5ece (shipped in 7.76.0) |
| Reported-by: Kenneth Davidson |
| Reported-by: romamik om github |
| Fixes #6825 |
| Closes #6827 |
| |
| Jay Satiro (2 Apr 2021) |
| - hostip: Fix for builds that disable all asynchronous DNS |
| |
| - Define Curl_resolver_error function only when USE_CURL_ASYNC. |
| |
| Prior to this change building curl without an asynchronous resolver |
| backend (c-ares or threaded) and without DoH (DNS-over-HTTPS, which is |
| also asynchronous but independent of resolver backend) would cause a |
| build error since Curl_resolver_error is called by and evaluates |
| variables only available in asynchronous builds. |
| |
| Reported-by: Benbuck Nason |
| |
| Fixes https://github.com/curl/curl/issues/6831 |
| Closes https://github.com/curl/curl/pull/6832 |
| |
| Daniel Stenberg (31 Mar 2021) |
| - [Gilles Vollant brought this change] |
| |
| openssl: Fix CURLOPT_SSLCERT_BLOB without CURLOPT_SSLCERT_KEY |
| |
| Reported-by: Christian Schmitz |
| Fixes #6816 |
| Closes #6820 |
| |
| Version 7.76.0 (31 Mar 2021) |
| |
| Daniel Stenberg (31 Mar 2021) |
| - RELEASE-NOTES: synced |
| |
| curl 7.76.0 release |
| |
| - THANKS: added names from 7.76.0 |
| |
| - CURLOPT_AUTOREFERER.3: clarify that it sets the full URL |
| |
| ... some users may not want that! |
| |
| - define: remove CURL_DISABLE_NTLM ifdefs |
| |
| It was never defined anywhere. Fixed disable-scan (test 1165) to also |
| scan headers, which found this issue. |
| |
| Closes #6809 |
| |
| - vtls: fix addsessionid for non-proxy builds |
| |
| Follow-up to b09c8ee15771c61 |
| Fixes #6812 |
| Closes #6811 |
| |
| - [Li Xinwei brought this change] |
| |
| cmake: support WinIDN |
| |
| Closes #6807 |
| |
| - transfer: clear 'referer' in declaration |
| |
| To silence (false positive) compiler warnings about it. |
| |
| Follow-up to 7214288898f5625 |
| |
| Reviewed-by: Marcel Raad |
| Closes #6810 |
| |
| - [Marc Hoersken brought this change] |
| |
| config: fix SSPI enabling NTLM if crypto auth is disabled |
| |
| Avoid enabling NTLM feature based upon Windows SSPI |
| being enabled in case that crypto auth is disabled. |
| |
| Reported-by: Marcel Raad |
| |
| Follow-up to #6277 |
| Fixes #6803 |
| Closes #6808 |
| |
| - HISTORY: add two 2021 events |
| |
| - vtls: add 'isproxy' argument to Curl_ssl_get/addsessionid() |
| |
| To make sure we set and extract the correct session. |
| |
| Reported-by: Mingtao Yang |
| Bug: https://curl.se/docs/CVE-2021-22890.html |
| |
| CVE-2021-22890 |
| |
| - [Viktor Szakats brought this change] |
| |
| transfer: strip credentials from the auto-referer header field |
| |
| Added test 2081 to verify. |
| |
| CVE-2021-22876 |
| |
| Bug: https://curl.se/docs/CVE-2021-22876.html |
| |
| - curl_sasl: fix compiler error with --disable-crypto-auth |
| |
| ... if libgsasl was found. |
| |
| Closes #6806 |
| |
| - [Patrick Monnerat brought this change] |
| |
| ldap: only set the callback ptr for TLS context when TLS is used |
| |
| Follow-up to a5eee22e594c2460f |
| Fixes #6804 |
| Closes #6805 |
| |
| - copyright: update copyright year ranges to 2021 |
| |
| Reviewed-by: Emil Engler |
| Closes #6802 |
| |
| - send_speed: simplify the checks for if a speed limit is set |
| |
| ... as we know the value cannot be set to negative: enforced by |
| setopt() |
| |
| - http: cap body data amount during send speed limiting |
| |
| By making sure never to send off more than the allowed number of bytes |
| per second the speed limit logic is given more room to actually work. |
| |
| Reported-by: Fabian Keil |
| Bug: https://curl.se/mail/lib-2021-03/0042.html |
| Closes #6797 |
| |
| - urldata: merge "struct DynamicStatic" into "struct UrlState" |
| |
| Both were used for the same purposes and there was no logical separation |
| between them. Combined, this also saves 16 bytes in less holes in my |
| test build. |
| |
| Closes #6798 |
| |
| - tests/README.md: mentioned that en_US.UTF-8 is required |
| |
| Reported-by: Oumph on github |
| Fixes #6768 |
| |
| - HISTORY: fixed the Mac OS X 10.1 release date |
| |
| Based on what Wikipedia says |
| |
| Jay Satiro (26 Mar 2021) |
| - examples: Remove threaded-shared-conn.c due to bug |
| |
| Known bug 11.11 is the shared object's connection cache is not thread |
| safe, so we should not have an example for it. |
| |
| Ref: https://github.com/curl/curl/issues/4915 |
| Ref: https://curl.se/docs/knownbugs.html#A_shared_connection_cache_is_not |
| |
| Closes https://github.com/curl/curl/pull/6795 |
| |
| - KNOWN_BUGS: Update 11.9 - DoH option inheritance |
| |
| - Add description: Explain that some options aren't inherited because |
| they are not relevant for the DoH SSL connections or may result in |
| unexpected behavior. |
| |
| - Remove the reference to #4578 (SSL verify options not inherited) since |
| that was fixed by #6597 (separate DoH-specific options for verify). |
| |
| - Explain that DoH-specific options (those created by #6597) are |
| available: CURLOPT_DOH_SSL_VERIFYHOST, CURLOPT_DOH_SSL_VERIFYPEER and |
| CURLOPT_DOH_SSL_VERIFYSTATUS. |
| |
| - Add a reference to #6605 and explain that the user's debug function is |
| not inherited because it would be unexpected to pass internal handles |
| (ie DoH handles) to the user's callback. |
| |
| Closes https://github.com/curl/curl/issues/6605 |
| |
| Daniel Stenberg (26 Mar 2021) |
| - curl_easy_setopt.3: add curl_easy_option* functions to SEE ALSO |
| |
| - [Jean-Philippe Menil brought this change] |
| |
| openssl: ensure to check SSL_CTX_set_alpn_protos return values |
| |
| SSL_CTX_set_alpn_protos() return 0 on success, and non-0 on failure |
| |
| Signed-off-by: Jean-Philippe Menil <[email protected]> |
| |
| Closes #6794 |
| |
| - multi: close the connection when h2=>h1 downgrading |
| |
| Otherwise libcurl is likely to reuse the connection again in the next |
| attempt since the connection reuse logic doesn't take downgrades into |
| account. |
| |
| Reported-by: Anthony Ramine |
| Fixes #6788 |
| Closes #6793 |
| |
| - openssl: set the transfer pointer for logging early |
| |
| Otherwise, the transfer will be NULL in the trace function when the |
| early handshake details arrive and then curl won't show them. |
| |
| Regresssion in 7.75.0 |
| |
| Reported-by: David Hu |
| Fixes #6783 |
| Closes #6792 |
| |
| - RELEASE-NOTES: synced |
| |
| - TODO: Custom progress meter update interval |
| |
| Ref: https://stackoverflow.com/q/66789977/93747 |
| |
| - docs/ABI: tighten up the language |
| |
| Make the promises more firm |
| |
| Closes #6786 |
| |
| - openldap: disconnect better |
| |
| Instead of clearing the callback argument in disconnect, set it to the |
| (new) transfer to make sure the correct data is passed to the callbacks. |
| |
| Follow-up to e467ea3bd937f38 |
| Assisted-by: Patrick Monnerat |
| Closes #6787 |
| |
| - libssh2: kdb_callback: get the right struct pointer |
| |
| After the recent conn/data refactor in this source file, this function |
| was mistakenly still getting the old struct pointer which would lead to |
| crash on servers with keyboard-interactive auth enabled. |
| |
| Follow-up to a304051620b92e12b (shipped in 7.75.0) |
| |
| Reported-by: Christian Schmitz |
| Fixes #6691 |
| Closes #6782 |
| |
| - tftp: remove unused struct fields |
| |
| Follow-up to d3d90ad9c00530d |
| |
| Closes #6781 |
| |
| - openldap: avoid NULL pointer dereferences |
| |
| Follow-up to a59c33ceffb8f78 |
| Reported-by: Patrick Monnerat |
| Fixes #6676 |
| Closes #6780 |
| |
| - http: strip default port from URL sent to proxy |
| |
| To make sure the Host: header and the URL provide the same authority |
| portion when sent to the proxy, strip the default port number from the |
| URL if one was provided. |
| |
| Reported-by: Michael Brown |
| Fixes #6769 |
| Closes #6778 |
| |
| - azure: disable test 433 on azure-ubuntu |
| |
| Something in that environment sets XDG_CONFIG_HOME for us in a way that |
| breaks the test. |
| |
| Reported-by: Marc Hörsken |
| Fixes #6739 |
| Closes #6777 |
| |
| - tftp: remove the 3600 second default timeout |
| |
| ... it was never meant to be there. |
| |
| Reported-by: Tomas Berger |
| Fixes #6774 |
| Closes #6776 |
| |
| - docs: make gen.pl support *italic* and **bold** |
| |
| Remove some nroffisms from the cmdline doc files to simplify editing, |
| and instead support this markdown style. |
| |
| Closes #6771 |
| |
| - ngtcp2: sync with recent API updates |
| |
| Closes #6770 |
| |
| - RELEASE-NOTES: synced |
| |
| - libssh2:ssh_connect: clear session pointer after free |
| |
| If libssh2_knownhost_init() returns NULL, like in an OOM situation, the |
| ssh session was freed but the pointer wasn't cleared which made libcurl |
| later call libssh2 to cleanup using the stale pointer. |
| |
| Fixes #6764 |
| Closes #6766 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| docs: document version of crustls dependency |
| |
| This also pins a specific release in the Travis test so future |
| API-breaking changins in crustls won't break curl builds. |
| |
| Add RUSTLS documentation to release tarball. |
| |
| Enable running tests for rustls, minus FTP tests (require |
| connect_blocking, which rustls doesn't implement) and 313 (requires CRL |
| handling). |
| |
| Closes #6763 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| rustls: Handle close_notify. |
| |
| If we get a close_notify, treat that as EOF. If we get an EOF from the |
| TCP stream, treat that as an error (because we should have ended the |
| connection earlier, when we got a close_notify). |
| |
| Closes #6763 |
| |
| - docs: clarify timeouts for queued transfers in multi API |
| |
| Closes #6758 |
| |
| - ftpserver: only load the preprocessed test file |
| |
| We always preprocess and tests are no longer sensible to load "raw" |
| |
| Closes #6738 |
| |
| - tests: use %TESTNUMBER instead of fixed number |
| |
| This makes the tests easier to copy and relocate to other test numbers |
| without having to update content. |
| |
| Closes #6738 |
| |
| - KNOWN_BUGS: CURLOPT_OPENSOCKETPAIRFUNCTION is missing |
| |
| Closes #5747 |
| |
| - TODO: provide timing info for each redirect |
| |
| Closes #6743 |
| |
| Jay Satiro (17 Mar 2021) |
| - docs: Add SSL backend names to CURL_SSL_BACKEND |
| |
| - Document the names that can be used with CURL_SSL_BACKEND: |
| bearssl, gnutls, gskit, mbedtls, mesalink, nss, openssl, rustls, |
| schannel, secure-transport, wolfssl |
| |
| Ref: https://github.com/curl/curl/issues/2209#issuecomment-360623286 |
| Ref: https://github.com/curl/curl/issues/6717#issuecomment-800745201 |
| |
| Closes https://github.com/curl/curl/pull/6755 |
| |
| - docs: Explain DOH transfers inherit some SSL settings |
| |
| - Document in DOH that some SSL settings are inherited but DOH hostname |
| and peer verification are not and are controlled separately. |
| |
| - Document that CURLOPT_SSL_CTX_FUNCTION is inherited by DOH handles but |
| we're considering changing behavior to no longer inherit it. Request |
| feedback. |
| |
| Closes https://github.com/curl/curl/pull/6688 |
| |
| Daniel Stenberg (17 Mar 2021) |
| - http: make 416 not fail with resume + CURLOPT_FAILONERRROR |
| |
| When asked to resume a download, libcurl will convert that to HTTP logic |
| and if then the entire file is already transferred it will result in a |
| 416 response from the HTTP server. With CURLOPT_FAILONERRROR set in that |
| scenario, it should *not* lead to an error return. |
| |
| Updated test 1156, added test 1273 |
| |
| Reported-by: Jonathan Watt |
| Fixes #6740 |
| Closes #6753 |
| |
| - Curl_timeleft: check both timeouts during connect |
| |
| The duration of a connect and the total transfer are calculated from two |
| different time-stamps. It can end up with the total timeout triggering |
| before the connect timeout expires and we should make sure to |
| acknowledge whichever timeout that is reached first. |
| |
| This is especially notable when a transfer first sits in PENDING, as |
| that time is counted in the total time but the connect timeout is based |
| on the time since the handle changed to the CONNECT state. |
| |
| The CONNECTTIMEOUT is per connect attempt. The TIMEOUT is for the entire |
| operation. |
| |
| Fixes #6744 |
| Closes #6745 |
| Reported-by: Andrei Bica |
| Assisted-by: Jay Satiro |
| |
| - configure: remove use of deprecated macros |
| |
| AC_HEADER_TIME, AC_HEADER_STDC and AC_TYPE_SIGNAL |
| |
| - configure: make AC_TRY_* into AC_*_IFELSE |
| |
| ... as the former versions are deprecated. |
| |
| - configure: s/AC_HELP_STRING/AS_HELP_STRING |
| |
| AC_HELP_STRING is deprecated in 2.70+ and I believe AS_HELP_STRING works |
| already since 2.59 so bump the minimum required version to that. |
| |
| Reported-by: Emil Engler |
| Fixes #6647 |
| Closes #6748 |
| |
| - RELEASE-NOTES: synced |
| |
| - travis: use ubuntu nghttp2 package instead of build our own |
| |
| Closes #6751 |
| |
| - travis: bump wolfssl to 4.7.0 |
| |
| - travis: only build wolfssl when needed |
| |
| Closes #6751 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| rustls: allocate a buffer for TLS data. |
| |
| Previously, rustls was using an on-stack array for TLS data. However, |
| crustls has an (unusual) requirement that buffers it deals with are |
| initialized before writing to them. By using calloc, we can ensure the |
| buffer is initialized once and then reuse it across calls. |
| |
| Closes #6742 |
| |
| - travis: add a rustls build |
| |
| ... that doesn't run any tests (yet) |
| |
| Closes #6750 |
| |
| - HTTP2: remove the outdated remark about multiplexing for the tool |
| |
| - [Robert Ronto brought this change] |
| |
| http2: don't set KEEP_SEND when there's no more data to be sent |
| |
| this should fix an issue where curl sometimes doesn't send out a request |
| with authorization info after a 401 is received over http2 |
| |
| Closes #6747 |
| |
| Marc Hoersken (15 Mar 2021) |
| - config: fix building SMB with configure using Win32 Crypto |
| |
| Align conditions for NTLM features between CMake and configure |
| builds by differentiating between USE_NTLM and USE_CURL_NTLM_CORE, |
| just like curl_setup.h does internally to detect support of: |
| |
| - USE_NTLM: required for NTLM crypto authentication feature |
| - USE_CURL_NTLM_CORE: required for SMB protocol |
| |
| Implement USE_WIN32_CRYPTO detection by checking for Crypt functions |
| in wincrypt.h which are not available in the Windows App environment. |
| |
| Link advapi32 and crypt32 for Crypto API and Schannel SSL backend. |
| Fix condition of Schannel SSL backend in CMake build accordingly. |
| |
| Reviewed-by: Marcel Raad |
| |
| Closes #6277 |
| |
| - config: fix detection of restricted Windows App environment |
| |
| Move the detection of the restricted Windows App environment |
| in curl_setup.h before the definition of USE_WIN32_CRYPTO |
| via included config-win32.h in case no build system is used. |
| |
| Reviewed-by: Marcel Raad |
| |
| Part of #6277 |
| |
| Daniel Stenberg (15 Mar 2021) |
| - HISTORY: curl 7.7.2 was the first version used in Mac OS X 10.1 |
| |
| - gen.pl: quote "bare" minuses in the nroff curl.1 |
| |
| Reported-by: Alejandro Colomar |
| Fixes #6698 |
| Closes #6722 |
| |
| Daniel Gustafsson (14 Mar 2021) |
| - hsts: remove unused defines |
| |
| MAX_HSTS_SUBLEN and MAX_HSTS_SUBLENSTR were unused from the initial commit, |
| and mostly likely leftovers from early development. Remove as they're not |
| used for anything. |
| |
| Closes #6741 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Daniel Stenberg (12 Mar 2021) |
| - github: add torture-ftp for FTP-only torture testing |
| |
| and at 20% to try to keep the run-time reasonable |
| |
| Closes #6728 |
| |
| - travis: split "torture" into a separate "events" build as well |
| |
| Run torture without FTP and reducing coverage to 20% |
| |
| For some reason the torture tests now run a lot slower on travis and run |
| into the 50 minute limit all the time. |
| |
| Closes #6728 |
| |
| - ftp: fix memory leak in ftp_done |
| |
| If after a transfer is complete Curl_GetFTPResponse() returns an error, |
| curl would not free the ftp->pathalloc block. |
| |
| Found by torture-testing test 576 |
| |
| Closes #6737 |
| |
| - [oxalica brought this change] |
| |
| http2: fail if connection terminated without END_STREAM |
| |
| Closes #6736 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| rustls: support CURLOPT_SSL_VERIFYPEER |
| |
| This requires the latest main branch of crustls, which provides |
| rustls_client_config_builder_dangerous_set_certificate_verifier and |
| rustls_client_config_builder_set_enable_sni. |
| |
| This refactors the session setup into its own function, and adds a new |
| function cr_hostname_is_ip. Because crustls doesn't support verification |
| of IP addresses, special handling is needed: We disable SNI and set a |
| placeholder hostname (which never actually gets sent on the wire). |
| |
| Closes #6719 |
| |
| Daniel Gustafsson (12 Mar 2021) |
| - cookies: Fix potential NULL pointer deref with PSL |
| |
| Curl_cookie_init can be called with data being NULL, and this can in turn |
| be passed to Curl_cookie_add, meaning that both functions must be careful |
| to only use data where it's checked for being a NULL pointer. The libpsl |
| support code does however dereference data without checking, so if we are |
| indeed having an unset data pointer we cannot PSL check the cookiedomain. |
| |
| This is currently not a reachable dereference, as the only caller with a |
| NULL data isn't passing a file to initialize cookies from, but since the |
| API has this contract let's ensure we hold it. |
| |
| Closes #6731 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Daniel Stenberg (12 Mar 2021) |
| - [Michael Hordijk brought this change] |
| |
| configure: only add OpenSSL paths if they are defined |
| |
| Add paths for OpenSSL compiling and linking only if they have been |
| defined. If they haven't been defined, we'll assume that the paths are |
| already available to the toolchain. |
| |
| Closes #6730 |
| |
| Jay Satiro (12 Mar 2021) |
| - retry.d: Clarify transient 5xx HTTP response codes |
| |
| - Clarify the only 5xx response codes that are treated as transient are |
| 500, 502, 503 and 504. |
| |
| Prior to this change it said it treated all 5xx as transient, but the |
| code says otherwise. |
| |
| Ref: https://github.com/curl/curl/blob/curl-7_75_0/src/tool_operate.c#L462-L495 |
| |
| Closes https://github.com/curl/curl/pull/6724 |
| |
| - retry-all-errors.d: Explain curl errors versus HTTP response errors |
| |
| - Add a paragraph explaining that curl does not consider HTTP response |
| errors as curl errors, and how that behavior can be modified by using |
| --retry and --fail. |
| |
| The --retry-all-errors doc says "Retry on any error" which some users |
| may find misleading without the added explanation. |
| |
| Ref: https://curl.se/docs/faq.html#Why_do_I_get_downloaded_data_eve |
| Ref: https://curl.se/docs/faq.html#curl_doesn_t_return_error_for_HT |
| |
| Reported-by: Lawrence Gripper |
| |
| Fixes https://github.com/curl/curl/issues/6712 |
| Closes https://github.com/curl/curl/pull/6720 |
| |
| Daniel Stenberg (11 Mar 2021) |
| - travis: switch ngtcp2 build over to quictls |
| |
| The ngtcp2 project switched over to using the quictls OpenSSL fork |
| instead of their own patched OpenSSL. We follow suit. |
| |
| Closes #6729 |
| |
| - test220/314: adjust to run with Hyper |
| |
| - c-hyper: support automatic content-encoding |
| |
| Closes #6727 |
| |
| - http: remove superfluous NULL assign |
| |
| Closes #6727 |
| |
| - tool_operate: bail if set CURLOPT_HTTP09_ALLOWED returns error |
| |
| Closes #6727 |
| |
| - setopt: error on CURLOPT_HTTP09_ALLOWED set true with Hyper |
| |
| Not supported. |
| |
| Closes #6727 |
| |
| - test306: make it not run with Hyper |
| |
| ... as it tests HTTP/0.9 which Hyper doesn't support. |
| |
| - test304: header CRLF cleanup to work with Hyper |
| |
| - FTP: allow SIZE to fail when doing (resumed) upload |
| |
| Added test 362 to verify. |
| |
| Reported-by: Jordan Brown |
| Regression since 7ea2e1d0c5a7f (7.73.0) |
| Fixes #6715 |
| Closes #6725 |
| |
| - configure: provide Largefile feature for curl-config |
| |
| ... as cmake now does it correctly, and make test1014 check for it |
| |
| Closes #6702 |
| |
| - config: remove CURL_SIZEOF_CURL_OFF_T use only SIZEOF_CURL_OFF_T |
| |
| Make the code consistently use a single name for the size of the |
| "curl_off_t" type. |
| |
| Closes #6702 |
| |
| Jay Satiro (10 Mar 2021) |
| - [Jun-ya Kato brought this change] |
| |
| ngtcp2: Fix build error due to change in ngtcp2_addr_init |
| |
| ngtcp2/ngtcp2@b8d90a9 changed the function prototype. |
| |
| Closes https://github.com/curl/curl/pull/6716 |
| |
| Daniel Stenberg (10 Mar 2021) |
| - [ejanchivdorj brought this change] |
| |
| multi: update pending list when removing handle |
| |
| when removing a handle, most of the lists are updated but pending list |
| is not updated. Updating now. |
| |
| Closes #6713 |
| |
| - [kokke brought this change] |
| |
| lib1536: check ptr against NULL before dereferencing it |
| |
| Closes #6710 |
| |
| - [kokke brought this change] |
| |
| lib1537: check ptr against NULL before dereferencing it |
| |
| Fixes #6707 |
| Closes #6708 |
| |
| - travis: make torture tests skip TLS-SRP tests |
| |
| ... as it seems to often hang. |
| |
| Also: skip the "normal" tests as they're already run by many other |
| builds. |
| |
| Closes #6705 |
| |
| - openssl: adapt to v3's new const for a few API calls |
| |
| Closes #6703 |
| |
| - quiche: fix crash when failing to connect |
| |
| Reported-by: ウさん |
| Fixes #6664 |
| Closes #6701 |
| |
| - RELEASE-NOTES: synced |
| |
| Fixed the release counter and added a missing contributor |
| |
| - RELEASE-NOTES: synced |
| |
| - dynbuf: bump the max HTTP request to 1MB |
| |
| Raised from 128KB to allow longer request headers. |
| |
| Reported-by: Carl Zogheib |
| Fixes #6681 |
| Closes #6685 |
| |
| Jay Satiro (6 Mar 2021) |
| - schannel: Evaluate CURLOPT_SSL_OPTIONS via SSL_SET_OPTION macro |
| |
| - Change use of those options from CURLOPT_SSL_OPTIONS that are not |
| already evaluated via SSL_SET_OPTION in schannel and secure transport |
| to use that instead of data->set.ssl.optname. |
| |
| Example: |
| |
| Evaluate SSL_SET_OPTION(no_revoke) instead of data->set.ssl.no_revoke. |
| |
| This change is because options set via CURLOPT_SSL_OPTIONS |
| (data->set.ssl.optname) are separate from those set for HTTPS proxy via |
| CURLOPT_PROXY_SSL_OPTIONS (data->set.proxy_ssl.optname). The |
| SSL_SET_OPTION macro determines whether the connection is for HTTPS |
| proxy and based on that which option to evaluate. |
| |
| Since neither Schannel nor Secure Transport backends currently support |
| HTTPS proxy in libcurl, this change is for posterity and has no other |
| effect. |
| |
| Closes https://github.com/curl/curl/pull/6690 |
| |
| - [kokke brought this change] |
| |
| c-hyper: Remove superfluous pointer check |
| |
| `n` pointer is never NULL once set. Found by static analysis. |
| |
| Ref: https://github.com/curl/curl/issues/6696 |
| |
| Closes https://github.com/curl/curl/pull/6697 |
| |
| - version.d: Add missing features to the features list |
| |
| - Add missing entries for gsasl, Kerberos, NTLM_WB, TrackMemory, |
| Unicode and zstd. |
| |
| - Remove krb4 since it's no longer a feature. |
| |
| Reported-by: Ádler Jonas Gross |
| |
| Fixes https://github.com/curl/curl/issues/6677 |
| Closes https://github.com/curl/curl/pull/6687 |
| |
| - [Vladimir Varlamov brought this change] |
| |
| docs: add missing Arg tag to --stderr |
| |
| Prior to this change the required argument was not shown. |
| |
| curl.1 before: --stderr |
| curl.1 after: --stderr <file> |
| |
| curl --help before: |
| --stderr Where to redirect stderr |
| |
| curl --help after: |
| --stderr <file> Where to redirect stderr |
| |
| Closes https://github.com/curl/curl/pull/6692 |
| |
| - projects: Update VS projects for OpenSSL 1.1.x |
| |
| - Update VS project templates to use the OpenSSL lib names and include |
| directories for OpenSSL 1.1.x. |
| |
| This change means the VS project files will now build only with OpenSSL |
| 1.1.x when an OpenSSL configuration is chosen. Prior to this change the |
| project files built only with OpenSSL 1.0.x (end-of-life) when an |
| OpenSSL configuration was chosen. |
| |
| The template changes in this commit were made by script: |
| |
| libeay32.lib => libcrypto.lib |
| ssleay32.lib => libssl.lib |
| ..\..\..\..\..\openssl\inc32 => ..\..\..\..\..\openssl\include |
| |
| And since the output directory now contains the includes it's prepended: |
| ..\..\..\..\..\openssl\build\Win{32,64}\VC{6..15}\{DLL,LIB} |
| {Debug,Release}\include |
| |
| - Change build-openssl.bat to copy the build's include directory to the |
| output directory (as seen above). |
| |
| Each build has its own opensslconf.h which is different so we can't just |
| include the source include directory any longer. |
| |
| Note the include directory in the output directory is a full copy from |
| the build so technically we don't need to include the OpenSSL source |
| include directory in the template. However, I left it last in case the |
| user made a custom OpenSSL build using the old method which would put |
| opensslconf in the OpenSSL source include directory. |
| |
| - Change build-openssl.bat to use a temporary install directory that is |
| different from the temporary build directory. |
| |
| For OpenSSL 1.1.x the temporary paths must be separate not a descendant |
| of the other, otherwise pdb files will be lost between builds. |
| |
| Ref: https://curl.se/mail/lib-2018-10/0049.html |
| Ref: https://gist.github.com/jay/125191c35bbeb894444eff827651f755 |
| Ref; https://github.com/openssl/openssl/issues/10005 |
| |
| Fixes https://github.com/curl/curl/issues/984 |
| Closes https://github.com/curl/curl/pull/6675 |
| |
| - doh: Inherit CURLOPT_STDERR from user's easy handle |
| |
| Prior to this change if the user set their easy handle's error stream |
| to something other than stderr it was not inherited by the doh handles, |
| which meant that they would still write to the default standard error |
| stream (stderr) for verbose output. |
| |
| Bug: https://github.com/curl/curl/issues/6605 |
| Reported-by: [email protected] |
| |
| Closes https://github.com/curl/curl/pull/6661 |
| |
| Marc Hoersken (1 Mar 2021) |
| - CI/azure: replace python-impacket with python3-impacket |
| |
| As of this month Azure DevOps uses Ubuntu 20.04 LTS which |
| no longer supports Python 2 and instead ships Python 3. |
| |
| Closes #6678 |
| |
| - runtests.pl: kill processes locking test log files |
| |
| Introduce a new runtests.pl command option: -rm |
| |
| For now only required and implemented for Windows. |
| Ignore stunnel logs due to long running processes. |
| |
| Requires Sysinternals handle[64].exe to be on PATH. |
| |
| Reviewed-by: Jay Satiro |
| |
| Ref: #6058 |
| Closes #6179 |
| |
| - pathhelp.pm: fix use of pwd -L in Msys environment |
| |
| While Msys2 has a pwd binary which supports -L, |
| Msys1 only has a shell built-in with that feature. |
| |
| Reviewed-by: Jay Satiro |
| |
| Part of #6179 |
| |
| Daniel Gustafsson (1 Mar 2021) |
| - ldap: use correct memory free function |
| |
| unescaped is coming from Curl_urldecode and not a unicode conversion |
| function, so reclaiming its memory should be performed with a normal |
| call to free rather than curlx_unicodefree. In reality, this is the |
| same thing as curlx_unicodefree is implemented as a call to free but |
| that's not guaranteed to always hold. Using the curlx macro present |
| issues with memory debugging as well. |
| |
| Closes #6671 |
| Reviewed-by: Jay Satiro <[email protected]> |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| - url: fix typo in comment |
| |
| Correct a small typo which snuck in with a304051620. |
| |
| Jay Satiro (28 Feb 2021) |
| - tool_help: Increase space between option and description |
| |
| - Increase the minimum number of spaces between the option and the |
| description from 1 to 2. |
| |
| Before: |
| ~~~ |
| -u, --user <user:password> Server user and password |
| -A, --user-agent <name> Send User-Agent <name> to server |
| -v, --verbose Make the operation more talkative |
| -V, --version Show version number and quit |
| -w, --write-out <format> Use output FORMAT after completion |
| --xattr Store metadata in extended file attributes |
| ~~~ |
| |
| After: |
| ~~~ |
| -u, --user <user:password> Server user and password |
| -A, --user-agent <name> Send User-Agent <name> to server |
| -v, --verbose Make the operation more talkative |
| -V, --version Show version number and quit |
| -w, --write-out <format> Use output FORMAT after completion |
| --xattr Store metadata in extended file attributes |
| ~~~ |
| |
| Closes https://github.com/curl/curl/pull/6674 |
| |
| Daniel Stenberg (27 Feb 2021) |
| - curl: set CURLOPT_NEW_FILE_PERMS if requested |
| |
| The --create-file-mode code logic accepted the value but never actually |
| passed it on to libcurl! |
| |
| Follow-up to a7696c73436f (shipped in 7.75.0) |
| Reported-by: Johannes Lesr |
| Fixes #6657 |
| Closes #6666 |
| |
| - tool_operate: check argc before accessing argv[1] |
| |
| Follow-up to 09363500b |
| Reported-by: Emil Engler |
| Reviewed-by: Daniel Gustafsson |
| Closes #6668 |
| |
| Daniel Gustafsson (26 Feb 2021) |
| - [Jean-Philippe Menil brought this change] |
| |
| openssl: remove get_ssl_version_txt in favor of SSL_get_version |
| |
| openssl: use SSL_get_version to get connection protocol |
| |
| Replace our bespoke get_ssl_version_txt in favor of SSL_get_version. |
| We can get rid of few lines of code, since SSL_get_version achieve |
| the exact same thing |
| |
| Closes #6665 |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| Signed-off-by: Jean-Philippe Menil <[email protected]> |
| |
| - gnutls: Fix nettle discovery |
| |
| Commit e06fa7462ac258c removed support for libgcrypt leaving only |
| support for nettle which has been the default crypto library in |
| GnuTLS for a long time. There were however a few conditionals on |
| USE_GNUTLS_NETTLE which cause compilation errors in the metalink |
| code (as it used the gcrypt fallback instead as a result). See the |
| below autobuild for an example of the error: |
| |
| https://curl.se/dev/log.cgi?id=20210225123226-30704#prob1 |
| |
| This removes all uses of USE_GNUTLS_NETTLE and also removes the |
| gcrypt support from the metalink code while at it. |
| |
| Closes #6656 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| - cookies: Support multiple -b parameters |
| |
| Previously only a single -b cookie parameter was supported with the last |
| one winning. This adds support for supplying multiple -b params to have |
| them serialized semicolon separated. Both cookiefiles and cookies can be |
| entered multiple times. |
| |
| Closes #6649 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Daniel Stenberg (25 Feb 2021) |
| - build: remove all traces of USE_BLOCKING_SOCKETS |
| |
| libcurl doesn't behave properly with the define set |
| |
| Closes #6655 |
| |
| - RELEASE-NOTES: synced |
| |
| Daniel Gustafsson (25 Feb 2021) |
| - docs: Fix typos |
| |
| Random typos spotted when skimming docs. |
| |
| - cookies: Use named parameters in header prototypes |
| |
| Align header with project style of using named parameters in the |
| function prototypes to aid readability and self-documentation. |
| |
| Closes #6653 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| |
| Daniel Stenberg (24 Feb 2021) |
| - urldata: make 'actions[]' use unsigned char instead of int |
| |
| ... as it only needs a few bits per index anyway. |
| |
| Reviewed-by: Daniel Gustafsson |
| Closes #6648 |
| |
| - configure: fail if --with-quiche is used and quiche isn't found |
| |
| Closes #6652 |
| |
| - [Gregor Jasny brought this change] |
| |
| cmake: use CMAKE_INSTALL_INCLUDEDIR indirection |
| |
| Reviewed-by: Sergei Nikulov |
| Closes #6440 |
| |
| Viktor Szakats (23 Feb 2021) |
| - mingw: enable using strcasecmp() |
| |
| This makes the 'Features:' list sorted case-insensitively, |
| bringing output in-line with *nix builds. |
| |
| Reviewed-by: Jay Satiro |
| Closes #6644 |
| |
| - build: delete unused feature guards |
| |
| - `HAVE_STRNCASECMP` |
| - `HAVE_TCGETATTR` |
| - `HAVE_TCSETATTR` |
| |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Daniel Stenberg |
| Closes #6645 |
| |
| Jay Satiro (23 Feb 2021) |
| - docs: add CURLOPT_CURLU to 'See also' in curl_url_ functions |
| |
| Closes https://github.com/curl/curl/pull/6639 |
| |
| Daniel Stenberg (23 Feb 2021) |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| configure: make hyper opt-in, and fail if missing |
| |
| Previously, configure would look for hyper by default, and use it if |
| found; otherwise it would not use hyper, and not error. |
| |
| Now, configure will not look for hyper unless --with-hyper is passed. If |
| configure looks for hyper and fails, it will error. |
| |
| Also, add -ld -lpthread -lm to Hyper's libs. I think they are required. |
| |
| Closes #6598 |
| |
| - multi: do once-per-transfer inits in before_perform in DID state |
| |
| ... since the state machine might go to RATELIMITING and then back to |
| PERFORMING doing once-per-transfer inits in that function is wrong and |
| it caused problems with receiving chunked HTTP and it set the |
| PRETRANSFER time much too often... |
| |
| Regression from b68dc34af341805aeb7b3715 (shipped in 7.75.0) |
| |
| Reported-by: Amaury Denoyelle |
| Fixes #6640 |
| Closes #6641 |
| |
| - RELEASE-NOTES: synced |
| |
| - CODE_STYLE.md: fix broken link to INTERNALS |
| |
| ... the link would only work if browsed on GitHub, while this link now |
| takes the user to the website instead and thus should work on either. |
| |
| Reported-by: David Demelier |
| |
| - curl_url_set.3: mention CURLU_PATH_AS_IS |
| |
| ... it has been supported since the URL API was added. |
| |
| Bug: https://curl.se/mail/lib-2021-02/0046.html |
| |
| Closes #6638 |
| |
| Viktor Szakats (21 Feb 2021) |
| - time: enable 64-bit time_t in supported mingw environments |
| |
| (Unless 32-bit `time_t` is selected manually via the `_USE_32BIT_TIME_T` |
| mingw macro.) |
| |
| Previously, 64-bit `time_t` was enabled on VS2005 and newer only, and |
| 32-bit `time_t` was used on all other Windows builds. |
| |
| Assisted-by: Jay Satiro |
| Closes #6636 |
| |
| Jay Satiro (20 Feb 2021) |
| - test1188: Check for --fail HTTP status |
| |
| - Change the test to check for curl error on HTTP 404 Not Found. |
| |
| test1188 tests "--write-out with %{onerror} and %{urlnum} to stderr". |
| Prior to this change it did that by specifying a non-existent host which |
| would cause an error. ISPs may hijack DNS and resolve non-existent hosts |
| so the test would not work if that was the case. |
| |
| Ref: https://en.wikipedia.org/wiki/DNS_hijacking#Manipulation_by_ISPs |
| Ref: https://github.com/curl/curl/issues/6621 |
| Ref: https://github.com/curl/curl/pull/6623 |
| |
| Closes https://github.com/curl/curl/pull/6637 |
| |
| - memdebug: close debug logfile explicitly on exit |
| |
| - Use atexit to register a dbg cleanup function that closes the logfile. |
| |
| LeakSantizier (LSAN) calls _exit() instead of exit() when a leak is |
| detected on exit so the logfile must be closed explicitly or data could |
| be lost. Though _exit() does not call atexit handlers such as this, |
| LSAN's call to _exit() comes after the atexit handlers are called. |
| |
| Prior to this change the logfile was not explicitly closed so it was |
| possible that if LSAN detected a leak and called _exit (which does |
| not flush or close files like exit) then the logfile could be missing |
| data. That could then cause curl's memanalyze to report false leaks |
| (eg a malloc was recorded to the logfile but the corresponding free was |
| discarded from the buffer instead of written to the logfile, then |
| memanalyze reports that as a leak). |
| |
| Ref: https://github.com/google/sanitizers/issues/1374 |
| |
| Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541 |
| |
| Closes https://github.com/curl/curl/pull/6620 |
| |
| - curl_multibyte: always return a heap-allocated copy of string |
| |
| - Change the Windows char <-> UTF-8 conversion functions to return an |
| allocated copy of the passed in string instead of the original. |
| |
| Prior to this change the curlx_convert_ functions would, as what I |
| assume was an optimization, not make a copy of the passed in string if |
| no conversion was required. No conversion is required in non-UNICODE |
| Windows builds since our tchar strings are type char and remain in |
| whatever the passed in encoding is, which is assumed to be UTF-8 but may |
| be other encoding. |
| |
| In contrast the UNICODE Windows builds require conversion |
| (wchar <-> char) and do return a copy. That inconsistency could lead to |
| programming errors where the developer expects a copy, and does not |
| realize that won't happen in all cases. |
| |
| Closes https://github.com/curl/curl/pull/6602 |
| |
| Viktor Szakats (19 Feb 2021) |
| - http: add new files missed from referrer commit |
| |
| Ref: 44872aefc2d54f297caf2b0cc887df321bc9d791 |
| Ref: #6591 |
| |
| - http: add support to read and store the referrer header |
| |
| - add CURLINFO_REFERER libcurl option |
| - add --write-out '%{referer}' command-line option |
| - extend --xattr command-line option to fill user.xdg.referrer.url extended |
| attribute with the referrer (if there was any) |
| |
| Closes #6591 |
| |
| Daniel Stenberg (19 Feb 2021) |
| - urldata: remove the _ORIG suffix from string names |
| |
| It doesn't provide any useful info but only makes the names longer. |
| |
| Closes #6624 |
| |
| - url: fix memory leak if OOM in the HSTS handling |
| |
| Reported-by: Viktor Szakats |
| Bug: https://github.com/curl/curl/pull/6627#issuecomment-781626205 |
| |
| Closes #6628 |
| |
| - gnutls: assume nettle crypto support |
| |
| nettle has been the default crypto library with GnuTLS since 2010. By |
| dropping support for the previous libcrypto, we simplify code. |
| |
| Closes #6625 |
| |
| - asyn-ares: use consistent resolve error message |
| |
| ... with the help of Curl_resolver_error() which now is moved from |
| asyn-thead.c and is provided globally for this purpose. |
| |
| Follow-up to 35ca04ce1b77636 |
| |
| Makes test 1188 work for c-ares builds |
| |
| Closes #6626 |
| |
| Viktor Szakats (18 Feb 2021) |
| - ci: stop building on freebsd-12-1 |
| |
| An updated freebsd-12-2 image was added a few months ago, and this |
| older one is consistently failing to go past `pkginstall`: |
| ``` |
| Newer FreeBSD version for package py37-mlt: |
| To ignore this error set IGNORE_OSVERSION=yes |
| - package: 1202000 |
| - running kernel: 1201000 |
| Ignore the mismatch and continue? [Y/n]: pkg: repository FreeBSD contains packages for wrong OS version: FreeBSD:12:amd64 |
| ``` |
| |
| FreeBSD thread suggests that 12.1 is EOL, and best to avoid. |
| |
| Ref: https://forums.freebsd.org/threads/78856/ |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #6622 |
| |
| Daniel Stenberg (18 Feb 2021) |
| - test1188: change error from connect to resolve error |
| |
| Using the %NOLISTENPORT to trigger a connection failure is somewhat |
| "risky" (since it isn't guaranteed to not be listened to) and caused |
| occasional CI problems. This fix changes the infused error to be a more |
| reliable one but still verifies the --write-out functionality properly - |
| which is the purpose of this test. |
| |
| Reported-by: Jay Satiro |
| Fixes #6621 |
| Closes #6623 |
| |
| - url.c: use consistent error message for failed resolve |
| |
| - BUGS: language polish |
| |
| - wolfssl: don't store a NULL sessionid |
| |
| This caused a memory leak as the session id cache entry was still |
| erroneously stored with a NULL sessionid and that would later be treated |
| as not needed to get freed. |
| |
| Reported-by: Gisle Vanem |
| Fixes #6616 |
| Closes #6617 |
| |
| - parse_proxy: fix a memory leak in the OOM path |
| |
| Reported-by: Jay Satiro |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Emil Engler |
| |
| Closes #6614 |
| Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541 |
| |
| Jay Satiro (17 Feb 2021) |
| - url: fix possible use-after-free in default protocol |
| |
| Prior to this change if the user specified a default protocol and a |
| separately allocated non-absolute URL was used then it was freed |
| prematurely, before it was then used to make the replacement URL. |
| |
| Bug: https://github.com/curl/curl/issues/6604#issuecomment-780138219 |
| Reported-by: [email protected] |
| |
| Closes https://github.com/curl/curl/pull/6613 |
| |
| Daniel Stenberg (16 Feb 2021) |
| - multi: rename the multi transfer states |
| |
| While working on documenting the states it dawned on me that step one is |
| to use more descriptive names on the states. This also changes prefix on |
| the states to make them shorter in the source. |
| |
| State names NOT ending with *ing are transitional ones. |
| |
| Closes #6612 |
| |
| Viktor Szakats (16 Feb 2021) |
| - http: do not add a referrer header with empty value |
| |
| Previously an empty 'Referer:' header was added to the HTTP request when |
| passing `--referer ';auto'` or `--referer ''` on the command-line. This |
| patch makes `--referer` work like `--header 'Referer:'` and will only add |
| the header if it has a non-zero length value. |
| |
| Reviewed-by: Jay Satiro |
| Closes #6610 |
| |
| Daniel Stenberg (16 Feb 2021) |
| - lib: remove 'conn->data' completely |
| |
| The Curl_easy pointer struct entry in connectdata is now gone. Just |
| before commit 215db086e0 landed on January 8, 2021 there were 919 |
| references to conn->data. |
| |
| Closes #6608 |
| |
| - openldap: pass 'data' to the callbacks instead of 'conn' |
| |
| Jay Satiro (15 Feb 2021) |
| - doh: Fix sharing user's resolve list with DOH handles |
| |
| - Share the shared object from the user's easy handle with the DOH |
| handles. |
| |
| Prior to this change if the user had set a shared object with shared |
| cached DNS (CURL_LOCK_DATA_DNS) for their easy handle then that wasn't |
| used by any associated DOH handles, since they used the multi's default |
| hostcache. |
| |
| This change means all the handles now use the same hostcache, which is |
| either the shared hostcache from the user created shared object if it |
| exists or if not then the multi's default hostcache. |
| |
| Reported-by: Manuj Bhatia |
| |
| Fixes https://github.com/curl/curl/issues/6589 |
| Closes https://github.com/curl/curl/pull/6607 |
| |
| Daniel Stenberg (15 Feb 2021) |
| - http2: remove conn->data use |
| |
| ... but instead use a private alternative that points to the "driving |
| transfer" from the connection. We set the "user data" associated with |
| the connection to be the connectdata struct, but when we drive transfers |
| the code still needs to know the pointer to the transfer. We can change |
| the user data to become the Curl_easy handle, but with older nghttp2 |
| version we cannot dynamically update that pointer properly when |
| different transfers are used over the same connection. |
| |
| Closes #6520 |
| |
| - openssl: remove conn->data use |
| |
| We still make the trace callback function get the connectdata struct |
| passed to it, since the callback is anchored on the connection. |
| |
| Repeatedly updating the callback pointer to set 'data' with |
| SSL_CTX_set_msg_callback_arg() doesn't seem to work, probably because |
| there might already be messages in the queue with the old pointer. |
| |
| This code therefore makes sure to set the "logger" handle before using |
| OpenSSL calls so that the right easy handle gets used for tracing. |
| |
| Closes #6522 |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (14 Feb 2021) |
| - doh: add options to disable ssl verification |
| |
| - New libcurl options CURLOPT_DOH_SSL_VERIFYHOST, |
| CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS do the |
| same as their respective counterparts. |
| |
| - New curl tool options --doh-insecure and --doh-cert-status do the same |
| as their respective counterparts. |
| |
| Prior to this change DOH SSL certificate verification settings for |
| verifyhost and verifypeer were supposed to be inherited respectively |
| from CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER, but due to a bug |
| were not. As a result DOH verification remained at the default, ie |
| enabled, and it was not possible to disable. This commit changes |
| behavior so that the DOH verification settings are independent and not |
| inherited. |
| |
| Ref: https://github.com/curl/curl/pull/4579#issuecomment-554723676 |
| |
| Fixes https://github.com/curl/curl/issues/4578 |
| Closes https://github.com/curl/curl/pull/6597 |
| |
| - hostip: fix crash in sync resolver builds that use DOH |
| |
| - Guard some Curl_async accesses with USE_CURL_ASYNC instead of |
| !CURLRES_SYNCH. |
| |
| This is another follow-up to 8335c64 which moved the async struct from |
| the connectdata struct into the Curl_easy struct. A previous follow-up |
| 6cd167a fixed building for sync resolver by guarding some async struct |
| accesses with !CURLRES_SYNCH. The problem is since DOH (DNS-over-HTTPS) |
| is available as an asynchronous secondary resolver the async struct may |
| be used even when libcurl is built for the sync resolver. That means |
| that CURLRES_SYNCH and USE_CURL_ASYNC may be defined at the same time. |
| |
| Closes https://github.com/curl/curl/pull/6603 |
| |
| Daniel Stenberg (13 Feb 2021) |
| - KNOWN_BUGS: cannot enable LDAPS on Windows with cmake |
| |
| Reported-by: Jack Boos Yu |
| Closes #6284 |
| |
| - KNOWN_BUGS: Excessive HTTP/2 packets with TCP_NODELAY |
| |
| Reported-by: Alex Xu |
| Closes #6363 |
| |
| - http: use credentials from transfer, not connection |
| |
| HTTP auth "accidentally" worked before this cleanup since the code would |
| always overwrite the connection credentials with the credentials from |
| the most recent transfer and since HTTP auth is typically done first |
| thing, this has not been an issue. It was still wrong and subject to |
| possible race conditions or future breakage if the sequence of functions |
| would change. |
| |
| The data.set.str[] strings MUST remain unmodified exactly as set by the |
| user, and the credentials to use internally are instead set/updated in |
| state.aptr.* |
| |
| Added test 675 to verify different credentials used in two requests done |
| over a reused HTTP connection, which previously behaved wrongly. |
| |
| Fixes #6542 |
| Closes #6545 |
| |
| - test433: clear some home dir env variables |
| |
| Follow-up to bd6b54ba1f55b5 |
| |
| ... so that XDG_CONFIG_HOME is the only home dir variable set and thus |
| used correctly in the test! |
| |
| Fixes #6599 |
| Closes #6600 |
| |
| - RELEASE-NOTES: synced |
| |
| bumped the version to 7.76.0 |
| |
| - travis: install libgsasl-dev to add that to the builds |
| |
| Closes #6588 |
| |
| - urldata: don't touch data->set.httpversion at run-time |
| |
| Rename it to 'httpwant' and make a cloned field in the state struct as |
| well for run-time updates. |
| |
| Also: refuse non-supported HTTP versions. Verified with test 129. |
| |
| Closes #6585 |
| |
| Viktor Szakats (11 Feb 2021) |
| - tests: disable .curlrc in more environments |
| |
| by also setting CURL_HOME and XDG_CONFIG_HOME envvars to the local |
| directory. |
| |
| Reviewed-by: Daniel Stenberg |
| Fixes #6595 |
| Closes #6596 |
| |
| - docs/Makefile.inc: format to be update-friendly |
| |
| - one source file per line |
| - convert tabs to spaces |
| - do not align line-continuation backslashes |
| - sort source files alphabetically |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #6593 |
| |
| Daniel Stenberg (11 Feb 2021) |
| - curl: provide libgsasl version and feature info in -V output |
| |
| Closes #6592 |
| |
| - gsasl: provide CURL_VERSION_GSASL if built-in |
| |
| To let applications know the feature is available. |
| |
| Closes #6592 |
| |
| - curl: add --fail-with-body |
| |
| Prevent both --fail and --fail-with-body on the same command line. |
| |
| Verify with test 349, 360 and 361. |
| |
| Closes #6449 |
| |
| - TODO: remove HSTS |
| |
| Provided now since commit 7385610d0c74 |
| |
| Jay Satiro (10 Feb 2021) |
| - tests: Fix tests failing due to change in curl --help |
| |
| Follow-up to parent 3183217 which added add missing <mode> argument to |
| --create-file-mode <mode>. |
| |
| Ref: https://github.com/curl/curl/issues/6590 |
| |
| - tool_help: add missing argument for --create-file-mode |
| |
| Prior to this change the required argument was not shown in curl --help. |
| |
| before: |
| --create-file-mode File mode for created files |
| |
| after: |
| --create-file-mode <mode> File mode (octal) for created files |
| |
| Reported-by: [email protected] |
| |
| Fixes https://github.com/curl/curl/issues/6590 |
| |
| - create-file-mode.d: add missing Arg tag |
| |
| Prior to this change the required argument was not shown. |
| |
| curl.1 before: --create-file-mode |
| curl.1 after: --create-file-mode <mode> |
| |
| Reported-by: [email protected] |
| |
| Fixes https://github.com/curl/curl/issues/6590 |
| |
| Viktor Szakats (10 Feb 2021) |
| - gsasl: fix errors/warnings building against libgsasl |
| |
| - also fix an indentation |
| - make Curl_auth_gsasl_token() use CURLcode (by Daniel Stenberg) |
| |
| Ref: https://github.com/curl/curl/pull/6372#issuecomment-776118711 |
| Ref: https://github.com/curl/curl/pull/6588 |
| |
| Reviewed-by: Jay Satiro |
| Assisted-by: Daniel Stenberg |
| Reviewed-by: Simon Josefsson |
| Closes #6587 |
| |
| - Makefile.m32: add support for libgsasl dependency |
| |
| Reviewed-by: Marcel Raad |
| Closes #6586 |
| |
| Marcel Raad (10 Feb 2021) |
| - ngtcp2: clarify calculation precedence |
| |
| As suggested by Codacy/cppcheck. |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - server: remove redundant condition |
| |
| `end` is always non-null here. |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - lib: remove redundant code |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - mqttd: remove unused variable |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - tool_paramhlp: reduce variable scope |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - tests: reduce variable scopes |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - lib: reduce variable scopes |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| - ftp: fix Codacy/cppcheck warning about null pointer arithmetic |
| |
| Increment `bytes` only if it is non-null. |
| |
| Closes https://github.com/curl/curl/pull/6576 |
| |
| Daniel Stenberg (9 Feb 2021) |
| - ngtcp2: adapt to the new recv_datagram callback |
| |
| - quiche: fix build error: use 'int' for port number |
| |
| Follow-up to cb2dc1ba8 |
| |
| - ftp: add 'list_only' to the transfer state struct |
| |
| and rename it from 'ftp_list_only' since it is also used for SSH and |
| POP3. The state is updated internally for 'type=D' FTP URLs. |
| |
| Added test case 1570 to verify. |
| |
| Closes #6578 |
| |
| - ftp: add 'prefer_ascii' to the transfer state struct |
| |
| ... and make sure the code never updates 'set.prefer_ascii' as it breaks |
| handle reuse which should use the setting as the user specified it. |
| |
| Added test 1569 to verify: it first makes an FTP transfer with ';type=A' |
| and then another without type on the same handle and the second should |
| then use binary. Previously, curl failed this. |
| |
| Closes #6578 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| vtls: initial implementation of rustls backend |
| |
| This adds a new TLS backend, rustls. It uses the C-to-rustls bindings |
| from https://github.com/abetterinternet/crustls. |
| |
| Rustls is at https://github.com/ctz/rustls/. |
| |
| There is still a fair bit to be done, like sending CloseNotify on |
| connection shutdown, respecting CAPATH, and properly indicating features |
| like "supports TLS 1.3 ciphersuites." But it works well enough to make |
| requests and receive responses. |
| |
| Blog post for context: |
| https://www.abetterinternet.org/post/memory-safe-curl/ |
| |
| Closes #6350 |
| |
| - [Simon Josefsson brought this change] |
| |
| sasl: support SCRAM-SHA-1 and SCRAM-SHA-256 via libgsasl |
| |
| Closes #6372 |
| |
| Jay Satiro (9 Feb 2021) |
| - lib: use int type for more port variables |
| |
| This is a follow-up to 764c6bd. Prior to that change port variables |
| were usually type long. |
| |
| Closes https://github.com/curl/curl/pull/6553 |
| |
| - tool_writeout: refactor write-out and write-out json |
| |
| - Deduplicate the logic used by write-out and write-out json. |
| |
| Rather than have separate writeLong, writeString, etc, logic for |
| each of write-out and write-out json instead have respective shared |
| functions that can output either format and a 'use_json' parameter to |
| indicate whether it is json that is output. |
| |
| This will make it easier to maintain. Rather than have to go through |
| two sets of logic now we only have to go through one. |
| |
| - Support write-out %{errormsg} and %{exitcode} in json. |
| |
| - Clarify in the doc that %{exitcode} is the exit code of the transfer. |
| |
| Prior to this change it just said "The numerical exitcode" which |
| implies it's the exit code of the tool, and it's not necessarily that. |
| |
| Closes https://github.com/curl/curl/pull/6544 |
| |
| - lib: drop USE_SOCKETPAIR in favor of CURL_DISABLE_SOCKETPAIR |
| |
| .. since the former is undocumented and they both do the same thing. |
| |
| Closes https://github.com/curl/curl/pull/6517 |
| |
| - curl_multibyte: fall back to local code page stat/access on Windows |
| |
| If libcurl is built with Unicode support for Windows then it is assumed |
| the filename string is Unicode in UTF-8 encoding and it is converted to |
| UTF-16 to be passed to the wide character version of the respective |
| function (eg wstat). However the filename string may actually be in the |
| local encoding so, even if it successfully converted to UTF-16, if it |
| could not be stat/accessed then try again using the local code page |
| version of the function (eg wstat fails try stat). |
| |
| We already do this with fopen (ie wfopen fails try fopen), so I think it |
| makes sense to extend it to stat and access functions. |
| |
| Closes https://github.com/curl/curl/pull/6514 |
| |
| - [Stephan Szabo brought this change] |
| |
| file: Support unicode urls on windows |
| |
| Closes https://github.com/curl/curl/pull/6501 |
| |
| - [Vincent Torri brought this change] |
| |
| cmake: fix import library name for non-MS compiler on Windows |
| |
| - Use _imp.lib suffix only for Microsoft's compiler (MSVC). |
| |
| Prior to this change library suffix _imp.lib was used for the import |
| library on Windows regardless of compiler. |
| |
| With this change the other compilers should now use their default |
| suffix which should be .dll.a. |
| |
| This change is motivated by the usage of pkg-config on MSYS2. |
| Indeed, when 'pkg-config --libs libcurl' is used, -lcurl is |
| passed to ld. The documentation of ld on Windows : |
| |
| https://sourceware.org/binutils/docs/ld/WIN32.html |
| |
| lists, in the 'direct linking to a dll' section, the pattern |
| of the searched import library, and libcurl_imp.lib is not there. |
| |
| Closes https://github.com/curl/curl/pull/6225 |
| |
| Daniel Stenberg (9 Feb 2021) |
| - urldata: move 'followlocation' to UrlState |
| |
| As this is a state variable it does not belong in UserDefined which is |
| used to store values set by the user. |
| |
| Closes #6582 |
| |
| - [Ikko Ashimine brought this change] |
| |
| http_proxy: fix typo in http_proxy.c |
| |
| settting -> setting |
| |
| Closes #6583 |
| |
| - [Fabian Keil brought this change] |
| |
| tests/server: Bump MAX_TAG_LEN to 200 |
| |
| This is useful for tests containing HTML inside of <data> sections. |
| For <img> tags it's not uncommon to be longer than the previous |
| limit of 79 bytes. |
| |
| An example of a previously problem-causing tag is: |
| <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-http://www.privoxy.org/images/privoxy.png-by-size" width="88" height="31"> |
| which is needed for a Privoxy test for the banners-by-size filter. |
| |
| Previously it caused server failures like: |
| 12:29:05.786961 ====> Client connect |
| 12:29:05.787116 accept_connection 3 returned 4 |
| 12:29:05.787194 accept_connection 3 returned 0 |
| 12:29:05.787285 Read 119 bytes |
| 12:29:05.787345 Process 119 bytes request |
| 12:29:05.787407 Got request: GET /banners-by-size/9 HTTP/1.1 |
| 12:29:05.787464 Requested test number 9 part 0 |
| 12:29:05.787686 getpart() failed with error: -2 |
| 12:29:05.787744 - request found to be complete (9) |
| 12:29:05.787912 getpart() failed with error: -2 |
| 12:29:05.788048 Wrote request (119 bytes) input to log/server.input |
| 12:29:05.788157 Send response test9 section <data> |
| 12:29:05.788443 getpart() failed with error: -2 |
| 12:29:05.788498 instructed to close connection after server-reply |
| 12:29:05.788550 ====> Client disconnect 0 |
| 12:29:05.871448 exit_signal_handler: 15 |
| 12:29:05.871714 signalled to die |
| 12:29:05.872040 ========> IPv4 sws (port 21108 pid: 51758) exits with signal (15) |
| |
| - [Fabian Keil brought this change] |
| |
| tests/badsymbols.pl: when opening '$incdir' fails include it in the error message |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.1: document -o, -P, -L, and -E |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: add %TESTNUMBER variable to make copying tests more convenient |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: add an -o option to change internal variables |
| |
| runtests.pl has lots of internal variables one might want to |
| change in certain situations, but adding a dedicated option |
| for every single one of them isn't practical. |
| |
| Usage: |
| ./runtests.pl -o TESTDIR=$privoxy_curl_test_dir -o HOSTIP=10.0.0.1 ... |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: cleanups |
| |
| - show the summarized test result in the last line of the report |
| - do not use $_ after mapping it to a named variable |
| Doing that makes the code harder to follow. |
| - log the restraints sorted by the number of their occurrences |
| - fix language when logging restraints that only occured once |
| - let runhttpserver() use $TESTDIR instead of $srcdir |
| ... so it works if a non-default $TESTDIR is being used. |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: add an -E option to specify an exclude file |
| |
| It can contain additional restraints for test numbers, |
| keywords and tools. |
| |
| The idea is to let third parties like the Privoxy project |
| distribute an exclude file with their tarballs that specifies |
| which curl tests are not expected to work when using Privoxy |
| as a proxy, without having to fork the whole curl test suite. |
| |
| The syntax could be changed to be extendable and maybe |
| more closely reflect the "curl test" syntax. Currently |
| it's a bunch of lines like these: |
| |
| test:$TESTNUMBER:Reason why this test with number $TESTNUMBER should be skipped |
| keyword:$KEYWORD:Reason why tests whose keywords contain the $KEYWORD should be skipped |
| tool:$TOOL:Reason why tests with tools that contain $TOOL should be skipped |
| |
| To specify multiple $TESTNUMBERs, $KEYWORDs and $TOOLs |
| on a single line, split them with commas. |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: add -L parameter to require additional perl libraries |
| |
| This is useful to change the behaviour of the script without |
| having to modify the file itself, for example to use a custom |
| compareparts() function that ignores header differences that |
| are expected to occur when an external proxy is being used. |
| |
| Such differences are proxy-specific and thus the modifications |
| should be maintained together with the proxy. |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: add a -P option to specify an external proxy |
| |
| ... that should be used when executing the tests. |
| |
| The assumption is that the proxy is an HTTP proxy. |
| |
| This option should be used together with -L to provide |
| a customized compareparts() version that knows which |
| proxy-specific header differences should be ignored. |
| |
| This option doesn't work for all test types yet. |
| |
| - [Fabian Keil brought this change] |
| |
| tests: fixup several tests |
| |
| missing CRs and modified %hostip |
| |
| lib556/test556: use a real HTTP version to make test reuse more convenient |
| |
| make sure the weekday in Date headers matches the date |
| |
| test61: replace stray "^M" (5e 4d) at the end of a cookie with a '^M' (0d) |
| |
| Gets the test working with external proxies like Privoxy again. |
| |
| Closes #6463 |
| |
| - ftp: never set data->set.ftp_append outside setopt |
| |
| Since the set value then risks getting used like that when the easy |
| handle is reused by the application. |
| |
| Also: renamed the struct field from 'ftp_append' to 'remote_append' |
| since it is also used for SSH protocols. |
| |
| Closes #6579 |
| |
| - urldata: remove the 'rtspversion' field |
| |
| from struct connectdata and the corresponding code in http.c that set |
| it. It was never used for anything! |
| |
| Closes #6581 |
| |
| - CURLOPT_QUOTE.3: clarify that libcurl doesn't parse what's sent |
| |
| ... so passed in commands may confuse libcurl's knowledge of state. |
| |
| Reported-by: Bodo Bergmann |
| Fixes #6577 |
| Closes #6580 |
| |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| vtls: factor out Curl_ssl_getsock to field of Curl_ssl |
| |
| Closes #6558 |
| |
| - RELEASE-PROCEDURE: remove old release dates, add new |
| |
| - docs/SSL-PROBLEMS: enhanced |
| |
| Elaborate on the intermediate cert issue, and mention that anything |
| below TLS 1.2 is generally considered insecure these days. |
| |
| Closes #6572 |
| |
| - THANKS: remove a Jon Rumsey dupe |
| |
| Daniel Gustafsson (5 Feb 2021) |
| - [nimaje brought this change] |
| |
| docs: fix FILE example url in --metalink documentation |
| |
| In a url after <scheme>:// follows the possibly empty authority part |
| till the next /, so that url missed a /. |
| |
| Closes #6573 |
| Reviewed-by: Daniel Stenberg <[email protected]> |
| Reviewed-by: Daniel Gustafsson <[email protected]> |
| |
| Daniel Stenberg (5 Feb 2021) |
| - hostip: fix build with sync resolver |
| |
| Reported-by: David Goerger |
| Follow-up from 8335c6417 |
| Fixes #6566 |
| Closes #6568 |
| |
| - mailmap: Jon Rumsey |
| |
| - [Jon Rumsey brought this change] |
| |
| gskit: correct the gskit_send() prototype |
| |
| gskit_send() first paramater is a pointer to Curl_easy not connectdata |
| struct. |
| |
| Closes #6570 |
| Fixes #6569 |
| |
| - urldata: fix build without HTTP and MQTT |
| |
| Reported-by: Joseph Chen |
| Fixes #6562 |
| Closes #6563 |
| |
| - ftp: avoid SIZE when asking for a TYPE A file |
| |
| ... as we ignore it anyway because servers don't report the correct size |
| and proftpd even blatantly returns a 550. |
| |
| Updates a set of tests accordingly. |
| |
| Reported-by: awesomenode on github |
| Fixes #6564 |
| Closes #6565 |
| |
| - pingpong: rename the curl_pp_transfer enum to use PP prefix |
| |
| Using an FTP prefix for PP provided functionality was misleading. |
| |
| - RELEASE-NOTES: synced |
| |
| ... and bump pending version to 7.75.1 (for now) |
| |
| Jay Satiro (4 Feb 2021) |
| - build: fix --disable-http-auth |
| |
| Broken since 215db08 (precedes 7.75.0). |
| |
| Reported-by: Benbuck Nason |
| |
| Fixes https://github.com/curl/curl/issues/6567 |
| |
| - build: fix --disable-dateparse |
| |
| Broken since 215db08 (precedes 7.75.0). |
| |
| Bug: https://curl.se/mail/lib-2021-02/0008.html |
| Reported-by: Firefox OS |
| |
| Daniel Stenberg (4 Feb 2021) |
| - [Jon Rumsey brought this change] |
| |
| OS400: update for CURLOPT_AWS_SIGV4 |
| |
| chkstrings fails because a new string option that could require codepage |
| conversion has been added. |
| |
| Closes #6561 |
| Fixes #6560 |
| |
| - BUG-BOUNTY: removed the cooperation mention |
| |
| Version 7.75.0 (3 Feb 2021) |
| |
| Daniel Stenberg (3 Feb 2021) |
| - RELEASE-NOTES: synced |
| |
| - THANKS: added contributors from 7.75.0 |
| |
| - copyright: fix year ranges in need of updates |
| |
| - TODO: remove items for next SONAME bump etc |
| |
| We want to avoid that completely, so we don't plan for things after such |
| an event. |
| |
| - [Jay Satiro brought this change] |
| |
| ngtcp2: Fix build error due to change in ngtcp2_settings |
| |
| - Separate ngtcp2_transport_params. |
| |
| ngtcp2/ngtcp2@05d7adc made ngtcp2_transport_params separate from |
| ngtcp2_settings. |
| |
| ngtcp2 master is required to build curl with http3 support. |
| |
| Closes #6554 |
| |
| - vtls: remove md5sum |
| |
| As it is not used anymore. |
| |
| Reported-by: Jacob Hoffman-Andrews |
| Bug: https://curl.se/mail/lib-2021-02/0000.html |
| |
| Closes #6557 |
| |
| - [Alessandro Ghedini brought this change] |
| |
| quiche: don't use primary_ip / primary_port |
| |
| Closes #6555 |
| |
| Alessandro Ghedini (1 Feb 2021) |
| - travis: enable quiche's FFI feature |
| |
| Daniel Stenberg (30 Jan 2021) |
| - [Dmitry Wagin brought this change] |
| |
| http: improve AWS HTTP v4 Signature auth |
| |
| - Add support services without region and service prefixes in |
| the URL endpoint (ex. Min.IO, GCP, Yandex Cloud, Mail.Ru Cloud Solutions, etc) |
| by providing region and service parameters via aws-sigv4 option. |
| - Add [:region[:service]] suffix to aws-sigv4 option; |
| - Fix memory allocation errors. |
| - Refactor memory management. |
| - Use Curl_http_method instead() STRING_CUSTOMREQUEST. |
| - Refactor canonical headers generating. |
| - Remove repeated sha256_to_hex() usage. |
| - Add some docs fixes. |
| - Add some codestyle fixes. |
| - Add overloaded strndup() for debug - curl_dbg_strndup(). |
| - Update tests. |
| |
| Closes #6524 |
| |
| - hyper: fix CONNECT to set 'data' as userdata |
| |
| Follow-up to 14e075d1a7fd |
| |
| - [Layla brought this change] |
| |
| connect: fix compile errors in `Curl_conninfo_local` |
| |
| .. for the `#else` (`!HAVE_GETSOCKNAME`) case |
| |
| Fixes https://github.com/curl/curl/issues/6548 |
| Closes #6549 |
| |
| Signed-off-by: Layla <[email protected]> |
| |
| - [Michał Antoniak brought this change] |
| |
| transfer: fix GCC 10 warning with flag '-Wint-in-bool-context' |
| |
| ... and return the error code from the Curl_mime_rewind call. |
| |
| Closes #6537 |
| |
| - [Michał Antoniak brought this change] |
| |
| avoid warning: enum constant in boolean context |
| |
| - copyright: fix missing year (range) updates |
| |
| - RELEASE-NOTES: synced |
| |
| - openssl: lowercase the hostname before using it for SNI |
| |
| ... because it turns out several servers out there don't actually behave |
| correctly otherwise in spite of the fact that the SNI field is |
| specifically said to be case insensitive in RFC 6066 section 3. |
| |
| Reported-by: David Earl |
| Fixes #6540 |
| Closes #6543 |
| |
| - KNOWN_BUGS: cmake: ExternalProject_Add does not set CURL_CA_PATH |
| |
| Closes #6313 |
| |
| - KNOWN_BUGS: Multi perform hangs waiting for threaded resolver |
| |
| Closes #4852 |
| |
| - KNOWN_BUGS: "pulseUI VPN client" is known to be buggy |
| |
| First entry in the new section "applications" for known problems in |
| libcurl using applications. |
| |
| Closes #6306 |
| |
| - tool_writeout: make %{errormsg} blank for no errors |
| |
| Closes #6539 |
| |
| Jay Satiro (27 Jan 2021) |
| - [Gisle Vanem brought this change] |
| |
| build: fix djgpp builds |
| |
| - Update build instructions in packages/DOS/README |
| |
| - Extend 'VPATH' with 'vquic' and 'vssh'. |
| |
| - Allow 'Makefile.dist' to build both 'lib' and 'src'. |
| |
| - Allow using the Windows hosted djgpp cross compiler to build for MSDOS |
| under Windows. |
| |
| - 'USE_SSL' -> 'USE_OPENSSL' |
| |
| - Added a 'link_EXE' macro. Etc, etc. |
| |
| - Linking 'curl.exe' needs '$(CURLX_CFILES)' too. |
| |
| - Do not pick-up '../lib/djgpp/*.o' files. Recompile locally. |
| |
| - Generate a gzipped 'tool_hugehelp.c' if 'USE_ZLIB=1'. |
| |
| - Remove 'djgpp-clean' |
| |
| - Adapt to new C-ares directory structure |
| |
| - Use conditional variable assignments |
| |
| Clarify the 'conditional variable assignment' in 'common.dj'. |
| |
| Closes https://github.com/curl/curl/pull/6382 |
| |
| Daniel Stenberg (27 Jan 2021) |
| - [Ikko Ashimine brought this change] |
| |
| hyper: fix typo in c-hyper.c |
| |
| settting -> setting |
| |
| Closes #6538 |
| |
| - libssh2: fix CURL_LIBSSH2_DEBUG-enabled build |
| |
| Follow-up to 2dcc940959772a |
| |
| Reported-by: Gisle Vanem |
| Bug: https://github.com/curl/curl/commit/2dcc940959772a652f6813fb6bd3092095a4877b#commitcomment-46420088 |
| |
| Jay Satiro (27 Jan 2021) |
| - asyn-thread: fix build for when getaddrinfo missing |
| |
| This is a follow-up to 8315343 which several days ago moved the resolver |
| pointer into the async struct but did not update the code that uses it |
| when getaddrinfo is not present. |
| |
| Closes https://github.com/curl/curl/pull/6536 |
| |
| Daniel Stenberg (27 Jan 2021) |
| - urldata: move 'ints' to the end of 'connectdata' |
| |
| To optimize storage slightly. |
| |
| Closes #6534 |
| |
| - urldata: store ip version in a single byte |
| |
| Closes #6534 |
| |
| - urldata: remove duplicate 'upkeep_interval_ms' from connectdata |
| |
| ... and rely only on the value already set in Curl_easy. |
| |
| Closes #6534 |
| |
| - urldata: remove 'local_ip' from the connectdata struct |
| |
| As the info is already stored in the transfer handle anyway, there's no |
| need to carry around a duplicate buffer for the life-time of the handle. |
| |
| Closes #6534 |
| |
| - urldata: remove duplicate port number storage |
| |
| ... and use 'int' for ports. We don't use 'unsigned short' since -1 is |
| still often used internally to signify "unknown value" and 0 - 65535 are |
| all valid port numbers. |
| |
| Closes #6534 |
| |
| - urldata: remove the duplicate 'ip_addr_str' field |
| |
| ... as the numerical IP address is already stored and kept in 'primary_ip'. |
| |
| Closes #6534 |
| |
| - select: convert Curl_select() to private static function |
| |
| The old function should not be used anywhere anymore (the only remaining |
| gskit use has to be fixed to instead use Curl_poll or none at all). |
| |
| The static function version is now called our_select() and is only built |
| if necessary. |
| |
| Closes #6531 |
| |
| - Curl_chunker: shrink the struct |
| |
| ... by removing a field, converting the hex index into a byte and |
| rearranging the order. Cuts it down from 48 bytes to 32 on x86_64. |
| |
| Closes #6527 |
| |
| - curl: include the file name in --xattr/--remote-time error msgs |
| |
| - curl: s/config->global/global/ in single_transfer() |
| |
| - curl: move fprintf outputs to warnf |
| |
| For setting and getting time of the download. To make the outputs |
| respect --silent etc. |
| |
| Reported-by: Viktor Szakats |
| Fixes #6533 |
| Closes #6535 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Fix http3 upload stall |
| |
| Closes #6521 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Fix stack buffer overflow |
| |
| Closes #6521 |
| |
| - warnless.h: remove the prototype for curlx_ultosi |
| |
| Follow-up to 217552503ff3 |
| |
| - warnless: remove curlx_ultosi |
| |
| ... not used anywhere |
| |
| Closes #6530 |
| |
| - [Patrick Monnerat brought this change] |
| |
| lib: remove conn->data uses |
| |
| Closes #6515 |
| |
| - pingpong: remove the 'conn' struct member |
| |
| ... as it's superfluous now when Curl_easy is passed in and we can |
| derive the connection from that instead and avoid the duplicate copy. |
| |
| Closes #6525 |
| |
| - hostip/proxy: remove conn->data use |
| |
| Closes #6513 |
| |
| - url: reduce conn->data references |
| |
| ... there are a few left but let's keep them to last |
| |
| Closes #6512 |
| |
| - scripts/singleuse: add curl_easy_option* |
| |
| Jay Satiro (25 Jan 2021) |
| - test410: fix for windows |
| |
| - Pass the very long request header via file instead of command line. |
| |
| Prior to this change the 49k very long request header string was passed |
| via command line and on Windows that is too long so it was truncated and |
| the test would fail (specifically msys CI). |
| |
| Closes https://github.com/curl/curl/pull/6516 |
| |
| Daniel Stenberg (25 Jan 2021) |
| - libssh2: move data from connection object to transfer object |
| |
| Readdir data, filenames and attributes are strictly related to the |
| transfer and not the connection. This also reduces the total size of the |
| fixed connectdata struct. |
| |
| Closes #6519 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Patrick Monnerat brought this change] |
| |
| lib: remove conn->data uses |
| |
| Closes #6499 |
| |
| - hyper: remove the conn->data references |
| |
| Closes #6508 |
| |
| - travis: build ngtcp2 --with-gnutls |
| |
| ... since they disable it by default since a few days back. |
| |
| Closes #6506 |
| Fixes #6493 |
| |
| - hostip: remove conn->data from resolver functions |
| |
| This also moves the 'async' struct from the connectdata struct into the |
| Curl_easy struct, which seems like a better home for it. |
| |
| Closes #6497 |
| |
| Jay Satiro (22 Jan 2021) |
| - strerror: skip errnum >= 0 assertion on windows |
| |
| On Windows an error number may be greater than INT_MAX and negative once |
| cast to int. |
| |
| The assertion is checked only in debug builds. |
| |
| Closes https://github.com/curl/curl/pull/6504 |
| |
| Daniel Stenberg (21 Jan 2021) |
| - doh: make Curl_doh_is_resolved survive a NULL pointer |
| |
| ... if Curl_doh() returned a NULL, this function gets called anyway as |
| in a asynch procedure. Then the doh struct pointer is NULL and signifies |
| an OOM situation. |
| |
| Follow-up to 6246a1d8c6776 |
| |
| - wolfssh: remove conn->data references |
| |
| ... and repair recent build breakage |
| |
| Closes #6507 |
| |
| - http: empty reply connection are not left intact |
| |
| ... so mark the connection as closed in this condition to prevent that |
| verbose message to wrongly appear. |
| |
| Reported-by: Matt Holt |
| Bug: https://twitter.com/mholt6/status/1352130240265375744 |
| Closes #6503 |
| |
| - chunk/encoding: remove conn->data references |
| |
| ... by anchoring more functions on Curl_easy instead of connectdata |
| |
| Closes #6498 |
| |
| Jay Satiro (20 Jan 2021) |
| - [Erik Olsson brought this change] |
| |
| lib: save a bit of space with some structure packing |
| |
| - Reorder some internal struct members so that less padding is used. |
| |
| This is an attempt at saving a bit of space by packing some structs |
| (using pahole to find the holes) where it might make sense to do |
| so without losing readability. |
| |
| I.e., I tried to avoid separating fields that seem grouped |
| together (like the cwd... fields in struct ftp_conn for instance). |
| Also abstained from touching fields behind conditional macros as |
| that quickly can get complicated. |
| |
| Closes https://github.com/curl/curl/pull/6483 |
| |
| Daniel Stenberg (20 Jan 2021) |
| - INSTALL.md: fix typo |
| |
| Found-by: Marcel Raad |
| |
| - [Fabian Keil brought this change] |
| |
| http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy |
| |
| Added test 1613 to verify. |
| |
| Closes #6490 |
| |
| - Merge branch 'bagder/curl_range-data-conn' |
| |
| - ftp: remove conn->data leftover |
| |
| - curl_range: remove conn->data |
| |
| Closes #6496 |
| |
| - INSTALL: now at 85 operating systems |
| |
| - quiche: fix unused parameter ‘conn’ |
| |
| Follow-up to 2bdec0b3 |
| |
| - transfer: fix ‘conn’ undeclared mistake for iconv build |
| |
| Follow-up to 219d9f8620d |
| |
| - doh: allocate state struct on demand |
| |
| ... instead of having it static within the Curl_easy struct. This takes |
| away 1176 bytes (18%) from the Curl_easy struct that aren't used very |
| often and instead makes the code allocate it when needed. |
| |
| Closes #6492 |
| |
| - socks: use the download buffer instead |
| |
| The SOCKS code now uses the generic download buffer for temporary |
| storage during the connection procedure, instead of having its own |
| private 600 byte buffer that adds to the connectdata struct size. This |
| works fine because this point the buffer is allocated but is not use for |
| download yet since the connection hasn't completed. |
| |
| This reduces the connection struct size by 22% on a 64bit arch! |
| |
| The SOCKS buffer needs to be at least 600 bytes, and the download buffer |
| is guaranteed to never be smaller than 1000 bytes. |
| |
| Closes #6491 |
| |
| - urldata: make magic be the first struct field |
| |
| By making the `magic` identifier the same size and at the same place |
| within the structs (easy, multi, share), libcurl will be able to more |
| reliably detect and safely error out if an application passes in the |
| wrong handle to APIs. Easier to detect and less likely to cause crashes |
| if done. |
| |
| Such mixups can't be detected at compile-time due to them being |
| typedefed void pointers - unless `CURL_STRICTER` is defined. |
| |
| Closes #6484 |
| |
| - http_chunks: correct and clarify a comment on hexnumber length |
| |
| ... and also rename the define for max length. |
| |
| Closes #6489 |
| |
| - curl_path: remove conn->data use |
| |
| Closes #6487 |
| |
| - transfer: remove conn->data use |
| |
| Closes #6486 |
| |
| - quic: remove conn->data use |
| |
| Closes #6485 |
| |
| - [Fabian Keil brought this change] |
| |
| Add test1181: Proxy request with --proxy-header "Connection: Keep-Alive" |
| |
| - [Fabian Keil brought this change] |
| |
| Add test1180: Proxy request with -H "Proxy-Connection: Keep-Alive" |
| |
| At the moment the test fails as curl sends two Proxy-Connection |
| headers. |
| |
| - c-hyper: avoid duplicated Proxy-Connection headers |
| |
| - http: make providing Proxy-Connection header not cause duplicated headers |
| |
| Fixes test 1180 |
| |
| Bug: https://curl.se/mail/lib-2021-01/0095.html |
| Reported-by: Fabian Keil |
| Closes #6472 |
| |
| - runtests: preprocess DISABLED to allow conditionals |
| |
| ... with this function provided, we can disable tests for specific |
| environments and setups directly within this file. |
| |
| Closes #6477 |
| |
| - runtests: turn preprocessing into a separate function |
| |
| ... and remove all other variable substitutions as they're now done once |
| and for all in the preprocessor. |
| |
| - lib/Makefile.inc: convert to listing each file on its own line |
| |
| ... to make it diff friendlier and easier to read. |
| |
| Closes #6448 |
| |
| - ftplistparser: remove use of conn->data |
| |
| Closes #6482 |
| |
| - lib: more conn->data cleanups |
| |
| Closes #6479 |
| |
| - [Patrick Monnerat brought this change] |
| |
| vtls: reduce conn->data use |
| |
| Closes #6474 |
| |
| - hyper: deliver data to application with Curl_client_write |
| |
| ... just as the native code path does. Avoids sending too large data |
| chunks in the callback and more. |
| |
| Reported-by: Gisle Vanem |
| Fixes #6462 |
| Closes #6473 |
| |
| - gopher: remove accidental conn->data leftover |
| |
| - libssh: avoid plain free() of libssh-memory |
| |
| Since curl's own memory debugging system redefines free() calls to track |
| and fiddle with memory, it cannot be used on memory allocated by 3rd |
| party libraries. |
| |
| Third party libraries SHOULD NOT require free() to release allocated |
| resources for this reason - and libs can use separate healp allocators |
| on some systems (like Windows) so free() doesn't necessarily work |
| anyway. |
| |
| Filed as an issue with libssh: https://bugs.libssh.org/T268 |
| |
| Closes #6481 |
| |
| - send: assert that Curl_write_plain() has a ->conn when called |
| |
| To help catch bad invokes. |
| |
| Closes #6476 |
| |
| - test410: verify HTTPS GET with a 49K request header |
| |
| skip test 410 for mesalink in the CI as it otherwise hangs "forever" |
| |
| - lib: pass in 'struct Curl_easy *' to most functions |
| |
| ... in most cases instead of 'struct connectdata *' but in some cases in |
| addition to. |
| |
| - We mostly operate on transfers and not connections. |
| |
| - We need the transfer handle to log, store data and more. Everything in |
| libcurl is driven by a transfer (the CURL * in the public API). |
| |
| - This work clarifies and separates the transfers from the connections |
| better. |
| |
| - We should avoid "conn->data". Since individual connections can be used |
| by many transfers when multiplexing, making sure that conn->data |
| points to the current and correct transfer at all times is difficult |
| and has been notoriously error-prone over the years. The goal is to |
| ultimately remove the conn->data pointer for this reason. |
| |
| Closes #6425 |
| |
| Emil Engler (17 Jan 2021) |
| - docs: fix typos in NEW-PROTOCOL.md |
| |
| This fixes a misspelled "it" and a grammatically wrong "-ing" suffix. |
| |
| Closes #6471 |
| |
| Daniel Stenberg (16 Jan 2021) |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (16 Jan 2021) |
| - [Razvan Cojocaru brought this change] |
| |
| cmake: expose CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG |
| |
| This does for cmake builds what --disable-openssl-auto-load-config |
| does for autoconf builds. |
| |
| Closes https://github.com/curl/curl/pull/6435 |
| |
| Daniel Stenberg (15 Jan 2021) |
| - test1918: verify curl_easy_option_by_name() and curl_easy_option_by_id() |
| |
| ... and as a practical side-effect, make sure that the |
| Curl_easyopts_check() function is asserted in debug builds, which we |
| want to detect mismatches between the options list in easyoptions.c and |
| the options in curl.h |
| |
| Found-by: Gisle Vanem |
| Bug: https://github.com/curl/curl/commit/08e8455dddc5e48e58a12ade3815c01ae3da3b64#commitcomment-45991815 |
| |
| Closes #6461 |
| |
| - [Gisle Vanem brought this change] |
| |
| easyoptions: add the missing AWS_SIGV4 |
| |
| Follow-up from AWS_SIGV4 |
| |
| - schannel_verify: fix safefree call typo |
| |
| Follow-up from e87ad71d1ba00519 |
| |
| Closes #6459 |
| |
| - mime: make sure setting MIMEPOST to NULL resets properly |
| |
| ... so that a function can first use MIMEPOST and then set it to NULL to |
| reset it back to a blank POST. |
| |
| Added test 584 to verify the fix. |
| |
| Reported-by: Christoph M. Becker |
| |
| Fixes #6455 |
| Closes #6456 |
| |
| - multi: set the PRETRANSFER time-stamp when we switch to PERFORM |
| |
| ... instead of at end of the DO state. This makes the timer more |
| accurate for the protocols that use the DOING state (such as FTP), and |
| simplifies how the function (now called init_perform) is called. |
| |
| The timer will then include the entire procedure up to PERFORM - |
| including all instructions for getting the transfer started. |
| |
| Closes #6454 |
| |
| - CURLINFO_PRETRANSFER_TIME.3: clarify |
| |
| ... the timer *does* include the instructions for getting the remote |
| file. |
| |
| Ref: #6452 |
| Closes #6453 |
| |
| - [Gisle Vanem brought this change] |
| |
| schannel: plug a memory-leak |
| |
| ... when built without -DUNICODE. |
| |
| Closes #6457 |
| |
| Jay Satiro (14 Jan 2021) |
| - gitattributes: Set batch files to CRLF line endings on checkout |
| |
| If a batch file is run without CRLF line endings (ie LF-only) then |
| arbitrary behavior may occur. I consider that a bug in Windows, however |
| the effects can be serious enough (eg unintended code executed) that |
| we're fixing it in the repo by requiring CRLF line endings for batch |
| files on checkout. |
| |
| Prior to this change the checked-out line endings of batch files were |
| dependent on a user's git preferences. On Windows it is common for git |
| users to have automatic CRLF conversion enabled (core.autocrlf true), |
| but those users that don't would run into this behavior. |
| |
| For example a user has reported running the Visual Studio project |
| generator batch file (projects/generate.bat) and it looped forever. |
| Output showed that the Windows OS interpreter was occasionally jumping |
| to arbitrary points in the batch file and executing commands. This |
| resulted in unintended files being removed (a removal sequence called) |
| and looping forever. |
| |
| Ref: https://serverfault.com/q/429594 |
| Ref: https://stackoverflow.com/q/232651 |
| Ref: https://www.dostips.com/forum/viewtopic.php?t=8988 |
| Ref: https://git-scm.com/docs/gitattributes#_checking_out_and_checking_in |
| Ref: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_core_autocrlf |
| |
| Bug: https://github.com/curl/curl/discussions/6427 |
| Reported-by: Ganesh Kamath |
| |
| Closes https://github.com/curl/curl/pull/6442 |
| |
| Daniel Stenberg (14 Jan 2021) |
| - tool_operate: spellfix a comment |
| |
| - ROADMAP: refreshed |
| |
| o removed HSTS - already implemented |
| o added HTTPS RR records |
| o mention HTTP/3 completion |
| |
| - http_chunks: remove Curl_ prefix from static functions |
| |
| - transfer: remove Curl_ prefix from static functions |
| |
| - tftp: remove Curl_ prefix from static functions |
| |
| - multi: remove Curl_ prefix from static functions |
| |
| - ldap: remove Curl_ prefix from static functions |
| |
| - doh: remove Curl_ prefix from static functions |
| |
| - asyn-ares: remove Curl_ prefix from static functions |
| |
| - vtls: remove Curl_ prefix from static functions |
| |
| - bearssl: remove Curl_ prefix from static functions |
| |
| - mbedtls: remove Curl_ prefix from static functions |
| |
| - wolfssl: remove Curl_ prefix from static functions |
| |
| - nss: remove Curl_ prefix from static functions |
| |
| - gnutls: remove Curl_ prefix from static functions |
| |
| - openssl: remove Curl_ prefix from static functions |
| |
| ... as we reserve this prefix to library-wide functions. |
| |
| Closes #6443 |
| |
| - nss: get the run-time version instead of build-time |
| |
| Closes #6445 |
| |
| Jay Satiro (12 Jan 2021) |
| - tool_doswin: Restore original console settings on CTRL signal |
| |
| - Move Windows terminal init code from tool_main to tool_doswin. |
| |
| - Restore the original console settings on CTRL+C and CTRL+BREAK. |
| |
| Background: On Windows the curl tool changes the console settings to |
| enable virtual terminal processing (eg color output) if supported |
| (ie Win 10). The original settings are restored on exit but prior to |
| this change were not restored in the case of the CTRL signals. |
| |
| Windows VT behavior varies depending on console/powershell/terminal; |
| refer to the discussion in #6226. |
| |
| Assisted-by: Rich Turner |
| |
| Closes https://github.com/curl/curl/pull/6226 |
| |
| Daniel Stenberg (12 Jan 2021) |
| - gen.pl: fix perl syntax |
| |
| Follow-up to 324cf1d2e |
| |
| - [Emil Engler brought this change] |
| |
| help: update to current codebase |
| |
| This commit bumps the help to the current state of the project. |
| |
| Closes #6437 |
| |
| - [Emil Engler brought this change] |
| |
| docs: fix line length bug in gen.pl |
| |
| The script warns if the length of $opt and $desc is > 78. However, these |
| two variables are on totally separate lines so the check makes no sense. |
| Also the $bitmask field is totally forgotten. Currently this leads to |
| two warnings within `--resolve` and `--aws-sigv4`. |
| |
| Closes #6438 |
| |
| - [Emil Engler brought this change] |
| |
| docs: fix wrong documentation in help.d |
| |
| curl does not list all categories when you invoke "--help" without any |
| parameters. |
| |
| Closes #6436 |
| |
| - aws-sigv4.d: polish the wording |
| |
| Make it shorter and imperative form |
| |
| Closes #6439 |
| |
| - [Fabian Keil brought this change] |
| |
| misc: fix typos |
| |
| Bug: https://curl.se/mail/lib-2021-01/0063.html |
| Closes #6434 |
| |
| - multi_runsingle: bail out early on data->conn == NULL |
| |
| As that's a significant error condition and scan-build warns for NULL |
| pointer dereferences if we don't. |
| |
| Closes #6433 |
| |
| - multi: skip DONE state if there's no connection left for ftp wildcard |
| |
| ... to avoid running in that state with data->conn being NULL. |
| |
| - libssh2: fix "Value stored to 'readdir_len' is never read" |
| |
| Detected by scan-build |
| |
| - connect: mark intentional ignores of setsockopt return values |
| |
| Pointed out by Coverity |
| |
| Closes #6431 |
| |
| Jay Satiro (11 Jan 2021) |
| - http_proxy: Fix CONNECT chunked encoding race condition |
| |
| - During the end-of-headers response phase do not mark the tunnel |
| complete unless the response body was completely parsed/ignored. |
| |
| Prior to this change if the entirety of a CONNECT response with chunked |
| encoding was not received by the time the final header was parsed then |
| the connection would be marked done prematurely, before all the chunked |
| data could be read in and ignored (since this is what we do with any |
| CONNECT response body) and the connection could not be used. |
| |
| Bug: https://curl.se/mail/lib-2021-01/0033.html |
| Reported-by: Fabian Keil |
| |
| Closes https://github.com/curl/curl/pull/6432 |
| |
| Daniel Stenberg (11 Jan 2021) |
| - RELEASE-NOTES: synced |
| |
| - url: if IDNA conversion fails, fallback to Transitional |
| |
| This improves IDNA2003 compatiblity. |
| |
| Reported-by: Bubu on github |
| Fixes #6423 |
| Closes #6428 |
| |
| - travis: make the Hyper build from its master branch |
| |
| Closes #6430 |
| |
| - http: make 'authneg' also work for Hyper |
| |
| When doing a request with a request body expecting a 401/407 back, that |
| initial request is sent with a zero content-length. Test 177 and more. |
| |
| Closes #6424 |
| |
| Jay Satiro (8 Jan 2021) |
| - cmake: Add an option to disable libidn2 |
| |
| New option USE_LIBIDN2 defaults to ON for libidn2 detection. Prior to |
| this change libidn2 detection could not be turned off in cmake builds. |
| |
| Reported-by: William A Rowe Jr |
| |
| Fixes https://github.com/curl/curl/issues/6361 |
| Closes https://github.com/curl/curl/pull/6362 |
| |
| Daniel Stenberg (8 Jan 2021) |
| - HYPER: no longer needs the special branch |
| |
| - test179: use consistent header line endings |
| |
| ... to make "Hyper mode" work better. |
| |
| - file: don't provide content-length for directories |
| |
| ... as it is misleading. |
| |
| Ref #6379 |
| Closes #6421 |
| |
| - TODO: Directory listing for FILE: |
| |
| Ref #6379 |
| |
| - curl.h: add CURLPROTO_GOPHERS as own protocol identifier |
| |
| Follow-up to a1f06f32b860, to make sure it can be handled separately |
| from plain gopher. |
| |
| Closes #6418 |
| |
| - http: have CURLOPT_FAILONERROR fail after all headers |
| |
| ... so that Retry-After and other meta-content can still be used. |
| |
| Added 1634 to verify. Adjusted test 194 and 281 since --fail now also |
| includes the header-terminating CRLF in the output before it exits. |
| |
| Fixes #6408 |
| Closes #6409 |
| |
| - global_init: debug builds allocates a byte in init |
| |
| ... to make build tools/valgrind warn if no curl_global_cleanup is |
| called. |
| |
| This is conditionally only done for debug builds with the env variable |
| CURL_GLOBAL_INIT set. |
| |
| Closes #6410 |
| |
| - lib/unit tests: add missing curl_global_cleanup() calls |
| |
| - travis: adapt to Hyper build change |
| |
| Closes #6419 |
| |
| - pretransfer: setup the User-Agent header here |
| |
| ... and not in the connection setup, as for multiplexed transfers the |
| connection setup might be skipped and then the transfer would end up |
| without the set user-agent! |
| |
| Reported-by: Flameborn on github |
| Assisted-by: Andrey Gursky |
| Assisted-by: Jay Satiro |
| Assisted-by: Mike Gelfand |
| Fixes #6312 |
| Closes #6417 |
| |
| - test66: disable with Hyper |
| |
| ...as Hyper doesn't support HTTP/0.9 |
| |
| - c-hyper: poll the tasks until end correctly |
| |
| ... makes test 36 work. |
| |
| Closes #6412 |
| |
| - [Gergely Nagy brought this change] |
| |
| mk-ca-bundle.pl: deterministic output when using -t |
| |
| Printing trust purposes are now sorted, making the output deterministic |
| when running on the same input certdata.txt. |
| |
| Closes #6413 |
| |
| - KNOWN_BUGS: fixed "wolfSSL lacks support for renegotiation" |
| |
| Fixed by #6411 |
| |
| - [Himanshu Gupta brought this change] |
| |
| wolfssl: add SECURE_RENEGOTIATION support |
| |
| Closes #6411 |
| |
| - RELEASE-NOTES: synced |
| |
| - wolfssl: update copyright year range |
| |
| Follow-up to 7de2e96535e9 |
| |
| - c-hyper: make CURLE_GOT_NOTHING work |
| |
| Test 30 |
| |
| Closes #6407 |
| |
| - http_proxy: make CONNECT work with the Hyper backend |
| |
| Makes test 80 run |
| |
| Closes #6406 |
| |
| - TODO: --fail-with-body perchance? |
| |
| Jay Satiro (4 Jan 2021) |
| - tool_operate: fix the suppression logic of some error messages |
| |
| - Fix the failed truncation and failed writing body error messages to |
| not be shown unless error messages are shown. (ie the user has |
| specified -sS, or has not specified -s). |
| |
| - Also prefix same error messages with "curl: ", for example: |
| curl: (23) Failed to truncate, exiting |
| |
| Prior to this change the failed truncation error messages would be shown |
| if not -s, but did not account for -sS which should show. |
| |
| Prior to this change the failed writing body error messages would be |
| shown always. |
| |
| Ref: https://curl.se/docs/manpage.html#-S |
| |
| Bug: https://curl.se/mail/archive-2020-12/0017.html |
| Reported-by: Hongyi Zhao |
| |
| Closes https://github.com/curl/curl/pull/6402 |
| |
| - wolfssl: Support wolfSSL builds missing TLS 1.1 |
| |
| The wolfSSL TLS library defines NO_OLD_TLS in some of their build |
| configurations and that causes the library to be built without TLS 1.1. |
| For example if MD5 is explicitly disabled when building wolfSSL then |
| that defines NO_OLD_TLS and the library is built without TLS 1.1 [1]. |
| |
| Prior to this change attempting to build curl with a wolfSSL that was |
| built with NO_OLD_TLS would cause a build link error undefined reference |
| to wolfTLSv1_client_method. |
| |
| [1]: https://github.com/wolfSSL/wolfssl/blob/v4.5.0-stable/configure.ac#L2366 |
| |
| Bug: https://curl.se/mail/lib-2020-12/0121.html |
| Reported-by: Julian Montes |
| |
| Closes https://github.com/curl/curl/pull/6388 |
| |
| Daniel Stenberg (4 Jan 2021) |
| - test1633: set appropriate name |
| |
| "--retry with a 429 response and Retry-After:" |
| |
| - travis: limit the tests with quiche builds to HTTPS and FTPS only |
| |
| ... since it runs into the 50 minute time limit too often otherwise. |
| |
| Closes #6403 |
| |
| - HISTORY: added dates to early history |
| |
| Mostly thanks to this archived web page for urlget: |
| |
| https://web.archive.org/web/19980216125115/http://www.inf.ufrgs.br/~sagula/urlget.html |
| |
| - httpauth: make multi-request auth work with custom port |
| |
| When doing HTTP authentication and a port number set with CURLOPT_PORT, |
| the code would previously have the URL's port number override as if it |
| had been a redirect to an absolute URL. |
| |
| Added test 1568 to verify. |
| |
| Reported-by: UrsusArctos on github |
| Fixes #6397 |
| Closes #6400 |
| |
| - [Emil Engler brought this change] |
| |
| language: s/behaviour/behavior/g |
| |
| We currently use both spellings the british "behaviour" and the american |
| "behavior". However "behavior" is more used in the project so I think |
| it's worth dropping the british name. |
| |
| Closes #6395 |
| |
| - cmdline-opts/retry.d: mention response code 429 as well |
| |
| Reported-by: Cherish98 |
| Bug: https://curl.se/mail/archive-2020-12/0018.html |
| |
| - docs/HYPER.md: mention outstanding issues |
| |
| To make it more obvious to users what doesn't work (yet) |
| |
| Closes #6389 |
| |
| - COPYING/configure: bump copyright year range |
| |
| - c-hyper: add timecondition to the request |
| |
| Test 77-78 |
| |
| Closes #6391 |
| |
| - c-hyper: make Digest and NTLM work |
| |
| Test 64, 65, 67, 68, 69, 70, 72 |
| |
| Closes #6390 |
| |
| - examples/curlgtk.c: fix the copyright year range |
| |
| ... and make private functions static. |
| |
| - [Olaf Hering brought this change] |
| |
| docs/examples: adjust prototypes for CURLOPT_READFUNCTION |
| |
| The type of the buffer in curl_read_callback is 'char *', not 'void *'. |
| |
| Signed-off-by: Olaf Hering <[email protected]> |
| Closes #6392 |
| |
| - examples: fix more empty expression statement has no effect |
| |
| Follow-up to 26e46617b9 |
| |
| - cleanup: fix two empty expression statement has no effect |
| |
| Follow-up to 26e46617b9 |
| |
| - configure: set -Wextra-semi-stmt for clang with --enable-debug |
| |
| To have it properly complain on empty statements with no effect. |
| |
| Ref: #6376 |
| Closes #6378 |
| |
| - tests/unit: fix empty statements with no effect |
| |
| ... by making macros use "do {} while(0)" |
| |
| - [Paul Groke brought this change] |
| |
| dns: extend CURLOPT_RESOLVE syntax for adding non-permanent entries |
| |
| Extend the syntax of CURLOPT_RESOLVE strings: allow using a '+' prefix |
| (similar to the existing '-' prefix for removing entries) to add |
| DNS cache entries that will time out just like entries that are added |
| by libcurl itself. |
| |
| Append " (non-permanent)" to info log message in case a non-permanent |
| entry is added. |
| |
| Adjust relevant comments to reflect the new behavior. |
| |
| Adjust documentation. |
| |
| Extend unit1607 to test the new functionality. |
| |
| Closes #6294 |
| |
| - schannel: fix "empty expression statement has no effect" |
| |
| Bug: https://github.com/curl/curl/commit/8ab78f720ae478d533e30b202baec4b451741579#commitcomment-45445950 |
| Reported-by: Gisle Vanem |
| Closes #6381 |
| |
| - [Denis Laxalde brought this change] |
| |
| docs: remove redundant "better" in --fail help |
| |
| Closes #6385 |
| |
| - [Kevin Ushey brought this change] |
| |
| curl.1: fix typo microsft -> microsoft |
| |
| Closes #6380 |
| |
| - [XhmikosR brought this change] |
| |
| misc: assorted typo fixes |
| |
| Closes #6375 |
| |
| - RELEASE-NOTES: synced |
| |
| - tool_operate: avoid NULL dereference of first_arg |
| |
| Follow-up to 6a5e020d4d2b04a |
| Identified by OSS-Fuzz |
| Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28999 |
| Closes #6377 |
| |
| - misc: fix "warning: empty expression statement has no effect" |
| |
| Turned several macros into do-while(0) style to allow their use to work |
| find with semicolon. |
| |
| Bug: https://github.com/curl/curl/commit/08e8455dddc5e48e58a12ade3815c01ae3da3b64#commitcomment-45433279 |
| Follow-up to 08e8455dddc5e4 |
| Reported-by: Gisle Vanem |
| Closes #6376 |
| |
| - KNOWN_BUGS: 6.10 curl never completes Negotiate over HTTP |
| |
| Closes #5235 |
| Closes #6370 |
| |
| - writeout: fix NULL dereference for "this url" |
| |
| Detected by torture test 1029 |
| |
| Follow-up to 7a90ddf88f5a |
| |
| Closes #6374 |
| |
| - failf: remove newline from formatting strings |
| |
| ... as failf adds one itself. |
| |
| Also: add an assert() to failf() that triggers on a newline in the |
| format string! |
| |
| Closes #6365 |
| |
| - [XhmikosR brought this change] |
| |
| CI: fix warning with the latest versions |
| |
| `git checkout HEAD^2` is no longer needed |
| |
| Closes #6369 |
| |
| - INSTALL: update the list known OSes and CPU archs curl has run on |
| |
| Closes #6366 |
| |
| - [Cherish98 brought this change] |
| |
| curl: fix handling of -q option |
| |
| The match of the "-q" option (short for "--disable") should: |
| a) allow concatenation with other single-letters; and |
| b) be case-sensitive, lest confusing with "-Q" ("--quote") |
| |
| Closes #6364 |
| |
| - tests/badsymbols.pl: ignore stand-alone single hash lines |
| |
| Bug: https://curl.se/mail/lib-2020-12/0084.html |
| Reported-by: Dennis Clarke |
| Assisted-by: Jay Satiro |
| |
| Closes #6355 |
| |
| - curl_easy_pause.3: add multiplexed pause effects |
| |
| and generally refresh and update. Remove details for ancient versions. |
| |
| Reviewed-by: Jay Satiro |
| Closes #6360 |
| |
| Jay Satiro (22 Dec 2020) |
| - curl_easy_pause.3: fix man page reference |
| |
| Follow-up to ac9a724 from earlier today. |
| |
| Ref: https://github.com/curl/curl/pull/6359 |
| |
| Daniel Stenberg (22 Dec 2020) |
| - EXPERIMENTAL: add the Hyper backend to the list |
| |
| ... of current experimental features in curl. |
| |
| - speedcheck: exclude paused transfers |
| |
| Paused transfers should not be stopped due to slow speed even when |
| CURLOPT_LOW_SPEED_LIMIT is set. Additionally, the slow speed timer is |
| now reset when the transfer is unpaused - as otherwise it would easily |
| just trigger immediately after unpausing. |
| |
| Reported-by: Harry Sintonen |
| Fixes #6358 |
| Closes #6359 |
| |
| - h2: do not wait for RECV on paused transfers |
| |
| ... as the socket might be readable all the time when paused and thus |
| causing a busy-loop. |
| |
| Reported-by: Harry Sintonen |
| Reviewed-by: Jay Satiro |
| Fixes #6356 |
| Closes #6357 |
| |
| - RELEASE-NOTES: synced |
| |
| - cmdline-opts/gen.pl: return hard on errors |
| |
| ... as the warnings tend to go unnoticed otherwise! |
| |
| Closes #6354 |
| |
| - examples/libtest: add .checksrc to dist |
| |
| ... so that (auto)builds from tarballs also get the correct instructions. |
| |
| Fixes #6176 |
| Closes #6353 |
| |
| - test: verify new --write-out variables |
| |
| Extended test 1029 and added 1188 |
| |
| - test970: adapted to the new internal order of variables |
| |
| - curl: add variables to --write-out |
| |
| In particular, these ones can help a user to create its own error |
| message when one or transfers fail. |
| |
| writeout: add 'onerror', 'url', 'urlnum', 'exitcode', 'errormsg' |
| |
| onerror - lets a user only show the rest on non-zero exit codes |
| |
| url - the input URL used for this transfer |
| |
| urlnum - the numerical URL counter (0 indexed) for this transfer |
| |
| exitcode - the numerical exit code for the transfer |
| |
| errormsg - obvious |
| |
| Reported-by: Earnestly on github |
| Fixes #6199 |
| Closes #6207 |
| |
| - [Matthias Gatto brought this change] |
| |
| tests: add very simple AWS HTTP v4 Signature test |
| |
| Signed-off-by: Matthias Gatto <[email protected]> |
| |
| - [Matthias Gatto brought this change] |
| |
| docs: add AWS HTTP v4 Signature |
| |
| - [Matthias Gatto brought this change] |
| |
| tool: add AWS HTTP v4 Signature support |
| |
| Signed-off-by: Matthias Gatto <[email protected]> |
| |
| - [Matthias Gatto brought this change] |
| |
| http: Make the call to v4 signature |
| |
| This patch allow to call the v4 signature introduce in previous commit |
| |
| Signed-off-by: Matthias Gatto <[email protected]> |
| |
| - [Matthias Gatto brought this change] |
| |
| http: introduce AWS HTTP v4 Signature |
| |
| It is a security process for HTTP. |
| |
| It doesn't seems to be standard, but it is used by some cloud providers. |
| |
| Aws: |
| https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html |
| Outscale: |
| https://wiki.outscale.net/display/EN/Creating+a+Canonical+Request |
| GCP (I didn't test that this code work with GCP though): |
| https://cloud.google.com/storage/docs/access-control/signing-urls-manually |
| |
| most of the code is in lib/http_v4_signature.c |
| |
| Information require by the algorithm: |
| - The URL |
| - Current time |
| - some prefix that are append to some of the signature parameters. |
| |
| The data extracted from the URL are: the URI, the region, |
| the host and the API type |
| |
| example: |
| https://api.eu-west-2.outscale.com/api/latest/ReadNets |
| ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ |
| ^ ^ ^ |
| / \ URI |
| API type region |
| |
| Small description of the algorithm: |
| - make canonical header using content type, the host, and the date |
| - hash the post data |
| - make canonical_request using custom request, the URI, |
| the get data, the canonical header, the signed header |
| and post data hash |
| - hash canonical_request |
| - make str_to_sign using one of the prefix pass in parameter, |
| the date, the credential scope and the canonical_request hash |
| - compute hmac from date, using secret key as key. |
| - compute hmac from region, using above hmac as key |
| - compute hmac from api_type, using above hmac as key |
| - compute hmac from request_type, using above hmac as key |
| - compute hmac from str_to_sign using above hmac as key |
| - create Authorization header using above hmac, prefix pass in parameter, |
| the date, and above hash |
| |
| Signed-off-by: Matthias Gatto <[email protected]> |
| |
| Closes #5703 |
| |
| - [Matthias Gatto brought this change] |
| |
| http: add hmac support for sha256 |
| |
| It seems current hmac implementation use md5 for the hash, |
| V4 signature require sha256, so I've added the needed struct in |
| this commit. |
| |
| I've added the functions that do the hmac in v4 signature file |
| as a static function ,in the next patch of the serie, |
| because it's used only by this file. |
| |
| Signed-off-by: Matthias Gatto <[email protected]> |
| |
| - [Cristian Rodríguez brought this change] |
| |
| connect: on linux, enable reporting of all ICMP errors on UDP sockets |
| |
| The linux kernel does not report all ICMP errors back to userspace due |
| to historical reasons. |
| |
| IP*_RECVERR sockopt must be turned on to have the correct behaviour |
| which is to pass all ICMP errors to userspace. |
| |
| See https://bugzilla.kernel.org/show_bug.cgi?id=202355 |
| |
| Closes #6341 |
| |
| - curl: add --create-file-mode [mode] |
| |
| This option sets the (octal) mode to use for the remote file when one is |
| created, using the SFTP, SCP or FILE protocols. When not set, the |
| default is 0644. |
| |
| Closes #6244 |
| |
| - c-hyper: fix compiler warnings |
| |
| Identified by clang on windows. |
| |
| Reported-by: Gisle Vanem |
| Bug: 58974d25d8173aec154e593ed9d866da566c9811 |
| |
| Closes #6351 |
| |
| - KNOWN_BUGS: Remote recursive folder creation with SFTP |
| |
| Closes #5204 |
| |
| Jay Satiro (20 Dec 2020) |
| - badsymbols.pl: Add verbose mode -v |
| |
| Use -v as the first option to enable verbose mode which will show source |
| input, extracted symbol and line info. For example: |
| |
| Source: ./../include/curl/typecheck-gcc.h |
| Symbol: curlcheck_socket_info(info) |
| Line #423: #define curlcheck_socket_info(info) \ |
| |
| Ref: https://curl.se/mail/lib-2020-12/0084.html |
| |
| Closes https://github.com/curl/curl/pull/6349 |
| |
| - KNOWN_BUGS: Secure Transport disabling hostname validation also disables SNI |
| |
| That behavior is a limitation of Apple's Secure Transport. |
| |
| Reported-by: Cory Benfield |
| Reported-by: Ian Spence |
| Confirmed-by: Nick Zitzmann |
| |
| Ref: https://github.com/curl/curl/issues/998 |
| |
| Closes https://github.com/curl/curl/issues/6347 |
| Closes https://github.com/curl/curl/pull/6348 |
| |
| Daniel Stenberg (18 Dec 2020) |
| - TODO: alt-svc should fallback if alt-svc doesn't work |
| |
| Closes #4908 |
| |
| - travis: restrict the openssl3 job to only run https and ftps tests |
| |
| ... as it runs too long otherwise and the other tests are verified in |
| other builds anyway. |
| |
| Closes #6345 |
| |
| - build: repair http disabled but mqtt enabled build |
| |
| ... as the mqtt code reuses the "method" originally used for HTTP. |
| |
| Closes #6344 |
| |
| - [Jon Wilkes brought this change] |
| |
| cookie: avoid the C1001 internal compiler error with MSVC 14 |
| |
| Fixes #6112 |
| Closes #6135 |
| |
| - RELEASE-NOTES: synced |
| |
| - mqtt: handle POST/PUBLISH without a set POSTFIELDSIZE |
| |
| Detected by OSS-Fuzz |
| Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28735 |
| |
| Added test 1916 and 1917 to verify. |
| |
| Closes #6338 |
| |
| - travis: add CI job for Hyper build |
| |
| - tests: updated tests for Hyper |
| |
| - lib: introduce c-hyper for using Hyper |
| |
| ... as an alternative HTTP backend within libcurl. |
| |
| - tool_setopt: provide helper output in debug builds |
| |
| ... for when setopt() returns error. |
| |
| - setopt: adjust to Hyper and disabled HTTP builds |
| |
| - rtsp: disable if Hyper is used |
| |
| - getinfo: build with disabled HTTP support |
| |
| - version: include hyper version |
| |
| - docs: add HYPER.md |
| |
| - configure: add --with-hyper |
| |
| As the first (optional) HTTP backend alternative instead of native |
| |
| Close #6110 |
| |
| - test1522: add debug tracing |
| |
| I used this to track down some issues and I figured I could just as well |
| keep this extra logging in here for future needs. |
| |
| Closes #6331 |
| |
| - http: show the request as headers even when split-sending |
| |
| When the initial request isn't possible to send in its entirety, the |
| remainder of request would be delivered to the debug callback as data |
| and would wrongly be counted internally as body-bytes sent. |
| |
| Extended test 1295 to verify. |
| |
| Closes #6328 |
| |
| - multi: when erroring in TOOFAST state, act as for PERFORM |
| |
| When failing in TOOFAST, the multi_done() wasn't called so the same |
| cleanup and handling wasn't done like when it fails in PERFORM, which in |
| the case of FTP could mean that the control connection wouldn't be |
| marked as "dead" for the CURLE_ABORTED_BY_CALLBACK case. Which caused |
| ftp_disconnect() to use it to send "QUIT", which could end up waiting |
| for a response a long time before giving up! |
| |
| Reported-by: Tomas Berger |
| Fixes #6333 |
| Closes #6337 |
| |
| - cmake: enable gophers correctly in curl-config |
| |
| Closes #6336 |
| |
| - test1198/9: add two mqtt publish tests without payload lengths |
| |
| Closes #6335 |
| |
| - tests/mqttd: extract the client id from the correct offset |
| |
| Closes #6334 |
| |
| - TODO: Prevent terminal injection when writing to terminal |
| |
| Closes #6150 |
| |
| - Revert "CI/github: work-around for brew breakage on macOS" |
| |
| This reverts commit 4cbb17a2cbbbe6337142d39479e21c3990b9c22f. |
| |
| ... as the work-around now causes failures. |
| |
| Closes #6332 |
| |
| - examples: remove superfluous asterisk uses |
| |
| ... for function pointers. Breaks in ancient compilers. |
| |
| - RELEASE-NOTES: synced |
| |
| - test1272: fix line ending |
| |
| Follow-up to f24784f9143 |
| |
| - URL-SYNTAX: add gophers details |
| |
| - test1272: test gophers |
| |
| - runtests: add support for gophers, gopher over TLS |
| |
| - [parazyd brought this change] |
| |
| gopher: Implement secure gopher protocol. |
| |
| This commit introduces a "gophers" handler inside the gopher protocol if |
| USE_SSL is defined. This protocol is no different than the usual gopher |
| prococol, with the added TLS encapsulation upon connecting. The protocol |
| has been adopted in the gopher community, and many people have enabled |
| TLS in their gopher daemons like geomyidae(8), and clients, like clic(1) |
| and hurl(1). |
| |
| I have not implemented test units for this protocol because my knowledge |
| of Perl is sub-par. However, for someone more knowledgeable it might be |
| fairly trivial, because the same test that tests the plain gopher |
| protocol can be used for "gophers" just by adding a TLS listener. |
| |
| Signed-off-by: parazyd <[email protected]> |
| |
| Closes #6208 |
| |
| - TODO: Package curl for Windows in a signed installer |
| |
| Closes #5424 |
| |
| - mqtt: deal with 0 byte reads correctly |
| |
| OSS-Fuzz found it |
| Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28676 |
| |
| Closes #6327 |
| |
| - BUG-BOUNTY: minor language update |
| |
| ... and remove the wording about entries from before 2019 as the "within |
| 12 months" is still there and covers that. |
| |
| Closes #6318 |
| |
| - tooĺ_writeout: fix the -w time output units |
| |
| Fix regression from commit fc813f80e1bcac (#6248) that changed the unit |
| to microseconds instead of seconds with fractions |
| |
| Reported-by: 不确定 |
| Fixes #6321 |
| Closes #6322 |
| |
| - quiche: remove fprintf() leftover |
| |
| Jay Satiro (14 Dec 2020) |
| - KNOWN_BUGS: SHA-256 digest not supported in Windows SSPI builds |
| |
| Closes https://github.com/curl/curl/issues/6302 |
| |
| - digest_sspi: Show InitializeSecurityContext errors in verbose mode |
| |
| The error is shown with infof rather than failf so that the user will |
| see the extended error message information only in verbose mode, and |
| will still see the standard CURLE_AUTH_ERROR message. For example: |
| |
| --- |
| |
| * schannel: InitializeSecurityContext failed: SEC_E_QOP_NOT_SUPPORTED |
| (0x8009030A) - The per-message Quality of Protection is not supported by |
| the security package |
| * multi_done |
| * Connection #1 to host 127.0.0.1 left intact |
| curl: (94) An authentication function returned an error |
| |
| --- |
| |
| Ref: https://github.com/curl/curl/issues/6302 |
| |
| Closes https://github.com/curl/curl/pull/6315 |
| |
| Daniel Stenberg (13 Dec 2020) |
| - URL-SYNTAX: add default port numbers and IDNA details |
| |
| Closes #6316 |
| |
| - URL-SYNTAX: mention how FILE:// access can access network on windows |
| |
| Closes #6314 |
| |
| Jay Satiro (12 Dec 2020) |
| - URL-SYNTAX: Document default SMTP port 25 |
| |
| Note that ports 25 and 587 are common ports for smtp, the former being |
| the default. |
| |
| Closes https://github.com/curl/curl/pull/6310 |
| |
| Daniel Stenberg (12 Dec 2020) |
| - CURLOPT_URL.3: remove scheme specific details |
| |
| ... that are now found in URL-SYNTAX.md |
| |
| Closes #6307 |
| |
| Dan Fandrich (12 Dec 2020) |
| - docs: Fix some typos |
| |
| [skip ci] |
| |
| Daniel Stenberg (12 Dec 2020) |
| - URL-SYNTAX: mention all supported schemes |
| |
| Closes #6311 |
| |
| - [Douglas R. Reno brought this change] |
| |
| URL-SYNTAX.md: minor language improvements |
| |
| Closes #6308 |
| |
| - docs/URL-SYNTAX: the URL syntax curl accepts and works with |
| |
| Closes #6285 |
| |
| - [0xflotus brought this change] |
| |
| docs: enable syntax highlighting in several docs files |
| |
| ... for better readability |
| |
| Closes #6286 |
| |
| - test1564/1565: require the 'wakeup' feature to run |
| |
| Fixes #6299 |
| Fixes #6300 |
| Closes #6301 |
| |
| - runtests: add 'wakeup' as a feature |
| |
| - tests/server/disabled: add "wakeup" |
| |
| To allow the test suite to know if wakeup support is disabled in the |
| build. |
| |
| - lib1564/5: verify that curl_multi_wakeup returns OK |
| |
| - tests: make --libcurl tests only test FTP options if ftp enabled |
| |
| Adjust six --libcurl tests to only check the FTP option if FTP is |
| actually present in the build. |
| |
| Fixes #6303 |
| Closes #6305 |
| |
| - runtests.pl: fix "uninitialized value" warning |
| |
| follow-up to e12825c642a88774 |
| |
| - runtests: add support for %if [feature] conditions |
| |
| ... to make tests run differently or expect different results depending |
| on what features that are present or not in curl. |
| |
| Bonus: initial minor 'Hyper' awareness but nothing is using that yet |
| |
| Closes #6304 |
| |
| - [Jon Rumsey brought this change] |
| |
| OS400: update ccsidcurl.c |
| |
| Add 'struct' to cast and declaration of cfcdata to fix compilation |
| error. |
| |
| Fixes #6292 |
| Closes #6297 |
| |
| - ngtcp2: make it build it current master again |
| |
| Closes #6296 |
| |
| - [Cristian Rodríguez brought this change] |
| |
| connect: defer port selection until connect() time |
| |
| If supported, defer port selection until connect() time |
| if --interface is given and source port is 0. |
| |
| Reproducer: |
| |
| * start fast webserver on port 80 |
| * starve system of ephemeral ports |
| $ sysctl net.ipv4.ip_local_port_range="60990 60999" |
| |
| * start a curl/libcurl "crawler" |
| $curl --keepalive --parallel --parallel-immediate --head --interface |
| 127.0.0.2 "http://127.0.0.[1-254]/file[001-002].txt" |
| |
| current result: |
| (possible some successful data) |
| curl: (45) bind failed with errno 98: Address already in use |
| |
| result after patch: |
| (complete success or few connections failing, higlhy depending on load) |
| |
| Fail only when all the possible 4-tuple combinations are exhausted, |
| which is impossible to do when port is selected at bind() time becuse |
| the kernel does not know if socket will be listen()'ed on or connect'ed |
| yet. |
| |
| Closes #6295 |
| |
| - [Hans-Christian Noren Egtvedt brought this change] |
| |
| connect: zero variable on stack to silence valgrind complaint |
| |
| Valgrind will complain that ssrem buffer usage if not explicit |
| initialized, hence initialize it to zero. |
| |
| This completes the change intially started in commit 2c0d7212151 ('ftp: |
| retry getpeername for FTP with TCP_FASTOPEN') where the ssloc buffer has |
| a similar memset to zero. |
| |
| Signed-off-by: Hans-Christian Noren Egtvedt <[email protected]> |
| Closes #6289 |
| |
| - RELEASE-NOTES: synced |
| |
| start over on the next release cycle |
| |
| Version 7.74.0 (9 Dec 2020) |
| |
| Daniel Stenberg (9 Dec 2020) |
| - RELEASE-NOTES: synced |
| |
| for 7.74.0 |
| |
| Jay Satiro (7 Dec 2020) |
| - [Jacob Hoffman-Andrews brought this change] |
| |
| urldata: restore comment on ssl_connect_data.use |
| |
| This comment was originally on the `use` field, but was separated from |
| its field in 62a2534. |
| |
| Closes https://github.com/curl/curl/pull/6287 |
| |
| Daniel Stenberg (7 Dec 2020) |
| - VERSIONS: refreshed |
| |
| We always use the patch number these days: all releases are |
| "major.minor.patch" |
| |
| - [Jakub Zakrzewski brought this change] |
| |
| cmake: don't use reserved target name 'test' |
| |
| CMake up to 3.10 always reserves this name |
| |
| Fixes #6257 |
| Closes #6258 |
| |
| - openssl: make the OCSP verification verify the certificate id |
| |
| CVE-2020-8286 |
| |
| Reported by anonymous |
| |
| Bug: https://curl.se/docs/CVE-2020-8286.html |
| |
| - ftp: make wc_statemach loop instead of recurse |
| |
| CVE-2020-8285 |
| |
| Fixes #6255 |
| Bug: https://curl.se/docs/CVE-2020-8285.html |
| Reported-by: xnynx on github |
| |
| - ftp: CURLOPT_FTP_SKIP_PASV_IP by default |
| |
| The command line tool also independently sets --ftp-skip-pasv-ip by |
| default. |
| |
| Ten test cases updated to adapt the modified --libcurl output. |
| |
| Bug: https://curl.se/docs/CVE-2020-8284.html |
| CVE-2020-8284 |
| |
| Reported-by: Varnavas Papaioannou |
| |
| - urlapi: don't accept blank port number field without scheme |
| |
| ... as it makes the URL parser accept "very-long-hostname://" as a valid |
| host name and we don't want that. The parser now only accepts a blank |
| (no digits) after the colon if the URL starts with a scheme. |
| |
| Reported-by: d4d on hackerone |
| |
| Closes #6283 |
| |
| - Revert "multi: implement wait using winsock events" |
| |
| This reverts commit d2a7d7c185f98df8f3e585e5620cbc0482e45fac. |
| |
| This commit also reverts the subsequent follow-ups to that commit, which |
| were all done within windows #ifdefs that are removed in this |
| change. Marc helped me verify this. |
| |
| Fixes #6146 |
| Closes #6281 |
| |
| - [Klaus Crusius brought this change] |
| |
| ftp: retry getpeername for FTP with TCP_FASTOPEN |
| |
| In the case of TFO, the remote host name is not resolved at the |
| connetion time. |
| |
| For FTP that has lead to missing hostname for the secondary connection. |
| Therefore the name resolution is done at the time, when FTP requires it. |
| |
| Fixes #6252 |
| Closes #6265 |
| Closes #6282 |
| |
| - [Thomas Danielsson brought this change] |
| |
| scripts/completion.pl: parse all opts |
| |
| For tab-completion it may be preferable to include all the |
| available options. |
| |
| Closes #6280 |
| |
| - RELEASE-NOTES: synced |
| |
| - openssl: use OPENSSL_init_ssl() with >= 1.1.0 |
| |
| Reported-by: Kovalkov Dmitrii and Per Nilsson |
| Fixes #6254 |
| Fixes #6256 |
| Closes #6260 |
| |
| - SECURITY-PROCESS: disclose on hackerone |
| |
| Once a vulnerability has been published, the hackerone issue should be |
| disclosed. For tranparency. |
| |
| Closes #6275 |
| |
| Marc Hoersken (3 Dec 2020) |
| - tests/util.py: fix compatibility with Python 2 |
| |
| Backporting the Python 3 implementation of setStream |
| to ClosingFileHandler as a fallback within Python 2. |
| |
| Reported-by: Jay Satiro |
| |
| Fixes #6259 |
| Closes #6270 |
| |
| Daniel Gustafsson (3 Dec 2020) |
| - docs: fix typos and markup in ETag manpage sections |
| |
| Reported-by: emanruse on github |
| Fixes #6273 |
| |
| Daniel Stenberg (2 Dec 2020) |
| - quiche: close the connection |
| |
| Reported-by: Junho Choi |
| Fixes #6213 |
| Closes #6217 |
| |
| Jay Satiro (2 Dec 2020) |
| - ngtcp2: Fix build error due to symbol name change |
| |
| - NGTCP2_CRYPTO_LEVEL_APP -> NGTCP2_CRYPTO_LEVEL_APPLICATION |
| |
| ngtcp2/ngtcp2@76232e9 changed the name. |
| |
| ngtcp2 master is required to build curl with http3 support. |
| |
| Closes https://github.com/curl/curl/pull/6271 |
| |
| Daniel Stenberg (1 Dec 2020) |
| - [Klaus Crusius brought this change] |
| |
| cmake: check for linux/tcp.h |
| |
| The HAVE_LINUX_TCP_H define was not set by cmake. |
| |
| Closes #6252 |