1 _ _ ____ _ 2 ___| | | | _ \| | 3 / __| | | | |_) | | 4 | (__| |_| | _ <| |___ 5 \___|\___/|_| \_\_____| 6 7 Changelog 8 9Version 8.4.0 (11 Oct 2023) 10 11Daniel Stenberg (11 Oct 2023) 12 13- RELEASE-NOTES: synced 14 15- THANKS: add contributors from 8.4.0 16 17Jay Satiro (11 Oct 2023) 18 19- socks: return error if hostname too long for remote resolve 20 21 Prior to this change the state machine attempted to change the remote 22 resolve to a local resolve if the hostname was longer than 255 23 characters. Unfortunately that did not work as intended and caused a 24 security issue. 25 26 Bug: https://curl.se/docs/CVE-2023-38545.html 27 28Stefan Eissing (10 Oct 2023) 29 30- CI: remove slowed-network tests 31 32 - remove these tests as they are currently not reliable in our CI 33 setups. 34 35 curl handles the test cases, but CI sometimes fails on these due to 36 additional conditions. Rather than mix them in, an additional CI job 37 will be added in the future that is specific to them. 38 39 Closes https://github.com/curl/curl/pull/12075 40 41Jay Satiro (10 Oct 2023) 42 43- libcurl-env-dbg.3: move debug variables from libcurl-env.3 44 45 - Move documentation of libcurl environment variables used only in debug 46 builds from libcurl-env into a separate document libcurl-env-dbg. 47 48 - Document more debug environment variables. 49 50 Previously undocumented or missing a description: 51 52 CURL_ALTSVC_HTTP, CURL_DBG_SOCK_WBLOCK, CURL_DBG_SOCK_WPARTIAL, 53 CURL_DBG_QUIC_WBLOCK, CURL_DEBUG, CURL_DEBUG_SIZE, CURL_GETHOSTNAME, 54 CURL_HSTS_HTTP, CURL_FORCETIME, CURL_SMALLREQSEND, CURL_SMALLSENDS, 55 CURL_TIME. 56 57 Closes https://github.com/curl/curl/pull/11811 58 59Dan Fandrich (9 Oct 2023) 60 61- test670: increase the test timeout 62 63 This should make it more immune to loaded servers. 64 65 Ref: #11328 66 67Stefan Eissing (9 Oct 2023) 68 69- MQTT: improve receive of ACKs 70 71 - add `mq->recvbuf` to provide buffering of incomplete 72 ACK responses 73 - continue ACK reading until sufficient bytes available 74 - fixes test failures on low network receives 75 76 Closes #12071 77 78Viktor Szakats (9 Oct 2023) 79 80- quic: fix BoringSSL build 81 82 Add guard around `SSL_CTX_set_ciphersuites()` use. 83 84 Bug: https://github.com/curl/curl/pull/12065#issuecomment-1752171885 85 86 Follow-up to aa9a6a177017e4b74d33cdf85a3594900f4a7f81 87 88 Co-authored-by: Jay Satiro 89 Reviewed-by: Daniel Stenberg 90 Closes #12067 91 92Stefan Eissing (9 Oct 2023) 93 94- test1540: improve reliability 95 96 - print that bytes have been received on pausing, but not how many 97 98 Closes #12069 99 100- test2302: improve reliability 101 102 - make result print collected write data, unless 103 change in meta flags is detected 104 - will show same result even when data arrives via 105 several writecb invocations 106 107 Closes #12068 108 109Daniel Stenberg (9 Oct 2023) 110 111- curl_easy_pause: set "in callback" true on exit if true 112 113 Because it might have called another callback in the mean time that then 114 set the bit FALSE on exit. 115 116 Reported-by: Jay Satiro 117 Fixes #12059 118 Closes #12061 119 120Viktor Szakats (8 Oct 2023) 121 122- h3: add support for ngtcp2 with AWS-LC builds 123 124 ``` 125 curl 8.4.0-DEV (x86_64-apple-darwin) libcurl/8.4.0-DEV (SecureTransport) AWS- 126 LC/1.15.0 nghttp2/1.56.0 ngtcp2/0.19.1 nghttp3/0.15.0 127 Release-Date: [unreleased] 128 Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps 129 mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss 130 Features: alt-svc AsynchDNS HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile Multi 131 SSL NTLM SSL threadsafe UnixSockets 132 ``` 133 134 Also delete an obsolete GnuTLS TODO and update the header comment in 135 `FindNGTCP2.cmake`. 136 137 Reviewed-by: Daniel Stenberg 138 Closes #12066 139 140- build: do not publish `HAVE_BORINGSSL`, `HAVE_AWSLC` macros 141 142 Syncing this up with CMake. 143 144 Source code uses the built-in `OPENSSL_IS_AWSLC` and 145 `OPENSSL_IS_BORINSSL` macros to detect BoringSSL and AWS-LC. No help is 146 necessary from the build tools. 147 148 The one use of `HAVE_BORINGSSL` in the source turned out to be no longer 149 necessary for warning-free BoringSSL + Schannel builds. Ref: #1610 #2634 150 151 autotools detects this anyway for display purposes. 152 CMake detects this to decide whether to use the BoringSSL-specific 153 crypto lib with ngtcp2. It detects AWS-LC, but doesn't use the detection 154 result just yet (planned in #12066). 155 156 Ref: #11964 157 158 Reviewed-by: Daniel Stenberg 159 Reviewed-by: Jay Satiro 160 Closes #12065 161 162Marc Hoersken (8 Oct 2023) 163 164- CI: move distcheck job from Azure Pipelines to GitHub Actions 165 166 This will allow for more trigger excludes within Azure Pipelines. 167 168 Also fixes seemingly broken check with scripts/installcheck.sh. 169 Ref: 190374c74ec4e5247d9066544c86e8d095e1d7b5 170 171 Assisted-by: Philip Heiduck 172 Closes #9532 173 174Daniel Stenberg (8 Oct 2023) 175 176- url: fall back to http/https proxy env-variable if ws/wss not set 177 178 Reported-by: Craig Andrews 179 Fixes #12031 180 Closes #12058 181 182Stefan Eissing (8 Oct 2023) 183 184- cf-socket: simulate slow/blocked receives in debug 185 186 add 2 env variables for non-UDP sockets: 187 1. CURL_DBG_SOCK_RBLOCK: percentage of receive calls that randomly 188 should return EAGAIN 189 2. CURL_DBG_SOCK_RMAX: max amount of bytes read from socket 190 191 Closes #12035 192 193- http2: refused stream handling for retry 194 195 - answer HTTP/2 streams refused via a GOAWAY from the server to 196 respond with CURLE_RECV_ERROR in order to trigger a retry 197 on another connection 198 199 Reported-by: black-desk on github 200 Ref #11859 201 Closes #12054 202 203Jay Satiro (8 Oct 2023) 204 205- CURLOPT_DEBUGFUNCTION.3: warn about internal handles 206 207 - Warn that the user's debug callback may be called with the handle 208 parameter set to an internal handle. 209 210 Without this warning the user may assume that the only handles their 211 debug callback receives are the easy handles on which they set 212 CURLOPT_DEBUGFUNCTION. 213 214 This is a follow-up to f8cee8cc which changed DoH handles to inherit 215 the debug callback function set in the user's easy handle. As a result 216 those handles are now passed to the user's debug callback function. 217 218 Closes https://github.com/curl/curl/pull/12034 219 220- url: fix typo 221 222Daniel Stenberg (8 Oct 2023) 223 224- test458: verify --expand-output, expanding a file name accepting option 225 226 Verifies the fix in #12055 (commit f2c8086ff15e6e995e1) 227 228- tool_getparam: accept variable expansion on file names too 229 230 Reported-by: PBudmark on github 231 Fixes #12048 232 Closes #12055 233 234- RELEASE-NOTES: synced 235 236- multi: do CURLM_CALL_MULTI_PERFORM at two more places 237 238 ... when it does a state transition but there is no particular socket or 239 timer activity. This was made apparent when commit b5bb84c removed a 240 superfluous timer expiry. 241 242 Reported-by: Dan Fandrich. 243 Fixes #12033 244 Closes #12056 245 246Viktor Szakats (7 Oct 2023) 247 248- GHA/linux: mbedtls 3.5.0 + minor dep bumps 249 250 Closes #12057 251 252Dan Fandrich (7 Oct 2023) 253 254- CI: bump OpenLDAP package version on FreeBSD 255 256 The old one is no longer available. 257 258Marc Hoersken (7 Oct 2023) 259 260- docs/libcurl/opts/Makefile.inc: add missing manpage files 261 262 Detected with #9532 263 264Dan Fandrich (7 Oct 2023) 265 266- tests: fix a race condition in ftp server disconnect 267 268 If a client disconnected and reconnected quickly, before the ftp server 269 had a chance to respond, the protocol message/ack (ping/pong) sequence 270 got out of sync, causing messages sent to the old client to be delivered 271 to the new. A disconnect must now be acknowledged and intermediate 272 requests thrown out until it is, which ensures that such synchronization 273 problems can't occur. This problem could affect ftp, pop3, imap and smtp 274 tests. 275 276 Fixes #12002 277 Closes #12049 278 279Viktor Szakats (7 Oct 2023) 280 281- appveyor: bump mingw-w64 job to gcc 13 (was: 8) 282 283 This sets gcc 6, 7, 9, 13 in our test mix (was: 6, 7, 8, 9). 284 Adding a modern gcc version to the tests. 285 286 (The gcc 8 job used to take around 50 minutes. The new image with gcc 13 287 finished in 32, 35, 34 minutes in the 3 test runs so far.) 288 289 It also adds a modern CMake version and OS env to our mingw-w64 builds. 290 291 Closes #12051 292 293David Benjamin (6 Oct 2023) 294 295- openssl: use X509_ALGOR_get0 instead of reaching into X509_ALGOR 296 297 While the struct is still public in OpenSSL, there is a (somewhat 298 inconvenient) accessor. Use it to remain compatible if it becomes opaque 299 in the future. 300 301 Closes #12038 302 303Daniel Stenberg (6 Oct 2023) 304 305- curl_easy_pause.3: mention it works within callbacks 306 307 Reported-by: Maxim Dzhura 308 Bug: https://curl.se/mail/lib-2023-10/0010.html 309 Closes #12046 310 311- curl_easy_pause.3: mention h2/h3 buffering 312 313 Asked-by: Maxim Dzhura 314 Ref: https://curl.se/mail/lib-2023-10/0011.html 315 316 Closes #12045 317 318Viktor Szakats (6 Oct 2023) 319 320- cmake: re-add missed C89 headers for specific detections 321 322 We removed C89 `setjmp.h` and `signal.h` detections and excluded them 323 from the global header list we use when detecting functions [1]. Then 324 missed to re-add these headers to the specific functions which need 325 them to be detected [2]. Fix this omission in this patch. 326 327 [1] Follow-up to 3795fcde995d96db641ddbcc8a04f9f0f03bef9f #11951 328 [2] Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 329 330 Closes #12043 331 332Daniel Stenberg (6 Oct 2023) 333 334- multi: set CURLM_CALL_MULTI_PERFORM after switch to DOING_MORE 335 336 Since there is nothing to wait for there. Avoids the test 1233 hang 337 reported in #12033. 338 339 Reported-by: Dan Fandrich 340 Closes #12042 341 342Dan Fandrich (5 Oct 2023) 343 344- test1903: actually verify the cookies after the test 345 346 The test otherwise could do just about anything (except leak memory in 347 debug mode) and its bad behaviour wouldn't be detected. Now, check the 348 resulting cookie file to ensure the cookies are still there. 349 350 Closes #12041 351 352- test: add missing <feature>s 353 354 The tests will otherwise fail if curl has them disabled. 355 356- test1906: set a lower timeout since it's hit on Windows 357 358 msys2 builds actually hit the connect timeout in normal operation, so 359 lower the timeout from 5 minutes to 5 seconds to reduce test time. 360 361 Ref: #11328 362 Closes #12036 363 364Daniel Stenberg (5 Oct 2023) 365 366- RELEASE-NOTES: synced 367 368Jay Satiro (5 Oct 2023) 369 370- idn: fix WinIDN null ptr deref on bad host 371 372 - Return CURLE_URL_MALFORMAT if IDN hostname cannot be converted from 373 UTF-8 to UTF-16. 374 375 Prior to this change a failed conversion erroneously returned CURLE_OK 376 which meant 'decoded' pointer (what would normally point to the 377 punycode) would not be written to, remain NULL and be dereferenced 378 causing an access violation. 379 380 Closes https://github.com/curl/curl/pull/11983 381 382Dan Fandrich (4 Oct 2023) 383 384- tests: close the shell used to start sshd 385 386 This shell isn't needed once sshd starts, so use "exec" so it doesn't 387 stick around. 388 389 Closes #12032 390 391Daniel Stenberg (4 Oct 2023) 392 393- base64: also build for curl 394 395 Since the tool itself now uses the base64 code using the curlx way, it 396 needs to build also when the tool needs it. Starting now, the tool build 397 defines BULDING_CURL to allow lib-side code to use it. 398 399 Follow-up to 2e160c9c6525 400 401 Closes #12010 402 403Eduard Strehlau (4 Oct 2023) 404 405- tests: Fix zombie processes left behind by FTP tests. 406 407 ftpserver.pl correctly cleans up spawned server processes, 408 but forgets to wait for the shell used to spawn them. 409 This is barely noticeable during a normal testrun, 410 but causes process exhaustion and test failure 411 during a complete torture run of the FTP tests. 412 413 Fixes #12018 414 Closes #12020 415 416Dan Fandrich (4 Oct 2023) 417 418- github/labeler: improve labeler matches 419 420- test574: add a timeout to the test 421 422 This one hangs occasionally, so this will speed up a test run and allow 423 logs to be seen when it does. 424 425 Closes #12025 426 427- tests: propagate errors in libtests 428 429 Use the test macros to automatically propagate some errors, and check 430 and log others while running the tests. This can help in debugging 431 exactly why a test has failed. 432 433- tests: set --expect100-timeout to improve test reliability 434 435 On an overloaded server, the default 1 second timeout can go by without 436 the test server having a chance to respond with the expected headers, 437 causing tests to fail. Increase the 1 second timeout to 99 seconds so 438 this failure mode is no longer a problem on test 1129. Some other tests 439 already set a high value, but make them consistently 99 seconds so if 440 something goes wrong the test is stalled for less time. 441 442 Ref: #11328 443 444- CI: ignore the "flaky" and "timing-dependent" test results in CMake 445 446 This was already done for automake builds but CMake builds were missed. 447 Test 1086 actually causes the test harness to crash with: 448 449 Warning: unable to close filehandle DWRITE properly: Broken pipe at C:/projec 450 ts/curl/tests/ftpserver.pl line 527 451 452 Rather than fix it now, this change leaves test 1086 entirely skipped on 453 those builds that show this problem. 454 455 Follow-up to 589dca761 456 457 Ref: #11865 458 459Viktor Szakats (4 Oct 2023) 460 461- cmake: improve OpenLDAP builds 462 463 - cmake: detect OpenLDAP based on function `ldap_init_fd`. 464 autotools does this. autotools also publishes this detection result 465 in `HAVE_LDAP_INIT_FD`. We don't mimic that with CMake as the source 466 doesn't use this value. (it might need to be remove-listed in 467 `scripts/cmp-config.pl` for future OpenLDAP test builds.) 468 This also deletes existing self-declaration method via the 469 CMake-specific `CURL_USE_OPENLDAP` configuration. 470 471 - cmake: define `LDAP_DEPRECATED=1` for OpenLDAP. 472 Like autotools does. This fixes a long list of these warnings: 473 ``` 474 /usr/local/opt/openldap/include/ldap.h:1049:5: warning: 'LDAP_DEPRECATED' i 475 s not defined, evaluates to 0 [-Wundef] 476 ``` 477 478 - cmake: delete LDAP TODO comment no longer relevant. 479 480 Also: 481 482 - autotools: replace domain name `dummy` with `0.0.0.0` in LDAP feature 483 detection functions. 484 485 Ref: #11964 (effort to sync cmake detections with autotools) 486 487 Closes #12024 488 489- cmake: fix unity builds for more build combinations 490 491 By using unique static function/variable names in source files 492 implementing these interfaces. 493 494 - OpenLDAP combined with any SSH backend. 495 496 - MultiSSL with mbedTLS, OpenSSL, wolfSSL, SecureTransport. 497 498 Closes #12027 499 500Daniel Stenberg (4 Oct 2023) 501 502- tests: remove leading spaces from some tags 503 504 The threee tags `<name>`, `</name>` and `<command>` were frequently used 505 with a leading space that this removes. The reason this habbit is so 506 widespread in testcases is probably that they have been copy and pasted. 507 508 Hence, fixing them all now might curb this practice from now on. 509 510 Closes #12028 511 512Viktor Szakats (4 Oct 2023) 513 514- GHA: bump actions/checkout 515 516 Follow-up to 2e0fa50fc16b9339f51e0a7bfff0352829323acb #11964 517 Follow-up to c39585d9b7ef3cbfc1380812dec60e7b275b6af3 #12000 518 519 Closes #12023 520 521- spelling: fix codespell 2.2.6 typos 522 523 Closes #12019 524 525Daniel Stenberg (3 Oct 2023) 526 527- GHA: add workflow to compare configure vs cmake outputs 528 529 Uses scripts/cmp-config.pl two compare two curl_config.h files, 530 presumbly generated with configure and cmake. It displays the 531 differences and filters out a lot of known lines we ignore. 532 533 The script also shows the matches that were *not* used. Possibly 534 subjects for removal. 535 536 Closes #11964 537 538- appveyor: enable test 571 539 540 Follow-up from 8a940fd55c175f7 / #12013 541 542 Closes #12017 543 544Viktor Szakats (3 Oct 2023) 545 546- build: alpha-sort source files for lib and src 547 548 Closes #12014 549 550- cmake: delete old `HAVE_LDAP_URL_PARSE` logic 551 552 Left there by accident after adding proper detection for this. 553 554 Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006 555 556 Ref: #11964 (effort to sync cmake detections with autotools) 557 558 Closes #12015 559 560Stefan Eissing (3 Oct 2023) 561 562- tests: increase lib571 timeout from 3s to 30s 563 564 - 3s is too short for our CI, making this test fail occasionally 565 - test usually experiences no delay run locally, so 30s wont hurt 566 567 Closes #12013 568 569Viktor Szakats (3 Oct 2023) 570 571- cmake: fix unity with Windows Unicode + TrackMemory 572 573 Found the root cause of the startup crash in unity builds with Unicode 574 and TrackMemory enabled at the same time. 575 576 We must make sure that the `memdebug.h` header doesn't apply to 577 `lib/curl_multibyte.c` (as even noted in a comment there.) In unity 578 builds all headers apply to all sources, including `curl_multibyte.c`. 579 This probably resulted in an infinite loop on startup. 580 581 Exclude this source from unity compilation with TrackMemory enabled, 582 in both libcurl and curl tool. Enable unity mode for a debug Unicode 583 CI job to keep it tested. Also delete the earlier workaround that 584 fully disabled unity for affected builds. 585 586 Follow-up to d82b080f6374433ce7c98241329189ad2d3976f8 #12005 587 Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 588 589 Closes #11928 590 591- cmake: disable unity mode with Windows Unicode + TrackMemory 592 593 "TrackMemory" is `ENABLE_DEBUG=ON` (aka `ENABLE_CURLDEBUG=ON`, 594 aka `-DCURLDEBUG`). 595 596 There is an issue with memory tracking and Unicode when built in "unity" 597 mode, which results in the curl tool crashing right on startup, even 598 without any command-line option. Interestingly this doesn't happen under 599 WINE (at least on the system I tested this on), but consistenly happens 600 on real Windows machines. Crash is 0xC0000374 heap corruption. Both 601 shared and static curl executables are affected. 602 603 This limitation probably won't hit too many people, but it remains 604 a TODO to find and fix the root cause and drop this workaround. 605 606 Example builds and runs: 607 https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/17cptxhtpubd 608 7iwj#L313 (static) 609 https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/76e1ge758tby 610 qu9c#L317 (shared) 611 612 Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 613 614 Ref: #11928 615 Closes #12005 616 617- cmake: tidy-up `NOT_NEED_LBER_H` detection 618 619 Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006 620 621- appveyor: rewrite batch in PowerShell + CI improvements 622 623 1. Rewrite in PowerShell: 624 625 - rewrite MS-DOS batch build script in PowerShell. 626 - move some bash operations into native PowerShell. 627 - fixups for PowerShell insisting on failure when a command outputs 628 something to stderr. 629 - fix to actually run `curl -V` after every build. 630 (and exclude ARM64 builds.) 631 - also say why we skipped `curl -V` if we had to skip. 632 - fix CMake warnings about unused configuration variables, by adapting 633 these dynamically for build cases. 634 - dedupe OpenSSL path into a variable. 635 - disable `test1451` failing with a warning anyway due to missing python 636 impacket. (after trying and failing to install impacket) 637 PowerShell promotes these warnings to errors by PowerShell. We can also 638 suppress they wholesale if they start causing issues in the future, 639 like we already to with `autoreconf` and `./configure`. 640 641 PowerShell is better than MS-DOS batches, so the hope is this makes it 642 easier to extend and maintain the AppVeyor build logic. POSIX/bash isn't 643 supported inline by AppVeyor on Windows build machines, but we are okay 644 to keep it in an external script, so it's also an option. 645 646 2. CI improvements: 647 648 - enable tests for a "unity" build job. 649 - speed-up CI initialization by using shallow clones of the curl repo. 650 - speed-up CMake MSVC jobs with `TrackFileAccess=false`. 651 - enable parallelism in `VisualStudioSolution` builds. 652 - display CMake version before builds. 653 - always show the CPU in job names. 654 - tell which jobs are build-only in job names. 655 - move `TESTING:` value next to `DISABLED_TESTS:` in two jobs. 656 - add `config.log` (autotools) to dumped logs (need to enable manually). 657 658 3. Style: 659 660 - use single-quotes in YAML like we do in other CI YAML files. 661 It also allows to drop quoting characters and lighter to write/read. 662 (keep double quotes for PowerShell strings needing expansion.) 663 664 Closes #11999 665 666- cmake: fix `HAVE_LDAP_SSL`, `HAVE_LDAP_URL_PARSE` on non-Windows 667 668 - set `HAVE_LDAP_URL_PARSE` if `ldap_url_parse` function exists. 669 Before this patch we set it based it on the presence of `stricmp`, 670 which correctly enabled it on e.g. Windows, but was inaccurate for 671 other platforms. 672 673 - always set `HAVE_LDAP_SSL` if an LDAP backend is detected and 674 LDAPS is not explicitly disabled. This mimics autotools behaviour. 675 Previously we set it only for Windows LDAP. After this fix, LDAPS is 676 correctly enabled in default macOS builds. 677 678 - enable LDAP[S] for a CMake macOS CI job. Target OS X 10.9 (Mavericks) 679 to avoid deprecation warnings for LDAP API. 680 681 - always detect `HAVE_LDAP_SSL_H`, even with LDAPS explicitly disabled. 682 This doesn't make much sense, but let's do it to sync behaviour with 683 autotools. 684 685 - fix benign typo in variable name. 686 687 Ref: #11964 (effort to sync cmake detections with autotools) 688 689 Closes #12006 690 691- autotools: restore `HAVE_IOCTL_*` detections 692 693 This restores `CURL_CHECK_FUNC_IOCTL` detection. I deleted it in 694 4d73854462f30948acab12984b611e9e33ee41e6 and 695 c3456652a0c72d1845d08df9769667db7e159949 (2022-08), because the 696 `HAVE_IOCTL` result it generated was unused in the source. But, 697 I did miss the fact that this had two dependent checks: 698 `CURL_CHECK_FUNC_IOCTL_FIONBIO`, 699 `CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR` that we do actually need: 700 `HAVE_IOCTL_FIONBIO`, `HAVE_IOCTL_SIOCGIFADDR`. 701 702 Regression from 4d73854462f30948acab12984b611e9e33ee41e6 703 704 Ref: #11964 (effort to sync cmake detections with autotools) 705 706 Closes #12008 707 708Daniel Stenberg (2 Oct 2023) 709 710- RELEASE-PROCEDURE.md: updated coming release dates 711 712- RELEASE-NOTES: synced 713 714Viktor Szakats (1 Oct 2023) 715 716- cmake: pre-cache `HAVE_POLL_FINE` on Windows 717 718 Windows doesn't support `poll()`, so we can safely skip checking for 719 fine poll. 720 721 Closes #12003 722 723- gha: bump actions to latest versions 724 725 - actions@checkout@v4 (from v3 and v2) 726 727 - fsfe/reuse-action@v2 (from v1) 728 729 Closes #12000 730 731Stefan Eissing (30 Sep 2023) 732 733- h2: testcase and fix for pausing h2 streams 734 735 - refs #11982 where it was noted that paused transfers may 736 close successfully without delivering the complete data 737 - made sample poc into tests/http/client/h2-pausing.c and 738 added test_02_27 to reproduce 739 740 Closes #11989 741 Fixes #11982 742 Reported-by: Harry Sintonen 743 744Viktor Szakats (30 Sep 2023) 745 746- cmake: validate `CURL_DEFAULT_SSL_BACKEND` config value 747 748 Before this patch CMake builds accepted any value and it was used at 749 runtime as-is. This patch make sure that the selected default backend 750 is also enabled in the build. It also enforces a full lowercase value. 751 752 This improves reproducibility and brings CMake in sync with autotools 753 which already worked like described above. 754 755 Follow-up to 26c7feb8b9d51a57fab3325571b4bbfa03b11af0 #11774 756 757 Closes #11998 758 759- autotools: adjust `CURL_CA_PATH` value to CMake 760 761 autotools was using the same value as CMake, but with an ending 762 slash. Delete the ending slash to match configurations. 763 764 Ref: #11964 (effort to sync cmake detections with autotools) 765 766 Closes #11997 767 768- cmake: detect `sys/wait.h` and `netinet/udp.h` 769 770 Ref: #11964 (effort to sync cmake detections with autotools) 771 772 Closes #11996 773 774Daniel Stenberg (30 Sep 2023) 775 776- lib: provide and use Curl_hexencode 777 778 Generates a lower case ASCII hex output from a binary input. 779 780 Closes #11990 781 782- configure: check for the capath by default 783 784 ... if the chosen TLS backend supports it: OpenSSL, GnuTLS, mbedTLS or wolfSS 785 L 786 787 cmake: synced 788 789 Assisted-by: Viktor Szakats 790 Closes #11987 791 792- wolfssl: ignore errors in CA path 793 794 The default wolfSSL_CTX_load_verify_locations() function is quite picky 795 with the certificates it loads and will for example return error if just 796 one of the certs has expired. 797 798 With the *_ex() function and its WOLFSSL_LOAD_FLAG_IGNORE_ERR flag, it 799 behaves more similar to what OpenSSL does by default. 800 801 Even the set of default certs on my Debian unstable has several expired 802 ones. 803 804 Assisted-by: Juliusz Sosinowicz 805 Assisted-by: Michael Osipov 806 807 Closes #11987 808 809- create-dirs.d: clarify it also uses --output-dirs 810 811 Reported-by: Robert Simpson 812 Fixes #11991 813 Closes #11995 814 815Viktor Szakats (30 Sep 2023) 816 817- appveyor: fix yamlint issues, indent 818 819 Also: 820 - use double quotes in all batch if statements. 821 822 Closes #11994 823 824- cmake: detect `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` 825 826 Based on existing autotools logic. 827 828 Ref: #11964 (effort to sync cmake detections with autotools) 829 830 Closes #11981 831 832- cmake: detect `HAVE_GETADDRINFO_THREADSAFE` 833 834 Based on existing autotools logic. 835 836 autotools checks for old versions of the allowlisted target OSes and 837 disables this feature when seeing them. In CMake we assume we're running 838 on newer systems and enable regardless of OS version. 839 840 autotools always runs all 3 probes for non-fast-tracked systems and 841 enables this feature if any one of them was successful. To save 842 configuration time, CMake stops at the first successful check. 843 844 OpenBSD is not fast-tracked and then gets blocklisted as a generic BSD 845 system. I haven't double-checked if this is correct, but looks odd. 846 847 Ref: #11964 (effort to sync cmake detections with autotools) 848 849 Closes #11979 850 851- cmake: fix `HAVE_WRITABLE_ARGV` detection 852 853 Move detection before the creation of detection results in 854 `curl_config.h`. 855 856 Ref: #11964 (effort to sync cmake detections with autotools) 857 858 Closes #11978 859 860- appveyor: minor improvements 861 862 - run `curl -V` after builds to see if they run and with what features. 863 Except for one job where a CRT DLL is missing. And ARM64 which should 864 fail, but is silently not launched instead. 865 866 - copy libcurl DLL next to curl tool and tests binaries in shared mode. 867 This makes it possible to run the tests. (We don't run tests after 868 these builds yet.) 869 870 - list the DLLs and EXEs present after the builds. 871 872 - add `DEBUG` variable for CMake builds to allow disabling it, for 873 testing non-debug builds. (currently enabled for all) 874 875 - add commented lines that dump CMake configuration logs for debugging 876 build/auto-detection issues. 877 878 - add gcc version to jobs where missing. 879 880 - switch a job to the native MSYS2 mingw-w64 toolchain. This adds gcc 9 881 to the build mix. 882 883 - make `SHARED=OFF` and `OPENSSL=OFF` defaults global. 884 885 - delete a duplicate backslash. 886 887 Closes #11976 888 889- configure: replace adhoc domain with `localhost` in tests 890 891 Reviewed-by: Daniel Stenberg 892 Closes #11988 893 894- tidy-up: use more example domains 895 896 Also make use of the example TLD: 897 https://en.wikipedia.org/wiki/.example 898 899 Reviewed-by: Daniel Stenberg 900 Closes #11992 901 902Dan Fandrich (29 Sep 2023) 903 904- runtests: display the test status if tests appear hung 905 906 It sometimes happens that a test hangs during a test run and never 907 returns. The test harness will wait indefinitely for the results and on 908 CI servers the CI job will eventually be killed after an hour or two. 909 At the end of a test run, if results haven't come in within a couple of 910 minutes, display the status of all test runners and what tests they're 911 running to help in debugging the problem. 912 913 This feature is really only kick in with parallel testing enabled, which 914 is fine because without parallel testing it's usually easy to tell what 915 test has hung. 916 917 Closes #11980 918 919- github/labeler: remove workaround for labeler 920 921 This was added due to what seemed to be a bug regarding the sync-labels: 922 config option, but it looks like it wasn't necessary. 923 924 Follow-up to b2b0534e7 925 926Viktor Szakats (29 Sep 2023) 927 928- docs: upgrade an URL to HTTPS in `BINDINGS.md` [ci skip] 929 930Daniel Stenberg (29 Sep 2023) 931 932- docs: replace made up domains with example.com 933 934 in FAQ and MANUAL.md 935 936 - example.com was made for this purpose. 937 938 - reduces the risk that one of those domains suddenly start hosting 939 something nasty and we provide links to them 940 941 Closes #11986 942 943Michael Osipov (29 Sep 2023) 944 945- acinclude.m4: Document proper system truststore on FreeBSD 946 947 The default system truststore on FreeBSD has been /etc/ssl/certs for many 948 years now. It is managed canonically through certctl(8) and contains hashed 949 symlinks for OpenSSL and other TLS providers. 950 The previous ones require security/ca_root_nss which might not be installed o 951 r 952 will not contain any custom CA certificates. 953 954 Closes #11985 955 956Daniel Stenberg (29 Sep 2023) 957 958- FAQ: How do I upgrade curl.exe in Windows? 959 960 This is a growing question, better answer it here to get somewhere to 961 point users to. 962 963 Closes #11984 964 965Viktor Szakats (28 Sep 2023) 966 967- cmake: pre-cache `HAVE_BASENAME` for mingw-w64 and MSVC 968 969 `basename` is present in mingw-w64, missing from MSVC. Pre-cache 970 accordingly to make configure faster. 971 972 Notice that `basename` has a bug so we later disable it even with 973 mingw-w64: 974 https://github.com/curl/curl/blob/781242ffa44a9f9b95b6da5ac5a1bf6372ec6257/li 975 b/curl_setup.h#L820-L825 976 977 Closes #11974 978 979Daniel Stenberg (28 Sep 2023) 980 981- cmake: add missing checks 982 983 - check for arc4random. To make rand.c use it accordingly. 984 - check for fcntl 985 - fix fseek detection 986 - add SIZEOF_CURL_SOCKET_T 987 - fix USE_UNIX_SOCKETS 988 - define HAVE_SNPRINTF to 1 989 - check for fnmatch 990 - check for sched_yield 991 - remove HAVE_GETPPID duplicate from curl_config.h 992 - add HAVE_SENDMSG 993 994 Ref: #11964 995 996 Co-authored-by: Viktor Szakats 997 Closes #11973 998 999- configure: remove unused checks 1000 1001 - for sys/uio.h 1002 - for fork 1003 - for connect 1004 1005 Ref: #11964 1006 1007 Closes #11973 1008 1009- lib: remove TIME_WITH_SYS_TIME 1010 1011 It is not used in any code anywhere. 1012 1013 Ref: #11964 1014 Closes #11975 1015 1016- docs: update curl man page references 1017 1018 Detected by the manpage-syntax update 1019 1020 Closes #11963 1021 1022- manpage-syntax: verify curl man page references 1023 1024 1. References to curl symbols are now checked that they indeed exist as 1025 man pages. This for \f references as well as the names referenced in the 1026 SEE ALSO section. 1027 1028 Allowlist curl.1 since it is not always built in builds 1029 1030 2. References to curl symbols that lack section now causes warning, since tha 1031 t 1032 will prevent them from getting linked properly 1033 1034 3. Check for "bare" references to curl functions and warn, they should be 1035 references 1036 1037 Closes #11963 1038 1039- cmake: add check for suseconds_t 1040 1041 And fix the HAVE_LONGLONG define 1042 1043 Ref: #11964 1044 Closes #11977 1045 1046Viktor Szakats (28 Sep 2023) 1047 1048- tidy-up: whitespace fixes 1049 1050 Closes #11972 1051 1052- cmake: detect TLS-SRP in OpenSSL/wolfSSL/GnuTLS 1053 1054 With new option `CURL_DISABLE_SRP=ON` to force-disable it. 1055 To match existing option and detection logic in autotools. 1056 1057 Also: 1058 - fix detecting GnuTLS. 1059 We assume `nettle` as a GnuTLS dependency. 1060 - add CMake GnuTLS CI job. 1061 - bump AppVeyor CMake OpenSSL MSVC job to OpenSSL 1.1.1 (from 1.0.2) 1062 TLS-SRP fails to detect with 1.0.2 due to an OpenSSL header bug. 1063 - fix compiler warning when building with GnuTLS and disabled TLS-SRP. 1064 - fix comment typos, whitespace. 1065 1066 Ref: #11964 1067 1068 Closes #11967 1069 1070- tool: use our own stderr variable 1071 1072 Earlier this year we changed our own stderr variable to use the standard 1073 name `stderr` (to avoid bugs where someone is using `stderr` instead of 1074 the curl-tool specific variable). This solution needed to override the 1075 standard `stderr` symbol via the preprocessor. This in turn didn't play 1076 well with unity builds and caused curl tool to crash or stay silent due 1077 to an uninitialized stderr. This was a hard to find issue, fixed by 1078 manually breaking out one file from the unity sources. 1079 1080 To avoid two these two tricks, this patch implements a different 1081 solution: Restore using our own local variable for our stderr output and 1082 leave `stderr` as-is. To avoid using `stderr` by mistake, add a 1083 `checksrc` rule (based on logic we already used in lib for `strerror`) 1084 that detects any `stderr` use in `src` and points to using our own 1085 variable instead: `tool_stderr`. 1086 1087 Follow-up to 06133d3e9b8aeb9e9ca0b3370c246bdfbfc8619e 1088 Follow-up to 2f17a9b654121dd1ecf4fc043c6d08a9da3522db 1089 1090 Closes #11958 1091 1092Loïc Yhuel (28 Sep 2023) 1093 1094- connect: only start the happy eyeballs timer when needed 1095 1096 The timeout is only used when there is a second address family, for the 1097 delayed eyeballer. 1098 1099 Closes #11939 1100 1101Daniel Stenberg (28 Sep 2023) 1102 1103- tool_operate: free 'gateway' correctly 1104 1105 Pointed out by Coverity. The fix in 93885cf3a8d4e was incomplete. 1106 1107 Also removed repeated wording in IPFS related error messages. 1108 1109 Closes #11969 1110 1111Stefan Eissing (28 Sep 2023) 1112 1113- lib: move handling of `data->req.writer_stack` into Curl_client_write() 1114 1115 - move definitions from content_encoding.h to sendf.h 1116 - move create/cleanup/add code into sendf.c 1117 - installed content_encoding writers will always be called 1118 on Curl_client_write(CLIENTWRITE_BODY) 1119 - Curl_client_cleanup() frees writers and tempbuffers from 1120 paused transfers, irregardless of protocol 1121 1122 Closes #11908 1123 1124Loïc Yhuel (28 Sep 2023) 1125 1126- multi: round the timeout up to prevent early wakeups 1127 1128 Curl_timediff rounds down to the millisecond, so curl_multi_perform can 1129 be called too early, then we get a timeout of 0 and call it again. 1130 1131 The code already handled the case of timeouts which expired less than 1132 1ms in the future. By rounding up, we make sure we will never ask the 1133 platform to wake up too early. 1134 1135 Closes #11938 1136 1137Daniel Stenberg (28 Sep 2023) 1138 1139- RELEASE-NOTES: spell out that IPFS is via gateway 1140 1141- RELEASE-NOTES: synced 1142 1143- tool_operate: avoid strlen() -1 on zero length content from file 1144 1145 Follow-up to 65b563a96a226649ba12cb1e 1146 1147 Closes #11959 1148 1149- tool_operate: fix memory mixups 1150 1151 Switch to plain getenv() from curl_getenv() to avoid the allocation and 1152 having to keep track of which free() or curl_free() that need to be 1153 used. 1154 1155 Coverity found issues and a memory leak. 1156 1157 Follow-up to 65b563a96a226649ba12cb1e 1158 1159 Closes #11959 1160 1161Viktor Szakats (27 Sep 2023) 1162 1163- curl-functions.m4: fixup recent bad edits 1164 1165 Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 1166 1167 Closes #11966 1168 1169Daniel Stenberg (27 Sep 2023) 1170 1171- curl-functions.m4: fix include line 1172 1173 This made the getaddrinfo detection fail, but we did not spot it in the 1174 CI because it graciously falled back to using legacy functions instead! 1175 1176 Follow-up to 96c29900bcec (#11940) 1177 1178 Closes #11965 1179 1180- inet_ntop: add typecast to silence Coverity 1181 1182 CID 1024653: Integer handling issues (SIGN_EXTENSION) 1183 1184 Suspicious implicit sign extension: "src[i]" with type "unsigned char 1185 const" (8 bits, unsigned) is promoted in "src[i] << (1 - i % 2 << 3)" to 1186 type "int" (32 bits, signed), then sign-extended to type "unsigned long" 1187 (64 bits, unsigned). If "src[i] << (1 - i % 2 << 3)" is greater than 1188 0x7FFFFFFF, the upper bits of the result will all be 1. 1189 1190 111 words[i/2] |= (src[i] << ((1 - (i % 2)) << 3)); 1191 1192 The value will not be greater than 0x7FFFFFFF so this still cannot 1193 happen. 1194 1195 Also, switch to ints here instead of longs. The values stored are 16 bit 1196 so at least no need to use 64 bit variables. Also, longs are 32 bit on 1197 some platforms so this logic still needs to work with 32 bits. 1198 1199 Closes #11960 1200 1201- docs: adapt SEE ALSO sections to new requirements 1202 1203 To please manpage-syntax.pl used by test 1173 1204 1205 Closes #11957 1206 1207- manpage-syntax.pl: verify SEE ALSO syntax 1208 1209 - Enforce a single reference per .BR line 1210 - Skip the quotes around the section number for example (3) 1211 - Insist on trailing commas on all lines except the last 1212 - Error on comma on the last SEE ALSO entry 1213 1214 - List the entries alpha-sorted, not enforced just recommended 1215 1216 Closes #11957 1217 1218- connect: expire the timeout when trying next 1219 1220 ... so that it gets called again immediately and can continue trying 1221 addresses to connect to. Otherwise it might unnecessarily wait for a 1222 while there. 1223 1224 Fixes #11920 1225 Reported-by: Loïc Yhuel 1226 Closes #11935 1227 1228- http: remove wrong comment for http_should_fail 1229 1230 Reported-by: Christian Schmitz 1231 Ref: #11936 1232 Closes #11941 1233 1234Dan Fandrich (26 Sep 2023) 1235 1236- tool_setopt: remove unused function tool_setopt_flags 1237 1238 This function is identical to tool_setopt_bitmask except that it treats 1239 the argument as unsigned. 1240 1241 Closes #11943 1242 1243Viktor Szakats (26 Sep 2023) 1244 1245- cmake: add feature checks for `memrchr` and `getifaddrs` 1246 1247 - `HAVE_MEMRCHR` for `memrchr`. 1248 - `HAVE_GETIFADDRS` for `getifaddrs`. 1249 This was present in `lib/curl_config.h.cmake` but missed the detection 1250 logic. 1251 1252 To match existing autotools feature checks. 1253 1254 Closes #11954 1255 1256- cmake: move global headers to specific checks 1257 1258 Before this patch we added standard headers unconditionally to the 1259 global list of headers used for feature checks. This is unnecessary 1260 and also doesn't help CMake 'Generate' performance. This patch moves 1261 these headers to each feature check where they are actually needed. 1262 Stop using `stddef.h`, as it seems unnecessary. 1263 1264 I've used autotools' `m4/curl-functions.m4` to figure out these 1265 dependencies. 1266 1267 Also delete checking for the C89 standard header `time.h`, that I 1268 missed in the earlier commit. 1269 1270 Ref: 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 1271 1272 Closes #11951 1273 1274- src/mkhelp: make generated code pass `checksrc` 1275 1276 Closes #11955 1277 1278- tests: show which curl tool `runtests.pl` is using 1279 1280 To help debugging when there is issue finding or running it. 1281 1282 Closes #11953 1283 1284- CI/azure: make `MAKEFLAGS` global to parallelize all jobs 1285 1286 https://dev.azure.com/daniel0244/curl/_build/results?buildId=17528 (before) 1287 https://dev.azure.com/daniel0244/curl/_build/results?buildId=17545 (after, wi 1288 th -j3) 1289 1290 Closes #11952 1291 1292- CI/azure: migrate old mingw MSYS1 jobs to MSYS2 1293 1294 Also delete an accidental variable reference. 1295 1296 Follow-up to 38029101e2d78ba125732b3bab6ec267b80a0e72 1297 1298 Closes #11945 1299 1300Daniel Stenberg (26 Sep 2023) 1301 1302- docs: add see also curl_multi_get_handles to some man pages 1303 1304 Assisted-by: Jay Satiro 1305 1306 Closes #11942 1307 1308Viktor Szakats (26 Sep 2023) 1309 1310- cmake: assume `_fseeki64` and no `fseeko` on Windows 1311 1312 `_fseeki64` is present in mingw-w64 1.0 (2011-09-26) headers, and 1313 at least Watcom C 1.9 (2010) headers and MSVS 2008 [1]. 1314 1315 `fseeko` is not present in any of these. 1316 1317 (mingw-w64 1.0 also offers `fseeko64`.) 1318 1319 [1] https://github.com/curl/curl/pull/11944#issuecomment-1734995004 1320 1321 Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 1322 1323 Closes #11950 1324 1325- build: delete checks for C89 standard headers 1326 1327 Delete checks and guards for standard C89 headers and assume these are 1328 available: `stdio.h`, `string.h`, `time.h`, `setjmp.h`, `stdlib.h`, 1329 `stddef.h`, `signal.h`. 1330 1331 Some of these we already used unconditionally, some others we only used 1332 for feature checks. 1333 1334 Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 (for `stdio.h` i 1335 n CMake) 1336 1337 Closes #11940 1338 1339Stefan Eissing (26 Sep 2023) 1340 1341- multiif.h: remove Curl_multi_dump declaration 1342 1343 Follow-up to d850eea2 which removed the Curl_multi_dump definition. 1344 1345 Closes https://github.com/curl/curl/pull/11946 1346 1347Jay Satiro (26 Sep 2023) 1348 1349- config-win32: define HAVE__FSEEKI64 1350 1351 Follow-up to 9c7165e9 which added an fseeko wrapper to the lib that 1352 calls _fseeki64 if it is available. 1353 1354 Closes https://github.com/curl/curl/pull/11944 1355 1356- docs: explain how PINNEDPUBLICKEY is independent of VERIFYPEER 1357 1358 - Explain that peer verification via CURLOPT_PINNEDPUBLICKEY takes place 1359 even if peer verification via CURLOPT_SSL_VERIFYPEER is turned off. 1360 1361 The behavior is verified by test2048. 1362 1363 Bug: https://github.com/curl/curl/issues/2935#issuecomment-418371872 1364 Reported-by: claudiusaiz@users.noreply.github.com 1365 1366 Bug: https://github.com/curl/curl/discussions/11910 1367 Reported-by: Hakan Sunay Halil 1368 1369 Closes https://github.com/curl/curl/pull/11930 1370 1371Stefan Eissing (26 Sep 2023) 1372 1373- openssl: improve ssl shutdown handling 1374 1375 - If SSL shutdown is not finished then make an additional call to 1376 SSL_read to gather additional tracing. 1377 1378 - Fix http2 and h2-proxy filters to forward do_close() calls to the next 1379 filter. 1380 1381 For example h2 and SSL shutdown before and after this change: 1382 1383 Before: 1384 1385 Curl_conn_close -> cf_hc_close -> Curl_conn_cf_discard_chain -> 1386 ssl_cf_destroy 1387 1388 After: 1389 1390 Curl_conn_close -> cf_hc_close -> cf_h2_close -> cf_setup_close -> 1391 ssl_cf_close 1392 1393 Note that currently the tracing does not show output on the connection 1394 closure handle. Refer to discussion in #11878. 1395 1396 Ref: https://github.com/curl/curl/discussions/11878 1397 1398 Closes https://github.com/curl/curl/pull/11858 1399 1400Loïc Yhuel (26 Sep 2023) 1401 1402- multi: fix small timeouts 1403 1404 Since Curl_timediff rounds down to the millisecond, timeouts which 1405 expire in less than 1ms are considered as outdated and removed from the 1406 list. We can use Curl_timediff_us instead, big timeouts could saturate 1407 but this is not an issue. 1408 1409 Closes #11937 1410 1411Viktor Szakats (25 Sep 2023) 1412 1413- cmake: fix stderr initialization in unity builds 1414 1415 Before this patch, in certain build configurations the curl tool may 1416 not have displayed anything (debug, macOS), or crashed at startup 1417 (debug, Windows). 1418 1419 Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 1420 Necessary after 2f17a9b654121dd1ecf4fc043c6d08a9da3522db 1421 1422 Closes #11929 1423 1424- cmake: fix missing `zlib.h` when compiling `libcurltool` 1425 1426 Came up while testing debug/testing build for Windows. I'm not sure why 1427 it didn't come up in earlier tests with similar config. 1428 `tool_hugehelp.c` might indeed require `zlib.h` and without linking 1429 `CURL_LIBS` to the `curltool` target, CMake doesn't seem to add detected 1430 dependency headers to the compiler command. 1431 1432 ``` 1433 [ 25%] Building C object src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj 1434 cd .../curl/bld-cmake-llvm-x64/src && /usr/local/opt/llvm/bin/clang 1435 --target=x86_64-w64-mingw32 --sysroot=/usr/local/opt/mingw-w64/toolchain-x8 1436 6_64 1437 -DCURLDEBUG -DCURL_STATICLIB -DHAVE_CONFIG_H -DUNICODE -DUNITTESTS -D_UNICO 1438 DE 1439 -I.../curl/include -I.../curl/lib -I.../curl/bld-cmake-llvm-x64/lib 1440 -I.../curl/bld-cmake-llvm-x64/include -I.../curl/src -Wno-unused-command-li 1441 ne-argument 1442 -D_UCRT -DDEBUGBUILD -DHAS_ALPN -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static 1443 -libgcc 1444 -lucrt [...] -O3 -DNDEBUG -municode -MD 1445 -MT src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj 1446 -MF CMakeFiles/curltool.dir/tool_hugehelp.c.obj.d 1447 -o CMakeFiles/curltool.dir/tool_hugehelp.c.obj -c .../curl/bld-cmake-llvm-x 1448 64/src/tool_hugehelp.c 1449 .../curl/bld-cmake-llvm-x64/src/tool_hugehelp.c:6:10: fatal error: 'zlib.h' f 1450 ile not found 1451 6 | #include <zlib.h> 1452 | ^~~~~~~~ 1453 ``` 1454 1455 Follow-up to 39e7c22bb459c2e818f079984989a26a09741860 1456 1457 Closes #11927 1458 1459- cmake: fix duplicate symbols when linking tests 1460 1461 The linker resolves this automatically in non-unity builds. In unity 1462 builds the linker cannot drop a single object with the duplicates, 1463 resulting in these errors. The root issue is that we started including 1464 certain objects both via both libcurlu and libcurltool libs. 1465 1466 Regression from 39e7c22bb459c2e818f079984989a26a09741860 1467 1468 Windows errors: 1469 ``` 1470 [ 3%] Linking C executable unit1303.exe 1471 [ 3%] Building C object tests/server/CMakeFiles/rtspd.dir/__/__/lib/curl_mul 1472 tibyte.c.obj 1473 ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_UTF8_to_wch 1474 ar': 1475 C:/projects/curl/lib/curl_multibyte.c:44: multiple definition of `curlx_conve 1476 rt_UTF8_to_wchar' 1477 ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. 1478 c:44: first defined here 1479 ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_wchar_to_UT 1480 F8': 1481 C:/projects/curl/lib/curl_multibyte.c:66: multiple definition of `curlx_conve 1482 rt_wchar_to_UTF8' 1483 ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. 1484 c:66: first defined here 1485 ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_open': 1486 C:/projects/curl/lib/curl_multibyte.c:92: multiple definition of `curlx_win32 1487 _open' 1488 ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. 1489 c:92: first defined here 1490 ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_fopen': 1491 C:/projects/curl/lib/curl_multibyte.c:120: multiple definition of `curlx_win3 1492 2_fopen' 1493 ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. 1494 c:120: first defined here 1495 ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_stat': 1496 [...] 1497 ``` 1498 Ref: https://ci.appveyor.com/project/curlorg/curl/builds/48110107/job/nvlhpt9 1499 aa4ehny5q#L247 1500 1501 macOS errors: 1502 ``` 1503 [ 56%] Linking C executable unit1302 1504 duplicate symbol '_curlx_sotouz' in: 1505 ../../lib/libcurlu.a(unity_0_c.c.o) 1506 ../../src/libcurltool.a(unity_0_c.c.o) 1507 duplicate symbol '_curlx_sitouz' in: 1508 ../../lib/libcurlu.a(unity_0_c.c.o) 1509 ../../src/libcurltool.a(unity_0_c.c.o) 1510 duplicate symbol '_curlx_uztosz' in: 1511 ../../lib/libcurlu.a(unity_0_c.c.o) 1512 ../../src/libcurltool.a(unity_0_c.c.o) 1513 [...] 1514 ``` 1515 with config: 1516 ``` 1517 -DCMAKE_UNITY_BUILD=ON \ 1518 -DENABLE_DEBUG=ON -DBUILD_TESTING=ON -DCMAKE_C_FLAGS=-DDEBUGBUILD \ 1519 -DBUILD_SHARED_LIBS=ON \ 1520 -DBUILD_STATIC_LIBS=OFF 1521 ``` 1522 1523 Closes #11926 1524 1525- cmake: lib `CURL_STATICLIB` fixes (Windows) 1526 1527 - always define `CURL_STATICLIB` when building libcurl for Windows. 1528 1529 This disables `__declspec(dllexport)` for exported libcurl symbols. 1530 In normal mode (hide symbols) these exported symbols are specified 1531 via `libcurl.def`. When not hiding symbols, all symbols are exported 1532 by default. 1533 1534 Regression from 1199308dbc902c52be67fc805c72dd2582520d30 1535 1536 Fixes #11844 1537 1538 - fix to omit `libcurl.def` when not hiding private symbols. 1539 1540 Regression from 2ebc74c36a19a1700af394c16855ce144d9878e3 1541 1542 - fix `ENABLED_DEBUG=ON` + shared curl tool Windows builds by also 1543 omitting `libcurl.def` in this case, and exporting all symbols 1544 instead. This ensures that a shared curl tool can access all debug 1545 functions which are not normally exported from libcurl DLL. 1546 1547 - delete `INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB"` for "objects" 1548 target. 1549 1550 Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3 1551 1552 - delete duplicate `BUILDING_LIBCURL` definitions. 1553 1554 - fix `HIDES_CURL_PRIVATE_SYMBOLS` to not overwrite earlier build settings. 1555 1556 Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 1557 1558 Closes #11914 1559 1560Daniel Stenberg (25 Sep 2023) 1561 1562- RELEASE-NOTES: synced 1563 1564Dan Fandrich (25 Sep 2023) 1565 1566- tests: fix log directory path in IPFS tests 1567 1568 Hard-coding the log directory name fails with parallel tests. 1569 1570 Follow-up to 65b563a96 1571 1572 Ref: #8805 1573 1574Daniel Stenberg (25 Sep 2023) 1575 1576- curl_multi_get_handles: get easy handles from a multi handle 1577 1578 Closes #11750 1579 1580Stefan Eissing (25 Sep 2023) 1581 1582- http: h1/h2 proxy unification 1583 1584 - use shared code for setting up the CONNECT request 1585 when tunneling, used in HTTP/1.x and HTTP/2 proxying 1586 - eliminate use of Curl_buffer_send() and other manipulations 1587 of `data->req` or `data->state.ulbuf` 1588 1589 Closes #11808 1590 1591Natanael Copa (25 Sep 2023) 1592 1593- lib: use wrapper for curl_mime_data fseek callback 1594 1595 fseek uses long offset which does not match with curl_off_t. This leads 1596 to undefined behavior when calling the callback and caused failure on 1597 arm 32 bit. 1598 1599 Use a wrapper to solve this and use fseeko which uses off_t instead of 1600 long. 1601 1602 Thanks to the nice people at Libera IRC #musl for helping finding this 1603 out. 1604 1605 Fixes #11882 1606 Fixes #11900 1607 Closes #11918 1608 1609- configure: sort AC_CHECK_FUNCS 1610 1611 No functional changes. 1612 1613Daniel Stenberg (25 Sep 2023) 1614 1615- warnless: remove unused functions 1616 1617 Previously put there for use with the intel compiler 1618 1619 Closes #11932 1620 1621- GHA/linux: run singleuse to detect single-use global functions 1622 1623 Use --unit for configure --enable-debug builds 1624 1625 Closes #11932 1626 1627- singleuse: add scan for use in other source codes 1628 1629 This should reduce false-positive to almost zero. Checks for presence in 1630 unit tests if --unit is specified, which is intended for debug builds 1631 where unit testing is enabled. 1632 1633 Closes #11932 1634 1635- multi: remove Curl_multi_dump 1636 1637 A debug-only function that is basically never used. Removed to ease the 1638 use of the singleuse script to detect non-static functions not used 1639 outside the file where it is defined. 1640 1641 Closes #11931 1642 1643Viktor Szakats (24 Sep 2023) 1644 1645- tests: fix compiler warnings 1646 1647 Seen with llvm 17 on Windows x64. 1648 1649 ``` 1650 .../curl/tests/server/rtspd.c:136:13: warning: no previous extern declaration 1651 for non-static variable 'logdir' [-Wmissing-variable-declarations] 1652 136 | const char *logdir = "log"; 1653 | ^ 1654 .../curl/tests/server/rtspd.c:136:7: note: declare 'static' if the variable i 1655 s not intended to be used outside of this translation unit 1656 136 | const char *logdir = "log"; 1657 | ^ 1658 .../curl/tests/server/rtspd.c:137:6: warning: no previous extern declaration 1659 for non-static variable 'loglockfile' [-Wmissing-variable-declarations] 1660 137 | char loglockfile[256]; 1661 | ^ 1662 .../curl/tests/server/rtspd.c:137:1: note: declare 'static' if the variable i 1663 s not intended to be used outside of this translation unit 1664 137 | char loglockfile[256]; 1665 | ^ 1666 .../curl/tests/server/fake_ntlm.c:43:13: warning: no previous extern declarat 1667 ion for non-static variable 'logdir' [-Wmissing-variable-declarations] 1668 43 | const char *logdir = "log"; 1669 | ^ 1670 .../curl/tests/server/fake_ntlm.c:43:7: note: declare 'static' if the variabl 1671 e is not intended to be used outside of this translation unit 1672 43 | const char *logdir = "log"; 1673 | ^ 1674 .../curl/src/tool_doswin.c:350:8: warning: possible misuse of comma operator 1675 here [-Wcomma] 1676 350 | ++d, ++s; 1677 | ^ 1678 .../curl/src/tool_doswin.c:350:5: note: cast expression to void to silence wa 1679 rning 1680 350 | ++d, ++s; 1681 | ^~~ 1682 | (void)( ) 1683 ``` 1684 1685 ``` 1686 .../curl/tests/libtest/lib540.c:146:27: warning: result of comparison 'long' 1687 > 2147483647 is always false [-Wtautological-type-limit-compare] 1688 146 | int itimeout = (L > (long)INT_MAX) ? INT_MAX : (int)L; 1689 | ~ ^ ~~~~~~~~~~~~~ 1690 1 warning generated. 1691 1692 .../curl/tests/libtest/libntlmconnect.c:195:31: warning: result of comparison 1693 'long' > 2147483647 is always false [-Wtautological-type-limit-compare] 1694 195 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo 1695 ut; 1696 | ~~~~~~~ ^ ~~~~~~~~~~~~~ 1697 1 warning generated. 1698 1699 .../curl/tests/libtest/lib591.c:117:31: warning: result of comparison 'long' 1700 > 2147483647 is always false [-Wtautological-type-limit-compare] 1701 117 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo 1702 ut; 1703 | ~~~~~~~ ^ ~~~~~~~~~~~~~ 1704 1 warning generated. 1705 .../curl/tests/libtest/lib597.c:99:31: warning: result of comparison 'long' > 1706 2147483647 is always false [-Wtautological-type-limit-compare] 1707 99 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo 1708 ut; 1709 | ~~~~~~~ ^ ~~~~~~~~~~~~~ 1710 1 warning generated. 1711 ``` 1712 1713 Seen on macOS Intel: 1714 ``` 1715 .../curl/tests/server/sws.c:440:64: warning: field precision should have type 1716 'int', but argument has type 'size_t' (aka 'unsigned long') [-Wformat] 1717 msnprintf(logbuf, sizeof(logbuf), "Got request: %s %.*s HTTP/%d.%d" 1718 , 1719 ~~^~ 1720 1 warning generated. 1721 ``` 1722 1723 Closes #11925 1724 1725Jay Satiro (24 Sep 2023) 1726 1727- url: fix netrc info message 1728 1729 - Fix netrc info message to use the generic ".netrc" filename if the 1730 user did not specify a netrc location. 1731 1732 - Update --netrc doc to add that recent versions of curl on Windows 1733 prefer .netrc over _netrc. 1734 1735 Before: 1736 * Couldn't find host google.com in the (nil) file; using defaults 1737 1738 After: 1739 * Couldn't find host google.com in the .netrc file; using defaults 1740 1741 Closes https://github.com/curl/curl/pull/11904 1742 1743Dan Fandrich (23 Sep 2023) 1744 1745- wolfssh: do cleanup in Curl_ssh_cleanup 1746 1747 Closes: #11921 1748 1749Daniel Stenberg (24 Sep 2023) 1750 1751- tool_listhelp: regenerated 1752 1753 Polished the --ipfs-gateway description 1754 1755 Fixed the --trace-config description 1756 1757 The script also fixed some other small mistakes 1758 1759 Closes #11923 1760 1761Viktor Szakats (23 Sep 2023) 1762 1763- Makefile.mk: always set `CURL_STATICLIB` for lib (Windows) 1764 1765 Also fix to export all symbols in Windows debug builds, making 1766 `-debug-dyn` builds work with `-DCURL_STATICLIB` set. 1767 1768 Ref: https://github.com/curl/curl/pull/11914 (same for CMake) 1769 1770 Closes #11924 1771 1772Daniel Stenberg (23 Sep 2023) 1773 1774- quic: set ciphers/curves the same way regular TLS does 1775 1776 for OpenSSL/BoringSSL 1777 1778 Fixes #11796 1779 Reported-by: Karthikdasari0423 on github 1780 Assisted-by: Jay Satiro 1781 Closes #11836 1782 1783- test457: verify --max-filesize with chunked encoding 1784 1785- lib: let the max filesize option stop too big transfers too 1786 1787 Previously it would only stop them from getting started if the size is 1788 known to be too big then. 1789 1790 Update the libcurl and curl docs accordingly. 1791 1792 Fixes #11810 1793 Reported-by: Elliot Killick 1794 Assisted-by: Jay Satiro 1795 Closes #11820 1796 1797Viktor Szakats (23 Sep 2023) 1798 1799- mingw: delete support for legacy mingw.org toolchain 1800 1801 Drop support for "old" / "legacy" / "classic" / "v1" / "mingw32" MinGW: 1802 https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/ 1803 Its homepage used to be http://mingw.org/ [no HTTPS], and broken now. 1804 It supported the x86 CPU only and used a old Windows API header and 1805 implib set, often causing issues. It also misses most modern Windows 1806 features, offering old versions of both binutils and gcc (no llvm/clang 1807 support). It was last updated 2 years ago. 1808 1809 curl now relies on toolchains based on the mingw-w64 project: 1810 https://www.mingw-w64.org/ https://sourceforge.net/projects/mingw-w64/ 1811 https://www.msys2.org/ https://github.com/msys2/msys2 1812 https://github.com/mstorsjo/llvm-mingw 1813 (Also available via Linux and macOS package managers.) 1814 1815 Closes #11625 1816 1817Mark Gaiser (23 Sep 2023) 1818 1819- curl: add support for the IPFS protocols: 1820 1821 - ipfs://<cid> 1822 - ipns://<cid> 1823 1824 This allows you tu use ipfs in curl like: 1825 curl ipfs://<cid> 1826 and 1827 curl ipns://<cid> 1828 1829 For more information consult the readme at: 1830 https://curl.se/docs/ipfs.html 1831 1832 Closes #8805 1833 1834Daniel Stenberg (23 Sep 2023) 1835 1836- bufq: remove Curl_bufq_skip_and_shift (unused) 1837 1838 Closes #11915 1839 1840- scripts/singleuse.pl: add curl_global_trace 1841 1842Viktor Szakats (22 Sep 2023) 1843 1844- cmake: fix unity symbol collisions in h2 builds 1845 1846 Regression from 331b89a319d0067fa1e6441719307cfef9c7960f 1847 1848 Reviewed-by: Daniel Stenberg 1849 Reviewed-by: Jay Satiro 1850 Closes #11912 1851 1852Daniel Stenberg (22 Sep 2023) 1853 1854- RELEASE-NOTES: synced 1855 1856Dan Fandrich (21 Sep 2023) 1857 1858- github/labeler: improve the match patterns 1859 1860 This includes new rules for setting the appleOS and logging labels and 1861 matches on some example files. Also, enable dot mode for wildcard 1862 matches in the .github directory. 1863 1864Daniel Stenberg (21 Sep 2023) 1865 1866- upload-file.d: describe the file name slash/backslash handling 1867 1868 Closes #11911 1869 1870Jakub Jelen (21 Sep 2023) 1871 1872- libssh: cap SFTP packet size sent 1873 1874 Due to libssh limitations 1875 1876 Signed-off-by: Jakub Jelen <jjelen@redhat.com> 1877 1878 Closes #11804 1879 1880Daniel Stenberg (21 Sep 2023) 1881 1882- curl.h: mark CURLSSLBACKEND_NSS as deprecated since 8.3.0 1883 1884 Closes #11905 1885 1886- mailmap: unify Michael Osipov under a single email 1887 1888Ted Lyngmo (21 Sep 2023) 1889 1890- docs: use CURLSSLBACKEND_NONE 1891 1892 [ssl] use CURLSSLBACKEND_NONE instead of (curl_sslbackend)-1 in 1893 documentation and examples. 1894 1895 Signed-off-by: Ted Lyngmo <ted@lyncon.se> 1896 1897 Closes #11909 1898 1899Dan Fandrich (21 Sep 2023) 1900 1901- github/labeler: give the sync-labels config item a default value 1902 1903 This shouldn't be necessary and is likely a bug with this beta version 1904 of the labeller. 1905 1906 Also, fix the negative matches for the documentation label. 1907 1908 Follow-up to dd12b452a 1909 Closes #11907 1910 1911- github/labeler: fix up more the labeler config format 1912 1913 The new version didn't like the workaround we had for a bug in the 1914 previous labeler version, and it should no longer be needed. 1915 1916 Follow-up to dd12b452a 1917 Closes #11906 1918 1919- github/labeler: fix indenting to try to appease labeller 1920 1921 Follow-up to dd12b452a 1922 1923Jay Satiro (21 Sep 2023) 1924 1925- libssh2: fix error message on failed pubkey-from-file 1926 1927 - If libssh2_userauth_publickey_fromfile_ex returns -1 then show error 1928 message "SSH public key authentication failed: Reason unknown (-1)". 1929 1930 When libssh2_userauth_publickey_fromfile_ex returns -1 it does so as a 1931 generic error and therefore doesn't set an error message. AFAICT that is 1932 not documented behavior. 1933 1934 Prior to this change libcurl retrieved the last set error message which 1935 would be from a previous function failing. That resulted in misleading 1936 auth failed error messages in verbose mode. 1937 1938 Bug: https://github.com/curl/curl/issues/11837#issue-1891827355 1939 Reported-by: consulion@users.noreply.github.com 1940 1941 Closes https://github.com/curl/curl/pull/11881 1942 1943Stefan Eissing (21 Sep 2023) 1944 1945- pytest: exclude test_03_goaway in CI runs due to timing dependency 1946 1947 Closes #11860 1948 1949- lib: disambiguate Curl_client_write flag semantics 1950 1951 - use CLIENTWRITE_BODY *only* when data is actually body data 1952 - add CLIENTWRITE_INFO for meta data that is *not* a HEADER 1953 - debug assertions that BODY/INFO/HEADER is not used mixed 1954 - move `data->set.include_header` check into Curl_client_write 1955 so protocol handlers no longer have to care 1956 - add special in FTP for `data->set.include_header` for historic, 1957 backward compatible reasons 1958 - move unpausing of client writes from easy.c to sendf.c, so that 1959 code is in one place and can forward flags correctly 1960 1961 Closes #11885 1962 1963Patrick Monnerat (21 Sep 2023) 1964 1965- tftpd: always use curl's own tftp.h 1966 1967 Using the system's provided arpa/tftp.h and optimizing, GCC 12 detects 1968 and reports a stringop-overread warning: 1969 1970 tftpd.c: In function ‘write_behind.isra’: 1971 tftpd.c:485:12: warning: ‘write’ reading between 1 and 2147483647 bytes f 1972 rom a region of size 0 [-Wstringop-overread] 1973 485 | return write(test->ofile, writebuf, count); 1974 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1975 In file included from tftpd.c:71: 1976 /usr/include/arpa/tftp.h:58:30: note: source object ‘tu_data’ of size 0 1977 58 | char tu_data[0]; /* data or error stri 1978 ng */ 1979 | ^~~~~~~ 1980 1981 This occurs because writebuf points to this field and the latter 1982 cannot be considered as being of dynamic length because it is not 1983 the last field in the structure. Thus it is bound to its declared 1984 size. 1985 1986 This commit always uses curl's own version of tftp.h where the 1987 target field is last in its structure, effectively avoiding the 1988 warning. 1989 1990 As HAVE_ARPA_TFTP_H is not used anymore, cmake/configure checks for 1991 arpa/tftp.h are removed. 1992 1993 Closes #11897 1994 1995Dan Fandrich (20 Sep 2023) 1996 1997- test1474: make precheck more robust on non-Solaris systems 1998 1999 If uname -r returns something odd, perl could return an error code and 2000 the test would be erroneously skipped. The qx// syntax avoid this. 2001 2002 Followup to 08f9b2148 2003 2004- github/labeler: switch to the 5 beta version 2005 2006 This version adds an important feature that will allow more PRs to be 2007 labelled. Rather than being limited to labeling PRs with files that 2008 match a single glob, it can now label them if multiple changed files 2009 match any one of a number of globs. 2010 2011Daniel Stenberg (20 Sep 2023) 2012 2013- lib: enable hmac for digest as well 2014 2015 Previously a build that disabled NTLM and aws-sigv4 would fail to build 2016 since the hmac was disabled, but it is also needed for digest auth. 2017 2018 Follow-up to e92edfbef64448ef 2019 2020 Fixes #11890 2021 Reported-by: Aleksander Mazur 2022 Closes #11896 2023 2024- idn: if idn2_check_version returns NULL, return error 2025 2026 ... this avoids a NULL dereference for this unusual case. 2027 2028 Reported-by: s0urc3_ on hackerone 2029 Closes #11898 2030 2031- http: fix CURL_DISABLE_BEARER_AUTH breakage 2032 2033 When bearer auth was disabled, the if/else logic got wrong and caused 2034 problems. 2035 2036 Follow-up to e92edfbef64448ef461 2037 Fixes #11892 2038 Reported-by: Aleksander Mazur 2039 Closes #11895 2040 2041Michael Osipov (20 Sep 2023) 2042 2043- wolfssl: allow capath with CURLOPT_CAINFO_BLOB 2044 2045 Remain consistent with OpenSSL. While CAfile is nulled as documented 2046 with CURLOPT_CAINFO_BLOB, CApath remains intact. 2047 2048 Closes #11886 2049 2050- wolfssl: use ssl_cafile/ssl_capath variables consistent with openssl.c 2051 2052 Closes #11886 2053 2054Dan Fandrich (19 Sep 2023) 2055 2056- test1474: disable test on NetBSD, OpenBSD and Solaris 10 2057 2058 These kernels only send a fraction of the requested amount of the first 2059 large block, invalidating the assumptions of the test and causing it to 2060 fail. 2061 2062 Assisted-by: Christian Weisgerber 2063 Ref: https://curl.se/mail/lib-2023-09/0021.html 2064 Closes #11888 2065 2066Ryan Schmidt (20 Sep 2023) 2067 2068- cmake, configure: also link with CoreServices 2069 2070 When linking with CoreFoundation, also link with CoreServices which is 2071 apparently required to avoid an NSInvalidArgumentException in software 2072 linking with libcurl on macOS Sonoma 14 and later. 2073 2074 Fixes #11893 2075 Closes #11894 2076 2077Marc Hoersken (19 Sep 2023) 2078 2079- CI/azure: remove pip, wheel, cryptography, pyopenssl and impacket 2080 2081 These dependencies are now already included in the Docker image. 2082 2083 Ref: https://github.com/mback2k/curl-docker-winbuildenv/commit/2607a31bcab544 2084 b41d15606e97f38cf312c1ce56 2085 2086 Closes #11889 2087 2088Daniel Stenberg (19 Sep 2023) 2089 2090- wolfssl: if CURLOPT_CAINFO_BLOB is set, ignore the CA files 2091 2092 Ref: #11883 2093 Reported-by: Michael Osipov 2094 Closes #11884 2095 2096- RELEASE-NOTES: synced 2097 2098- test3103: CURLOPT_COOKIELIST test 2099 2100- cookie: set ->running in cookie_init even if data is NULL 2101 2102 This is a regression introduced in b1b326ec500 (shipped in curl 8.1.0) 2103 2104 Test 3103 verifies. 2105 2106 Fixes #11875 2107 Reported-by: wangp on github 2108 Closes #11876 2109 2110- test498: total header size for all redirects is larger than accepted 2111 2112- http: use per-request counter to check too large headers 2113 2114 Not the counter that accumulates all headers over all redirects. 2115 2116 Follow-up to 3ee79c1674fd6 2117 2118 Do a second check for 20 times the limit for the accumulated size for 2119 all headers. 2120 2121 Fixes #11871 2122 Reported-by: Joshix-1 on github 2123 Closes #11872 2124 2125Jay Satiro (18 Sep 2023) 2126 2127- THANKS: add Eric Murphy 2128 2129 He reported #11850 (quiche build error) but I forgot to add a 2130 'reported-by' entry in the fix 267e14f1. 2131 2132Daniel Stenberg (18 Sep 2023) 2133 2134- h2-proxy: remove left-over mistake in drain_tunnel() 2135 2136 Left-over from 331b89a319 2137 2138 Reported-by: 南宫雪珊 2139 2140 Closes https://github.com/curl/curl/pull/11877 2141 2142vvb2060 (18 Sep 2023) 2143 2144- lib: failf/infof compiler warnings 2145 2146 Closes #11874 2147 2148Daniel Stenberg (17 Sep 2023) 2149 2150- rand: fix 'alnum': array is too small to include a terminating null character 2151 2152 It was that small on purpose, but this change now adds the null byte to 2153 avoid the error. 2154 2155 Follow-up to 3aa3cc9b052353b1 2156 2157 Reported-by: Dan Fandrich 2158 Ref: #11838 2159 Closes #11870 2160 2161Mathias Fuchs (16 Sep 2023) 2162 2163- cmake: fix the help text to the static build option in CMakeLists.txt 2164 2165 Closes #11843 2166 2167John Haugabook (16 Sep 2023) 2168 2169- MANUAL.md: change domain to example.com 2170 2171 Closes #11866 2172 2173Daniel Stenberg (16 Sep 2023) 2174 2175- doh: inherit DEBUGFUNCTION/DATA 2176 2177 When creating new transfers for doing DoH, they now inherit the debug 2178 settings from the initiating transfer, so that the application can 2179 redirect and handle the verbose output correctly even for the DoH 2180 transfers. 2181 2182 Reported-by: calvin2021y on github 2183 Fixes #11864 2184 Closes #11869 2185 2186Dan Fandrich (16 Sep 2023) 2187 2188- http_aws_sigv4: fix sorting with empty parts 2189 2190 When comparing with an empty part, the non-empty one is always 2191 considered greater-than. Previously, the two would be considered equal 2192 which would randomly place empty parts amongst non-empty ones. This 2193 showed as a test 439 failure on Solaris as it uses a different 2194 implementation of qsort() that compares parts differently. 2195 2196 Fixes #11855 2197 Closes #11868 2198 2199- CI: ignore the "flaky" and "timing-dependent" test results 2200 2201 CI builds will now run these tests, but will ignore the results if they 2202 fail. The relevant tests are ones that are sensitive to timing or 2203 have edge conditions that make them more likely to fail on CI servers, 2204 which are often heavily overloaded and slow. 2205 2206 This change only adds two additional tests to be ignored, since the 2207 others already had the flaky keyword. 2208 2209 Closes #11865 2210 2211- runtests: eliminate a warning on old perl versions 2212 2213 The warning "Use of implicit split to @_ is deprecated" showed between 2214 perl versions about 5.8 through 5.11. 2215 2216- tests: log the test result code after each libtest 2217 2218 This makes it easier to determine the test status. Also, capitalize 2219 FAILURE and ABORT messages in log lines to make them easier to spot. 2220 2221Harry Sintonen (16 Sep 2023) 2222 2223- misc: better random strings 2224 2225 Generate alphanumerical random strings. 2226 2227 Prior this change curl used to create random hex strings. This was 2228 mostly okay, but having alphanumerical random strings is better: The 2229 strings have more entropy in the same space. 2230 2231 The MIME multipart boundary used to be mere 64-bits of randomness due 2232 to being 16 hex chars. With these changes the boundary is 22 2233 alphanumerical chars, or little over 130 bits of randomness. 2234 2235 Closes #11838 2236 2237Daniel Stenberg (15 Sep 2023) 2238 2239- cookie: reduce variable scope, add const 2240 2241- cookie: do not store the expire or max-age strings 2242 2243 Convert it to an expire time at once and save memory. 2244 2245 Closes #11862 2246 2247- cookie: remove unnecessary struct fields 2248 2249 Plus: reduce the hash table size from 256 to 63. It seems unlikely to 2250 make much of a speed difference for most use cases but saves 1.5KB of 2251 data per instance. 2252 2253 Closes #11862 2254 2255- RELEASE-NOTES: synced 2256 2257 Bumped to 8.4.0, the next presumed version 2258 2259Dan Fandrich (14 Sep 2023) 2260 2261- test2600: remove special case handling for USE_ALARM_TIMEOUT 2262 2263 This was originally added to handle platforms that supported only 1 2264 second granularity in connect timeouts, but after some recent changes 2265 the test currently permafails on several Windows platforms. 2266 2267 The need for this special-case was removed in commit 8627416, which 2268 increased the connect timeout in all cases to well above 1 second. 2269 2270 Fixes #11767 2271 Closes #11849 2272 2273Daniel Stenberg (14 Sep 2023) 2274 2275- SECURITY-PROCESS.md. call it vulnerability disclosure policy 2276 2277 SECURITY-PROCESS.md -> VULN-DISCLOSURE-POLICY.md 2278 2279 This a name commonly used for a document like this. This name helps 2280 users find it. 2281 2282 Closes #11852 2283 2284Junho Choi (14 Sep 2023) 2285 2286- quiche: fix build error with --with-ca-fallback 2287 2288 - Fix build error when curl is built with --with-quiche 2289 and --with-ca-fallback. 2290 2291 - Add --with-ca-fallback to the quiche CI job. 2292 2293 Fixes https://github.com/curl/curl/issues/11850 2294 Closes https://github.com/curl/curl/pull/11847 2295 2296Jay Satiro (14 Sep 2023) 2297 2298- escape: replace Curl_isunreserved with ISUNRESERVED 2299 2300 - Use the ALLCAPS version of the macro so that it is clear a macro is 2301 being called that evaluates the variable multiple times. 2302 2303 - Also capitalize macro isurlpuntcs => ISURLPUNTCS since it evaluates 2304 a variable multiple times. 2305 2306 This is a follow-up to 291d225a which changed Curl_isunreserved into an 2307 alias macro for ISUNRESERVED. The problem is the former is not easily 2308 identified as a macro by the caller, which could lead to a bug. 2309 2310 For example, ISUNRESERVED(*foo++) is easily identifiable as wrong but 2311 Curl_isunreserved(*foo++) is not even though they both are the same. 2312 2313 Closes https://github.com/curl/curl/pull/11846 2314 2315Dan Fandrich (13 Sep 2023) 2316 2317- tests: increase the default server logs lock timeout 2318 2319 This timeout is used to wait for the server to finish writing its logs 2320 before checking them against the expected values. An overloaded machine 2321 could take more than the two seconds previously allocated, so increase 2322 the timeout to 5 seconds. 2323 2324 Ref: #11328 2325 Closes #11834 2326 2327- tests: increase TEST_HANG_TIMEOUT in two tests 2328 2329 These tests had a 5 second timeout compared to 60 seconds for all other 2330 tests. Make these consistent with the others for more reliability on 2331 heavily-loaded machines. 2332 2333 Ref: #11328 2334 2335- test1056: disable on Windows 2336 2337 This test relies on the IPv6 scope field being ignored when connecting to 2338 ipv6-localhost (i.e. [::1%259999] is treated as [::1]). Maybe this is a bit 2339 dodgy, but it works on all our test platforms except Windows. This 2340 test was disabled manually on all Windows CI builds already, so instead 2341 add an incompatible feature and precheck so it's skipped on Windows 2342 everywhere automatically. 2343 2344- test587: add a slight delay after test 2345 2346 This test is designed to connect to the server, then immediately send a 2347 few bytes and disconnect. In some situations, such as on a loaded 2348 server, this doesn't give the server enough time to write its lock file 2349 before its existence is checked. The test harness then fails to find the 2350 server's input log file (because it hasn't been written yet) and fails 2351 the test. By adding a short delay after the test, the HTTP server has 2352 enough time to write its lock file which gives itself more time to write 2353 its remaining files. 2354 2355 Ref: #11328 2356 2357- tests: stop overriding the lock timeout 2358 2359 These tests reduce the server lock wait timeout which can increase 2360 flakiness on loaded machines. Since this is merely an optimization, 2361 eliminate them in favour of reliability. 2362 2363 Ref: #11328 2364 2365- tests: add some --expect100-timeout to reduce timing dependencies 2366 2367 These tests can fail when the test machine is so slow that the test HTTP 2368 server didn't get a chance to complete before the client's one second 2369 100-continue timeout triggered. Increase that 1 second to 999 seconds so 2370 this situation doesn't happen. 2371 2372 Ref: #11328 2373 2374- test661: return from test early in case of curl error 2375 2376- tests: add the timing-dependent keyword on several tests 2377 2378 These are ones likely to fail on heavily-loaded machines that alter the 2379 normal test timing. Most of these tests already had the flaky keyword 2380 since this condition makes them more likely to fail on CI. 2381 2382- test1592: greatly increase the maximum test timeout 2383 2384 It was too short to be reliable on heavily loaded CI machines, and 2385 as a fail-safe only, it didn't need to be short. 2386 2387 Ref: #11328 2388 2389- test: minor test cleanups 2390 2391 Remove an obsolete block of code in tests 2032 & 576. 2392 Add a comment in test 1474. 2393 2394- tests: quadruple the %FTPTIME2 and %FTPTIME3 timeouts 2395 2396 This gives more of a margin for error when running on overloaded CI 2397 servers. 2398 2399 Ref: #11328 2400 2401- tests: improve SLOWDOWN test reliability by reducing sent data 2402 2403 These tests are run in SLOWDOWN mode which adds a 10 msec delay after 2404 each character output, which means it takes at least 1.6 seconds (and 2405 320 kernel calls) just to get through the long welcome banner. On an 2406 overloaded system, this can end up taking much more than 1.6 seconds, 2407 and even more than the 7 or 16 second curl timeout that the tests rely 2408 on, causing them to fail. Reducing the size of the welcome banner drops 2409 the total number of characters sent before the transfer starts by more 2410 than half, which reduces the opportunity for test-breaking slowdowns by 2411 the same amount. 2412 2413 Ref: #11328 2414 2415- test650: fix an end tag typo 2416 2417Jay Satiro (13 Sep 2023) 2418 2419- tool_cb_wrt: fix debug assertion 2420 2421 - Fix off-by-one out-of-bounds array index in Windows debug assertion. 2422 2423 Bug: https://github.com/curl/curl/commit/af3f4e41#r127212213 2424 Reported-by: Gisle Vanem 2425 2426Daniel Stenberg (13 Sep 2023) 2427 2428- ctype: add ISUNRESERVED() 2429 2430 ... and make Curl_isunreserved() use that macro instead of providing a 2431 separate funtion for the purpose. 2432 2433 Closes #11840 2434 2435Version 8.3.0 (13 Sep 2023) 2436 2437Daniel Stenberg (13 Sep 2023) 2438 2439- RELEASE-NOTES: syn ced 2440 2441 curl 8.3.0 release 2442 2443- THANKS: contributors from 8.3.0 2444 2445Thorsten Klein (12 Sep 2023) 2446 2447- cmake: set SIZEOF_LONG_LONG in curl_config.h 2448 2449 in order to support 32bit builds regarding wolfssl CTC_SETTINGS 2450 2451 Closes #11839 2452 2453Jay Satiro (12 Sep 2023) 2454 2455- curl_ngtcp2: fix error message 2456 2457- http_aws_sigv4: handle no-value user header entries 2458 2459 - Handle user headers in format 'name:' and 'name;' with no value. 2460 2461 The former is used when the user wants to remove an internal libcurl 2462 header and the latter is used when the user actually wants to send a 2463 no-value header in the format 'name:' (note the semi-colon is converted 2464 by libcurl to a colon). 2465 2466 Prior to this change the AWS header import code did not special case 2467 either of those and the generated AWS SignedHeaders would be incorrect. 2468 2469 Reported-by: apparentorder@users.noreply.github.com 2470 2471 Ref: https://curl.se/docs/manpage.html#-H 2472 2473 Fixes https://github.com/curl/curl/issues/11664 2474 Closes https://github.com/curl/curl/pull/11668 2475 2476Dan Fandrich (11 Sep 2023) 2477 2478- CI: run pytest with the -v option 2479 2480 This lists of the test cases being run so it can be tracked over time. 2481 2482 Closes #11824 2483 2484Daniel Stenberg (11 Sep 2023) 2485 2486- HTTP3: the msquic backend is not functional 2487 2488 I ask that we do not submit bugs for this backend just yet as we know it 2489 does not fully work. 2490 2491 Closes #11831 2492 Closes #11819 2493 2494- aws_sigv4: the query canon code miscounted URL encoded input 2495 2496 Added some extra ampersands to test 439 to verify "blank" query parts 2497 2498 Follow-up to fc76a24c53b08cdf 2499 2500 Closes #11829 2501 2502vvb2060 (11 Sep 2023) 2503 2504- quic: don't set SNI if hostname is an IP address 2505 2506 We already do this for TLS connections. 2507 2508 RFC 6066 says: Literal IPv4 and IPv6 addresses are not permitted in 2509 "HostName". 2510 2511 Ref: https://www.rfc-editor.org/rfc/rfc6066#section-3 2512 2513 Fixes https://github.com/curl/curl/issues/11827 2514 Closes https://github.com/curl/curl/pull/11828 2515 2516Daniel Stenberg (10 Sep 2023) 2517 2518- RELEASE-NOTES: synced 2519 2520Benoit Pierre (10 Sep 2023) 2521 2522- configure: fix `HAVE_TIME_T_UNSIGNED` check 2523 2524 The syntax was incorrect (need a proper main body), and the test 2525 condition was wrong (resulting in a signed `time_t` detected as 2526 unsigned). 2527 2528 Closes #11825 2529 2530Daniel Stenberg (9 Sep 2023) 2531 2532- THANKS-filter: pszlazak on github 2533 2534pszlazak (9 Sep 2023) 2535 2536- include.d: explain headers not printed with --fail before 7.75.0 2537 2538 Prior to 7.75.0 response headers were not printed if -f/--fail was used 2539 and an error was reported by server. This was fixed in ab525c0 2540 (precedes 7.75.0). 2541 2542 Closes #11822 2543 2544Daniel Stenberg (8 Sep 2023) 2545 2546- http_aws_sigv4: skip the op if the query pair is zero bytes 2547 2548 Follow-up to fc76a24c53b08cdf 2549 2550 Spotted by OSS-Fuzz 2551 2552 Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62175 2553 Closes #11823 2554 2555- cmdline-docs: use present tense, not future 2556 2557 + some smaller cleanups 2558 2559 Closes #11821 2560 2561- cmdline-docs: make sure to phrase it as "added in ...." 2562 2563 References to things that were added or changed in a specific version 2564 should be specified as "(added in [version]) for two reasons: 2565 2566 1 - consistency 2567 2568 2 - to allow gen.pl to strip them out if deemed referring to too old 2569 versions 2570 2571 Closes #11821 2572 2573Jay Satiro (8 Sep 2023) 2574 2575- docs: mark --ssl-revoke-best-effort as Schannel specific 2576 2577 Closes https://github.com/curl/curl/pull/11760 2578 2579Nathan Moinvaziri (8 Sep 2023) 2580 2581- schannel: fix ordering of cert chain info 2582 2583 - Use CERT_CONTEXT's pbCertEncoded to determine chain order. 2584 2585 CERT_CONTEXT from SECPKG_ATTR_REMOTE_CERT_CONTEXT contains 2586 end-entity/server certificate in pbCertEncoded. We can use this pointer 2587 to determine the order of certificates when enumerating hCertStore using 2588 CertEnumCertificatesInStore. 2589 2590 This change is to help ensure that the ordering of the certificate chain 2591 requested by the user via CURLINFO_CERTINFO has the same ordering on all 2592 versions of Windows. 2593 2594 Prior to this change Schannel certificate order was reversed in 8986df80 2595 but that was later reverted in f540a39b when it was discovered that 2596 Windows 11 22H2 does the reversal on its own. 2597 2598 Ref: https://github.com/curl/curl/issues/9706 2599 2600 Closes https://github.com/curl/curl/pull/11632 2601 2602Chris Talbot (8 Sep 2023) 2603 2604- digest: Use hostname to generate spn instead of realm 2605 2606 In https://www.rfc-editor.org/rfc/rfc2831#section-2.1.2 2607 2608 digest-uri-value should be serv-type "/" host , where host is: 2609 2610 The DNS host name or IP address for the service requested. The 2611 DNS host name must be the fully-qualified canonical name of the 2612 host. The DNS host name is the preferred form; see notes on server 2613 processing of the digest-uri. 2614 2615 Realm may not be the host, so we must specify the host explicitly. 2616 2617 Note this change only affects the non-SSPI digest code. The digest code 2618 used by SSPI builds already uses the hostname to generate the spn. 2619 2620 Ref: https://github.com/curl/curl/issues/11369 2621 2622 Closes https://github.com/curl/curl/pull/11395 2623 2624Daniel Stenberg (7 Sep 2023) 2625 2626- docs: remove use of the word 'very' 2627 2628 It is mostly superfluous. proselint would complain. 2629 2630 Closes #11818 2631 2632- curl_multi_remove_handle.3: clarify what happens with connection 2633 2634 Closes #11817 2635 2636- RELEASE-NOTES: synced 2637 2638- test439: verify query canonization for aws-sigv4 2639 2640- tool_operate: make aws-sigv4 not require TLS to be used 2641 2642 Maybe not used too often, but we want it for testing and it should work. 2643 2644- http_aws_sigv4: canonicalize the query 2645 2646 Percent encoding needs to be done using uppercase, and most 2647 non-alphanumerical must be percent-encoded. 2648 2649 Fixes #11794 2650 Reported-by: John Walker 2651 Closes #11806 2652 2653Wyatt O'Day (7 Sep 2023) 2654 2655- lib: add ability to disable auths individually 2656 2657 Both with configure and cmake 2658 2659 Closes #11490 2660 2661Stefan Eissing (7 Sep 2023) 2662 2663- ngtcp2: fix handling of large requests 2664 2665 - requests >64K are send in parts to the filter 2666 - fix parsing of the request to assemble it correctly 2667 from several sends 2668 - open a QUIC stream only when the complete request has 2669 been collected 2670 2671 Closes #11815 2672 2673- openssl: when CURLOPT_SSL_CTX_FUNCTION is registered, init x509 store before 2674 2675 - we delay loading the x509 store to shorten the handshake time. 2676 However an application callback installed via CURLOPT_SSL_CTX_FUNCTION 2677 may need to have the store loaded and try to manipulate it. 2678 - load the x509 store before invoking the app callback 2679 2680 Fixes #11800 2681 Reported-by: guoxinvmware on github 2682 Cloes #11805 2683 2684Daniel Stenberg (7 Sep 2023) 2685 2686- krb5: fix "implicit conversion loses integer precision" warnings 2687 2688 conversions to/from enum and unsigned chars 2689 2690 Closes #11814 2691 2692Stefan Eissing (7 Sep 2023) 2693 2694- pytest: improvements 2695 2696 - set CURL_CI for pytest runs in CI environments 2697 - exclude timing sensitive tests from CI runs 2698 - for failed results, list only the log and stat of 2699 the failed transfer 2700 2701 - fix type in http.c comment 2702 2703 Closes #11812 2704 2705- CI: move on to ngtcp2 v0.19.1 2706 2707 Closes #11809 2708 2709Dan Fandrich (5 Sep 2023) 2710 2711- CI: run Circle macOS builds on x86 for now 2712 2713 The ARM machines aren't ready for us and requesting them now causes 2714 warnings e-mails to be sent to some PR pushers. 2715 2716 Ref: #11771 2717 2718Viktor Szakats (5 Sep 2023) 2719 2720- http3: adjust cast for ngtcp2 v0.19.0 2721 2722 ngtcp2 v0.19.0 made size of `ecn` member of `ngtcp2_pkt_info` 2723 an `uint8_t` (was: `uint32_t`). Adjust our local cast accordingly. 2724 2725 Fixes: 2726 ``` 2727 ./curl/lib/vquic/curl_ngtcp2.c:1912:12: warning: implicit conversion loses in 2728 teger precision: 'uint32_t' (aka 'unsigned int') to 'uint8_t' (aka 'unsigned 2729 char') [-Wimplicit-int-conversion] 2730 pi.ecn = (uint32_t)ecn; 2731 ~ ^~~~~~~~~~~~~ 2732 ``` 2733 2734 Also bump ngtcp2, nghttp3 and nghttp2 to their latest versions in our 2735 docs and CI. 2736 2737 Ref: https://github.com/ngtcp2/ngtcp2/commit/80447281bbc94af53f8aa7a4cfc19175 2738 782894a3 2739 Ref: https://github.com/ngtcp2/ngtcp2/pull/877 2740 Closes #11798 2741 2742Stefan Eissing (5 Sep 2023) 2743 2744- http: fix sending of large requests 2745 2746 - refs #11342 where errors with git https interactions 2747 were observed 2748 - problem was caused by 1st sends of size larger than 64KB 2749 which resulted in later retries of 64KB only 2750 - limit sending of 1st block to 64KB 2751 - adjust h2/h3 filters to cope with parsing the HTTP/1.1 2752 formatted request in chunks 2753 2754 - introducing Curl_nwrite() as companion to Curl_write() 2755 for the many cases where the sockindex is already known 2756 2757 Fixes #11342 (again) 2758 Closes #11803 2759 2760- pytest: fix check for slow_network skips to only apply when intended 2761 2762 Closes #11801 2763 2764Daniel Stenberg (5 Sep 2023) 2765 2766- curl_url_get/set.3: add missing semicolon in SYNOPSIS 2767 2768- CURLOPT_URL.3: explain curl_url_set() uses the same parser 2769 2770- CURLOPT_URL.3: add two URL API calls in the see-also section 2771 2772Dan Fandrich (4 Sep 2023) 2773 2774- CI: add a 32-bit i686 Linux build 2775 2776 This is done by cross-compiling under regular x86_64 Linux. Since the 2777 kernel offers backwards compatibility, the binaries can be tested as 2778 normal. 2779 2780 Closes #11799 2781 2782- tests: fix a type warning on 32-bit x86 2783 2784Viktor Szakats (4 Sep 2023) 2785 2786- tests: delete stray `.orig` file 2787 2788 Follow-up to 331b89a319d0067fa1e6441719307cfef9c7960f 2789 Closes #11797 2790 2791Daniel Stenberg (4 Sep 2023) 2792 2793- RELEASE-NOTES: synced 2794 2795Viktor Szakats (4 Sep 2023) 2796 2797- lib: silence compiler warning in inet_ntop6 2798 2799 ``` 2800 ./curl/lib/inet_ntop.c:121:21: warning: possible misuse of comma operator her 2801 e [-Wcomma] 2802 cur.base = i, cur.len = 1; 2803 ^ 2804 ./curl/lib/inet_ntop.c:121:9: note: cast expression to void to silence warnin 2805 g 2806 cur.base = i, cur.len = 1; 2807 ^~~~~~~~~~~~ 2808 (void)( ) 2809 ``` 2810 2811 Closes #11790 2812 2813Daniel Stenberg (4 Sep 2023) 2814 2815- transfer: also stop the sending on closed connection 2816 2817 Previously this cleared the receiving bit only but in some cases it is 2818 also still sending (like a request-body) when disconnected and neither 2819 direction can continue then. 2820 2821 Fixes #11769 2822 Reported-by: Oleg Jukovec 2823 Closes #11795 2824 2825John Bampton (4 Sep 2023) 2826 2827- docs: change `sub-domain` to `subdomain` 2828 2829 https://en.wikipedia.org/wiki/Subdomain 2830 2831 Closes #11793 2832 2833Stefan Eissing (4 Sep 2023) 2834 2835- multi: more efficient pollfd count for poll 2836 2837 - do not use separate pollfds for sockets that have POLLIN+POLLOUT 2838 2839 Closes #11792 2840 2841- http2: polish things around POST 2842 2843 - added test cases for various code paths 2844 - fixed handling of blocked write when stream had 2845 been closed inbetween attempts 2846 - re-enabled DEBUGASSERT on send with smaller data size 2847 2848 - in debug builds, environment variables can be set to simulate a slow 2849 network when sending data. cf-socket.c and vquic.c support 2850 * CURL_DBG_SOCK_WBLOCK: percentage of send() calls that should be 2851 answered with a EAGAIN. TCP/UNIX sockets. 2852 This is chosen randomly. 2853 * CURL_DBG_SOCK_WPARTIAL: percentage of data that shall be written 2854 to the network. TCP/UNIX sockets. 2855 Example: 80 means a send with 1000 bytes would only send 800 2856 This is applied to every send. 2857 * CURL_DBG_QUIC_WBLOCK: percentage of send() calls that should be 2858 answered with EAGAIN. QUIC only. 2859 This is chosen randomly. 2860 2861 Closes #11756 2862 2863Daniel Stenberg (4 Sep 2023) 2864 2865- docs: add curl_global_trace to some SEE ALSO sections 2866 2867 Closes #11791 2868 2869- os400: fix checksrc nits 2870 2871 Closes #11789 2872 2873Nicholas Nethercote (3 Sep 2023) 2874 2875- hyper: remove `hyptransfer->endtask` 2876 2877 `Curl_hyper_stream` needs to distinguish between two kinds of 2878 `HYPER_TASK_EMPTY` tasks: (a) the `foreach` tasks it creates itself, and 2879 (b) background tasks that hyper produces. It does this by recording the 2880 address of any `foreach` task in `hyptransfer->endtask` before pushing 2881 it into the executor, and then comparing that against the address of 2882 tasks later polled out of the executor. 2883 2884 This works right now, but there is no guarantee from hyper that the 2885 addresses are stable. `hyper_executor_push` says "The executor takes 2886 ownership of the task, which should not be accessed again unless 2887 returned back to the user with `hyper_executor_poll`". That wording is a 2888 bit ambiguous but with my Rust programmer's hat on I read it as meaning 2889 the task returned with `hyper_executor_poll` may be conceptually the 2890 same as a task that was pushed, but that there are no other guarantees 2891 and comparing addresses is a bad idea. 2892 2893 This commit instead uses `hyper_task_set_userdata` to mark the `foreach` 2894 task with a `USERDATA_RESP_BODY` value which can then be checked for, 2895 removing the need for `hyptransfer->endtask`. This makes the code look 2896 more like that hyper C API examples, which use userdata for every task 2897 and never look at task addresses. 2898 2899 Closes #11779 2900 2901Dave Cottlehuber (3 Sep 2023) 2902 2903- ws: fix spelling mistakes in examples and tests 2904 2905 Closes #11784 2906 2907Daniel Stenberg (3 Sep 2023) 2908 2909- tool_filetime: make -z work with file dates before 1970 2910 2911 Fixes #11785 2912 Reported-by: Harry Sintonen 2913 Closes #11786 2914 2915Dan Fandrich (1 Sep 2023) 2916 2917- build: fix portability of mancheck and checksrc targets 2918 2919 At least FreeBSD preserves cwd across makefile lines, so rules 2920 consisting of more than one "cd X; do_something" must be explicitly run 2921 in a subshell to avoid this. This problem caused the Cirrus FreeBSD 2922 build to fail when parallel make jobs were enabled. 2923 2924- CI: adjust labeler match patterns for new & obsolete files 2925 2926- configure: trust pkg-config when it's used for zlib 2927 2928 The library flags retrieved from pkg-config were later thrown out and 2929 harded-coded, which negates the whole reason to use pkg-config. 2930 Also, previously, the assumption was made that --libs-only-l and 2931 --libs-only-L are the full decomposition of --libs, which is untrue and 2932 would not allow linking against a static zlib. The new approach is 2933 better in that it uses --libs, although only if --libs-only-l returns 2934 nothing. 2935 2936 Bug: https://curl.se/mail/lib-2023-08/0081.html 2937 Reported-by: Randall 2938 Closes #11778 2939 2940Stefan Eissing (1 Sep 2023) 2941 2942- CI/ngtcp2: clear wolfssl for when cache is ignored 2943 2944 Closes #11783 2945 2946Daniel Stenberg (1 Sep 2023) 2947 2948- RELEASE-NOTES: synced 2949 2950Nicholas Nethercote (1 Sep 2023) 2951 2952- hyper: fix a progress upload counter bug 2953 2954 `Curl_pgrsSetUploadCounter` should be a passed a total count, not an 2955 increment. 2956 2957 This changes the failing diff for test 579 with hyper from this: 2958 ``` 2959 Progress callback called with UL 0 out of 0[LF] 2960 -Progress callback called with UL 8 out of 0[LF] 2961 -Progress callback called with UL 16 out of 0[LF] 2962 -Progress callback called with UL 26 out of 0[LF] 2963 -Progress callback called with UL 61 out of 0[LF] 2964 -Progress callback called with UL 66 out of 0[LF] 2965 +Progress callback called with UL 29 out of 0[LF] 2966 ``` 2967 to this: 2968 ``` 2969 Progress callback called with UL 0 out of 0[LF] 2970 -Progress callback called with UL 8 out of 0[LF] 2971 -Progress callback called with UL 16 out of 0[LF] 2972 -Progress callback called with UL 26 out of 0[LF] 2973 -Progress callback called with UL 61 out of 0[LF] 2974 -Progress callback called with UL 66 out of 0[LF] 2975 +Progress callback called with UL 40 out of 0[LF] 2976 ``` 2977 Presumably a step in the right direction. 2978 2979 Closes #11780 2980 2981Daniel Stenberg (1 Sep 2023) 2982 2983- awssiv4: avoid freeing the date pointer on error 2984 2985 Since it was not allocated, don't free it even if it was wrong syntax 2986 2987 Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61908 2988 2989 Follow-up to b137634ba3adb 2990 2991 Closes #11782 2992 2993Stefan Eissing (1 Sep 2023) 2994 2995- CI: ngtcp2-linux: use separate caches for tls libraries 2996 2997 allow ever changing master for wolfssl 2998 2999 Closes #11766 3000 3001- replace `master` as wolfssl-version with recent commit 3002 3003- wolfssl, use master again in CI 3004 3005 - with the shared session update fix landed in master, it 3006 is time to use that in our CI again 3007 3008Nicholas Nethercote (31 Aug 2023) 3009 3010- tests: fix formatting errors in `FILEFORMAT.md`. 3011 3012 Without the surrounding backticks, these tags get swallowed when the 3013 markdown is rendered. 3014 3015 Closes #11777 3016 3017Viktor Szakats (31 Aug 2023) 3018 3019- cmake: add support for `CURL_DEFAULT_SSL_BACKEND` 3020 3021 Allow overriding the default TLS backend via a CMake setting. 3022 3023 E.g.: 3024 `cmake [...] -DCURL_DEFAULT_SSL_BACKEND=mbedtls` 3025 3026 Accepted values: bearssl, gnutls, mbedtls, openssl, rustls, 3027 schannel, secure-transport, wolfssl 3028 3029 The passed string is baked into the curl/libcurl binaries. 3030 The value is case-insensitive. 3031 3032 We added a similar option to autotools in 2017 via 3033 c7170e20d0a18ec8a514b4daa53bcdbb4dcb3a05. 3034 3035 TODO: Convert to lowercase to improve reproducibility. 3036 3037 Closes #11774 3038 3039- sectransp: fix compiler warnings 3040 3041 https://github.com/curl/curl-for-win/actions/runs/6037489221/job/16381860220# 3042 step:3:11046 3043 ``` 3044 /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:2435:1 3045 4: warning: unused variable 'success' [-Wunused-variable] 3046 OSStatus success; 3047 ^ 3048 /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:3300:4 3049 4: warning: unused parameter 'sha256len' [-Wunused-parameter] 3050 size_t sha256len) 3051 ^ 3052 ``` 3053 3054 Closes #11773 3055 3056- tidy-up: mostly whitespace nits 3057 3058 - delete completed TODO from `./CMakeLists.txt`. 3059 - convert a C++ comment to C89 in `./CMake/CurlTests.c`. 3060 - delete duplicate EOLs from EOF. 3061 - add missing EOL at EOF. 3062 - delete whitespace at EOL (except from expected test results). 3063 - convert tabs to spaces. 3064 - convert CRLF EOLs to LF in GHA yaml. 3065 - text casing fixes in `./CMakeLists.txt`. 3066 - fix a codespell typo in `packages/OS400/initscript.sh`. 3067 3068 Closes #11772 3069 3070Dan Fandrich (31 Aug 2023) 3071 3072- CI: remove Windows builds from Cirrus, without replacement 3073 3074 If we don't do this, all coverage on Cirrus will cease in a few days. By 3075 removing the Windows builds, the FreeBSD one should still continue 3076 as before. The Windows builds will need be moved to another service to 3077 maintain test coverage. 3078 3079 Closes #11771 3080 3081- CI: switch macOS ARM build from Cirrus to Circle CI 3082 3083 Cirrus is drastically reducing their free tier on Sept. 1, so they will 3084 no longer perform all these builds for us. All but one build has been 3085 moved, with the LibreSSL one being dropped because of linking problems 3086 on Circle. 3087 3088 One important note about this change is that Circle CI is currently 3089 directing all these builds to x86_64 hardware, despite them requesting 3090 ARM. This is because ARM nodes are scheduled to be available on the 3091 free tier only in December. This reduces our architectural diversity 3092 until then but it should automatically come back once those machines are 3093 enabled. 3094 3095- CI: use the right variable for BSD make 3096 3097 BSD uses MAKEFLAGS instead of MAKE_FLAGS so it wasn't doing parallel 3098 builds before. 3099 3100- CI: drop the FreeBSD 12.X build 3101 3102 Cirrus' new free tier won't let us have many builds, so drop the 3103 nonessential ones. The FreeBSD 13.X build will still give us the most 3104 relevant FreeBSD coverage. 3105 3106- CI: move the Alpine build from Cirrus to GHA 3107 3108 Cirrus is reducing their free tier to next to nothing, so we must move 3109 builds elsewhere. 3110 3111Stefan Eissing (30 Aug 2023) 3112 3113- test_07_upload.py: fix test_07_34 curl args 3114 3115 - Pass correct filename to --data-binary. 3116 3117 Prior to this change --data-binary was passed an incorrect filename due 3118 to a missing separator in the arguments list. Since aacbeae7 curl will 3119 error on incorrect filenames for POST. 3120 3121 Fixes https://github.com/curl/curl/issues/11761 3122 Closes https://github.com/curl/curl/pull/11763 3123 3124Nicholas Nethercote (30 Aug 2023) 3125 3126- tests: document which tests fail due to hyper's lack of trailer support. 3127 3128 Closes #11762 3129 3130- docs: removing "pausing transfers" from HYPER.md. 3131 3132 It's a reference to #8600, which was fixed by #9070. 3133 3134 Closes #11764 3135 3136Patrick Monnerat (30 Aug 2023) 3137 3138- os400: handle CURL_TEMP_PRINTF() while building bind source 3139 3140 Closes #11547 3141 3142- os400: build test servers 3143 3144 Also fix a non-compliant main prototype in disabled.c. 3145 3146 Closes #11547 3147 3148- tests: fix compilation error for os400 3149 3150 OS400 uses BSD 4.3 setsockopt() prototype by default: this does not 3151 define parameter as const, resulting in an error if actual parameter is 3152 const. Remove the const keyword from the actual parameter cast: this 3153 works in all conditions, even if the formal parameter uses it. 3154 3155 Closes #11547 3156 3157- os400: make programs and command name configurable 3158 3159 Closes #11547 3160 3161- os400: move build configuration parameters to a separate script 3162 3163 They can then easily be overriden in a script named "config400.override" 3164 that is not part of the distribution. 3165 3166 Closes #11547 3167 3168- os400: implement CLI tool 3169 3170 This is provided as a QADRT (ascii) program, a link to it in the IFS and 3171 a minimal CL command. 3172 3173 Closes #11547 3174 3175Matthias Gatto (30 Aug 2023) 3176 3177- lib: fix aws-sigv4 having date header twice in some cases 3178 3179 When the user was providing the header X-XXX-Date, the header was 3180 re-added during signature computation, and we had it twice in the 3181 request. 3182 3183 Reported-by: apparentorder@users.noreply.github.com 3184 3185 Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com> 3186 3187 Fixes: https://github.com/curl/curl/issues/11738 3188 Closes: https://github.com/curl/curl/pull/11754 3189 3190Jay Satiro (30 Aug 2023) 3191 3192- multi: remove 'processing: <url>' debug message 3193 3194 - Remove debug message added by e024d566. 3195 3196 Closes https://github.com/curl/curl/pull/11759 3197 3198- ftp: fix temp write of ipv6 address 3199 3200 - During the check to differentiate between a port and IPv6 address 3201 without brackets, write the binary IPv6 address to an in6_addr. 3202 3203 Prior to this change the binary IPv6 address was erroneously written to 3204 a sockaddr_in6 'sa6' when it should have been written to its in6_addr 3205 member 'sin6_addr'. There's no fallout because no members of 'sa6' are 3206 accessed before it is later overwritten. 3207 3208 Closes https://github.com/curl/curl/pull/11747 3209 3210- tool: change some fopen failures from warnings to errors 3211 3212 - Error on missing input file for --data, --data-binary, 3213 --data-urlencode, --header, --variable, --write-out. 3214 3215 Prior to this change if a user of the curl tool specified an input file 3216 for one of the above options and that file could not be opened then it 3217 would be treated as zero length data instead of an error. For example, a 3218 POST using `--data @filenametypo` would cause a zero length POST which 3219 is probably not what the user intended. 3220 3221 Closes https://github.com/curl/curl/pull/11677 3222 3223- hostip: fix typo 3224 3225Davide Masserut (29 Aug 2023) 3226 3227- tool: avoid including leading spaces in the Location hyperlink 3228 3229 Co-authored-by: Dan Fandrich <dan@coneharvesters.com> 3230 3231 Closes #11735 3232 3233Daniel Stenberg (29 Aug 2023) 3234 3235- SECURITY-PROCESS.md: not a sec issue: Tricking user to run a cmdline 3236 3237 Closes #11757 3238 3239- connect: stop halving the remaining timeout when less than 600 ms left 3240 3241 When curl wants to connect to a host, it always has a TIMEOUT. The 3242 maximum time it is allowed to spend until a connect is confirmed. 3243 3244 curl will try to connect to each of the IP adresses returned for the 3245 host. Two loops, one for each IP family. 3246 3247 During the connect loop, while curl has more than one IP address left to 3248 try within a single address family, curl has traditionally allowed (time 3249 left/2) for *this* connect attempt. This, to not get stuck on the 3250 initial addresses in case the timeout but still allow later addresses to 3251 get attempted. 3252 3253 This has the downside that when users set a very short timeout and the 3254 host has a large number of IP addresses, the effective result might be 3255 that every attempt gets a little too short time. 3256 3257 This change stop doing the divided-by-two if the total time left is 3258 below a threshold. This threshold is 600 milliseconds. 3259 3260 Closes #11693 3261 3262- asyn-ares: reduce timeout to 2000ms 3263 3264 When UDP packets get lost this makes for slightly faster retries. This 3265 lower timeout is used by @c-ares itself by default starting next 3266 release. 3267 3268 Closes #11753 3269 3270John Bampton (29 Aug 2023) 3271 3272- misc: remove duplicate words 3273 3274 Closes #11740 3275 3276Daniel Stenberg (29 Aug 2023) 3277 3278- RELEASE-NOTES: synced 3279 3280- wolfSSL: avoid the OpenSSL compat API when not needed 3281 3282 ... and instead call wolfSSL functions directly. 3283 3284 Closes #11752 3285 3286Viktor Szakats (28 Aug 2023) 3287 3288- lib: fix null ptr derefs and uninitialized vars (h2/h3) 3289 3290 Fixing compiler warnings with gcc 13.2.0 in unity builds. 3291 3292 Assisted-by: Jay Satiro 3293 Assisted-by: Stefan Eissing 3294 Closes #11739 3295 3296Jay Satiro (28 Aug 2023) 3297 3298- secureserver.pl: fix stunnel version parsing 3299 3300 - Allow the stunnel minor-version version part to be zero. 3301 3302 Prior to this change with the stunnel version scheme of <major>.<minor> 3303 if either part was 0 then version parsing would fail, causing 3304 secureserver.pl to fail with error "No stunnel", causing tests that use 3305 the SSL protocol to be skipped. As a practical matter this bug can only 3306 be caused by a minor-version part of 0, since the major-version part is 3307 always greater than 0. 3308 3309 Closes https://github.com/curl/curl/pull/11722 3310 3311- secureserver.pl: fix stunnel path quoting 3312 3313 - Store the stunnel path in the private variable $stunnel unquoted and 3314 instead quote it in the command strings. 3315 3316 Prior to this change the quoted stunnel path was passed to perl's file 3317 operators which cannot handle quoted paths. For example: 3318 3319 $stunnel = "\"/C/Program Files (x86)/stunnel/bin/tstunnel\""; 3320 if(-x $stunnel or -x "$stunnel") 3321 # false even if path exists and is executable 3322 3323 Our other test scripts written in perl, unlike this one, use servers.pm 3324 which has a global $stunnel variable with the path stored unquoted and 3325 therefore those scripts don't have this problem. 3326 3327 Closes https://github.com/curl/curl/pull/11721 3328 3329Daniel Stenberg (28 Aug 2023) 3330 3331- altsvc: accept and parse IPv6 addresses in response headers 3332 3333 Store numerical IPv6 addresses in the alt-svc file with the brackets 3334 present. 3335 3336 Verify with test 437 and 438 3337 3338 Fixes #11737 3339 Reported-by: oliverpool on github 3340 Closes #11743 3341 3342- libtest: use curl_free() to free libcurl allocated data 3343 3344 In several test programs. These mistakes are not detected or a problem 3345 as long as memdebug.h is included, as that provides the debug wrappers 3346 for all memory functions in the same style libcurl internals do it, 3347 which makes curl_free and free effectively the same call. 3348 3349 Reported-by: Nicholas Nethercote 3350 Closes #11746 3351 3352Jay Satiro (28 Aug 2023) 3353 3354- disable.d: explain --disable not implemented prior to 7.50.0 3355 3356 Option -q/--disable was added in 5.0 but only -q was actually 3357 implemented. Later --disable was implemented in e200034 (precedes 3358 7.49.0), but incorrectly, and fixed in 6dbc23c (precedes 7.50.0). 3359 3360 Reported-by: pszlazak@users.noreply.github.com 3361 3362 Fixes https://github.com/curl/curl/issues/11710 3363 Closes #11712 3364 3365Nicholas Nethercote (28 Aug 2023) 3366 3367- hyper: fix ownership problems 3368 3369 Some of these changes come from comparing `Curl_http` and 3370 `start_CONNECT`, which are similar, and adding things to them that are 3371 present in one and missing in another. 3372 3373 The most important changes: 3374 - In `start_CONNECT`, add a missing `hyper_clientconn_free` call on the 3375 happy path. 3376 - In `start_CONNECT`, add a missing `hyper_request_free` on the error 3377 path. 3378 - In `bodysend`, add a missing `hyper_body_free` on an early-exit path. 3379 - In `bodysend`, remove an unnecessary `hyper_body_free` on a different 3380 error path that would cause a double-free. 3381 https://docs.rs/hyper/latest/hyper/ffi/fn.hyper_request_set_body.html 3382 says of `hyper_request_set_body`: "This takes ownership of the 3383 hyper_body *, you must not use it or free it after setting it on the 3384 request." This is true even if `hyper_request_set_body` returns an 3385 error; I confirmed this by looking at the hyper source code. 3386 3387 Other changes are minor but make things slightly nicer. 3388 3389 Closes #11745 3390 3391Daniel Stenberg (28 Aug 2023) 3392 3393- multi.h: the 'revents' field of curl_waitfd is supported 3394 3395 Since 6d30f8ebed34e7276 3396 3397 Reported-by: Nicolás Ojeda Bär 3398 Ref: #11748 3399 Closes #11749 3400 3401Gerome Fournier (27 Aug 2023) 3402 3403- tool_paramhlp: improve str2num(): avoid unnecessary call to strlen() 3404 3405 Closes #11742 3406 3407Daniel Stenberg (27 Aug 2023) 3408 3409- docs: mention critical files in same directories as curl saves 3410 3411 ... cannot be fully protected. Don't do it. 3412 3413 Co-authored-by: Jay Satiro 3414 Reported-by: Harry Sintonen 3415 Fixes #11530 3416 Closes #11701 3417 3418John Hawthorn (26 Aug 2023) 3419 3420- OpenSSL: clear error queue after SSL_shutdown 3421 3422 We've seen errors left in the OpenSSL error queue (specifically, 3423 "shutdown while in init") by adding some logging it revealed that the 3424 source was this file. 3425 3426 Since we call SSL_read and SSL_shutdown here, but don't check the return 3427 code for an error, we should clear the OpenSSL error queue in case one 3428 was raised. 3429 3430 This didn't affect curl because we call ERR_clear_error before every 3431 write operation (a0dd9df9ab35528eb9eb669e741a5df4b1fb833c), but when 3432 libcurl is used in a process with other OpenSSL users, they may detect 3433 an OpenSSL error pushed by libcurl's SSL_shutdown as if it was their 3434 own. 3435 3436 Co-authored-by: Satana de Sant'Ana <satana@skylittlesystem.org> 3437 3438 Closes #11736 3439 3440Alexander Kanavin (25 Aug 2023) 3441 3442- tests: update cookie expiry dates to far in the future 3443 3444 This allows testing Y2038 with system time set to after that, so that 3445 actual Y2038 issues can be exposed, and not masked by expiry errors. 3446 3447 Fixes #11576 3448 Closes #11610 3449 3450John Bampton (25 Aug 2023) 3451 3452- misc: fix spelling 3453 3454 Closes #11733 3455 3456Daniel Stenberg (25 Aug 2023) 3457 3458- cmdline-opts/page-header: clarify stronger that !opt == URL 3459 3460 Everything provided on the command line that is not an option (or an 3461 argument to an option) is treated as a URL. 3462 3463 Closes #11734 3464 3465- tests/runner: fix %else handling 3466 3467 Getting the show state proper for %else and %endif did not properly work 3468 in nested cases. 3469 3470 Follow-up to 3d089c41ea9 3471 3472 Closes #11731 3473 3474Nicholas Nethercote (25 Aug 2023) 3475 3476- docs: Remove mention of #10803 from `KNOWN_BUGS`. 3477 3478 Because the leaks have been fixed. 3479 3480- c-hyper: fix another memory leak in `Curl_http`. 3481 3482 There is a `hyper_clientconn_free` call on the happy path, but not one 3483 on the error path. This commit adds one. 3484 3485 Fixes the second memory leak reported by Valgrind in #10803. 3486 3487 Fixes #10803 3488 Closes #11729 3489 3490- c-hyper: fix a memory leak in `Curl_http`. 3491 3492 A request created with `hyper_request_new` must be consumed by either 3493 `hyper_clientconn_send` or `hyper_request_free`. 3494 3495 This is not terrifically clear from the hyper docs -- 3496 `hyper_request_free` is documented only with "Free an HTTP request if 3497 not going to send it on a client" -- but a perusal of the hyper code 3498 confirms it. 3499 3500 This commit adds a `hyper_request_free` to the `error:` path in 3501 `Curl_http` so that the request is consumed when an error occurs after 3502 the request is created but before it is sent. 3503 3504 Fixes the first memory leak reported by Valgrind in #10803. 3505 3506 Closes #11729 3507 3508Daniel Stenberg (25 Aug 2023) 3509 3510- RELEASE-NOTES: synced 3511 3512John Bampton (25 Aug 2023) 3513 3514- misc: spellfixes 3515 3516 Closes #11730 3517 3518Daniel Stenberg (25 Aug 2023) 3519 3520- tests: add support for nested %if conditions 3521 3522 Provides more flexiblity to test cases. 3523 3524 Also warn and bail out if there is an '%else' or %endif' without a 3525 preceeding '%if'. 3526 3527 Ref: #11610 3528 Closes #11728 3529 3530- time-cond.d: mention what happens on a missing file 3531 3532 Closes #11727 3533 3534Christian Hesse (24 Aug 2023) 3535 3536- docs/cmdline-opts: match the current output 3537 3538 The release date has been added in output, reflect that in documentation. 3539 3540 Closes #11723 3541 3542Daniel Stenberg (24 Aug 2023) 3543 3544- lib: minor comment corrections 3545 3546- docs: rewrite to present tense 3547 3548 ... instead of using future tense. 3549 3550 + numerous cleanups and improvements 3551 + stick to "reuse" not "re-use" 3552 + fewer contractions 3553 3554 Closes #11713 3555 3556- urlapi: setting a blank URL ("") is not an ok URL 3557 3558 Test it in 1560 3559 Fixes #11714 3560 Reported-by: ad0p on github 3561 Closes #11715 3562 3563- spelling: use 'reuse' not 're-use' in code and elsewhere 3564 3565 Unify the spelling as both versions were previously used intermittently 3566 3567 Closes #11717 3568 3569Michael Osipov (23 Aug 2023) 3570 3571- system.h: add CURL_OFF_T definitions on HP-UX with HP aCC 3572 3573 HP-UX on IA64 provides two modes: 32 and 64 bit while 32 bit being the 3574 default one. Use "long long" in 32 bit mode and just "long" in 64 bit 3575 mode. 3576 3577 Closes #11718 3578 3579Dan Fandrich (22 Aug 2023) 3580 3581- tests: don't call HTTP errors OK in test cases 3582 3583 Some HTTP errors codes were accompanied by the text OK, which causes 3584 some cognitive dissonance when reading them. 3585 3586- http: close the connection after a late 417 is received 3587 3588 In this situation, only part of the data has been sent before aborting 3589 so the connection is no longer usable. 3590 3591 Assisted-by: Jay Satiro 3592 Fixes #11678 3593 Closes #11679 3594 3595- runtests: slightly increase the longest log file displayed 3596 3597 The new limit provides enough space for a 64 KiB data block to be logged 3598 in a trace file, plus a few lines at the start and end for context. This 3599 happens to be the amount of data sent at a time in a PUT request. 3600 3601- tests: add delay command to the HTTP server 3602 3603 This adds a delay after client connect. 3604 3605Daniel Stenberg (22 Aug 2023) 3606 3607- cirrus: install everthing with pkg, avoid pip 3608 3609 Assisted-by: Sevan Janiyan 3610 3611 Closes #11711 3612 3613- curl_url*.3: update function descriptions 3614 3615 - expand and clarify several descriptions 3616 - avoid using future tense all over 3617 3618 Closes #11708 3619 3620- RELEASE-NOTES: synced 3621 3622Stefan Eissing (21 Aug 2023) 3623 3624- CI/cirrus: disable python install on FreeBSD 3625 3626 - python cryptography package does not build build FreeBSD 3627 - install just mentions "error" 3628 - this gets the build and the main test suite going again 3629 3630 Closes #11705 3631 3632- test2600: fix flakiness on low cpu 3633 3634 - refs #11355 where failures to to low cpu resources in CI 3635 are reported 3636 - vastly extend CURLOPT_CONNECTTIMEOUT_MS and max durations 3637 to test cases 3638 - trigger Curl_expire() in test filter to allow re-checks before 3639 the usual 1second interval 3640 3641 Closes #11690 3642 3643Maksim Sciepanienka (20 Aug 2023) 3644 3645- tool_urlglob: use the correct format specifier for curl_off_t in msnprintf 3646 3647 Closes #11698 3648 3649Daniel Stenberg (20 Aug 2023) 3650 3651- test687/688: two more basic --xattr tests 3652 3653 Closes #11697 3654 3655- cmdline-opts/docs: mentioned the negative option part 3656 3657 ... for --no-alpn and --no-buffer in the same style done for other --no- 3658 options: 3659 3660 "Note that this is the negated option name documented." 3661 3662 Closes #11695 3663 3664Emanuele Torre (19 Aug 2023) 3665 3666- tool/var: also error when expansion result starts with NUL 3667 3668 Expansions whose output starts with NUL were being expanded to the empty 3669 string, and not being recognised as values that contain a NUL byte, and 3670 should error. 3671 3672 Closes #11694 3673 3674Daniel Stenberg (19 Aug 2023) 3675 3676- tests: add 'large-time' as a testable feature 3677 3678 This allows test cases to require this feature to run and to be used in 3679 %if conditions. 3680 3681 Large here means larger than 32 bits. Ie does not suffer from y2038. 3682 3683 Closes #11696 3684 3685- tests/Makefile: add check-translatable-options.pl to tarball 3686 3687 Used in test 1544 3688 3689 Follow-up to ae806395abc8c 3690 3691- gen.pl: fix a long version generation mistake 3692 3693 Too excessive escaping made the parsing not find the correct long names 3694 later and instead add "wrong" links. 3695 3696 Follow-up to 439ff2052e219 3697 3698 Reported-by: Lukas Tribus 3699 Fixes #11688 3700 Closes #11689 3701 3702- lib: move mimepost data from ->req.p.http to ->state 3703 3704 When the legacy CURLOPT_HTTPPOST option is used, it gets converted into 3705 the modem mimpost struct at first use. This data is (now) kept for the 3706 entire transfer and not only per single HTTP request. This re-enables 3707 rewind in the beginning of the second request instead of in end of the 3708 first, as brought by 1b39731. 3709 3710 The request struct is per-request data only. 3711 3712 Extend test 650 to verify. 3713 3714 Fixes #11680 3715 Reported-by: yushicheng7788 on github 3716 Closes #11682 3717 3718Patrick Monnerat (17 Aug 2023) 3719 3720- os400: do not check translatable options at build time 3721 3722 Now that there is a test for this, the build time check is not needed 3723 anymore. 3724 3725 Closes #11650 3726 3727- test1554: check translatable string options in OS400 wrapper 3728 3729 This test runs a perl script that checks all string options are properly 3730 translated by the OS400 character code conversion wrapper. It also 3731 verifies these options are listed in alphanumeric order in the wrapper 3732 switch statement. 3733 3734 Closes #11650 3735 3736Daniel Stenberg (17 Aug 2023) 3737 3738- unit3200: skip testing if function is not present 3739 3740 Fake a successful run since we have no easy mechanism to skip this test 3741 for this advanced condition. 3742 3743- unit2600: fix build warning if built without verbose messages 3744 3745- test1608: make it build and get skipped without shuffle DNS support 3746 3747- lib: --disable-bindlocal builds curl without local binding support 3748 3749- test1304: build and skip without netrc support 3750 3751- lib: build fixups when built with most things disabled 3752 3753 Closes #11687 3754 3755- workflows/macos.yml: disable zstd and alt-svc in the http-only build 3756 3757 Closes #11683 3758 3759Stefan Eissing (17 Aug 2023) 3760 3761- bearssl: handshake fix, provide proper get_select_socks() implementation 3762 3763 - bring bearssl handshake times down from +200ms down to other TLS backends 3764 - vtls: improve generic get_select_socks() implementation 3765 - tests: provide Apache with a suitable ssl session cache 3766 3767 Closes #11675 3768 3769- tests: TLS session sharing test 3770 3771 - test TLS session sharing with special test client 3772 - expect failure with wolfSSL 3773 - disable flaky wolfSSL test_02_07b 3774 3775 Closes #11675 3776 3777Daniel Stenberg (17 Aug 2023) 3778 3779- CURLOPT_*TIMEOUT*: extend and clarify 3780 3781 Closes #11686 3782 3783- urlapi: return CURLUE_BAD_HOSTNAME if puny2idn encoding fails 3784 3785 And document it. Only return out of memory when it actually is a memory 3786 problem. 3787 3788 Pointed-out-by: Jacob Mealey 3789 Closes #11674 3790 3791Mathew Benson (17 Aug 2023) 3792 3793- cmake: add GnuTLS option 3794 3795 - Option to use GNUTLS was missing. Hence was not able to use GNUTLS 3796 with ngtcp2 for http3. 3797 3798 Closes #11685 3799 3800Daniel Stenberg (16 Aug 2023) 3801 3802- RELEASE-NOTES: synced 3803 3804- http: remove the p_pragma struct field 3805 3806 unused since 40e8b4e52 (2008) 3807 3808 Closes #11681 3809 3810Jay Satiro (16 Aug 2023) 3811 3812- CURLINFO_CERTINFO.3: better explain curl_certinfo struct 3813 3814 Closes https://github.com/curl/curl/pull/11666 3815 3816- CURLINFO_TLS_SSL_PTR.3: clarify a recommendation 3817 3818 - Remove the out-of-date SSL backend list supported by 3819 CURLOPT_SSL_CTX_FUNCTION. 3820 3821 It makes more sense to just refer to that document instead of having 3822 a separate list that has to be kept in sync. 3823 3824 Closes https://github.com/curl/curl/pull/11665 3825 3826- write-out.d: clarify %{time_starttransfer} 3827 3828 sync it up with CURLINFO_STARTTRANSFER_TIME_T 3829 3830Daniel Stenberg (15 Aug 2023) 3831 3832- transfer: don't set TIMER_STARTTRANSFER on first send 3833 3834 The time stamp is for measuring the first *received* byte 3835 3836 Fixes #11669 3837 Reported-by: JazJas on github 3838 Closes #11670 3839 3840trrui-huawei (15 Aug 2023) 3841 3842- quiche: enable quiche to handle timeout events 3843 3844 In parallel with ngtcp2, quiche also offers the `quiche_conn_on_timeout` 3845 interface for the application to invoke upon timer 3846 expiration. Therefore, invoking the `on_timeout` function of the 3847 Connection is crucial to ensure seamless functionality of quiche with 3848 timeout events. 3849 3850 Closes #11654 3851 3852- quiche: adjust quiche `QUIC_IDLE_TIMEOUT` to 60s 3853 3854 Set the `QUIC_IDLE_TIMEOUT` parameter to match ngtcp2 for consistency. 3855 3856Daniel Stenberg (15 Aug 2023) 3857 3858- KNOWN_BUGS: LDAPS requests to ActiveDirectory server hang 3859 3860 Closes #9580 3861 3862- imap: add a check for failing strdup() 3863 3864- imap: remove the only sscanf() call in the IMAP code 3865 3866 Avoids the use of a stack buffer. 3867 3868 Closes #11673 3869 3870- imap: use a dynbuf in imap_atom 3871 3872 Avoid a calculation + malloc. Build the output in a dynbuf. 3873 3874 Closes #11672 3875 3876Marin Hannache (14 Aug 2023) 3877 3878- http: do not require a user name when using CURLAUTH_NEGOTIATE 3879 3880 In order to get Negotiate (SPNEGO) authentication to work in HTTP you 3881 used to be required to provide a (fake) user name (this concerned both 3882 curl and the lib) because the code wrongly only considered 3883 authentication if there was a user name provided, as in: 3884 3885 curl -u : --negotiate https://example.com/ 3886 3887 This commit leverages the `struct auth` want member to figure out if the 3888 user enabled CURLAUTH_NEGOTIATE, effectively removing the requirement of 3889 setting a user name both in curl and the lib. 3890 3891 Signed-off-by: Marin Hannache <git@mareo.fr> 3892 Reported-by: Enrico Scholz 3893 Fixes https://sourceforge.net/p/curl/bugs/440/ 3894 Fixes #1161 3895 Closes #9047 3896 3897Viktor Szakats (13 Aug 2023) 3898 3899- build: streamline non-UWP wincrypt detections 3900 3901 - with CMake, use the variable `WINDOWS_STORE` to detect an UWP build 3902 and disable our non-UWP-compatible use the Windows crypto API. This 3903 allows to drop two dynamic feature checks. 3904 3905 `WINDOWS_STORE` is true when invoking CMake with 3906 `CMAKE_SYSTEM_NAME` == `WindowsStore`. Introduced in CMake v3.1. 3907 3908 Ref: https://cmake.org/cmake/help/latest/variable/WINDOWS_STORE.html 3909 3910 - with autotools, drop the separate feature check for `wincrypt.h`. On 3911 one hand this header has been present for long (even Borland C 5.5 had 3912 it from year 2000), on the other we used the check result solely to 3913 enable another check for certain crypto functions. This fails anyway 3914 with the header not present. We save one dynamic feature check at the 3915 configure stage. 3916 3917 Reviewed-by: Marcel Raad 3918 Closes #11657 3919 3920Nicholas Nethercote (13 Aug 2023) 3921 3922- docs/HYPER.md: update hyper build instructions 3923 3924 Nightly Rust and `-Z unstable-options` are not needed. 3925 3926 The instructions here now match the hyper docs exactly: 3927 https://github.com/hyperium/hyper/commit/bd7928f3dd6a8461f0f0fdf7ee0fd95c2f15 3928 6f88 3929 3930 Closes #11662 3931 3932Daniel Stenberg (13 Aug 2023) 3933 3934- RELEASE-NOTES: synced 3935 3936- urlapi: CURLU_PUNY2IDN - convert from punycode to IDN name 3937 3938 Asssisted-by: Jay Satiro 3939 Closes #11655 3940 3941- spellcheck: adapt to backslashed minuses 3942 3943 As the curl.1 has more backslashed minus, the cleanup sed lines xneed to 3944 adapt. 3945 3946 Adjusted some docs slighly. 3947 3948 Follow-up to 439ff2052e 3949 3950 Closes #11663 3951 3952- gen: escape more minus 3953 3954 Detected since it was still hard to search for option names using dashes 3955 in the middle in the man page. 3956 3957 Closes #11660 3958 3959- cookie-jar.d: enphasize that this option is ONLY writing cookies 3960 3961 Reported-by: Dan Jacobson 3962 Tweaked-by: Jay Satiro 3963 Ref: #11642 3964 Closes #11661 3965 3966Nicholas Nethercote (11 Aug 2023) 3967 3968- docs/HYPER.md: document a workaround for a link error 3969 3970 Closes #11653 3971 3972Jay Satiro (11 Aug 2023) 3973 3974- schannel: verify hostname independent of verify cert 3975 3976 Prior to this change when CURLOPT_SSL_VERIFYPEER (verifypeer) was off 3977 and CURLOPT_SSL_VERIFYHOST (verifyhost) was on we did not verify the 3978 hostname in schannel code. 3979 3980 This fixes KNOWN_BUG 2.8 "Schannel disable CURLOPT_SSL_VERIFYPEER and 3981 verify hostname". We discussed a fix several years ago in #3285 but it 3982 went stale. 3983 3984 Assisted-by: Daniel Stenberg 3985 3986 Bug: https://curl.haxx.se/mail/lib-2018-10/0113.html 3987 Reported-by: Martin Galvan 3988 3989 Ref: https://github.com/curl/curl/pull/3285 3990 3991 Fixes https://github.com/curl/curl/issues/3284 3992 Closes https://github.com/curl/curl/pull/10056 3993 3994Daniel Stenberg (11 Aug 2023) 3995 3996- curl_quiche: remove superfluous NULL check 3997 3998 'stream' is always non-NULL at this point 3999 4000 Pointed out by Coverity 4001 4002 Closes #11656 4003 4004- curl/urlapi.h: tiny typo 4005 4006- github/labeler: make HYPER.md set Hyper and not TLS 4007 4008- docs/cmdline-opts/gen.pl: hide "added in" before 7.50.0 4009 4010 7.50.0 shipped on Jul 21 2016, over seven years ago. We no longer need 4011 to specify version changes for earlier releases in the generated output. 4012 4013 This ups the limit from the previous 7.30.0 (Apr 12 2013) 4014 4015 This hides roughly 35 "added in" mentions. 4016 4017 Closes #11651 4018 4019Jay Satiro (10 Aug 2023) 4020 4021- bug_report: require reporters to specify curl and os versions 4022 4023 - Change curl version and os sections from single-line input to 4024 multi-line textarea. 4025 4026 - Require curl version and os sections to be filled out before report 4027 can be submitted. 4028 4029 Closes https://github.com/curl/curl/pull/11636 4030 4031Daniel Stenberg (9 Aug 2023) 4032 4033- gen.pl: replace all single quotes with aq 4034 4035 - this prevents man from using a unicode sequence for them 4036 - which then allows search to work properly 4037 4038 Closes #11645 4039 4040Viktor Szakats (9 Aug 2023) 4041 4042- cmake: fix to use variable for the curl namespace 4043 4044 Replace (wrong) literal with a variable to specify the curl 4045 namespace. 4046 4047 Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 #11505 4048 4049 Reported-by: balikalina on Github 4050 Fixes https://github.com/curl/curl/commit/1199308dbc902c52be67fc805c72dd25825 4051 20d30#r123923098 4052 Closes #11629 4053 4054- cmake: allow `SHARE_LIB_OBJECT=ON` on all platforms 4055 4056 2ebc74c36a19a1700af394c16855ce144d9878e3 #11546 introduced sharing 4057 libcurl objects for shared and static targets. 4058 4059 The above automatically enabled for Windows builds, with an option to 4060 disable with `SHARE_LIB_OBJECT=OFF`. 4061 4062 This patch extend this feature to all platforms as a manual option. 4063 You can enable it by setting `SHARE_LIB_OBJECT=ON`. Then shared objects 4064 are built in PIC mode, meaning the static lib will also have PIC code. 4065 4066 [EXPERIMENTAL] 4067 4068 Closes #11627 4069 4070- cmake: assume `wldap32` availability on Windows 4071 4072 This system library first shipped with Windows ME, available as an extra 4073 install for some older releases (according to [1]). The import library 4074 was present already in old MinGW 3.4.2 (year 2007). 4075 4076 Drop the feature check and its associated `HAVE_WLDAP32` variable. 4077 4078 To manually disable `wldap32`, you can use the `USE_WIN32_LDAP=OFF` 4079 CMake option, like before. 4080 4081 [1]: https://dlcdn.apache.org/httpd/binaries/win32/LEGACY.html 4082 4083 Reviewed-by: Jay Satiro 4084 Closes #11624 4085 4086Daniel Stenberg (9 Aug 2023) 4087 4088- page-header: move up a URL paragraph from GLOBBING to URL 4089 4090- variable.d: output the function names table style 4091 4092 Also correct the url function name in the header 4093 4094 Closes #11641 4095 4096- haproxy-clientip.d: remove backticks 4097 4098 This is not markdown 4099 4100 Follow-up to 0a75964d0d94a4 4101 4102 Closes #11639 4103 4104- RELEASE-NOTES: synced 4105 4106- gen.pl: escape all dashes (ascii minus) to avoid unicode hyphens 4107 4108 Reported-by: FC Stegerman 4109 Fixes #11635 4110 Closes #11637 4111 4112- cmdline-opts/page-header: reorder, clean up 4113 4114 - removed some unnecessary blurb to focus 4115 - moved up the more important URL details 4116 - put "globbing" into its own subtitle and moved down a little 4117 - mention the online man page in the version section 4118 4119 Closes #11638 4120 4121- c-hyper: adjust the hyper to curlcode conversion 4122 4123 Closes #11621 4124 4125- test2306: make it use a persistent connection 4126 4127 + enable verbose already from the start 4128 4129 Closes #11621 4130 4131eppesuig (8 Aug 2023) 4132 4133- list-only.d: mention SFTP as supported protocol 4134 4135 Closes #11628 4136 4137Daniel Stenberg (8 Aug 2023) 4138 4139- request.d: use .TP for protocol "labels" 4140 4141 To render the section nicer in man page. 4142 4143 Closes #11630 4144 4145- cf-haproxy: make CURLOPT_HAPROXY_CLIENT_IP set the *source* IP 4146 4147 ... as documented. 4148 4149 Update test 3201 and 3202 accordingly. 4150 4151 Reported-by: Markus Sommer 4152 Fixes #11619 4153 Closes #11626 4154 4155- page-footer: QLOGDIR works with ngtcp2 and quiche 4156 4157 It previously said "both" backends which is confusing as we currently 4158 have three... 4159 4160 Closes #11631 4161 4162Stefan Eissing (8 Aug 2023) 4163 4164- http3: quiche, handshake optimization, trace cleanup 4165 4166 - load x509 store after clienthello 4167 - cleanup of tracing 4168 4169 Closes #11618 4170 4171Daniel Stenberg (8 Aug 2023) 4172 4173- ngtcp2: remove dead code 4174 4175 'result' is always zero (CURLE_OK) at this point 4176 4177 Detected by Coverity 4178 4179 Closes #11622 4180 4181Viktor Szakats (8 Aug 2023) 4182 4183- openssl: auto-detect `SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED` 4184 4185 OpenSSL 1.1.1 defines this macro, but no ealier version, or any of the 4186 popular forks (yet). Use the macro itself to detect its presence, 4187 replacing the hard-wired fork-specific conditions. 4188 4189 This way the feature will enable automatically when forks implement it, 4190 while also shorter and possibly requiring less future maintenance. 4191 4192 Follow-up to 94241a9e78397a2aaf89a213e6ada61e7de7ee02 #6721 4193 4194 Reviewed-by: Jay Satiro 4195 Closes #11617 4196 4197- openssl: use `SSL_CTX_set_ciphersuites` with LibreSSL 3.4.1 4198 4199 LibreSSL 3.4.1 (2021-10-14) added support for 4200 `SSL_CTX_set_ciphersuites`. 4201 4202 Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.1-relnotes.txt 4203 4204 Reviewed-by: Jay Satiro 4205 Closes #11616 4206 4207- openssl: use `SSL_CTX_set_keylog_callback` with LibreSSL 3.5.0 4208 4209 LibreSSL 3.5.0 (2022-02-24) added support for 4210 `SSL_CTX_set_keylog_callback`. 4211 4212 Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.5.0-relnotes.txt 4213 4214 Reviewed-by: Jay Satiro 4215 Closes #11615 4216 4217- cmake: drop `HAVE_LIBWINMM` and `HAVE_LIBWS2_32` feature checks 4218 4219 - `HAVE_LIBWINMM` was detected but unused. The `winmm` system library is 4220 also not used by curl, but it is by its optional dependency `librtmp`. 4221 Change the logic to always add `winmm` when `USE_LIBRTMP` is set. This 4222 library has been available since the early days of Windows. 4223 4224 - `HAVE_LIBWS2_32` detected `ws2_32` lib on Windows. This lib is present 4225 since Windows 95 OSR2 (AFAIR). Winsock1 already wasn't supported and 4226 other existing logic already assumed this lib being present, so delete 4227 the check and replace the detection variable with `WIN32` and always 4228 add `ws2_32` on Windows. 4229 4230 Closes #11612 4231 4232Daniel Gustafsson (8 Aug 2023) 4233 4234- crypto: ensure crypto initialization works 4235 4236 Make sure that context initialization during hash setup works to avoid 4237 going forward with the risk of a null pointer dereference. 4238 4239 Reported-by: Philippe Antoine on HackerOne 4240 Assisted-by: Jay Satiro 4241 Assisted-by: Daniel Stenberg 4242 4243 Closes #11614 4244 4245Viktor Szakats (7 Aug 2023) 4246 4247- openssl: switch to modern init for LibreSSL 2.7.0+ 4248 4249 LibreSSL 2.7.0 (2018-03-21) introduced automatic initialization, 4250 `OPENSSL_init_ssl()` function and deprecated the old, manual init 4251 method, as seen in OpenSSL 1.1.0. Switch to the modern method when 4252 available. 4253 4254 Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.0-relnotes.txt 4255 4256 Reviewed-by: Daniel Stenberg 4257 Closes #11611 4258 4259Daniel Stenberg (7 Aug 2023) 4260 4261- gskit: remove 4262 4263 We remove support for building curl with gskit. 4264 4265 - This is a niche TLS library, only running on some IBM systems 4266 - no regular curl contributors use this backend 4267 - no CI builds use or verify this backend 4268 - gskit, or the curl adaption for it, lacks many modern TLS features 4269 making it an inferior solution 4270 - build breakages in this code take weeks or more to get detected 4271 - fixing gskit code is mostly done "flying blind" 4272 4273 This removal has been advertized in DEPRECATED in Jan 2, 2023 and it has 4274 been mentioned on the curl-library mailing list. 4275 4276 It could be brought back, this is not a ban. Given proper effort and 4277 will, gskit support is welcome back into the curl TLS backend family. 4278 4279 Closes #11460 4280 4281- RELEASE-NOTES: synced 4282 4283Dan Fandrich (7 Aug 2023) 4284 4285- THANKS-filter: add a name typo 4286 4287Stefan Eissing (7 Aug 2023) 4288 4289- http3/ngtcp2: shorten handshake, trace cleanup 4290 4291 - shorten handshake timing by delayed x509 store load (OpenSSL) 4292 as we do for HTTP/2 4293 - cleanup of trace output, align with HTTP/2 output 4294 4295 Closes #11609 4296 4297Daniel Stenberg (7 Aug 2023) 4298 4299- headers: accept leading whitespaces on first response header 4300 4301 This is a bad header fold but since the popular browsers accept this 4302 violation, so does curl now. Unless built with hyper. 4303 4304 Add test 1473 to verify and adjust test 2306. 4305 4306 Reported-by: junsik on github 4307 Fixes #11605 4308 Closes #11607 4309 4310- include/curl/mprintf.h: add __attribute__ for the prototypes 4311 4312 - if gcc or clang is used 4313 - if __STDC_VERSION__ >= 199901L, which means greater than C90 4314 - if not using mingw 4315 - if CURL_NO_FMT_CHECKS is not defined 4316 4317 Closes #11589 4318 4319- tests: fix bad printf format flags in test code 4320 4321- tests: fix header scan tools for attribute edits in mprintf.h 4322 4323- cf-socket: log successful interface bind 4324 4325 When the setsockopt SO_BINDTODEVICE operation succeeds, output that in 4326 the verbose output. 4327 4328 Ref: #11599 4329 Closes #11608 4330 4331- CURLOPT_SSL_VERIFYPEER.3: mention it does not load CA certs when disabled 4332 4333 Ref: #11457 4334 Closes #11606 4335 4336- CURLOPT_SSL_VERIFYPEER.3: add two more see also options 4337 4338 CURLINFO_CAINFO and CURLINFO_CAPATH 4339 4340 Closes #11603 4341 4342- KNOWN_BUGS: aws-sigv4 does not behave well with AWS VPC Lattice 4343 4344 Closes #11007 4345 4346Graham Campbell (6 Aug 2023) 4347 4348- CI: use openssl 3.0.10+quic, nghttp3 0.14.0, ngtcp2 0.18.0 4349 4350 Closes #11585 4351 4352Daniel Stenberg (6 Aug 2023) 4353 4354- TODO: add *5* entries for aws-sigv4 4355 4356 Closes #7559 4357 Closes #8107 4358 Closes #8810 4359 Closes #9717 4360 Closes #10129 4361 4362- TODO: LDAP Certificate-Based Authentication 4363 4364 Closes #9641 4365 4366Stefan Eissing (6 Aug 2023) 4367 4368- http2: cleanup trace messages 4369 4370 - more compact format with bracketed stream id 4371 - all frames traced in and out 4372 4373 Closes #11592 4374 4375Daniel Stenberg (6 Aug 2023) 4376 4377- tests/tftpd+mqttd: make variables static to silence picky warnings 4378 4379 Closes #11594 4380 4381- docs/cmdline: remove repeated working for negotiate + ntlm 4382 4383 The extra wording is added automatically by the gen.pl tool 4384 4385 Closes #11597 4386 4387- docs/cmdline: add small "warning" to verbose options 4388 4389 "Note that verbose output of curl activities and network traffic might 4390 contain sensitive data, including user names, credentials or secret data 4391 content. Be aware and be careful when sharing trace logs with others." 4392 4393 Closes #11596 4394 4395- RELEASE-NOTES: synced 4396 4397- pingpong: don't use *bump_headersize 4398 4399 We use that for HTTP(S) only. 4400 4401 Follow-up to 3ee79c1674fd6 4402 4403 Closes #11590 4404 4405- urldata: remove spurious parenthesis to unbreak no-proxy build 4406 4407 Follow-up to e12b39e13382 4408 4409 Closes #11591 4410 4411- easy: don't call Curl_trc_opt() in disabled-verbose builds 4412 4413 Follow-up to e12b39e133822c6a0 4414 4415 Closes #11588 4416 4417- http: use %u for printfing int 4418 4419 Follow-up to 3ee79c1674fd6f99e8efca5 4420 4421 Closes #11587 4422 4423Goro FUJI (3 Aug 2023) 4424 4425- vquic: show stringified messages for errno 4426 4427 Closes #11584 4428 4429Stefan Eissing (3 Aug 2023) 4430 4431- trace: make tracing available in non-debug builds 4432 4433 Add --trace-config to curl 4434 4435 Add curl_global_trace() to libcurl 4436 4437 Closes #11421 4438 4439Daniel Stenberg (3 Aug 2023) 4440 4441- TODO: remove "Support intermediate & root pinning for PINNEDPUBLICKEY" 4442 4443 See also https://github.com/curl/curl/pull/7507 4444 4445- TODO: add "WebSocket read callback" 4446 4447 remove "Upgrade to websockets" as we already have this 4448 4449 Closes #11402 4450 4451- test497: verify rejecting too large incoming headers 4452 4453- http: return error when receiving too large header set 4454 4455 To avoid abuse. The limit is set to 300 KB for the accumulated size of 4456 all received HTTP headers for a single response. Incomplete research 4457 suggests that Chrome uses a 256-300 KB limit, while Firefox allows up to 4458 1MB. 4459 4460 Closes #11582 4461 4462Stefan Eissing (3 Aug 2023) 4463 4464- http2: upgrade tests and add fix for non-existing stream 4465 4466 - check in h2 filter recv that stream actually exists 4467 and return error if not 4468 - add test for parallel, extreme h2 upgrades that fail if 4469 connections get reused before fully switched 4470 - add h2 upgrade upload test just for completeness 4471 4472 Closes #11563 4473 4474Viktor Szakats (3 Aug 2023) 4475 4476- tests: ensure `libcurl.def` contains all exports 4477 4478 Add `test1279` to verify that `libcurl.def` lists all exported API 4479 functions found in libcurl headers. 4480 4481 Also: 4482 4483 - extend test suite XML `stdout` tag with the `loadfile` attribute. 4484 4485 - fix `tests/extern-scan.pl` and `test1135` to include websocket API. 4486 4487 - use all headers (sorted) in `test1135` instead of a manual list. 4488 4489 - add options `--sort`, `--heading=` to `tests/extern-scan.pl`. 4490 4491 - add `libcurl.def` to the auto-labeler GHA task. 4492 4493 Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3 4494 4495 Closes #11570 4496 4497Daniel Stenberg (2 Aug 2023) 4498 4499- url: change default value for CURLOPT_MAXREDIRS to 30 4500 4501 It was previously unlimited by default, but that's not a sensible 4502 default. While changing this has a remote risk of breaking an existing 4503 use case, I figure it is more likely to actually save users from loops. 4504 4505 Closes #11581 4506 4507- lib: fix a few *printf() flag mistakes 4508 4509 Reported-by: Gisle Vanem 4510 Ref: #11574 4511 Closes #11579 4512 4513Samuel Chiang (2 Aug 2023) 4514 4515- openssl: make aws-lc version support OCSP 4516 4517 And bump version in CI 4518 4519 Closes #11568 4520 4521Daniel Stenberg (2 Aug 2023) 4522 4523- tool: make the length argument an int for printf()-.* flags 4524 4525 Closes #11578 4526 4527- tool_operate: fix memory leak when SSL_CERT_DIR is used 4528 4529 Detected by Coverity 4530 4531 Follow-up to 29bce9857a12b6cfa726a5 4532 4533 Closes #11577 4534 4535- tool/var: free memory on OOM 4536 4537 Coverity detected this memory leak in OOM situation 4538 4539 Follow-up to 2e160c9c652504e 4540 4541 Closes #11575 4542 4543Viktor Szakats (2 Aug 2023) 4544 4545- gha: bump libressl and mbedtls versions 4546 4547 Closes #11573 4548 4549Jay Satiro (2 Aug 2023) 4550 4551- schannel: fix user-set legacy algorithms in Windows 10 & 11 4552 4553 - If the user set a legacy algorithm list (CURLOPT_SSL_CIPHER_LIST) then 4554 use the SCHANNEL_CRED legacy structure to pass the list to Schannel. 4555 4556 - If the user set both a legacy algorithm list and a TLS 1.3 cipher list 4557 then abort. 4558 4559 Although MS doesn't document it, Schannel will not negotiate TLS 1.3 4560 when SCHANNEL_CRED is used. That means setting a legacy algorithm list 4561 limits the user to earlier versions of TLS. 4562 4563 Prior to this change, since 8beff435 (precedes 7.85.0), libcurl would 4564 ignore legacy algorithms in Windows 10 1809 and later. 4565 4566 Reported-by: zhihaoy@users.noreply.github.com 4567 4568 Fixes https://github.com/curl/curl/pull/10741 4569 Closes https://github.com/curl/curl/pull/10746 4570 4571Daniel Stenberg (2 Aug 2023) 4572 4573- variable.d: setting a variable again overwrites it 4574 4575 Reported-by: Niall McGee 4576 Bug: https://twitter.com/niallmcgee/status/1686523075423322113 4577 Closes #11571 4578 4579Jay Satiro (2 Aug 2023) 4580 4581- CURLOPT_PROXY_SSL_OPTIONS.3: sync formatting 4582 4583 - Re-wrap CURLSSLOPT_ALLOW_BEAST description. 4584 4585Daniel Stenberg (2 Aug 2023) 4586 4587- RELEASE-NOTES: synced 4588 4589- resolve: use PF_INET6 family lookups when CURL_IPRESOLVE_V6 is set 4590 4591 Previously it would always do PF_UNSPEC if CURL_IPRESOLVE_V4 is not 4592 used, thus unnecessarily asking for addresses that will not be used. 4593 4594 Reported-by: Joseph Tharayil 4595 Fixes #11564 4596 Closes #11565 4597 4598- docs: link to the website versions instead of markdowns 4599 4600 ... to make the links work when the markdown is converted to webpages on 4601 https://curl.se 4602 4603 Reported-by: Maurício Meneghini Fauth 4604 Fixes https://github.com/curl/curl-www/issues/272 4605 Closes #11569 4606 4607Viktor Szakats (1 Aug 2023) 4608 4609- cmake: cache more config and delete unused ones 4610 4611 - cache more Windows config results for faster initialization. 4612 4613 - delete unused config macros `HAVE_SYS_UTSNAME_H`, `HAVE_SSL_H`. 4614 4615 - delete dead references to `sys/utsname.h`. 4616 4617 Closes #11551 4618 4619- egd: delete feature detection and related source code 4620 4621 EGD is Entropy Gathering Daemon, a socket-based entropy source supported 4622 by pre-OpenSSL v1.1 versions and now deprecated. curl also deprecated it 4623 a while ago. 4624 4625 Its detection in CMake was broken all along because OpenSSL libs were 4626 not linked at the point of feature check. 4627 4628 Delete detection from both cmake and autotools, along with the related 4629 source snippet, and the `--with-egd-socket=` `./configure` option. 4630 4631 Closes #11556 4632 4633Stefan Eissing (1 Aug 2023) 4634 4635- tests: fix h3 server check and parallel instances 4636 4637 - fix check for availability of nghttpx server 4638 - add `tcp` frontend config for same port as quic, as 4639 without this, port 3000 is bound which clashes for parallel 4640 testing 4641 4642 Closes #11553 4643 4644Daniel Stenberg (1 Aug 2023) 4645 4646- docs/cmdline-opts: spellfixes, typos and polish 4647 4648 To make them accepted by the spell checker 4649 4650 Closes #11562 4651 4652- CI/spellcheck: build curl.1 and spellcheck it 4653 4654 Added acceptable words 4655 4656 Closes #11562 4657 4658Alexander Jaeger (1 Aug 2023) 4659 4660- misc: fix various typos 4661 4662 Closes #11561 4663 4664Daniel Stenberg (1 Aug 2023) 4665 4666- http2: avoid too early connection re-use/multiplexing 4667 4668 HTTP/1 connections that are upgraded to HTTP/2 should not be picked up 4669 for reuse and multiplexing by other handles until the 101 switching 4670 process is completed. 4671 4672 Lots-of-debgging-by: Stefan Eissing 4673 Reported-by: Richard W.M. Jones 4674 Bug: https://curl.se/mail/lib-2023-07/0045.html 4675 Closes #11557 4676 4677- Revert "KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14" 4678 4679 This reverts commit 2e8a3d7cb73c85a9aa151e263315f8a496dbb9d4. 4680 4681 It's a user error for supplying incomplete information to the build system. 4682 4683 Reported-by: Ryan Schmidt 4684 Ref: https://github.com/curl/curl/issues/11215#issuecomment-1658729367 4685 4686Viktor Szakats (1 Aug 2023) 4687 4688- cmake: add support for single libcurl compilation pass 4689 4690 Before this patch CMake builds used two separate compilation passes to 4691 build the shared and static libcurl respectively. This patch allows to 4692 reduce that to a single pass if the target platform and build settings 4693 allow it. 4694 4695 This reduces CMake build times when building both static and shared 4696 libcurl at the same time, making these dual builds an almost zero-cost 4697 option. 4698 4699 Enable this feature for Windows builds, where the difference between the 4700 two passes was the use of `__declspec(dllexport)` attribute for exported 4701 API functions for the shared builds. This patch replaces this method 4702 with the use of `libcurl.def` at DLL link time. 4703 4704 Also update `Makefile.mk` to use `libcurl.def` to export libcurl API 4705 symbols on Windows. This simplifies (or fixes) this build method (e.g. 4706 in curl-for-win, which generated a `libcurl.def` from `.h` files using 4707 an elaborate set of transformations). 4708 4709 `libcurl.def` has the maintenance cost of keeping the list of public 4710 libcurl API symbols up-to-date. This list seldom changes, so the cost 4711 is low. 4712 4713 Closes #11546 4714 4715- cmake: detect `SSL_set0_wbio` in OpenSSL 4716 4717 Present in OpenSSL 1.1.0 and BoringSSL. 4718 Missing from LibreSSL 3.8.0. 4719 4720 Follow-up to f39472ea9f4f4e12cfbc0500c4580a8d52ce4a59 4721 4722 While here, also fix `RAND_egd()` detection which was broken, likely all 4723 along. This feature is probably broken with CMake builds and also 4724 requires a sufficiently obsolete OpenSSL version, so this part of the 4725 update was not tested. 4726 4727 Closes #11555 4728 4729- cmake: fixup H2 duplicate symbols for unity builds 4730 4731 Closes #11550 4732 4733Pablo Busse (1 Aug 2023) 4734 4735- openssl: Support async cert verify callback 4736 4737 - Update the OpenSSL connect state machine to handle 4738 SSL_ERROR_WANT_RETRY_VERIFY. 4739 4740 This allows libcurl users that are using custom certificate validation 4741 to suspend processing while waiting for external I/O during certificate 4742 validation. 4743 4744 Closes https://github.com/curl/curl/pull/11499 4745 4746Jay Satiro (1 Aug 2023) 4747 4748- tool_cb_wrt: fix invalid unicode for windows console 4749 4750 - Suppress an incomplete UTF-8 sequence at the end of the buffer. 4751 4752 - Attempt to reconstruct incomplete UTF-8 sequence from prior call(s) 4753 in current call. 4754 4755 Prior to this change, in Windows console UTF-8 sequences split between 4756 two or more calls to the write callback would cause invalid "replacement 4757 characters" U+FFFD to be printed instead of the actual Unicode 4758 character. This is because in Windows only UTF-16 encoded characters are 4759 printed to the console, therefore we convert the UTF-8 contents to 4760 UTF-16, which cannot be done with partial UTF-8 sequences. 4761 4762 Reported-by: Maksim Arhipov 4763 4764 Fixes https://github.com/curl/curl/issues/9841 4765 Closes https://github.com/curl/curl/pull/10890 4766 4767Daniel Stenberg (1 Aug 2023) 4768 4769- sectransp: prevent CFRelease() of NULL 4770 4771 When SecCertificateCopyCommonName() returns NULL, the common_name 4772 pointer remains set to NULL which apparently when calling CFRelease() on 4773 (sometimes?) crashes. 4774 4775 Reported-by: Guillaume Algis 4776 Fixes #9194 4777 Closes #11554 4778 4779Jay Satiro (1 Aug 2023) 4780 4781- vtls: clarify "ALPN: offers" message 4782 4783 Before: 4784 * ALPN: offers h2,http/1.1 4785 4786 After: 4787 * ALPN: curl offers h2,http/1.1 4788 4789 Bug: https://curl.se/mail/lib-2023-07/0041.html 4790 Reported-by: Richard W.M. Jones 4791 Closes #11544 4792 4793Daniel Stenberg (1 Aug 2023) 4794 4795- urlapi: make sure zoneid is also duplicated in curl_url_dup 4796 4797 Add several curl_url_dup() tests to the general lib1560 test. 4798 4799 Reported-by: Rutger Broekhoff 4800 Bug: https://curl.se/mail/lib-2023-07/0047.html 4801 Closes #11549 4802 4803Sergey (1 Aug 2023) 4804 4805- urlapi: fix heap buffer overflow 4806 4807 `u->path = Curl_memdup(path, pathlen + 1);` accesses bytes after the null-ter 4808 minator. 4809 4810 ``` 4811 ==2676==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x04d48c75 a 4812 t pc 0x0112708a bp 0x006fb7e0 sp 0x006fb3c4 4813 READ of size 78 at 0x04d48c75 thread T0 4814 #0 0x1127089 in __asan_wrap_memcpy D:\a\_work\1\s\src\vctools\asan\llvm\c 4815 ompiler-rt\lib\sanitizer_common\sanitizer_common_interceptors.inc:840 4816 #1 0x1891a0e in Curl_memdup C:\actions-runner\_work\client\client\third_p 4817 arty\curl\lib\strdup.c:97 4818 #2 0x18db4b0 in parseurl C:\actions-runner\_work\client\client\third_part 4819 y\curl\lib\urlapi.c:1297 4820 #3 0x18db819 in parseurl_and_replace C:\actions-runner\_work\client\clien 4821 t\third_party\curl\lib\urlapi.c:1342 4822 #4 0x18d6e39 in curl_url_set C:\actions-runner\_work\client\client\third_ 4823 party\curl\lib\urlapi.c:1790 4824 #5 0x1877d3e in parseurlandfillconn C:\actions-runner\_work\client\client 4825 \third_party\curl\lib\url.c:1768 4826 #6 0x1871acf in create_conn C:\actions-runner\_work\client\client\third_p 4827 arty\curl\lib\url.c:3403 4828 #7 0x186d8dc in Curl_connect C:\actions-runner\_work\client\client\third_ 4829 party\curl\lib\url.c:3888 4830 #8 0x1856b78 in multi_runsingle C:\actions-runner\_work\client\client\thi 4831 rd_party\curl\lib\multi.c:1982 4832 #9 0x18531e3 in curl_multi_perform C:\actions-runner\_work\client\client\ 4833 third_party\curl\lib\multi.c:2756 4834 ``` 4835 4836 Closes #11560 4837 4838Daniel Stenberg (31 Jul 2023) 4839 4840- curl: make %output{} in -w specify a file to write to 4841 4842 It can be used multiple times. Use %output{>>name} to append. 4843 4844 Add docs. Test 990 and 991 verify. 4845 4846 Idea: #11400 4847 Suggested-by: ed0d2b2ce19451f2 4848 Closes #11416 4849 4850- RELEASE-NOTES: synced 4851 4852- tool: add "variable" support 4853 4854 Add support for command line variables. Set variables with --variable 4855 name=content or --variable name@file (where "file" can be stdin if set 4856 to a single dash (-)). 4857 4858 Variable content is expanded in option parameters using "{{name}}" 4859 (without the quotes) if the option name is prefixed with 4860 "--expand-". This gets the contents of the variable "name" inserted, or 4861 a blank if the name does not exist as a variable. Insert "{{" verbatim 4862 in the string by prefixing it with a backslash, like "\\{{". 4863 4864 Import an environment variable with --variable %name. It makes curl exit 4865 with an error if the environment variable is not set. It can also rather 4866 get a default value if the variable does not exist, using =content or 4867 @file like shown above. 4868 4869 Example: get the USER environment variable into the URL: 4870 4871 --variable %USER 4872 --expand-url = "https://example.com/api/{{USER}}/method" 4873 4874 When expanding variables, curl supports a set of functions that can make 4875 the variable contents more convenient to use. It can trim leading and 4876 trailing white space with "trim", output the contents as a JSON quoted 4877 string with "json", URL encode it with "url" and base 64 encode it with 4878 "b64". To apply functions to a variable expansion, add them colon 4879 separated to the right side of the variable. They are then performed in 4880 a left to right order. 4881 4882 Example: get the contents of a file called $HOME/.secret into a variable 4883 called "fix". Make sure that the content is trimmed and percent-encoded 4884 sent as POST data: 4885 4886 --variable %HOME=/home/default 4887 --expand-variable fix@{{HOME}}/.secret 4888 --expand-data "{{fix:trim:url}}" 4889 https://example.com/ 4890 4891 Documented. Many new test cases. 4892 4893 Co-brainstormed-by: Emanuele Torre 4894 Assisted-by: Jat Satiro 4895 Closes #11346 4896 4897- KNOWN_BUGS: cygwin: make install installs curl-config.1 twice 4898 4899 Closes #8839 4900 4901- KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14 4902 4903 Closes #11215 4904 4905- KNOWN_BUGS: cmake outputs: no version information available 4906 4907 Closes #11158 4908 4909- KNOWN_BUGS: APOP authentication fails on POP3 4910 4911 Closes #10073 4912 4913- KNOWN_BUGS: hyper is slow 4914 4915 Closes #11203 4916 4917Patrick Monnerat (31 Jul 2023) 4918 4919- configure, cmake, lib: more form api deprecation 4920 4921 Introduce a --enable-form-api configure option to control its inclusion 4922 in builds. The condition name defined for it is CURL_DISABLE_FORM_API. 4923 4924 Form api code is dependent of MIME: configure and CMake handle this 4925 dependency automatically: CMake by making it a dependent option 4926 explicitly, configure by inheriting the MIME value by default and 4927 rejecting explicit incompatible values. 4928 4929 "form-api" is now a new hidden test feature. 4930 4931 Update libcurl modules to respect this option and adjust tests 4932 accordingly. 4933 4934 Closes #9621 4935 4936Daniel Stenberg (31 Jul 2023) 4937 4938- mailmap: add Derzsi Dániel 4939 4940Derzsi Dániel (31 Jul 2023) 4941 4942- wolfssl: support loading system CA certificates 4943 4944 Closes #11452 4945 4946Viktor Szakats (30 Jul 2023) 4947 4948- nss: delete more NSS references 4949 4950 Fix the distcheck CI failure and delete more NSS references. 4951 4952 Follow-up to 7c8bae0d9c9b2dfeeb008b9a316117d7b9675175 4953 4954 Reviewed-by: Marcel Raad 4955 Reviewed-by: Daniel Stenberg 4956 Closes #11548 4957 4958Daniel Stenberg (29 Jul 2023) 4959 4960- nss: remove support for this TLS library 4961 4962 Closes #11459 4963 4964Ryan Schmidt (29 Jul 2023) 4965 4966- macOS: fix target detection more 4967 4968 Now SCDynamicStoreCopyProxies is called (and the required frameworks are 4969 linked in) on all versions of macOS and only on macOS. Fixes crash due 4970 to undefined symbol when built with the macOS 10.11 SDK or earlier. 4971 4972 CURL_OSX_CALL_COPYPROXIES is renamed to CURL_MACOS_CALL_COPYPROXIES and 4973 is now only defined when SCDynamicStoreCopyProxies will actually be 4974 called. Previously, it was defined when ENABLE_IPV6 was not defined but 4975 SCDynamicStoreCopyProxies is not called in that case. 4976 4977 TARGET_OS_OSX is only defined in the macOS 10.12 SDK and later and only 4978 when dynamic targets are enabled. TARGET_OS_MAC is always defined but 4979 means any Mac OS or derivative including macOS, iOS, tvOS, and watchOS. 4980 TARGET_OS_IPHONE means any Darwin OS other than macOS. 4981 4982 Follow-up to c73b2f82 4983 4984 Fixes #11502 4985 Closes #11516 4986 4987Daniel Stenberg (29 Jul 2023) 4988 4989- tool_operate: allow SSL_CERT_FILE and SSL_CERT_DIR 4990 4991 ... used at once. 4992 4993 Reported-by: Gabriel Corona 4994 Fixes #11325 4995 Closes #11531 4996 4997Thomas M. DuBuisson (29 Jul 2023) 4998 4999- CI: remove Lift's configuration 5000 5001 The Lift tool is being retired. Their site reads: 5002 5003 "Sonatype Lift will be retiring on Sep 12, 2023, with its analysis 5004 stopping on Aug 12, 2023." 5005 5006 Closes #11541 5007 5008Nathan Moinvaziri (29 Jul 2023) 5009 5010- Revert "schannel: reverse the order of certinfo insertions" 5011 5012 This reverts commit 8986df802db9b5338d9d50a54232ebae4dbcf6dd. 5013 5014 Windows does not guarantee a particular certificate ordering, even 5015 though TLS may have its own ordering/relationship guarantees. Recent 5016 versions of Windows 11 reversed the ordering of ceritifcates returned by 5017 CertEnumCertificatesInStore, therefore this commit no longer works as 5018 initially intended. libcurl makes no guarantees about certificate 5019 ordering if the operating system can't. 5020 5021 Ref: https://github.com/curl/curl/issues/9706 5022 5023 Closes https://github.com/curl/curl/pull/11536 5024 5025wangzhikun (29 Jul 2023) 5026 5027- winbuild: improve check for static zlib 5028 5029 - Check for zlib static library name zlibstatic.lib. 5030 5031 zlib's static library has a different name depending on how it was 5032 built. zlibstatic.lib is output by cmake. zlibstat.lib is output by 5033 their pre-generated Visual Studio project files (in the contrib 5034 directory) and defines ZLIB_WINAPI (ie it's meant to use stdcall 5035 instead of cdecl if you end up exporting the zlib functions). 5036 5037 Prior to this change the makefile only checked for the latter. 5038 5039 Closes https://github.com/curl/curl/pull/11521 5040 5041Daniel Stenberg (29 Jul 2023) 5042 5043- configure: use the pkg-config --libs-only-l flag for libssh2 5044 5045 ... instead of --libs, as that one also returns -L flags. 5046 5047 Reported-by: Wilhelm von Thiele 5048 Fixes #11538 5049 Closes #11539 5050 5051Viktor Szakats (29 Jul 2023) 5052 5053- cmake: support building static and shared libcurl in one go 5054 5055 This patch adds the ability to build a static and shared libcurl library 5056 in a single build session. It also adds an option to select which one to 5057 use when building the curl executable. 5058 5059 New build options: 5060 - `BUILD_STATIC_LIBS`. Default: `OFF`. 5061 Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`. 5062 - `BUILD_STATIC_CURL`. Default: `OFF`. 5063 Requires `BUILD_STATIC_LIBS` enabled. 5064 Enabled automatically if building static libcurl only. 5065 - `STATIC_LIB_SUFFIX`. Default: empty. 5066 - `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide 5067 with static lib name (typically with MSVC) in Windows builds. 5068 Otherwise empty. 5069 5070 Also: 5071 5072 - Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass 5073 it directly to the compiler. This also allows to delete a condition 5074 from `tests/server/CMakeLists.txt`. 5075 5076 - Complete a TODO by following the logic used in autotools (also for 5077 `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of 5078 `libcurl.pc` for _static-only_ curl builds. 5079 5080 - Convert an existing CI test to build both shared and static libcurl. 5081 5082 Closes #11505 5083 5084Stefan Eissing (28 Jul 2023) 5085 5086- CI/awslc: add cache for build awslc library 5087 5088 Closes #11535 5089 5090- GHA/linux.yml: add caching 5091 5092 Closes #11532 5093 5094Daniel Stenberg (27 Jul 2023) 5095 5096- RELEASE-NOTES: synced 5097 5098 Bump working version to 8.3.0 5099 5100- url: remove infof() output for "still name resolving" 5101 5102 The message does not help and might get spewed a lot during times. 5103 5104 Reported-by: yushicheng7788 on github 5105 Fixes #11394 5106 Closes #11529 5107 5108- KNOWN_BUGS: cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!" 5109 5110 Closes #11244 5111 5112Stefan Eissing (27 Jul 2023) 5113 5114- CI: quiche updates 5115 5116 - remove quiche from standard `linux` workflow 5117 - add mod_h2 caching to quiche workflow 5118 - rename quiche to quiche-linux 5119 - move version definitions into env section 5120 5121 Closes #11528 5122 5123- http2: disable asssertion blocking OSSFuzz testing 5124 5125 - not clear how this triggers and it blocks OSSFuzz testing other 5126 things. Since we handle the case with an error return, disabling the 5127 assertion for now seems the best way forward. 5128 5129 Fixes #11500 5130 Closes #11519 5131 5132- http2: fix in h2 proxy tunnel: progress in ingress on sending 5133 5134 - depending on what is tunneled, the proxy may never get invoked for 5135 receiving data explicitly. Not progressing ingress may lead to stalls 5136 due to missed WINDOW_UPDATEs. 5137 5138 CI: 5139 - add a chache for building mod_h2 5140 5141 Closes #11527 5142 5143- CI ngtcp2+quictls: use nghttpx cache as in quiche build 5144 5145Jay Satiro (27 Jul 2023) 5146 5147- bearssl: don't load CA certs when peer verification is disabled 5148 5149 We already do this for other SSL backends. 5150 5151 Bug: https://github.com/curl/curl/pull/11457#issuecomment-1644587473 5152 Reported-by: kyled-dell@users.noreply.github.com 5153 5154 Closes https://github.com/curl/curl/pull/11497 5155 5156Daniel Stenberg (26 Jul 2023) 5157 5158- easy: remove #ifdefs to make code easier on the eye 5159 5160 Closes #11525 5161 5162Stefan Eissing (26 Jul 2023) 5163 5164- GHA: adding quiche workflow 5165 5166 - adding separate quiche workflow to also build nghttpx server for testing 5167 5168 Closes #11517 5169 5170Version 8.2.1 (26 Jul 2023) 5171 5172Daniel Stenberg (26 Jul 2023) 5173 5174- RELEASE-NOTES: synced 5175 5176 curl 8.2.1 release 5177 5178- THANKS: add contributors from 8.2.1 5179 5180- docs: provide more see also for cipher options 5181 5182 More cross references. Hide nroff errors. 5183 5184 Closes #11513 5185 5186- docs: mark two TLS options for TLS, not SSL 5187 5188 Closes #11514 5189 5190Brad Harder (25 Jul 2023) 5191 5192- curl_multi_wait.3: fix arg quoting to doc macro .BR 5193 5194 Closes #11511 5195 5196Daniel Stenberg (24 Jul 2023) 5197 5198- RELEASE-NOTES: synced 5199 5200Viktor Szakats (24 Jul 2023) 5201 5202- cmake: update ngtcp2 detection 5203 5204 Replace `OpenSSL` with `quictls` to follow the same change 5205 in the v0.17.0 ngtcp2 release. 5206 5207 Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed 5208 5209 Closes #11508 5210 5211Stefan Eissing (24 Jul 2023) 5212 5213- http: VLH, very large header test and fixes 5214 5215 - adding tests using very large passwords in auth 5216 - fixes general http sending to treat h3 like h2, and 5217 not like http1.1 5218 - eliminate H2_HEADER max definitions and use the commmon 5219 DYN_HTTP_REQUEST everywhere, different limits do not help 5220 - fix http2 handling of requests denied by nghttp2 on send 5221 to immediately report the refused stream 5222 5223 Closes #11509 5224 5225Andrei Rybak (23 Jul 2023) 5226 5227- CONTRIBUTE: drop mention of copyright year ranges 5228 5229 Year ranges in copyrights were dropped in commits [1] and [2]. 5230 Verification of year ranges in copyrights was dropped from script 5231 'scripts/copyright.pl' in commit [3]. However, the corresponding 5232 passages in file 'docs/CONTRIBUTE.md' weren't updated. 5233 5234 Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'. 5235 5236 [1] 2bc1d775f (copyright: update all copyright lines and remove year 5237 ranges, 2023-01-02) 5238 [2] c46761bd8 (tests/http: remove year ranges from copyrights, 5239 2023-03-14) 5240 [3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28) 5241 5242 Closes #11504 5243 5244- CONTRIBUTE: fix syntax in commit message description 5245 5246 File 'docs/CONTRIBUTE.md' includes a description of how one should write 5247 commit messages in the curl project. Different possible parts of the 5248 message are enclosed in square brackets. One exception is the section 5249 describing how the curl project doesn't use "Signed-off-by" commit 5250 trailers [1], which is enclosed in an opening curly brace paired with a 5251 closing square bracket. 5252 5253 Fix the enclosing square brackets in description of "Signed-off-by" 5254 trailers in commit messages in file 'docs/CONTRIBUTE.md'. 5255 5256 [1] See description of option '--signoff' in Git documentation: 5257 https://git-scm.com/docs/git-commit 5258 5259 Closes #11504 5260 5261Daniel Stenberg (23 Jul 2023) 5262 5263- src/mkhelp: strip off escape sequences 5264 5265 At some point the nroff command stopped stripping off escape sequences, 5266 so then this script needs to do the job instead. 5267 5268 Reported-by: VictorVG on github 5269 Fixes #11501 5270 Closes #11503 5271 5272- KNOWN_BUGS: building for old macOS fails with gcc 5273 5274 Closes #11441 5275 5276Jacob Hoffman-Andrews (22 Jul 2023) 5277 5278- rustls: update rustls-ffi 0.10.0 5279 5280 This brings in version 0.21.0 of the upstream rustls implementation, 5281 which notable includes support for IP address certificates. 5282 5283 Closes #10865 5284 5285Brad Harder (22 Jul 2023) 5286 5287- websocket: rename arguments/variables to match docs 5288 5289 Pedantry/semantic-alignment between functions, docs, comments with 5290 respect to websocket protocol code; No functional change intended. 5291 5292 * "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments). 5293 5294 * "sendflags" becomes "flags" 5295 5296 * use canonical CURL *handle 5297 5298 Closes #11493 5299 5300Jan Macku (21 Jul 2023) 5301 5302- bug_report: use issue forms instead of markdown template 5303 5304 Issue forms allow you to define web-like input forms using YAML 5305 syntax. It allows you to guide the reporter to get the required 5306 information. 5307 5308 Signed-off-by: Jan Macku <jamacku@redhat.com> 5309 Closes #11474 5310 5311Daniel Stenberg (21 Jul 2023) 5312 5313- TODO: Obey Retry-After in redirects 5314 5315 (remove "Set custom client ip when using haproxy protocol" which was 5316 shipped in 8.2.0) 5317 5318 Mentioned-by: Yair Lenga 5319 Closes #11447 5320 5321- RELEASE-NOTES: synced 5322 5323Oliver Roberts (21 Jul 2023) 5324 5325- amissl: fix AmiSSL v5 detection 5326 5327 Due to changes in the AmiSSL SDK, the detection needed adjusting. 5328 5329 Closes #11477 5330 5331Alois Klink (21 Jul 2023) 5332 5333- unittest/makefile: remove unneeded unit1621_LDADD 5334 5335 The `unit1621_LDADD` variable has the exact same value as the `LDADD` 5336 flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`. 5337 5338 This was originally added by [98e6629][], but I can't see any reason 5339 why it exists, so we should remove it to clean things up. 5340 5341 [98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7 5342 ebcb131e88 5343 5344 Closes #11494 5345 5346- unittest/makefile: remove unneeded unit1394_LDADD 5347 5348 These custom `unit1394_LDADD` and similar automake overrides are no 5349 longer neded. They were originally added by added by [8dac7be][] for 5350 metalink support, but are no longer after [265b14d][] removed metalink. 5351 5352 [8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bd 5353 fdcac1ed8c 5354 [265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37 5355 d36f911693 5356 5357 Closes #11494 5358 5359- cmake: add `libcurlu`/`libcurltool` for unit tests 5360 5361 Add a `libcurlu`/`libcurltool` static library that is compiled only for 5362 unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not 5363 built by default, they're only built if unit tests are built. 5364 5365 These libraries allow us to compile every unit test with CMake. 5366 5367 Closes #11446 5368 5369Daniel Stenberg (21 Jul 2023) 5370 5371- test979: test -u with redirect to (the same) absolute host 5372 5373 Verifies #11492 5374 5375- transfer: do not clear the credentials on redirect to absolute URL 5376 5377 Makes test 979 work. Regression shipped in 8.2.0 from commit 5378 dd4d1a26959f63a2c 5379 5380 Fixes #11486 5381 Reported-by: Cloudogu Siebels 5382 Closes #11492 5383 5384Jon Rumsey (20 Jul 2023) 5385 5386- os400: correct EXPECTED_STRING_LASTZEROTERMINATED 5387 5388 Correct EXPECTED_STRING_LASTZEROTERMINATED to account for 5389 CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when 5390 passed into curl_easy_setopt(). 5391 5392 Closes #11476 5393 5394Oliver Roberts (20 Jul 2023) 5395 5396- amissl: add missing signal.h include 5397 5398 In some environments, signal.h is already included, but not in others 5399 which cause compilation to fail, so explictly include it. 5400 5401 Closes #11478 5402 5403- amigaos: fix sys/mbuf.h m_len macro clash 5404 5405 The updated Curl_http_req_make and Curl_http_req_make2 functions spawned 5406 a parameter called m_len. The AmigaOS networking headers, derived from 5407 NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with 5408 this. Since we do not actually use mbuf, force the include file to be 5409 ignored, removing the clash. 5410 5411 Closes #11479 5412 5413Daniel Stenberg (20 Jul 2023) 5414 5415- socks: print ipv6 address within brackets 5416 5417 Fixes #11483 5418 Closes #11484 5419 5420Christian Schmitz (20 Jul 2023) 5421 5422- libcurl-errors.3: add CURLUE_OK 5423 5424 Closes #11488 5425 5426Oliver Roberts (20 Jul 2023) 5427 5428- cfilters: rename close/connect functions to avoid clashes 5429 5430 Rename `close` and `connect` in `struct Curl_cftype` for 5431 consistency and to avoid clashes with macros of the same name 5432 (the standard AmigaOS networking connect() function is implemented 5433 via a macro). 5434 5435 Closes #11491 5436 5437Stefan Eissing (20 Jul 2023) 5438 5439- http2: fix regression on upload EOF handling 5440 5441 - a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5 5442 where optimization of small POST bodies leads to a new code path 5443 for such uploads that did not trigger the "done sending" event 5444 - add triggering this event for early "upload_done" situations 5445 5446 Fixes #11485 5447 Closes #11487 5448 Reported-by: Aleksander Mazur 5449 5450Daniel Stenberg (19 Jul 2023) 5451 5452- configure: check for nghttp2_session_get_stream_local_window_size 5453 5454 The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016) 5455 5456 Fixes #11470 5457 Reported-by: Paul Howarth 5458 Closes #11473 5459 5460Stefan Eissing (19 Jul 2023) 5461 5462- quiche: fix segfault and other things 5463 5464 - refs #11449 where a segfault is reported when IP Eyeballing did 5465 not immediately connect but made several attempts 5466 - The transfer initiating the eyeballing was initialized too early, 5467 leadding to references to the filter instance that was then 5468 replaced in the subsequent eyeball attempts. That led to a use 5469 after free in the buffer handling for the transfer 5470 - transfers are initiated now more lazy (like in the ngtcp2 filter), 5471 when the stream is actually opened 5472 - suppress reporting on quiche event errors for "other" transfers 5473 than the current one to not fail a transfer due to faults in 5474 another one. 5475 - revert recent return value handling for quiche_h3_recv_body() 5476 to not indicate an error but an EAGAIN situation. We wish quiche 5477 would document what functions return. 5478 5479 Fixes #11449 5480 Closes #11469 5481 Reported-by: ウさん 5482 5483Daniel Stenberg (19 Jul 2023) 5484 5485- hostip: return IPv6 first for localhost resolves 5486 5487 Fixes #11465 5488 Reported-by: Chilledheart on github 5489 Closes #11466 5490 5491Harry Sintonen (19 Jul 2023) 5492 5493- tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T 5494 5495 - a variable was renamed, and some use of it wasn't. this fixes the 5496 build. 5497 5498 Closes #11468 5499 5500Stefan Eissing (19 Jul 2023) 5501 5502- quiche: fix lookup of transfer at multi 5503 5504 - refs #11449 where weirdness in quiche multi connection tranfers was 5505 observed 5506 - fixes lookup of transfer for a quiche event to take the connection 5507 into account 5508 - formerly, a transfer with the same stream_id, but on another connection 5509 could be found 5510 5511 Closes #11462 5512 5513Daniel Stenberg (19 Jul 2023) 5514 5515- RELEASE-NOTES: synced 5516 5517 bump to 8.2.1 5518 5519John Haugabook (19 Jul 2023) 5520 5521- ciphers.d: put URL in first column 5522 5523 This makes the URL turn into a link properly when "webified". 5524 5525 Fixes https://github.com/curl/curl-www/issues/270 5526 Closes #11464 5527 5528Version 8.2.0 (19 Jul 2023) 5529 5530Daniel Stenberg (19 Jul 2023) 5531 5532- RELEASE-NOTES: synced 5533 5534 8.2.0 release 5535 5536- THANKS-filter: strip out "GitHub" 5537 5538- THANKS: add contributors from 8.2.0 5539 5540- RELEASE-PROCEDURE.md: adjust the release dates 5541 5542Stefan Eissing (17 Jul 2023) 5543 5544- quiche: fix defects found in latest coverity report 5545 5546 Closes #11455 5547 5548Daniel Stenberg (17 Jul 2023) 5549 5550- quiche: avoid NULL deref in debug logging 5551 5552 Coverity reported "Dereference after null check" 5553 5554 If stream is NULL and the function exits, the logging must not deref it. 5555 5556 Closes #11454 5557 5558Stefan Eissing (17 Jul 2023) 5559 5560- http2: treat initial SETTINGS as a WINDOW_UPDATE 5561 5562 - refs #11426 where spurious stalls on large POST requests 5563 are reported 5564 - the issue seems to involve the following 5565 * first stream on connection adds up to 64KB of POST 5566 data, which is the max default HTTP/2 stream window size 5567 transfer is set to HOLD 5568 * initial SETTINGS from server arrive, enlarging the stream 5569 window. But no WINDOW_UPDATE is received. 5570 * curl stalls 5571 - the fix un-HOLDs a stream on receiving SETTINGS, not 5572 relying on a WINDOW_UPDATE from lazy servers 5573 5574 Closes #11450 5575 5576Daniel Stenberg (17 Jul 2023) 5577 5578- ngtcp2: assigning timeout, but value is overwritten before used 5579 5580 Reported by Coverity 5581 5582 Closes #11453 5583 5584- krb5: add typecast to please Coverity 5585 5586Derzsi Dániel (16 Jul 2023) 5587 5588- wolfssl: support setting CA certificates as blob 5589 5590 Closes #11445 5591 5592- wolfssl: detect when TLS 1.2 support is not built into wolfssl 5593 5594 Closes #11444 5595 5596Graham Campbell (15 Jul 2023) 5597 5598- CI: bump nghttp2 from 1.55.0 to 1.55.1 5599 5600 Closes #11442 5601 5602Daniel Stenberg (15 Jul 2023) 5603 5604- curl: return error when asked to use an unsupported HTTP version 5605 5606 When one of the following options are used but the libcurl in use does 5607 not support it: 5608 5609 --http2 5610 --http2-prior-knowledge 5611 --proxy-http2 5612 5613 Closes #11440 5614 5615Chris Paulson-Ellis (14 Jul 2023) 5616 5617- cf-socket: don't bypass fclosesocket callback if cancelled before connect 5618 5619 After upgrading to 8.1.2 from 7.84.0, I found that sockets were being 5620 closed without calling the fclosesocket callback if a request was 5621 cancelled after the associated socket was created, but before the socket 5622 was connected. This lead to an imbalance of fopensocket & fclosesocket 5623 callbacks, causing problems with a custom event loop integration using 5624 the multi-API. 5625 5626 This was caused by cf_socket_close() calling sclose() directly instead 5627 of calling socket_close() if the socket was not active. For regular TCP 5628 client connections, the socket is activated by cf_socket_active(), which 5629 is only called when the socket completes the connect. 5630 5631 As far as I can tell, this issue has existed since 7.88.0. That is, 5632 since the code in question was introduced by: 5633 commit 71b7e0161032927cdfb4e75ea40f65b8898b3956 5634 Author: Stefan Eissing <stefan@eissing.org> 5635 Date: Fri Dec 30 09:14:55 2022 +0100 5636 5637 lib: connect/h2/h3 refactor 5638 5639 Closes #11439 5640 5641Daniel Stenberg (13 Jul 2023) 5642 5643- tool_parsecfg: accept line lengths up to 10M 5644 5645 Bumped from 100K set in 47dd957daff9 5646 5647 Reported-by: Antoine du Hamel 5648 Fixes #11431 5649 Closes #11435 5650 5651Stefan Eissing (13 Jul 2023) 5652 5653- CI: brew fix for openssl in default path 5654 5655 If brew install/update links openssl into /usr/local, it will be found 5656 before anything we add with `-isystem path` to CPP/LDLFAGS. Get rid of 5657 that by unlinking the keg. 5658 5659 Fixes #11413 5660 Closes #11436 5661 5662Daniel Stenberg (13 Jul 2023) 5663 5664- RELEASE-NOTES: synced 5665 5666Ondřej Koláček (13 Jul 2023) 5667 5668- sectransp: fix EOF handling 5669 5670 Regression since the large refactor from 2022 5671 5672 Closes #11427 5673 5674Daniel Stenberg (13 Jul 2023) 5675 5676- checksrc: quote the file name to work with "funny" letters 5677 5678 Closes #11437 5679 5680Karthikdasari0423 (13 Jul 2023) 5681 5682- HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0 5683 5684 Follow-up to e0093b4b732f6 5685 5686 Closes #11433 5687 5688Daniel Stenberg (13 Jul 2023) 5689 5690- CURLOPT_MIMEPOST.3: clarify what setting to NULL means 5691 5692 Follow-up to e08382a208d4e480 5693 5694 Closes #11430 5695 5696Tatsuhiro Tsujikawa (12 Jul 2023) 5697 5698- ngtcp2: build with 0.17.0 and nghttp3 0.13.0 5699 5700 - ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls. 5701 5702 Closes #11428 5703 5704- CI: Bump ngtcp2, nghttp3, and nghttp2 5705 5706 Closes #11428 5707 5708James Fuller (11 Jul 2023) 5709 5710- example/maxconnects: set maxconnect example 5711 5712 Closes #11343 5713 5714Pontakorn Prasertsuk (11 Jul 2023) 5715 5716- http2: send HEADER & DATA together if possible 5717 5718 Closes #11420 5719 5720Daniel Stenberg (11 Jul 2023) 5721 5722- CI: use wolfSSL 5.6.3 in builds 5723 5724 No using master anymore 5725 5726 Closes #11424 5727 5728SaltyMilk (11 Jul 2023) 5729 5730- fopen: optimize 5731 5732 Closes #11419 5733 5734Daniel Stenberg (11 Jul 2023) 5735 5736- cmake: make use of snprintf 5737 5738 Follow-up to 935b1bd4544a23a91d68 5739 5740 Closes #11423 5741 5742Stefan Eissing (11 Jul 2023) 5743 5744- macOS: fix taget detection 5745 5746 - TARGET_OS_OSX is not always defined on macOS 5747 - this leads to missing symbol Curl_macos_init() 5748 - TargetConditionals.h seems to define these only when 5749 dynamic targets are enabled (somewhere?) 5750 - this PR fixes that on my macOS 13.4.1 5751 - I have no clue why CI builds worked without it 5752 5753 Follow-up to c7308592fb8ba213fc2c1 5754 Closes #11417 5755 5756Stan Hu (9 Jul 2023) 5757 5758- hostip.c: Move macOS-specific calls into global init call 5759 5760 https://github.com/curl/curl/pull/7121 introduced a macOS system call 5761 to `SCDynamicStoreCopyProxies`, which is invoked every time an IP 5762 address needs to be resolved. 5763 5764 However, this system call is not thread-safe, and macOS will kill the 5765 process if the system call is run first in a fork. To make it possible 5766 for the parent process to call this once and prevent the crash, only 5767 invoke this system call in the global initialization routine. 5768 5769 In addition, this change is beneficial because it: 5770 5771 1. Avoids extra macOS system calls for every IP lookup. 5772 2. Consolidates macOS-specific initialization in a separate file. 5773 5774 Fixes #11252 5775 Closes #11254 5776 5777Daniel Stenberg (9 Jul 2023) 5778 5779- docs: use a space after RFC when spelling out RFC numbers 5780 5781 Closes #11382 5782 5783Margu (9 Jul 2023) 5784 5785- imap-append.c: update to make it more likely to work 5786 5787 Fixes #10300 5788 Closes #11397 5789 5790Emanuele Torre (9 Jul 2023) 5791 5792- tool_writeout_json: fix encoding of control characters 5793 5794 Control characters without a special escape sequence e.g. %00 or %06 5795 were being encoded as "u0006" instead of "\u0006". 5796 5797 Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858 5798 Closes #11414 5799 5800Stefan Eissing (9 Jul 2023) 5801 5802- http3/ngtcp2: upload EAGAIN handling 5803 5804 - refs #11389 where IDLE timeouts on upload are reported 5805 - reword ngtcp2 expiry handling to apply to both send+recv 5806 calls into the filter 5807 - EAGAIN uploads similar to the recent changes in HTTP/2, e.g. 5808 report success only when send data was ACKed. 5809 - HOLD sending of EAGAINed uploads to avoid cpu busy loops 5810 - rename internal function for consistency with HTTP/2 5811 implementation 5812 5813 Fixes #11389 5814 Closes #11390 5815 5816Brian Nixon (9 Jul 2023) 5817 5818- tool_easysrc.h: correct `easysrc_perform` for `CURL_DISABLE_LIBCURL_OPTION` 5819 5820 Closes #11398 5821 5822Daniel Stenberg (9 Jul 2023) 5823 5824- RELEASE-NOTES: synced 5825 5826- transfer: clear credentials when redirecting to absolute URL 5827 5828 Make sure the user and password for the second request is taken from the 5829 redirected-to URL. 5830 5831 Add test case 899 to verify. 5832 5833 Reported-by: James Lucas 5834 Fixes #11410 5835 Closes #11412 5836 5837Stefan Eissing (8 Jul 2023) 5838 5839- hyper: fix EOF handling on input 5840 5841 We ran out of disc space due to an infinite loop with debug logging 5842 5843 Fixes #11377 5844 Closes #11385 5845 Reported-by: Dan Fandrich 5846 5847- http2: raise header limitations above and beyond 5848 5849 - not quite to infinity 5850 - rewrote the implementation of our internal HTTP/1.x request 5851 parsing to work with very large lines using dynbufs. 5852 - new default limit is `DYN_HTTP_REQUEST`, aka 1MB, which 5853 is also the limit of curl's general HTTP request processing. 5854 5855 Fixes #11405 5856 Closes #11407 5857 5858Juan Cruz Viotti (8 Jul 2023) 5859 5860- curl_easy_nextheader.3: add missing open parenthesis examples 5861 5862 Closes #11409 5863 Signed-off-by: Juan Cruz Viotti <jv@jviotti.com> 5864 5865Dan Fandrich (7 Jul 2023) 5866 5867- CI: enable verbose test output on pytest 5868 5869 This shows individual pass/fail status on tests and makes this output 5870 consistent with other jobs' pytest invocations. 5871 5872Stefan Eissing (28 Jun 2023) 5873 5874- http2: fix crash in handling stream weights 5875 5876 - Delay the priority handling until the stream has been opened. 5877 5878 - Add test2404 to reproduce and verify. 5879 5880 Weights may change "on the run", which is why there are checks in 5881 general egress handling. These must not trigger when the stream has not 5882 been opened yet. 5883 5884 Reported-by: jbgoog@users.noreply.github.com 5885 5886 Fixes https://github.com/curl/curl/issues/11379 5887 Closes https://github.com/curl/curl/pull/11384 5888 5889- tests/http: Add mod_h2 directive `H2ProxyRequests` 5890 5891 master of mod_h2 now requires H2ProxyRequests directives for forward 5892 proxying with HTTP/2 to work. 5893 5894 Ref: https://github.com/icing/mod_h2/commit/3897a7086 5895 5896 Closes https://github.com/curl/curl/pull/11392 5897 5898Dan Fandrich (28 Jun 2023) 5899 5900- CI: make Appveyor job names unique 5901 5902 Two otherwise identical mingw-w64 jobs now have their differing compiler 5903 versions mentioned in their names. 5904 5905Sheshadri.V (25 Jun 2023) 5906 5907- curl.h: include <sys/select.h> for vxworks 5908 5909 Closes #11356 5910 5911Dan Fandrich (24 Jun 2023) 5912 5913- CI: enable parallel make in more builds 5914 5915 Most CI services provide at least two cores, so enable parallel make 5916 jobs to take advantage of that for builds. Some dependencies aren't safe 5917 to build in parallel so leave those as-is. Also, rename a few 5918 workflows to eliminate duplicate names and provide a better idea what 5919 they're about. 5920 5921- CI: don't install impacket if tests are not run 5922 5923 It just wastes time and bandwidth and isn't even used. 5924 5925divinity76 (24 Jun 2023) 5926 5927- configure: the --without forms of the options are also gone 5928 5929 --without-darwin-ssl and --without-metalink 5930 5931 Closes #11378 5932 5933Daniel Stenberg (23 Jun 2023) 5934 5935- configure: add check for ldap_init_fd 5936 5937 ... as otherwise the configure script will say it is OpenLDAP in the 5938 summary, but not set the USE_OPENLDAP define, therefor not using the 5939 intended OpenLDAP code paths. 5940 5941 Regression since 4d7385446 (7.85.0) 5942 Fixes #11372 5943 Closes #11374 5944 Reported-by: vlkl-sap on github 5945 5946Michał Petryka (23 Jun 2023) 5947 5948- cmake: stop CMake from quietly ignoring missing Brotli 5949 5950 The CMake project was set to `QUIET` for Brotli instead of 5951 `REQUIRED`. This makes builds unexpectedly ignore missing Brotli even 5952 when `CURL_BROTLI` is enabled. 5953 5954 Closes #11376 5955 5956Emanuele Torre (22 Jun 2023) 5957 5958- docs: add more .IP after .RE to fix indentation of generate paragraphs 5959 5960 follow-up from 099f41e097c030077b8ec078f2c2d4038d31353b 5961 5962 I just thought of checking all the other files with .RE, and I found 6 5963 other files that were missing .IP at the end. 5964 5965 Closes #11375 5966 5967Stefan Eissing (22 Jun 2023) 5968 5969- http2: h2 and h2-PROXY connection alive check fixes 5970 5971 - fix HTTP/2 check to not declare a connection dead when 5972 the read attempt results in EAGAIN 5973 - add H2-PROXY alive check as for HTTP/2 that was missing 5974 and is needed 5975 - add attach/detach around Curl_conn_is_alive() and remove 5976 these in filter methods 5977 - add checks for number of connections used in some test_10 5978 proxy tunneling tests 5979 5980 Closes #11368 5981 5982- http2: error stream resets with code CURLE_HTTP2_STREAM 5983 5984 - refs #11357, where it was reported that HTTP/1.1 downgrades 5985 no longer works 5986 - fixed with suggested change 5987 - added test_05_03 and a new handler in the curltest module 5988 to reproduce that downgrades work 5989 5990 Fixes #11357 5991 Closes #11362 5992 Reported-by: Jay Satiro 5993 5994Daniel Stenberg (22 Jun 2023) 5995 5996- connect-timeout.d: mention that the DNS lookup is included 5997 5998 Closes #11370 5999 6000Emanuele Torre (22 Jun 2023) 6001 6002- quote.d: fix indentation of generated paragraphs 6003 6004 quote.d was missing a .IP at the end which caused the paragraphs 6005 generated for See-also, Multi, and Example to not be indented correctly. 6006 6007 I also remove a redundant "This option can be used multiple times.", and 6008 replaced .IP "item" with .TP .B "item" to make more clear which lines 6009 are part of the list of commands and which aren't. 6010 6011 Closes #11371 6012 6013Paul Wise (22 Jun 2023) 6014 6015- checksrc: modernise perl file open 6016 6017 Use regular variables and separate file open modes from filenames. 6018 6019 Suggested by perlcritic 6020 6021 Copied from https://github.com/curl/trurl/commit/f2784a9240f47ee28a845 6022 6023 Closes #11358 6024 6025Dan Fandrich (21 Jun 2023) 6026 6027- runtests: work around a perl without SIGUSR1 6028 6029 At least msys2 perl v5.32.1 doesn't seem to define this signal. Since 6030 this signal is only used for debugging, just ignore if setting it fails. 6031 6032 Reported-by: Marcel Raad 6033 Fixes #11350 6034 Closes #11366 6035 6036- runtests: include missing valgrind package 6037 6038 use valgrind was missing which caused torture tests with valgrind 6039 enabled to fail. 6040 6041 Reported-by: Daniel Stenberg 6042 Fixes #11364 6043 Closes #11365 6044 6045- runtests: use more consistent failure lines 6046 6047 After a test failure log a consistent log message to make it easier to 6048 parse the log file. Also, log a consistent message with "ignored" for 6049 failures that cause the test to be not considered at all. These should 6050 perhaps be counted in the skipped category, but this commit does not 6051 change that behaviour. 6052 6053- runtests: consistently write the test check summary block 6054 6055 The memory check character was erroneously omitted if the memory 6056 checking file was not available for some reason, making the block of 6057 characters an inconsistent length. 6058 6059- test2600: fix the description 6060 6061 It looks like it was cut-and-pasted. 6062 6063 Closes #11354 6064 6065Daniel Stenberg (21 Jun 2023) 6066 6067- TODO: "Support HTTP/2 for HTTP(S) proxies" *done* 6068 6069humbleacolyte (21 Jun 2023) 6070 6071- cf-socket: move ctx declaration under HAVE_GETPEERNAME 6072 6073 Closes #11352 6074 6075Daniel Stenberg (20 Jun 2023) 6076 6077- RELEASE-NOTES: synced 6078 6079- example/connect-to: show CURLOPT_CONNECT_TO 6080 6081 Closes #11340 6082 6083Stefan Eissing (20 Jun 2023) 6084 6085- hyper: unslow 6086 6087 - refs #11203 where hyper was reported as being slow 6088 - fixes hyper_executor_poll to loop until it is out of 6089 tasks as advised by @seanmonstar in https://github.com/hyperium/hyper/issue 6090 s/3237 6091 - added a fix in hyper io handling for detecting EAGAIN 6092 - added some debug logs to see IO results 6093 - pytest http/1.1 test cases pass 6094 - pytest h2 test cases fail on connection reuse. HTTP/2 6095 connection reuse does not seem to work. Hyper submits 6096 a request on a reused connection, curl's IO works and 6097 thereafter hyper declares `Hyper: [1] operation was canceled: connection cl 6098 osed` 6099 on stderr without any error being logged before. 6100 6101 Fixes #11203 6102 Reported-by: Gisle Vanem 6103 Advised-by: Sean McArthur 6104 Closes #11344 6105 6106- HTTP/2: upload handling fixes 6107 6108 - fixes #11242 where 100% CPU on uploads was reported 6109 - fixes possible stalls on last part of a request body when 6110 that information could not be fully send on the connection 6111 due to an EAGAIN 6112 - applies the same EGAIN handling to HTTP/2 proxying 6113 6114 Reported-by: Sergey Alirzaev 6115 Fixed #11242 6116 Closes #11342 6117 6118Daniel Stenberg (20 Jun 2023) 6119 6120- example/opensslthreadlock: remove 6121 6122 This shows how to setup OpenSSL mutex callbacks, but this is not 6123 necessary since OpenSSL 1.1.0 - meaning that no currently supported 6124 OpenSSL version requires this anymore 6125 6126 Closes #11341 6127 6128Dan Fandrich (19 Jun 2023) 6129 6130- libtest: display the times after a test timeout error 6131 6132 This is to help with test failure debugging. 6133 6134 Ref: #11328 6135 Closes #11329 6136 6137- test2600: bump a test timeout 6138 6139 Case 1 failed at least once on GHA by going 30 msec too long. 6140 6141 Ref: #11328 6142 6143- runtests: better detect and handle pipe errors in the controller 6144 6145 Errors reading and writing to the pipes are now better detected and 6146 propagated up to the main test loop so it can be cleanly shut down. Such 6147 errors are usually due to a runner dying so it doesn't make much sense 6148 to try to continue the test run. 6149 6150- runtests: cleanly abort the runner if the controller dies 6151 6152 If the controller dies unexpectedly, have the runner stop its servers 6153 and exit cleanly. Otherwise, the orphaned servers will stay running in 6154 the background. 6155 6156- runtests: improve error logging 6157 6158 Give more information about test harness error conditions to help figure 6159 out what might be wrong. Print some internal test state when SIGUSR1 is 6160 sent to runtests.pl. 6161 6162 Ref: #11328 6163 6164- runtests: better handle ^C during slow tests 6165 6166 Since the SIGINT handler now just sets a flag that must be checked in the 6167 main controller loop, make sure that runs periodically. Rather than 6168 blocking on a response from a test runner near the end of the test run, 6169 add a short timeout to allow it. 6170 6171- runtests: rename server command file 6172 6173 The name ftpserver.cmd was historical and has been used for more than 6174 ftp for many years now. Rename it to plain server.cmd to reduce 6175 confusion. 6176 6177- tests: improve reliability of TFTP tests 6178 6179 Stop checking the timeout used by the client under test (for most 6180 tests). The timeout will change if the TFTP test server is slow (such as 6181 happens on an overprovisioned CI server) because the client will retry 6182 and reduce its timeout, and the actual value is not important for most 6183 tests. 6184 6185 test285 is changed a different way, by increasing the connect timeout. 6186 This improves test coverage by allowing the changed timeout value to be 6187 checked, but improves reliability with a carefully-chosen timeout that 6188 not only allows twice the time to respond as before, but also allows 6189 several retries before the client will change its timeout value. 6190 6191 Ref: #11328 6192 6193Daniel Stenberg (19 Jun 2023) 6194 6195- cf-socket: skip getpeername()/getsockname for TFTP 6196 6197 Since the socket is not connected then the call fails. When the call 6198 fails, failf() is called to write an error message that is then 6199 surviving and is returned when the *real* error occurs later. The 6200 earlier, incorrect, error therefore hides the actual error message. 6201 6202 This could be seen in stderr for test 1007 6203 6204 Test 1007 has now been extended to verify the stderr message. 6205 6206 Closes #11332 6207 6208- example/crawler: make it use a few more options 6209 6210 For show, but reasonable 6211 6212- libcurl-ws.3: mention raw mode 6213 6214 Closes #11339 6215 6216- example/default-scheme: set the default scheme for schemeless URLs 6217 6218 Closes #11338 6219 6220- example/hsts-preload: show one way to HSTS preload 6221 6222 Closes #11337 6223 6224- examples/http-options: show how to send "OPTIONS *" 6225 6226 With CURLOPT_REQUEST_TARGET. 6227 6228 Also add use of CURLOPT_QUICK_EXIT to show. 6229 6230 Closes #11333 6231 6232- examples: make use of CURLOPT_(REDIR_|)PROTOCOLS_STR 6233 6234 To show how to use them 6235 6236 Closes #11334 6237 6238- examples/smtp-mime: use CURLOPT_MAIL_RCPT_ALLOWFAILS 6239 6240 For show 6241 6242 Closes #11335 6243 6244- http: rectify the outgoing Cookie: header field size check 6245 6246 Previously it would count the size of the entire outgoing request and 6247 not just the size of only the Cookie: header field - which was the 6248 intention. 6249 6250 This could make the check be off by several hundred bytes in some cases. 6251 6252 Closes #11331 6253 6254Jay Satiro (17 Jun 2023) 6255 6256- lib: fix some format specifiers 6257 6258 - Use CURL_FORMAT_CURL_OFF_T where %zd was erroneously used for some 6259 curl_off_t variables. 6260 6261 - Use %zu where %zd was erroneously used for some size_t variables. 6262 6263 Prior to this change some of the Windows CI tests were failing because 6264 in Windows 32-bit targets have a 32-bit size_t and a 64-bit curl_off_t. 6265 When %zd was used for some curl_off_t variables then only the lower 6266 32-bits was read and the upper 32-bits would be read for part or all of 6267 the next specifier. 6268 6269 Fixes https://github.com/curl/curl/issues/11327 6270 Closes https://github.com/curl/curl/pull/11321 6271 6272Marcel Raad (16 Jun 2023) 6273 6274- test427: add `cookies` feature and keyword 6275 6276 This test doesn't work with `--disable-cookies`. 6277 6278 Closes https://github.com/curl/curl/pull/11320 6279 6280Chris Talbot (15 Jun 2023) 6281 6282- imap: Provide method to disable SASL if it is advertised 6283 6284 - Implement AUTH=+LOGIN for CURLOPT_LOGIN_OPTIONS to prefer plaintext 6285 LOGIN over SASL auth. 6286 6287 Prior to this change there was no method to be able to fall back to 6288 LOGIN if an IMAP server advertises SASL capabilities. However, this may 6289 be desirable for e.g. a misconfigured server. 6290 6291 Per: https://www.ietf.org/rfc/rfc5092.html#section-3.2 6292 6293 ";AUTH=<enc-auth-type>" looks to be the correct way to specify what 6294 authenication method to use, regardless of SASL or not. 6295 6296 Closes https://github.com/curl/curl/pull/10041 6297 6298Daniel Stenberg (15 Jun 2023) 6299 6300- RELEASE-NOTES: synced 6301 6302- examples/multi-debugcallback.c: avoid the bool typedef 6303 6304 Apparently this cannot be done in c23 6305 6306 Reported-by: Cristian Rodríguez 6307 Fixes #11299 6308 Closes #11319 6309 6310- docs/libcurl/libcurl.3: cleanups and improvements 6311 6312 Closes #11317 6313 6314- libcurl-ws.3: fix typo 6315 6316- curl_ws_*.3: enhance 6317 6318 - all: SEE ALSO the libcurl-ws man page 6319 - send: add example and return value information 6320 - meta: mention that the returned data is read-only 6321 6322 Closes #11318 6323 6324- docs/libcurl/libcurl-ws.3: see also CURLOPT_WS_OPTIONS 6325 6326- docs/libcurl/libcurl-ws.3: minor polish 6327 6328- libcurl-ws.3. WebSocket API overview 6329 6330 Closes #11314 6331 6332- libcurl-url.3: also mention CURLUPART_ZONEID 6333 6334 ... and sort the two part-using lists alphabetically 6335 6336Marcel Raad (14 Jun 2023) 6337 6338- fopen: fix conversion warning on 32-bit Android 6339 6340 When building for 32-bit ARM or x86 Android, `st_mode` is defined as 6341 `unsigned int` instead of `mode_t`, resulting in a 6342 -Wimplicit-int-conversion clang warning because `mode_t` is 6343 `unsigned short`. Add a cast to silence the warning. 6344 6345 Ref: https://android.googlesource.com/platform/bionic/+/refs/tags/ndk-r25c/li 6346 bc/include/sys/stat.h#86 6347 Closes https://github.com/curl/curl/pull/11313 6348 6349- http2: fix variable type 6350 6351 `max_recv_speed` is `curl_off_t`, so using `size_t` might result in 6352 -Wconversion GCC warnings for 32-bit `size_t`. Visible in the NetBSD 6353 ARM autobuilds. 6354 6355 Closes https://github.com/curl/curl/pull/11312 6356 6357Daniel Stenberg (13 Jun 2023) 6358 6359- vtls: fix potentially uninitialized local variable warnings 6360 6361 Follow-up from a4a5e438ae533c 6362 6363 Closes #11310 6364 6365- timeval: use CLOCK_MONOTONIC_RAW if available 6366 6367 Reported-by: Harry Sintonen 6368 Ref: #11288 6369 Closes #11291 6370 6371Stefan Eissing (12 Jun 2023) 6372 6373- tool: add curl command line option `--trace-ids` 6374 6375 - added and documented --trace-ids to prepend (after the timestamp) 6376 the transfer and connection identifiers to each verbose log line 6377 - format is [n-m] with `n` being the transfer id and `m` being the 6378 connection id. In case there is not valid connection id, print 'x'. 6379 - Log calls with a handle that has no transfer id yet, are written 6380 without any ids. 6381 6382 Closes #11185 6383 6384- lib: add CURLINFO_CONN_ID and CURLINFO_XFER_ID 6385 6386 - add an `id` long to Curl_easy, -1 on init 6387 - once added to a multi (or its own multi), it gets 6388 a non-negative number assigned by the connection cache 6389 - `id` is unique among all transfers using the same 6390 cache until reaching LONG_MAX where it will wrap 6391 around. So, not unique eternally. 6392 - CURLINFO_CONN_ID returns the connection id attached to 6393 data or, if none present, data->state.lastconnect_id 6394 - variables and type declared in tool for write out 6395 6396 Closes #11185 6397 6398Daniel Stenberg (12 Jun 2023) 6399 6400- CURLOPT_INFILESIZE.3: mention -1 triggers chunked 6401 6402 Ref: #11300 6403 Closes #11304 6404 6405Philip Heiduck (12 Jun 2023) 6406 6407- CI: openssl-3.0.9+quic 6408 6409 Closes #11296 6410 6411Karthikdasari0423 (12 Jun 2023) 6412 6413- HTTP3.md: update openssl version 6414 6415 Closes #11297 6416 6417Daniel Stenberg (12 Jun 2023) 6418 6419- vtls: avoid memory leak if sha256 call fails 6420 6421 ... in the pinned public key handling function. 6422 6423 Reported-by: lizhuang0630 on github 6424 Fixes #11306 6425 Closes #11307 6426 6427- examples/ipv6: disable on win32 6428 6429 I can't make if_nametoindex() work there 6430 6431 Follow-up to c23dc42f3997acf23 6432 6433 Closes #11305 6434 6435- tool_operate: allow cookie lines up to 8200 bytes 6436 6437 Since this option might set multiple cookies in the same line, it does 6438 not make total sense to cap this at 4096 bytes, which is the limit for a 6439 single cookie name or value. 6440 6441 Closes #11303 6442 6443- test427: verify sending more cookies than fit in a 8190 bytes line 6444 6445 curl will then only populate the header with cookies that fit, dropping 6446 ones that otherwise would have been sent 6447 6448 Ref: https://curl.se/mail/lib-2023-06/0020.html 6449 6450 Closes #11303 6451 6452- testutil: allow multiple %-operators on the same line 6453 6454 Closes #11303 6455 6456Oleg Jukovec (12 Jun 2023) 6457 6458- docs: update CURLOPT_UPLOAD.3 6459 6460 The behavior of CURLOPT_UPLOAD differs from what is described in the 6461 documentation. The option automatically adds the 'Transfer-Encoding: 6462 chunked' header if the upload size is unknown. 6463 6464 Closes #11300 6465 6466Daniel Stenberg (12 Jun 2023) 6467 6468- RELEASE-NOTES: synced 6469 6470- CURLOPT_AWS_SIGV4.3: remove unused variable from example 6471 6472 Closes #11302 6473 6474- examples/https.c: use CURLOPT_CA_CACHE_TIMEOUT 6475 6476 for demonstration purposes 6477 6478 Closes #11290 6479 6480- example/ipv6: feature CURLOPT_ADDRESS_SCOPE in use 6481 6482 Closes #11282 6483 6484Karthikdasari0423 (10 Jun 2023) 6485 6486- docs: Update HTTP3.md for newer ngtcp2 and nghttp3 6487 6488 Follow-up to fb9b9b58 6489 6490 Ref: #11184 6491 Closes #11295 6492 6493Dan Fandrich (10 Jun 2023) 6494 6495- docs: update the supported ngtcp2 and nghttp3 versions 6496 6497 Follow-up to cae9d10b 6498 6499 Ref: #11184 6500 Closes #11294 6501 6502- tests: fix error messages & handling around sockets 6503 6504 The wrong error code was checked on Windows on UNIX socket failures, 6505 which could have caused all UNIX sockets to be reported as having 6506 errored and the tests therefore skipped. Also, a useless error message 6507 was displayed on socket errors in many test servers on Windows because 6508 strerror() doesn't work on WinSock error codes; perror() is overridden 6509 there to work on all errors and is used instead. 6510 6511 Ref #11258 6512 Closes #11265 6513 6514Daniel Stenberg (9 Jun 2023) 6515 6516- CURLOPT_SSH_PRIVATE_KEYFILE.3: expand on the file search 6517 6518 Reported-by: atjg on github 6519 Ref: #11287 6520 Closes #11289 6521 6522Stefan Eissing (9 Jun 2023) 6523 6524- ngtcp2: use ever increasing timestamp in io 6525 6526 - ngtcp2 v0.16.0 asserts that timestamps passed to its function 6527 will only ever increase. 6528 - Use a context shared between ingress/egress operations that 6529 uses a shared timestamp, regularly updated during calls. 6530 6531 Closes #11288 6532 6533Daniel Stenberg (9 Jun 2023) 6534 6535- GHA: use nghttp2 1.54.0 for the ngtcp2 jobs 6536 6537Philip Heiduck (9 Jun 2023) 6538 6539- GHA: ngtcp2: use 0.16.0 and nghttp3 0.12.0 6540 6541Daniel Stenberg (9 Jun 2023) 6542 6543- ngtcp2: build with 0.16.0 and nghttp3 0.12.0 6544 6545 - moved to qlog_write 6546 - crypto => encryption 6547 - CRYPTO => ENCRYPTION 6548 - removed "_is_" 6549 - ngtcp2_conn_shutdown_stream_read and 6550 ngtcp2_conn_shutdown_stream_write got flag arguments 6551 - the nghttp3_callbacks struct got a recv_settings callback 6552 6553 Closes #11184 6554 6555- example/http2-download: set CURLOPT_BUFFERSIZE 6556 6557 Primarily because no other example sets it, and remove the disabling of 6558 the certificate check because we should not recommend that. 6559 6560 Closes #11284 6561 6562- example/crawler: also set CURLOPT_AUTOREFERER 6563 6564 Could make sense, and it was not used in any example before. 6565 6566 Closes #11283 6567 6568Wyatt OʼDay (9 Jun 2023) 6569 6570- tls13-ciphers.d: include Schannel 6571 6572 Closes #11271 6573 6574Daniel Stenberg (9 Jun 2023) 6575 6576- curl_pushheader_byname/bynum.3: document in their own man pages 6577 6578 These two functions were added in 7.44.0 when CURLMOPT_PUSHFUNCTION was 6579 introduced but always lived a life in the shadows, embedded in the 6580 CURLMOPT_PUSHFUNCTION man page. Until now. 6581 6582 It makes better sense and gives more visibility to document them in 6583 their own stand-alone man pages. 6584 6585 Closes #11286 6586 6587- curl_mprintf.3: minor fix of the example 6588 6589- curl_url_set: enforce the max string length check for all parts 6590 6591 Update the docs and test 1559 accordingly 6592 6593 Closes #11273 6594 6595- examples/ftpuploadresume.c: add use of CURLOPT_ACCEPTTIMEOUT_MS 6596 6597 For show 6598 6599 Closes #11277 6600 6601- examples/unixsocket.c: example using CURLOPT_UNIX_SOCKET_PATH 6602 6603 and alternatively CURLOPT_ABSTRACT_UNIX_SOCKET 6604 6605 Closes #11276 6606 6607Anssi Kolehmainen (8 Jun 2023) 6608 6609- docs: fix missing parameter names in examples 6610 6611 Closes #11278 6612 6613Daniel Stenberg (8 Jun 2023) 6614 6615- urlapi: have *set(PATH) prepend a slash if one is missing 6616 6617 Previously the code would just do that for the path when extracting the 6618 full URL, which made a subsequent curl_url_get() of the path to 6619 (unexpectedly) still return it without the leading path. 6620 6621 Amend lib1560 to verify this. Clarify the curl_url_set() docs about it. 6622 6623 Bug: https://curl.se/mail/lib-2023-06/0015.html 6624 Closes #11272 6625 Reported-by: Pedro Henrique 6626 6627Dan Fandrich (7 Jun 2023) 6628 6629- runtests; give each server a unique log lock file 6630 6631 Logs are written by several servers and all of them must be finished 6632 writing before the test results can be determined. This means each 6633 server must have its own lock file rather than sharing a single one, 6634 which is how it was done up to now. Previously, the first server to 6635 complete a test would clear the lock before the other server was done, 6636 which caused flaky tests. 6637 6638 Lock files are now all found in their own directory, so counting locks 6639 equals counting the files in that directory. The result is that the 6640 proxy logs are now reliably written which actually changes the expected 6641 output for two tests. 6642 6643 Fixes #11231 6644 Closes #11259 6645 6646- runtests: make test file directories in log/N 6647 6648 Test files in subdirectories were not created after parallel test log 6649 directories were moved down a level due to a now-bad comparison. 6650 6651 Follow-up to 92d7dd39 6652 6653 Ref #11264 6654 Closes #11267 6655 6656Daniel Stenberg (7 Jun 2023) 6657 6658- ws: make the curl_ws_meta() return pointer a const 6659 6660 The returned info is read-only for the user. 6661 6662 Closes #11261 6663 6664- RELEASE-NOTES: synced 6665 6666- runtests: move parallel log dirs from logN to log/N 6667 6668 Having several hundreds of them in there gets annoying. 6669 6670 Closes #11264 6671 6672Dan Fandrich (7 Jun 2023) 6673 6674- test447: move the test file into %LOGDIR 6675 6676Viktor Szakats (7 Jun 2023) 6677 6678- cmake: add support for "unity" builds 6679 6680 Aka "jumbo" or "amalgamation" builds. It means to compile all sources 6681 per target as a single C source. This is experimental. 6682 6683 You can enable it by passing `-DCMAKE_UNITY_BUILD=ON` to cmake. 6684 It requires CMake 3.16 or newer. 6685 6686 It makes builds (much) faster, allows for better optimizations and tends 6687 to promote less ambiguous code. 6688 6689 Also add a new AppVeyor CI job and convert an existing one to use 6690 "unity" mode (one MSVC, one MinGW), and enable it for one macOS CI job. 6691 6692 Fix related issues: 6693 - add missing include guard to `easy_lock.h`. 6694 - rename static variables and functions (and a macro) with names reused 6695 across sources, or shadowed by local variables. 6696 - add an `#undef` after use. 6697 - add a missing `#undef` before use. 6698 - move internal definitions from `ftp.h` to `ftp.c`. 6699 - `curl_memory.h` fixes to make it work when included repeatedly. 6700 - stop building/linking curlx bits twice for a static-mode curl tool. 6701 These caused doubly defined symbols in unity builds. 6702 - silence missing extern declarations compiler warning for ` _CRT_glob`. 6703 - fix extern declarations for `tool_freq` and `tool_isVistaOrGreater`. 6704 - fix colliding static symbols in debug mode: `debugtime()` and 6705 `statename`. 6706 - rename `ssl_backend_data` structure to unique names for each 6707 TLS-backend, along with the `ssl_connect_data` struct member 6708 referencing them. This required adding casts for each access. 6709 - add workaround for missing `[P]UNICODE_STRING` types in certain Windows 6710 builds when compiling `lib/ldap.c`. To support "unity" builds, we had 6711 to enable `SCHANNEL_USE_BLACKLISTS` for Schannel (a Windows 6712 `schannel.h` option) _globally_. This caused an indirect inclusion of 6713 Windows `schannel.h` from `ldap.c` via `winldap.h` to have it enabled 6714 as well. This requires `[P]UNICODE_STRING` types, which is apperantly 6715 not defined automatically (as seen with both MSVS and mingw-w64). 6716 This patch includes `<subauth.h>` to fix it. 6717 Ref: https://github.com/curl/curl/runs/13987772013 6718 Ref: https://dev.azure.com/daniel0244/curl/_build/results?buildId=15827&vie 6719 w=logs&jobId=2c9f582d-e278-56b6-4354-f38a4d851906&j=2c9f582d-e278-56b6-4354-f 6720 38a4d851906&t=90509b00-34fa-5a81-35d7-5ed9569d331c 6721 - tweak unity builds to compile `lib/memdebug.c` separately in memory 6722 trace builds to avoid PP confusion. 6723 - force-disable unity for test programs. 6724 - do not compile and link libcurl sources to libtests _twice_ when libcurl 6725 is built in static mode. 6726 6727 KNOWN ISSUES: 6728 - running tests with unity builds may fail in cases. 6729 - some build configurations/env may not compile in unity mode. E.g.: 6730 https://ci.appveyor.com/project/curlorg/curl/builds/47230972/job/51wfesgnfu 6731 auwl8q#L250 6732 6733 Ref: https://github.com/libssh2/libssh2/issues/1034 6734 Ref: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html 6735 Ref: https://en.wikipedia.org/wiki/Unity_build 6736 6737 Closes #11095 6738 6739Daniel Stenberg (7 Jun 2023) 6740 6741- examples/websocket.c: websocket example using CONNECT_ONLY 6742 6743 Closes #11262 6744 6745- websocket-cb: example doing WebSocket download using callback 6746 6747 Very basic 6748 6749 Closes #11260 6750 6751- test/.gitignore: ignore log* 6752 6753Dan Fandrich (5 Jun 2023) 6754 6755- runtests: document the -j parallel testing option 6756 6757 Reported-by: Daniel Stenberg 6758 Ref: #10818 6759 Closes #11255 6760 6761- runtests: create multiple test runners when requested 6762 6763 Parallel testing is enabled by using a nonzero value for the -j option 6764 to runtests.pl. Performant values seem to be about 7*num CPU cores, or 6765 1.3*num CPU cores if Valgrind is in use. 6766 6767 Flaky tests due to improper log locking (bug #11231) are exacerbated 6768 while parallel testing, so it is not enabled by default yet. 6769 6770 Fixes #10818 6771 Closes #11246 6772 6773- runtests: handle repeating tests in multiprocess mode 6774 6775 Such as what happens with the --repeat option. Some functions are 6776 changed to pass the runner ID instead of relying on the non-unique test 6777 number. 6778 6779 Ref: #10818 6780 6781- runtests: buffer logmsg while running singletest() 6782 6783 This allows all messages relating to a single test case to be displayed 6784 together at the end of the test. 6785 6786 Ref: #10818 6787 6788- runtests: call initserverconfig() in the runner 6789 6790 This must be done so variables pick up the runner's unique $LOGDIR. 6791 6792 Ref: #10818 6793 6794- runtests: use a per-runner random seed 6795 6796 Each runner needs a unique random seed to reduce the chance of port 6797 number collisions. The new scheme uses a consistent per-runner source of 6798 randomness which results in deterministic behaviour, as it did before. 6799 6800 Ref: #10818 6801 6802- runtests: complete main test loop refactor for multiple runners 6803 6804 The main test loop is now able to handle multiple runners, or no 6805 additional runner processes at all. At most one process is still 6806 created, however. 6807 6808 Ref: #10818 6809 6810- runtests: prepare main test loop for multiple runners 6811 6812 Some variables are expanded to arrays and hashes so that multiple 6813 runners can be used for running tests. 6814 6815 Ref: #10818 6816 6817Stefan Eissing (5 Jun 2023) 6818 6819- bufq: make write/pass methods more robust 6820 6821 - related to #11242 where curl enters busy loop when 6822 sending http2 data to the server 6823 6824 Closes #11247 6825 6826Boris Verkhovskiy (5 Jun 2023) 6827 6828- tool_getparam: fix comment 6829 6830 Closes #11253 6831 6832Raito Bezarius (5 Jun 2023) 6833 6834- haproxy: add --haproxy-clientip flag to spoof client IPs 6835 6836 CURLOPT_HAPROXY_CLIENT_IP in the library 6837 6838 Closes #10779 6839 6840Daniel Stenberg (5 Jun 2023) 6841 6842- curl: add --ca-native and --proxy-ca-native 6843 6844 These are two boolean options to ask curl to use the native OS's CA 6845 store when verifying TLS servers. For peers and for proxies 6846 respectively. 6847 6848 They currently only have an effect for curl on Windows when built to use 6849 OpenSSL for TLS. 6850 6851 Closes #11049 6852 6853Viktor Szakats (5 Jun 2023) 6854 6855- build: drop unused/redundant `HAVE_WINLDAP_H` 6856 6857 Sources did not use it. Autotools used it when checking for the 6858 `winldap` library, which is redundant. 6859 6860 With CMake, detection was broken: 6861 ``` 6862 Run Build Command(s):/usr/local/Cellar/cmake/3.26.3/bin/cmake -E env VERBOSE= 6863 1 /usr/bin/make -f Makefile cmTC_2d8fe/fast && /Library/Developer/CommandLine 6864 Tools/usr/bin/make -f CMakeFiles/cmTC_2d8fe.dir/build.make CMakeFiles/cmTC_2 6865 d8fe.dir/build 6866 Building C object CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj 6867 /usr/local/opt/llvm/bin/clang --target=x86_64-w64-mingw32 --sysroot=/usr/loca 6868 l/opt/mingw-w64/toolchain-x86_64 -D_WINSOCKAPI_="" -I/my/quictls/x64-ucrt/usr 6869 /include -I/my/zlib/x64-ucrt/usr/include -I/my/brotli/x64-ucrt/usr/include -W 6870 no-unused-command-line-argument -D_UCRT -DCURL_HIDDEN_SYMBOLS -DHAVE_SSL_SE 6871 T0_WBIO -DHAS_ALPN -DNGHTTP2_STATICLIB -DNGHTTP3_STATICLIB -DNGTCP2_STATICLIB 6872 -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static-libgcc -lucrt -Wextra -Wall -p 6873 edantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmi 6874 ssing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-ari 6875 th -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Wcast-align -Wde 6876 claration-after-statement -Wempty-body -Wendif-labels -Wfloat-equal -Wignored 6877 -qualifiers -Wno-format-nonliteral -Wno-sign-conversion -Wno-system-headers - 6878 Wstrict-prototypes -Wtype-limits -Wvla -Wshift-sign-overflow -Wshorten-64-to- 6879 32 -Wdouble-promotion -Wenum-conversion -Wunused-const-variable -Wcomma -Wmis 6880 sing-variable-declarations -Wassign-enum -Wextra-semi-stmt -MD -MT CMakeFile 6881 s/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -MF CMakeFiles/cmTC_2d8fe.dir/HAVE_WINL 6882 DAP_H.c.obj.d -o CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -c /my/curl/b 6883 ld-cmake-llvm-x64-shared/CMakeFiles/CMakeScratch/TryCompile-3JP6dR/HAVE_WINLD 6884 AP_H.c 6885 In file included from /my/curl/bld-cmake-llvm-x64-shared/CMakeFiles/CMakeScra 6886 tch/TryCompile-3JP6dR/HAVE_WINLDAP_H.c:2: 6887 In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi 6888 ngw32/include/winldap.h:17: 6889 In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi 6890 ngw32/include/schnlsp.h:9: 6891 In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi 6892 ngw32/include/schannel.h:10: 6893 /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt 6894 .h:5041:254: error: unknown type name 'PSYSTEMTIME' 6895 WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_ 6896 NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, 6897 DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER 6898 pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT 6899 ENSIONS pExtensions); 6900 6901 6902 6903 ^ 6904 /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt 6905 .h:5041:278: error: unknown type name 'PSYSTEMTIME' 6906 WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_ 6907 NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, 6908 DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER 6909 pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT 6910 ENSIONS pExtensions); 6911 6912 6913 6914 ^ 6915 2 errors generated. 6916 make[1]: *** [CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj] Error 1 6917 make: *** [cmTC_2d8fe/fast] Error 2 6918 exitCode: 2 6919 ``` 6920 6921 Cherry-picked from #11095 88e4a21ff70ccef391cf99c8165281ff81374503 6922 Reviewed-by: Daniel Stenberg 6923 Closes #11245 6924 6925Daniel Stenberg (5 Jun 2023) 6926 6927- urlapi: scheme starts with alpha 6928 6929 Add multiple tests to lib1560 to verify 6930 6931 Fixes #11249 6932 Reported-by: ad0p on github 6933 Closes #11250 6934 6935- RELEASE-NOTES: synced 6936 6937- CURLOPT_MAIL_RCPT_ALLOWFAILS: replace CURLOPT_MAIL_RCPT_ALLLOWFAILS 6938 6939 Deprecate the name using three Ls and prefer the name with two. 6940 6941 Replaces #10047 6942 Closes #11218 6943 6944- tests/servers: generate temp names in /tmp for unix domain sockets 6945 6946 ... instead of putting them in the regular pid directories because 6947 systems generally have strict length requirements for the path name to 6948 be shorter than 107 bytes and we easily hit that boundary otherwise. 6949 6950 The new concept generates two random names: one for the socks daemon and 6951 one for http. 6952 6953 Reported-by: Andy Fiddaman 6954 Fixes #11152 6955 Closes #11166 6956 6957Stefan Eissing (2 Jun 2023) 6958 6959- http2: better support for --limit-rate 6960 6961 - leave transfer loop when --limit-rate is in effect and has 6962 been received 6963 - adjust stream window size to --limit-rate plus some slack 6964 to make the server observe the pacing we want 6965 - add test case to confirm behaviour 6966 6967 Closes #11115 6968 6969- curl_log: evaluate log statement only when transfer is verbose 6970 6971 Closes #11238 6972 6973Daniel Stenberg (2 Jun 2023) 6974 6975- libssh2: provide error message when setting host key type fails 6976 6977 Ref: https://curl.se/mail/archive-2023-06/0001.html 6978 6979 Closes #11240 6980 6981Igor Todorovski (2 Jun 2023) 6982 6983- system.h: remove __IBMC__/__IBMCPP__ guards and apply to all z/OS compiles 6984 6985 Closes #11241 6986 6987Daniel Stenberg (2 Jun 2023) 6988 6989- docs/SECURITY-PROCESS.md: link to example of previous critical flaw 6990 6991Mark Seuffert (2 Jun 2023) 6992 6993- README.md: updated link to opencollective 6994 6995 Closes #11232 6996 6997Daniel Stenberg (1 Jun 2023) 6998 6999- libssh2: use custom memory functions 7000 7001 Because of how libssh2_userauth_keyboard_interactive_ex() works: the 7002 libcurl callback allocates memory that is later free()d by libssh2, we 7003 must set the custom memory functions. 7004 7005 Reverts 8b5f100db388ee60118c08aa28 7006 7007 Ref: https://github.com/libssh2/libssh2/issues/1078 7008 Closes #11235 7009 7010- test447: test PUTting a file that grows 7011 7012 ... and have curl trim the end when it reaches the expected total amount 7013 of bytes instead of over-sending. 7014 7015 Reported-by: JustAnotherArchivist on github 7016 Closes #11223 7017 7018- curl: count uploaded data to stop at the originally given size 7019 7020 Closes #11223 7021 Fixes #11222 7022 Reported-by: JustAnotherArchivist on github 7023 7024- tool: remove exclamation marks from error/warning messages 7025 7026- tool: use errorf() for error output 7027 7028 Convert a number of fprintf() calls. 7029 7030- tool: remove newlines from all helpf/notef/warnf/errorf calls 7031 7032 Make voutf() always add one. 7033 7034 Closes #11226 7035 7036- tests/servers.pm: pick unused port number with a server socket 7037 7038 This change replaces the previous method of picking a port number at 7039 random to try to start servers on, then retrying up to ten times with 7040 new random numbers each time, with a function that creates a server 7041 socket on port zero, thereby getting a suitable random port set by the 7042 kernel. That server socket is then closed and that port number is used 7043 to setup the actual test server on. 7044 7045 There is a risk that *another* server can be started on the machine in 7046 the time gap, but the server verification feature will detect that. 7047 7048 Closes #11220 7049 7050- RELEASE-NOTES: synced 7051 7052 bump to 8.2.0 7053 7054Alejandro R. Sedeño (31 May 2023) 7055 7056- configure: fix run-compiler for old /bin/sh 7057 7058 If you try to assign and export on the same line on some older /bin/sh 7059 implementations, it complains: 7060 7061 ``` 7062 $ export "NAME=value" 7063 NAME=value: is not an identifier 7064 ``` 7065 7066 This commit rewrites run-compiler's assignments and exports to work with 7067 old /bin/sh, splitting assignment and export into two separate 7068 statements, and only quote the value. So now we have: 7069 7070 ``` 7071 NAME="value" 7072 export NAME 7073 ``` 7074 7075 While we're here, make the same change to the two supporting 7076 assign+export lines preceeding the script to be consistent with how 7077 exports work throughout the rest of configure.ac. 7078 7079 Closes #11228 7080 7081Philip Heiduck (31 May 2023) 7082 7083- circleci: install impacket & wolfssl 5.6.0 7084 7085 Closes #11221 7086 7087Daniel Stenberg (31 May 2023) 7088 7089- tool_urlglob: use curl_off_t instead of longs 7090 7091 To handle more globs better (especially on Windows) 7092 7093 Closes #11224 7094 7095Dan Fandrich (30 May 2023) 7096 7097- scripts: Fix GHA matrix job detection in cijobs.pl 7098 7099 The parsing is pretty brittle and it broke detecting some jobs at some 7100 point. Also, detect if Windows is used in GHA. 7101 7102- runtests: abort test run after failure without -a 7103 7104 This was broken in a recent refactor and test runs would not stop. 7105 7106 Follow-up to d4a1b5b6 7107 7108 Reported-by: Daniel Stenberg 7109 Fixes #11225 7110 Closes #11227 7111 7112Version 8.1.2 (30 May 2023) 7113 7114Daniel Stenberg (30 May 2023) 7115 7116- RELEASE-NOTES: synced 7117 7118 8.1.2 release 7119 7120- THANKS: contributors from 8.1.2 7121 7122- lib1560: verify more scheme guessing 7123 7124 - on 2nd level domains 7125 - on names without dots 7126 7127 As mentioned in #11161, "imap.com" will be guessed IMAP 7128 7129 Closes #11219 7130 7131- page-header: minor wording polish in the URL segment 7132 7133 Closes #11217 7134 7135- page-header: mention curl version and how to figure out current release 7136 7137 Closes #11216 7138 7139- RELEASE-NOTES: synced 7140 7141- configure: without pkg-config and no custom path, use -lnghttp2 7142 7143 Reported-by: correctmost on github 7144 Fixes #11186 7145 Closes #11210 7146 7147Stefan Eissing (28 May 2023) 7148 7149- curl: cache the --trace-time value for a second 7150 7151 - caches HH:MM:SS computed and reuses it for logging during 7152 the same second. 7153 - common function for plain log line start formatting 7154 7155 Closes #11211 7156 7157Kev Jackson (28 May 2023) 7158 7159- libcurl.m4: remove trailing 'dnl' that causes this to break autoconf 7160 7161 Closes #11212 7162 7163Stefan Eissing (26 May 2023) 7164 7165- http3: send EOF indicator early as possible 7166 7167 - ngtcp2 and quiche implementations relied on the DONE_SEND event 7168 to forward the EOF for uploads to the libraries. This often 7169 result in a last 0 length EOF data. Tracking the amount of 7170 data left to upload allows EOF indication earlier. 7171 - refs #11205 where CloudFlare DoH servers did not like to 7172 receive the initial upload DATA without EOF and returned 7173 a 400 Bad Request 7174 7175 Reported-by: Sergey Fionov 7176 Fixes #11205 7177 Closes #11207 7178 7179Daniel Stenberg (26 May 2023) 7180 7181- scripts/contri*sh: no longer grep -v ' ' 7182 7183 Originally these scripts filtered out names that have no space so that 7184 they better avoid nick names not intended for credits. Such names are 7185 not too commonly used, plus we now give credit even to those. 7186 7187 Additionally: non-latin names, like Asian, don't have spaces at all so 7188 they were also filtered out and had to be manually added which made it 7189 an error-prone operation where Asian names eventually easily fell off by 7190 mistake. 7191 7192 Closes #11206 7193 7194- cf-socket: restore Curl_sock_assign_addr() 7195 7196 Regression since it was not private. Also used by msh3.c 7197 7198 Follow-up to 8e85764b7bd7f05f5 7199 Reported-by: Gisle Vanem 7200 Fixes #11202 7201 Closes #11204 7202 7203- RELEASE-NOTES: synced 7204 7205 Taken down to 8.1.2 now for pending patch release 7206 7207- libssh: when keyboard-interactive auth fails, try password 7208 7209 The state machine had a mistake in that it would not carry on to that 7210 next step. 7211 7212 This also adds a verbose output what methods that are available from the 7213 server and renames the macros that change to the next auth methods to 7214 try. 7215 7216 Reported-by: 左潇峰 7217 Fixes #11196 7218 Closes #11197 7219 7220Emanuele Torre (25 May 2023) 7221 7222- configure: fix build with arbitrary CC and LD_LIBRARY_PATH 7223 7224 Since ./configure and processes that inherit its environment variables 7225 are the only callers of the run-compiler script, we can just save the 7226 current value of the LD_LIBRARY_PATH and CC variables to another pair of 7227 environment variables, and make run-compiler a static script that 7228 simply restores CC and LD_LIBRARY_PATH to the saved value, and before 7229 running the compiler. 7230 7231 This avoids having to inject the values of the variables in the script, 7232 possibly causing problems if they contains spaces, quotes, and other 7233 special characters. 7234 7235 Also add exports in the script just in case LD_LIBRARY_PATH and CC are 7236 not already in the environment. 7237 7238 follow-up from 471dab2 7239 7240 Closes #11182 7241 7242Daniel Stenberg (25 May 2023) 7243 7244- urlapi: remove superfluous host name check 7245 7246 ... as it is checked later more proper. 7247 7248 Closes #11195 7249 7250Stefan Eissing (25 May 2023) 7251 7252- http2: fix EOF handling on uploads with auth negotiation 7253 7254 - doing a POST with `--digest` does an override on the initial request 7255 with `Content-Length: 0`, but the http2 filter was unaware of that 7256 and expected the originally request body. It did therefore not 7257 send a final DATA frame with EOF flag to the server. 7258 - The fix overrides any initial notion of post size when the `done_send` 7259 event is triggered by the transfer loop, leading to the EOF that 7260 is necessary. 7261 - refs #11194. The fault did not happen in testing, as Apache httpd 7262 never tries to read the request body of the initial request, 7263 sends the 401 reply and closes the stream. The server used in the 7264 reported issue however tried to read the EOF and timed out on the 7265 request. 7266 7267 Reported-by: Aleksander Mazur 7268 Fixes #11194 7269 Cloes #11200 7270 7271Daniel Stenberg (23 May 2023) 7272 7273- RELEASE-NOTES: synced 7274 7275 bump to 8.2.0 7276 7277- lib: remove unused functions, make single-use static 7278 7279 Closes #11174 7280 7281- scripts/singleuse.pl: add more API calls 7282 7283Christian Hesse (23 May 2023) 7284 7285- configure: quote the assignments for run-compiler 7286 7287 Building for multilib failed, as the compiler command contains an 7288 extra argument. That needs quoting. 7289 7290 Regression from b78ca50cb3dda361f9c1 7291 7292 Fixes #11179 7293 Closes #11180 7294 7295Daniel Stenberg (23 May 2023) 7296 7297- misc: fix spelling mistakes 7298 7299 Reported-by: musvaage on github 7300 Fixes #11171 7301 Closes #11172 7302 7303Version 8.1.1 (23 May 2023) 7304 7305Daniel Stenberg (23 May 2023) 7306 7307- RELEASE-NOTES: synced 7308 7309 curl 8.1.1 7310 7311- THANKS: contributors from the 8.1.1 release 7312 7313Dan Fandrich (22 May 2023) 7314 7315- docs: fix fuzzing documentation link 7316 7317 Follow-up to 4c712a1b 7318 7319- CI: add an Alpine build with MUSL 7320 7321 MUSL is another libc implementation which has its own unique issues 7322 worth testing. 7323 7324 Ref: #11140 7325 Closes #11178 7326 7327- runtests: add a missing \n at the end of a log message 7328 7329correctmost on github (22 May 2023) 7330 7331- SECURITY-PROCESS.md: link security advisory doc and fix typo 7332 7333 Closes #11177 7334 7335Daniel Stenberg (22 May 2023) 7336 7337- TODO: build curl with Windows Unicode support 7338 7339 Closes #7229 7340 7341- KNOWN_BUGS: hyper memory-leaks 7342 7343 Closes #10803 7344 7345Stefan Eissing (22 May 2023) 7346 7347- http/2: unstick uploads 7348 7349 - refs #11157 and #11175 where uploads get stuck or lead to RST streams 7350 - fixes our h2 send behaviour to continue sending in the nghttp2 session 7351 as long as it wants to. This will empty our send buffer as long as 7352 the remote stream/connection window allows. 7353 - in case the window is exhausted, the data remaining in the send buffer 7354 will wait for a WINDOW_UPDATE from the server. Which is a socket event 7355 that engages our transfer loop again 7356 - the problem in the issue was that we did not exhaust the window, but 7357 left data in the sendbuffer and no further socket events did happen. 7358 The server was just waiting for us to send more. 7359 - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD 7360 set kept the transfer from shutting down - as it should have - leading 7361 to a timeout. 7362 7363 Closes #11176 7364 7365Daniel Stenberg (21 May 2023) 7366 7367- workflows/macos: add a job using gcc + debug + secure transport 7368 7369Jay Satiro (21 May 2023) 7370 7371- lib: fix conversion warnings with gcc on macOS 7372 7373Daniel Stenberg (21 May 2023) 7374 7375- sectransp.c: make the code c89 compatible 7376 7377 Follow-up to dd2bb485521c2ec713001b3a 7378 7379 Reported-by: FeignClaims on github 7380 Fixes #11155 7381 Closes #11159 7382 7383Emanuele Torre (21 May 2023) 7384 7385- Revert "urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirect 7386 s" 7387 7388 This reverts commit df6c2f7b544f1f35f2a3e0be11f345affeb6fe9c. 7389 (It only keep the test case that checks redirection to an absolute URL 7390 without hostname and CURLU_NO_AUTHORITY). 7391 7392 I originally wanted to make CURLU_ALLOW_SPACE accept spaces in the 7393 hostname only because I thought 7394 curl_url_set(CURLUPART_URL, CURLU_ALLOW_SPACE) was already accepting 7395 them, and they were only not being accepted in the hostname when 7396 curl_url_set(CURLUPART_URL) was used for a redirection. 7397 7398 That is not actually the case, urlapi never accepted hostnames with 7399 spaces, and a hostname with a space in it never makes sense. 7400 I probably misread the output of my original test when I they were 7401 normally accepted when using CURLU_ALLOW_SPACE, and not redirecting. 7402 7403 Some other URL parsers seems to allow space in the host part of the URL, 7404 e.g. both python3's urllib.parse module, and Chromium's javascript URL 7405 object allow spaces (chromium percent escapes the spaces with %20), 7406 (they also both ignore TABs, and other whitespace characters), but those 7407 URLs with spaces in the hostname are useless, neither python3's requests 7408 module nor Chromium's window.location can actually use them. 7409 7410 There is no reason to add support for URLs with spaces in the host, 7411 since it was not a inconsistency bug; let's revert that patch before it 7412 makes it into release. Sorry about that. 7413 7414 I also reverted the extra check for CURLU_NO_AUTHORITY since that does 7415 not seem to be necessary, CURLU_NO_AUTHORITY already worked for 7416 redirects. 7417 7418 Closes #11169 7419 7420Dan Fandrich (20 May 2023) 7421 7422- runtests: use the correct fd after select 7423 7424 The code was using the wrong fd when determining which runner was ready 7425 with a response. 7426 7427 Ref: #10818 7428 Closes #11160 7429 7430- test425: fix the log directory for the upload 7431 7432 This must be %LOGDIR to let it work with parallel tests. 7433 7434 Ref: #10969 7435 7436- runtests: handle interrupted reads from IPC pipes 7437 7438 These can be interrupted by signals, especially SIGINT to shut down, and 7439 must be restarted so the IPC call arrives correctly. If the read just 7440 returns an error instead, the IPC calling state will go out of sync and 7441 a proper shutdown won't happen. 7442 7443 Ref: #10818 7444 7445Stefan Eissing (20 May 2023) 7446 7447- http2: upload improvements 7448 7449 Make send buffer smaller to have progress and "upload done" reporting 7450 closer to reality. Fix handling of send "drain" condition to no longer 7451 trigger once the transfer loop reports it is done sending. Also do not 7452 trigger the send "drain" on RST streams. 7453 7454 Background: 7455 - a upload stall was reported in #11157 that timed out 7456 - test_07_33a reproduces a problem with such a stall if the 7457 server 404s the request and RSTs the stream. 7458 - test_07_33b verifies a successful PUT, using the parameters 7459 from #11157 and checks success 7460 7461 Ref: #11157 7462 Closes #11165 7463 7464- http2: increase stream window size to 10 MB 7465 7466 Reported-by: pandada8 on github 7467 7468 Fixes #11162 7469 Closes #11167 7470 7471Daniel Stenberg (20 May 2023) 7472 7473- lib: rename struct 'http_req' to 'httpreq' 7474 7475 Because FreeBSD 14 kidnapped the name. 7476 Ref: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271526 7477 7478 Fixes #11163 7479 Closes #11164 7480 7481Viktor Szakats (20 May 2023) 7482 7483- cmake: avoid `list(PREPEND)` for compatibility 7484 7485 `list(PREPEND)` requires CMake v3.15, our minimum is v3.7. 7486 7487 Ref: https://cmake.org/cmake/help/latest/command/list.html#prepend 7488 7489 Regression from 1e3319a167d2f32d295603167486e9e88af9bb4e 7490 7491 Reported-by: Keitagit-kun on Github 7492 Fixes #11141 7493 Closes #11144 7494 7495Daniel Stenberg (19 May 2023) 7496 7497- RELEASE-NOTES: synced 7498 7499Stefan Eissing (19 May 2023) 7500 7501- ngtcp2: proper handling of uint64_t when adjusting send buffer 7502 7503 Fixes #11149 7504 Closes #11153 7505 7506- ngtcp2: fix compiler warning about possible null-deref 7507 7508 - compiler analyzer did not include the call context for this 7509 static function where the condition had already been checked. 7510 - eleminating the problem by making stream a call parameter 7511 7512 Fixes #11147 7513 Closes #11151 7514 7515Emanuele Torre (19 May 2023) 7516 7517- docs: document that curl_url_cleanup(NULL) is a safe no-op 7518 7519 This has always been the case, but it was not documented. 7520 7521 The paragraph was copied verbatim from curl_easy_cleanup.3 7522 7523 Closes #11150 7524 7525Antoine Pitrou (19 May 2023) 7526 7527- select: avoid returning an error on EINTR from select() or poll() 7528 7529 This was already done for the poll() and select() calls 7530 made directly from Curl_poll(), but was missed in 7531 Curl_wait_ms(), which is called when there are no fds 7532 to wait on. 7533 7534 Fixes #11135 7535 Closes #11143 7536 7537Daniel Stenberg (19 May 2023) 7538 7539- vquic.c: make recvfrom_packets static, avoid compiler warning 7540 7541 warning: no previous prototype for 'recvfrom_packets' 7542 7543 Reported-by: Keitagit-kun on github 7544 Fixes #11146 7545 Closes #11148 7546 7547- urlapi: allow numerical parts in the host name 7548 7549 It can only be an IPv4 address if all parts are all digits and no more than 7550 four parts, otherwise it is a host name. Even slightly wrong IPv4 will now be 7551 passed through as a host name. 7552 7553 Regression from 17a15d88467 shipped in 8.1.0 7554 7555 Extended test 1560 accordingly. 7556 7557 Reported-by: Pavel Kalyugin 7558 Fixes #11129 7559 Closes #11131 7560 7561Emilio Cobos Álvarez (19 May 2023) 7562 7563- http2: double http request parser max line length 7564 7565 This works around #11138, by doubling the limit, and should be a 7566 relatively safe fix. 7567 7568 Ideally the buffer would grow as needed and there would be no need for a 7569 limit? But that might be follow-up material. 7570 7571 Fixes #11138 7572 Closes #11139 7573 7574Emanuele Torre (18 May 2023) 7575 7576- configure: fix --help alignment 7577 7578 AC_ARG_ENABLE seems to only trim off whitespace from the start and end 7579 of its help-string argument, while prepending two spaces of indentation 7580 to all lines. 7581 7582 This means that the two spaces of indentation between the --enable-rtsp 7583 and the --disable-rtsp line were not removed causing ./configure --help 7584 to print: 7585 7586 Optional Features: 7587 [...] 7588 --enable-rtsp Enable RTSP support 7589 --disable-rtsp Disable RTSP support 7590 7591 I removed the indentation to fix the issue, now it prints: 7592 7593 Optional Features: 7594 [...] 7595 --enable-rtsp Enable RTSP support 7596 --disable-rtsp Disable RTSP support 7597 7598 The --enable-hsts and --disable-hsts lines had the same problems, and 7599 have been fixed too. 7600 7601 Closes #11142 7602 7603Deal(一线灵) (18 May 2023) 7604 7605- cmake: repair cross compiling 7606 7607 It cannot *run* code for testing purposes when cross-compiling. 7608 7609 Closes #11130 7610 7611Daniel Stenberg (18 May 2023) 7612 7613- configure: generate a script to run the compiler 7614 7615 in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of 7616 the configure invoke, and not the value that might be used later, 7617 intended for the execution of the output the compiler ouputs. 7618 7619 For example when the compiler uses the same library (like libz) that 7620 configure checks for. 7621 7622 Reported-by: Jonas Bülow 7623 Fixes #11114 7624 Closes #11120 7625 7626Stefan Eissing (18 May 2023) 7627 7628- cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND 7629 7630 Closes #11118 7631 7632Emanuele Torre (18 May 2023) 7633 7634- urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirects 7635 7636 curl_url_set(uh, CURLUPART_URL, redirurl, flags) was not respecing 7637 CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY in the host part of redirurl 7638 when redirecting to an absolute URL. 7639 7640 Closes #11136 7641 7642Colin Cross (18 May 2023) 7643 7644- hostip: move easy_lock.h include above curl_memory.h 7645 7646 Similar to #9561, move easy_lock.h above curl_memory.h to fix building 7647 against musl libc. 7648 7649 Closes #11140 7650 7651Hind Montassif (18 May 2023) 7652 7653- curl_easy_getinfo: clarify on return data types 7654 7655 Closes #11126 7656 7657Emanuele Torre (18 May 2023) 7658 7659- checksrc: disallow spaces before labels 7660 7661 Out of 415 labels throughout the code base, 86 of those labels were 7662 not at the start of the line. Which means labels always at the start of 7663 the line is the favoured style overall with 329 instances. 7664 7665 Out of the 86 labels not at the start of the line: 7666 * 75 were indented with the same indentation level of the following line 7667 * 8 were indented with exactly one space 7668 * 2 were indented with one fewer indentation level then the following 7669 line 7670 * 1 was indented with the indentation level of the following line minus 7671 three space (probably unintentional) 7672 7673 Co-Authored-By: Viktor Szakats 7674 7675 Closes #11134 7676 7677Daniel Stenberg (18 May 2023) 7678 7679- cookie: update the comment on cookie length and size limits 7680 7681 To refer to the proper cookie RFC and the upcoming RFC refresh. 7682 7683 Closes #11127 7684 7685- url: provide better error message when URLs fail to parse 7686 7687 By providing the URL API error message into the error message. 7688 7689 Ref: #11129 7690 Closes #11137 7691 7692- RELEASE-NOTES: synced 7693 7694 bumped to 8.1.1 7695 7696Jon Rumsey (18 May 2023) 7697 7698- os400: update chkstrings.c 7699 7700 Compensate changes for recent changes to urldata.h to reclassify 7701 STRING_AWS_SIGV4. 7702 7703 Fixes #11132 7704 Closes #11133 7705 7706Version 8.1.0 (17 May 2023) 7707 7708Daniel Stenberg (17 May 2023) 7709 7710- RELEASE-NOTES: synced 7711 7712- THANKS: contributors from the 8.1.0 release 7713 7714- hostip: include easy_lock.h before using GLOBAL_INIT_IS_THREADSAFE 7715 7716 Since that header file is the only place that define can be defined. 7717 7718 Reported-by: Marc Deslauriers 7719 7720 Follow-up to 13718030ad4b3209 7721 7722 Closes #11121 7723 7724Thomas Taylor (16 May 2023) 7725 7726- aws-sigv4.d: fix region identifier in example 7727 7728 Closes #11117 7729 7730Philip Heiduck (15 May 2023) 7731 7732- mlc_config.json: remove this linkcheck CI job config file 7733 7734 Closes #11113 7735 7736Daniel Silverstone (15 May 2023) 7737 7738- ssh: Add support for libssh2 read timeout 7739 7740 Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout 7741 into the SERVER_RESPONSE_TIMEOUT option. With this done, clients can use 7742 the standard curl response timeout setting to also control the time that 7743 libssh2 will wait for packets from a slow server. This is necessary to 7744 enable use of very slow SFTP servers. 7745 7746 Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk> 7747 7748 Closes #10965 7749 7750Osama Albahrani (14 May 2023) 7751 7752- GIT-INFO: add --with-openssl 7753 7754 Closes #11110 7755 7756Daniel Stenberg (13 May 2023) 7757 7758- RELEASE-NOTES: synced 7759 7760Marcel Raad (13 May 2023) 7761 7762- md(4|5): don't use deprecated iOS functions 7763 7764 They are marked as deprecated in iOS 13.0, which might result in 7765 warnings-as-errors. 7766 7767 Also, use `*_MIN_REQUIRED` instead of `*_MIN_ALLOWED`, which seems to 7768 be what's currently used. 7769 7770 Bug: https://github.com/curl/curl/issues/11098 7771 Closes https://github.com/curl/curl/pull/11102 7772 7773- md4: only build when used 7774 7775 Its only usage in curl_ntlm_core.c is guarded by `USE_CURL_NTLM_CORE`, 7776 so let's use this here too. 7777 7778 Ref: https://github.com/curl/curl/issues/11098 7779 Closes https://github.com/curl/curl/pull/11102 7780 7781Vítor Galvão (12 May 2023) 7782 7783- write-out.d: Use response_code in example 7784 7785 Closes #11107 7786 7787Shohei Maeda (12 May 2023) 7788 7789- url: fix null dispname for --connect-to option 7790 7791 Closes #11106 7792 7793Daniel Stenberg (12 May 2023) 7794 7795- test2306: verify getting a second response with folded headers 7796 7797 Reproduces the isue #11101 and verifies the fix. 7798 7799 Verifies a17b2a503f 7800 7801- headers: clear (possibly) lingering pointer in init 7802 7803 The "prevhead" pointer is used for the headers storage but was not 7804 cleared correctly in init, which made it possible to act up when a 7805 handle is reused. 7806 7807 Reported-by: Steve Herrell 7808 Fixes #11101 7809 Closes #11103 7810 7811- RELEASE-NOTES: synced 7812 7813- ngtcp2: use 0.15.0 7814 7815 - nghttp3 0.11.0 7816 - nghttp2 1.53.0 7817 7818 Adapt to new API calls 7819 7820 Closes #11031 7821 7822Jay Satiro (10 May 2023) 7823 7824- openssl: fix indent 7825 7826Daniel Stenberg (10 May 2023) 7827 7828- CURLOPT_DNS_CACHE_TIMEOUT.3: fix spelling 7829 7830 Follow-up to 9ed7d56e044f5aa1b29 7831 7832 Closes #11096 7833 7834- hostip: use time_t for storing oldest DNS entry 7835 7836 Theoretically, the oldest time could overflow an int. In practice that 7837 won't happen, but let's do this to please analyzers. 7838 7839 Follow-up to 9ed7d56e044f5aa1b2928ccde6245d0 7840 7841 Pointed out by Coverity. 7842 Closes #11094 7843 7844- http: free the url before storing a new copy 7845 7846 To avoid a memory-leak. 7847 7848 Reported-by: Hiroki Kurosawa 7849 7850 Closes #11093 7851 7852- compressed.d: clarify the words on "not notifying headers" 7853 7854 Reported-by: Dylan Anthony 7855 Fixes #11091 7856 Closes #11092 7857 7858- libssh2: free fingerprint better 7859 7860 Reported-by: Wei Chong Tan 7861 Closes #11088 7862 7863- CURLOPT_IPRESOLVE.3: clarify that this for host names, not IP addresses 7864 7865 Reported-by: Harry Sintonen 7866 Closes #11087 7867 7868- hostip: enforce a maximum DNS cache size independent of timeout value 7869 7870 To reduce the damage an application can cause if using -1 or other 7871 ridiculous timeout values and letting the cache live long times. 7872 7873 The maximum number of entries in the DNS cache is now totally 7874 arbitrarily and hard-coded set to 29999. 7875 7876 Closes #11084 7877 7878- hostip: store dns timeout as 'int' 7879 7880 ... because it set and held as an 'int' elsewhere and can never be 7881 larger. 7882 7883- RELEASE-NOTES: synced 7884 7885- tool_operate: refuse (--data or --form) and --continue-at combo 7886 7887 libcurl assumes that a --continue-at resumption is done to continue an 7888 upload using the read callback and neither --data nor --form use 7889 that and thus won't do what the user wants. Whatever the user wants 7890 with this strange combination. 7891 7892 Add test 426 to verify. 7893 7894 Reported-by: Smackd0wn on github 7895 Fixes #11081 7896 Closes #11083 7897 7898- transfer: refuse POSTFIELDS + RESUME_FROM combo 7899 7900 The code assumes that such a resume is wanting to continue an upload 7901 using the read callback, and since POSTFIELDS is done without callback 7902 libcurl will just misbehave. 7903 7904 This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT 7905 with an explanation in the error message. 7906 7907 Reported-by: Smackd0wn on github 7908 Fixes #11081 7909 Closes #11083 7910 7911- ipv4.d/ipv6.d: they are "mutex", not "boolean" 7912 7913 ... which for example means they do not have --no-* versions. 7914 7915 Reported-by: Harry Sintonen 7916 Fixes #11085 7917 Closes #11086 7918 7919- docs/SECURITY-ADVISORY.md: how to write a curl security advisory 7920 7921 Closes #11080 7922 7923nobedee on github (5 May 2023) 7924 7925- MANUAL.md: add dict example for looking up a single definition 7926 7927 Closes #11077 7928 7929Dan Fandrich (5 May 2023) 7930 7931- runtests: fix -c option when run with valgrind 7932 7933 The curl binary argument wasn't being quoted properly. This seems to 7934 have broken at some point after quoting was added in commit 606b29fe. 7935 7936 Reported-by: Daniel Stenberg 7937 Ref: #11073 7938 Fixes #11074 7939 Closes #11076 7940 7941- runtests: support creating more than one runner process 7942 7943 The controller currently only creates and uses one, but more are now 7944 possible. 7945 7946 Ref: #10818 7947 7948- runtests: spawn a new process for the test runner 7949 7950 When the -j option is given, a new process is spawned in which the test 7951 programs are run and from which test servers are started. Only one 7952 process can be started at once, but this is sufficient to test that the 7953 infrastructure can isolate those functions in a new task. There should 7954 be no visible difference between the two modes at the moment. 7955 7956 Ref: #10818 7957 Closes #11064 7958 7959- runtests: turn singletest() into a state machine 7960 7961 This allows it to run in a non-blocking manner. 7962 7963 Ref: #10818 7964 7965- runtests: change runner interface to be asynchronous 7966 7967 Program arguments are marshalled and then written to the end of a pipe 7968 which is later read from and the arguments unmarshalled before the 7969 desired function is called normally. The function return values are 7970 then marshalled and written into another pipe when is later read from 7971 and unmarshalled before being returned to the caller. 7972 7973 The implementation is currently blocking but can be made non-blocking 7974 without any changes to the API. This allows calling multiple runners 7975 without blocking in the future. 7976 7977 Ref: #10818 7978 7979- runtests: call citest_finishtest in singletest 7980 7981 This is where citest_starttest is called. 7982 7983 Ref: #10818 7984 7985- runtests: add a runner initialization function 7986 7987 This sets up the runner environment to start running tests. 7988 7989 Ref: #10818 7990 7991- runtests: remove directory from server filename variables 7992 7993 There will soon be multiple log directories so the paths will no longer 7994 be static in runtests.pl. Also, get rid of $SERVER2IN which was not 7995 used. 7996 7997 Ref: #10818 7998 7999- runtests: reduce package exports after refactoring 8000 8001 Some recent refactoring made these export no longer necessary. Also, 8002 stop displaying the Unix socket paths at startup since there will soon 8003 be many of them and they're not that interesting. 8004 8005 Ref: #10818 8006 8007- runtests: use a function to obtain $LOGDIR for a test 8008 8009 This will no longer be static soon. 8010 8011 Ref: #10818 8012 8013Jay Satiro (5 May 2023) 8014 8015- tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals 8016 8017 - Disable hyperlink formatting for the 'Location:' header value in VTE 8018 0.48.1 and earlier, since it is buggy in some of those versions. 8019 8020 Prior to this change those terminals may show the location header value 8021 as gibberish or show it twice. 8022 8023 Ref: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#backw 8024 ard-compatibility 8025 8026 Fixes https://github.com/curl/curl/issues/10428 8027 Closes https://github.com/curl/curl/pull/11071 8028 8029François Michel (3 May 2023) 8030 8031- quiche: disable pacing while pacing is not actually performed 8032 8033 Closes #11068 8034 8035Daniel Stenberg (2 May 2023) 8036 8037- easy_cleanup: require a "good" handle to act 8038 8039 By insisting that the passed in handle is "good" (the magic number is 8040 intact), this can limit the potential damage if a bad pointer is passed 8041 in. Like when this function is called twice on the same handle pointer. 8042 8043 Ref: #10964 8044 Closes #11061 8045 8046Andreas Falkenhahn (1 May 2023) 8047 8048- amiga: Fix CA certificate paths for AmiSSL and MorphOS 8049 8050 AmiSSL stores certificates in `AmiSSL:Certs` and MorphOS stores them in 8051 `MOSSYS:Data/SSL/curl-ca-bundle.crt`. 8052 8053 Closes https://github.com/curl/curl/pull/11059 8054 8055Daniel Stenberg (30 Apr 2023) 8056 8057- http2: (void)-mark when we explicitly ignore the return code 8058 8059 When h2_progress_egress() is called. Pointed out by Coverity. 8060 8061 Closes #11057 8062 8063- checksrc: find bad indentation in conditions without open brace 8064 8065 If the previous line starts with if/while/for AND ends with a closed 8066 parenthesis and there's an equal number of open and closed parentheses 8067 on that line, verify that this line is indented $indent more steps, if 8068 not a cpp line. 8069 8070 Also adjust the fall-out from this fix. 8071 8072 Closes #11054 8073 8074Diogo Teles Sant'Anna (28 Apr 2023) 8075 8076- CI: Set minimal permissions on workflow ngtcp2-quictls.yml 8077 8078 Signed-off-by: Diogo Teles Sant'Anna <diogoteles@google.com> 8079 8080 Closes #11055 8081 8082Dan Fandrich (28 Apr 2023) 8083 8084- CI: use another glob syntax for matching files on Appveyor 8085 8086 The previous globbing syntax was not matching files recursively in 8087 directories, so try appending a /* to more closely match the examples at 8088 https://www.appveyor.com/docs/how-to/filtering-commits/ 8089 8090Daniel Stenberg (28 Apr 2023) 8091 8092- multi: add multi-ignore logic to multi_socket_action 8093 8094 The multi-ignore logic that was previously applied to 8095 curl_multi_perform() (#10750) is here applied to the loop within 8096 curl_multi_socket_action() to make it use the same optimization: most 8097 handles have the same signal-ignore option state so this drastically 8098 reduces the number of ignore/unignore calls per libcurl function invoke. 8099 8100 Follow-up to bc90308328afb8 8101 8102 Closes #11045 8103 8104Stefan Eissing (28 Apr 2023) 8105 8106- http2: do flow window accounting for cancelled streams 8107 8108 - nghttp2 does not free connection level window flow for 8109 aborted streams 8110 - when closing transfers, make sure that any buffered 8111 response data is "given back" to the flow control window 8112 - add tests test_02_22 and test_02_23 to reproduce 8113 8114 Closes #11052 8115 8116- pingpong: fix compiler warning "assigning an enum to unsigned char" 8117 8118 Closes #11050 8119 8120Daniel Stenberg (28 Apr 2023) 8121 8122- configure: fix detection of apxs (for httpd) 8123 8124 The condition check was turned the wrong way around! 8125 8126 Closes #11051 8127 8128Viktor Szakats (28 Apr 2023) 8129 8130- ci: `-Wno-vla` no longer necessary 8131 8132 We handle this issue in the source now. 8133 8134 Follow-up to b725fe1944b45406676ea3aff333ae3085a848d9 8135 8136 Reviewed-by: Marcel Raad 8137 Reviewed-by: Daniel Stenberg 8138 Closes #11048 8139 8140Marcel Raad (28 Apr 2023) 8141 8142- tests/http: make curl_setup.h the first include 8143 8144 This is required for the macros there to take effect for system 8145 libraries. Specifically, including the system libraries first led to 8146 warnings about `_FILE_OFFSET_BITS` being redefined in curl_config.h on 8147 the Solaris autobuilds for ws-data.c and ws-pingpong.c. 8148 Also make the curl includes come first for the other source files here 8149 for consistency. 8150 8151 Closes https://github.com/curl/curl/pull/11046 8152 8153Emanuele Torre (27 Apr 2023) 8154 8155- checksrc: check for spaces before the colon of switch labels 8156 8157 Closes #11047 8158 8159Daniel Stenberg (27 Apr 2023) 8160 8161- RELEASE-NOTES: synced 8162 8163- libssh: tell it to use SFTP non-blocking 8164 8165 Reported-by: Andreas Huebner 8166 Fixes #11020 8167 Closes #11039 8168 8169Stefan Eissing (27 Apr 2023) 8170 8171- http2: enlarge the connection window 8172 8173 - fixes stalled connections 8174 8175 - Make the connection window large enough, so that there is 8176 some room left should 99/100 streams be PAUSED by the application 8177 8178 Reported-by: Paweł Wegner 8179 Fixes #10988 8180 Closes #11043 8181 8182Daniel Stenberg (27 Apr 2023) 8183 8184- checksrc: fix SPACEBEFOREPAREN for conditions starting with "*" 8185 8186 The open paren check wants to warn for spaces before open parenthesis 8187 for if/while/for but also for any function call. In order to avoid 8188 catching function pointer declarations, the logic allows a space if the 8189 first character after the open parenthesis is an asterisk. 8190 8191 I also spotted what we did not include "switch" in the check but we should. 8192 8193 This check is a little lame, but we reduce this problem by not allowing 8194 that space for if/while/for/switch. 8195 8196 Reported-by: Emanuele Torre 8197 Closes #11044 8198 8199- docs: minor polish 8200 8201 - "an HTTP*" (not "a") 8202 - remove a few contractions 8203 - remove a spurious "a" 8204 - reduce use of "I" in texts 8205 8206 Closes #11040 8207 8208- ws: fix CONT opcode check 8209 8210 Detected by Coverity. Follow-up to 930c00c259 8211 8212 Closes #11037 8213 8214Dan Fandrich (27 Apr 2023) 8215 8216- CI: switch the awslc builds to build out-of-tree 8217 8218 This is a common configuration that should be tested to avoid 8219 regressions. The awsls cmake build was already out-of-tree so the 8220 automake build now joins it. 8221 8222 Ref: #11006 8223 8224- tests/http: fix out-of-tree builds 8225 8226 Add both lib/ directories (src & build) to the search path so 8227 curl_setup.h and its dependencies can be found. 8228 8229 Followup-to acd82c8b 8230 8231 Ref: #11006 8232 Closes #11036 8233 8234Daniel Stenberg (27 Apr 2023) 8235 8236- urlapi: make internal function start with Curl_ 8237 8238 Curl_url_set_authority() it is. 8239 8240 Follow-up to acd82c8bfd 8241 8242 Closes #11035 8243 8244YX Hao (26 Apr 2023) 8245 8246- cf-socket: turn off IPV6_V6ONLY on Windows if it is supported 8247 8248 IPV6_V6ONLY refs: 8249 https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses 8250 https://github.com/golang/go/blob/master/src/net/ipsock_posix.go 8251 https://en.wikipedia.org/wiki/Unix-like 8252 https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o 8253 ptions 8254 8255 default value refs: 8256 https://datatracker.ietf.org/doc/html/rfc3493#section-5.3 8257 https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#proc-sys-net 8258 -ipv6-variables 8259 8260 Closes #10975 8261 8262Daniel Stenberg (26 Apr 2023) 8263 8264- urldata: shrink *select_bits int => unsigned char 8265 8266 - dselect_bits 8267 - cselect_bits 8268 8269 ... are using less than 8 bits. Changed types and moved them towards 8270 the end of the structs to fit better. 8271 8272 Closes #11025 8273 8274Stefan Eissing (26 Apr 2023) 8275 8276- tests/http: more tests with specific clients 8277 8278 - Makefile support for building test specific clients in tests/http/clients 8279 - auto-make of clients when invoking pytest 8280 - added test_09_02 for server PUSH_PROMISEs using clients/h2-serverpush 8281 - added test_02_21 for lib based downloads and pausing/unpausing transfers 8282 8283 curl url parser: 8284 - added internal method `curl_url_set_authority()` for setting the 8285 authority part of a url (used for PUSH_PROMISE) 8286 8287 http2: 8288 - made logging of PUSH_PROMISE handling nicer 8289 8290 Placing python test requirements in requirements.txt files 8291 - separate files to base test suite and http tests since use 8292 and module lists differ 8293 - using the files in the gh workflows 8294 8295 websocket test cases, fixes for we and bufq 8296 - bufq: account for spare chunks in space calculation 8297 - bufq: reset chunks that are skipped empty 8298 - ws: correctly encode frames with 126 bytes payload 8299 - ws: update frame meta information on first call of collect 8300 callback that fills user buffer 8301 - test client ws-data: some test/reporting improvements 8302 8303 Closes #11006 8304 8305Jay Satiro (26 Apr 2023) 8306 8307- libssh2: fix crash in keyboard callback 8308 8309 - Always set the libssh2 'abstract' user-pointer to the libcurl easy 8310 handle associated with the ssh session, so it is always passed to the 8311 ssh keyboard callback. 8312 8313 Prior to this change and since 8b5f100 (precedes curl 8.0.0), if libcurl 8314 was built without CURL_DEBUG then it could crash during the ssh auth 8315 phase due to a null dereference in the ssh keyboard callback. 8316 8317 Reported-by: Andreas Falkenhahn 8318 8319 Fixes https://github.com/curl/curl/pull/11024 8320 Closes https://github.com/curl/curl/pull/11026 8321 8322Daniel Stenberg (26 Apr 2023) 8323 8324- docs: clarify that more backends have HTTPS proxy support 8325 8326 Closes #11033 8327 8328- KNOWN_BUGS: remove two not-bugs 8329 8330 - 11.7 signal-based resolver timeouts 8331 8332 Not considered a bug anymore but just implementation details. People 8333 should avoid using timeouts with the synchronous name resolver. 8334 8335 - 11.16 libcurl uses renames instead of locking for atomic operations 8336 8337 Not a bug, just a description of how it works 8338 8339 Closes #11032 8340 8341Harry Sintonen (26 Apr 2023) 8342 8343- hostip: add locks around use of global buffer for alarm() 8344 8345 When building with the sync name resolver and timeout ability we now 8346 require thread-safety to be present to enable it. 8347 8348 Closes #11030 8349 8350Daniel Stenberg (26 Apr 2023) 8351 8352- curl_path: bring back support for SFTP path ending in /~ 8353 8354 libcurl used to do a directory listing for this case (even though the 8355 documentation says a URL needs to end in a slash for this), but 8356 4e2b52b5f7a3 modified the behavior. 8357 8358 This change brings back a directory listing for SFTP paths that are 8359 specified exactly as /~ in the URL. 8360 8361 Reported-by: Pavel Mayorov 8362 Fixes #11001 8363 Closes #11023 8364 8365Emanuele Torre (26 Apr 2023) 8366 8367- docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string" 8368 8369 Also reword the DESCRIPTION section to mention "input"/"string" argument 8370 in bold. 8371 8372 Closes #11027 8373 8374- docs/libcurl: minor cleanups 8375 8376 I was reading curl_unescape(3) and I noticed that there was an extra 8377 space after the open parenthesis in the SYNOPSIS; I removed the extra 8378 space. 8379 8380 I also ran a few grep -r commands to find and remove extra spaces 8381 after '(' in other files, and to find and replace uses of `T*' instead 8382 of `T *'. Some of the instances of `T*` where unnecessary casts that I 8383 removed. 8384 8385 I also fixed a comment that was misaligned in CURLMOPT_SOCKETFUNCTION.3. 8386 8387 And I fixed some formatting inconsistencies: in curl_unescape(3), all 8388 function parameter were mentioned with bold text except length, that was 8389 mentioned as 'length'; and, in curl_easy_unescape(3), all parameters 8390 were mentioned in bold text except url that was italicised. Now they are 8391 all mentioned in bold. 8392 Documentation is not very consistent in how function parameter are 8393 formatted: many pages italicise them, and others display them in bold 8394 text; but I think it makes sense to at least be consistent with 8395 formatting within the same page. 8396 8397 Closes #11027 8398 8399Daniel Stenberg (26 Apr 2023) 8400 8401- man pages: simplify the .TH sections 8402 8403 - remove the version numbers 8404 - simplify the texts 8405 8406 The date and version number will be put there for releases when maketgz 8407 runs the updatemanpages.pl script. 8408 8409 Closes #11029 8410 8411- hostcheck: fix host name wildcard checking 8412 8413 The leftmost "label" of the host name can now only match against single 8414 '*'. Like the browsers have worked for a long time. 8415 8416 - extended unit test 1397 for this 8417 - move some SOURCE variables from unit/Makefile.am to unit/Makefile.inc 8418 8419 Reported-by: Hiroki Kurosawa 8420 Closes #11018 8421 8422Dan Fandrich (25 Apr 2023) 8423 8424- smbserver: remove temporary files before exit 8425 8426 Each execution of test 1451 would leave a file in /tmp before. Since 8427 Windows can't delete a file while it's open, all the temporary file 8428 names are stored and deleted on exit. 8429 8430 Closes #10990 8431 8432Stefan Eissing (25 Apr 2023) 8433 8434- Websocket en-/decoding 8435 8436 - state is fully kept at connection, since curl_ws_send() and 8437 curl_ws_rec() have lifetime beyond usual transfers 8438 - no more limit on frame sizes 8439 8440 Reported-by: simplerobot on github 8441 Fixes #10962 8442 Closes #10999 8443 8444Patrick Monnerat (25 Apr 2023) 8445 8446- urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication 8447 8448 Prior to this change STRING_AWS_SIGV4 (CURLOPT_AWS_SIGV4) was wrongly 8449 marked as binary data that could not be duplicated. 8450 8451 Without this fix, this option's value is not copied upon calling 8452 curl_easy_duphandle(). 8453 8454 Closes https://github.com/curl/curl/pull/11021 8455 8456Stefan Eissing (25 Apr 2023) 8457 8458- http3: expire unpaused transfers in all HTTP/3 backends 8459 8460 Closes #11005 8461 8462- http2: always EXPIRE_RUN_NOW unpaused http/2 transfers 8463 8464 - just increasing the http/2 flow window does not necessarily 8465 make a server send new data. It may already have exhausted 8466 the window before 8467 8468 Closes #11005 8469 8470- http2: pass `stream` to http2_handle_stream_close to avoid NULL checks 8471 8472 Closes #11005 8473 8474- h2/h3: replace `state.drain` counter with `state.dselect_bits` 8475 8476 - `drain` was used by http/2 and http/3 implementations to indicate 8477 that the transfer requires send/recv independant from its socket 8478 poll state. Intended as a counter, it was used as bool flag only. 8479 - a similar mechanism exists on `connectdata->cselect_bits` where 8480 specific protocols can indicate something similar, only for the 8481 whole connection. 8482 - `cselect_bits` are cleard in transfer.c on use and, importantly, 8483 also set when the transfer loop expended its `maxloops` tries. 8484 `drain` was not cleared by transfer and the http2/3 implementations 8485 had to take care of that. 8486 - `dselect_bits` is cleared *and* set by the transfer loop. http2/3 8487 does no longer clear it, only set when new events happen. 8488 8489 This change unifies the handling of socket poll overrides, extending 8490 `cselect_bits` by a easy handle specific value and a common treatment in 8491 transfers. 8492 8493 Closes #11005 8494 8495Daniel Stenberg (25 Apr 2023) 8496 8497- socketpair: verify with a random value 8498 8499 ... instead of using the curl time struct, since it would use a few 8500 uninitialized bytes and the sanitizers would complain. This is a neater 8501 approach I think. 8502 8503 Reported-by: Boris Kuschel 8504 Fixes #10993 8505 Closes #11015 8506 8507Stefan Eissing (25 Apr 2023) 8508 8509- HTTP3: document the ngtcp2/nghttp3 versions to use for building curl 8510 8511 - refs #11011 to clarify this for people building curl themselves 8512 8513 Closes #11019 8514 8515Daniel Stenberg (25 Apr 2023) 8516 8517- lib: unify the upload/method handling 8518 8519 By making sure we set state.upload based on the set.method value and not 8520 independently as set.upload, we reduce confusion and mixup risks, both 8521 internally and externally. 8522 8523 Closes #11017 8524 8525- RELEASE-NOTES: synced 8526 8527Dan Fandrich (24 Apr 2023) 8528 8529- CI: don't run CI jobs if only another CI was changed 8530 8531 A few paths were missed in the last commit, as well as a job added since 8532 then. 8533 8534 Followup-to 395b9175 8535 8536- CI: adjust labeler match patterns 8537 8538- runtests: support buffering log messages in runner & servers 8539 8540 Log messages generated with logmsg can now be buffered and returned from 8541 the runner as a return value. This will be needed with parallel testing 8542 to allow all messages for one test to be displayed together instead of 8543 interspersed with messages of multiple tests. Buffering can be disabled 8544 by setting a logging callback function with setlogfunc, which is 8545 currently being done to preserve existing logging behaviour for now. 8546 8547 Some additional output is generated in verbose and debugprotocol modes, 8548 which don't always use logmsg. These modes also impact some servers 8549 which generate extra messages. No attempt is made to buffer everything 8550 if these modes are enabled. 8551 8552 Ref: #10818 8553 Closes #11016 8554 8555- runtests: more consistently use logmsg in server control code 8556 8557 Also, display an error when sshversioninfo returns one. 8558 8559 Ref: #10818 8560 8561- runtests: create runner functions for clearlocks and stopservers 8562 8563 runtests.pl now uses runner for all server actions beyond the initial 8564 variable configuration. 8565 8566 Ref: #10818 8567 8568- runtests: tightened servers package exports 8569 8570 The defaults are intended for runtests.pl, whereas runner.pm needs to 8571 explicitly specify them. 8572 8573- runtests: display logs on server failure in singletest() 8574 8575 This is closer to the place where logs are displayed on test failure. 8576 Also, only display these logs if -p is given, which is the same flag 8577 that controls display of test failure logs. Some server log files 8578 need to be deleted later so that they stay around long enough to be 8579 displayed on failure. 8580 8581 Ref: #10818 8582 8583- runtests: turn a print into a logmsg 8584 8585 Also enable another couple of useful messages in verbose mode. 8586 8587 Ref: #10818 8588 8589Daniel Stenberg (24 Apr 2023) 8590 8591- http: store the password in the correct variable 8592 8593 Typo from fc2f1e547a4a, detected by Coverity (because there's dead code 8594 due to this). 8595 8596 Closes #11002 8597 8598Stefan Eissing (24 Apr 2023) 8599 8600- HTTP3/quiche: terminate h1 response header when no body is sent 8601 8602 - fixes a failure in test2501 where a response without body was missing 8603 the final empty line 8604 8605 Closes #11003 8606 8607Dan Fandrich (22 Apr 2023) 8608 8609- runtests: move showdiff into runtests.pl 8610 8611 It's not used anywhere else. 8612 8613- devtest: add a new script for testing the test harness 8614 8615 This is currently useful for starting a test server on its own without 8616 an associated test, which can be used for interactive curl testing or 8617 for validating parts of the test harness itself. More commands can be 8618 added to perform additional functions in the future. 8619 8620 Ref: #10818 8621 Closes #11008 8622 8623- runtests: refactor the main test loop into two 8624 8625 The test loop now has an initial loop that first runs through all 8626 possible tests to build a set of those to attempt on this run based on 8627 features and keywords and only then goes through that new list to run 8628 them. This actually makes it three loops through all tests cases, as 8629 there is an existing loop that gathers possible test numbers from the 8630 test files on disk. 8631 8632 This has two minor effects on the output: all the tests that will be 8633 skipped are displayed at the start (instead of being interspersed with 8634 other tests) and the -l option no longer shows a count of tests at the 8635 end or a (misleading) statement that tests have run successfully. The 8636 skipped tests are also omitted from the test results sent to AppVeyor 8637 and Azure in CI builds. 8638 8639 Another effect is a reduction in the amount of work considered part of 8640 the "Test definition reading and preparation time" reported with -r 8641 making those figures slightly lower than before. 8642 8643 Ref: #10818 8644 8645- runtests: track only the current test timings in runner.pm 8646 8647 This avoids passing these data through through global variables, which 8648 soon won't be possible. 8649 8650 Ref: #10818 8651 8652- runtests: skip test preprocessing when doing -l 8653 8654 This speeds up the output tremendously by avoiding unnecessary work. 8655 8656- runtests: simplify value returned regarding use of valgrind 8657 8658 As a side effect this will now also show in verbose mode that valgrind 8659 is being skipped on tests that explicitly disable it, such as 600. 8660 8661 Ref: #10818 8662 8663- runtests: fix quoting in Appveyor and Azure test integration 8664 8665 Test 1442's name was not quoted correctly so wasn't registered in 8666 Appveyor and it had the wrong name in Azure. The JSON string quotes were 8667 also invalid, even though both servers happened to accept it regardless. 8668 8669 Closes #11010 8670 8671Daniel Stenberg (19 Apr 2023) 8672 8673- RELEASE-NOTES: synced 8674 8675Dan Fandrich (18 Apr 2023) 8676 8677- runtests: spread out the port numbers used by servers 8678 8679 The server ports are chosen randomly for each server, but the random 8680 ranges chosen were inconsistently-sized and overlapping. Now, they are 8681 spread out more so at least the first random port chosen for each server 8682 is guaranteed to not also be chosen by another server. The starting port 8683 numbers are also raised to put them in the Ephemeral Port range—not the 8684 range defined by RFC 6335 but the one used by Linux, which starts lower 8685 and gives us more room to work with. 8686 8687 Reported-by: Daniel Stenberg 8688 8689- runtests: fix problems on <killserver> failure 8690 8691 The verify time must be set in this case, like all cases. An error 8692 message needs to be displayed as well. 8693 8694- runtests: fix perl warning when <tool> is wrong 8695 8696- runtests: don't try to stop stunnel before trying again 8697 8698 Calling stopserver() before retrying stunnel due to an error would stop 8699 the dependent server (such as HTTP) meaning stunnel would have nothing 8700 to talk to when it came up. Don't try to force a stop when it didn't 8701 actually start. Also, don't mark the server as bad for future use when 8702 it starts up on a retry. 8703 8704 Reported-by: eaglegai at github 8705 Tested-by: eaglegai at github 8706 Fixes #10976 8707 8708- runtests: don't accidentally randomly choose the same port 8709 8710 If a server couldn't be started on a port, a new one is randomly chosen 8711 and the server is tried again. Avoid accidentally using a 8712 randomly-chosen 0 port offset by adding 1 to the random number. 8713 8714 Found-by: Daniel Stenberg 8715 8716- runtests: don't attempt to use a port we know is in use 8717 8718 This reduces the startup time when there is a known conflict on the 8719 random port chosen for a server. This was already done for stunnel, but 8720 now it's done for all servers. 8721 8722- http-server: fix server name in a log message 8723 8724 This changed when the file was renamed in commit cbf57176 8725 8726- runtests: refactor into more packages 8727 8728 testutil.pm now contains a few miscellaneous functions that are used in 8729 several places but have no better place to live. subvariables moves to 8730 servers.pm since most variables that it substitutes relate to servers, 8731 so this is the most appropriate place. Rename a few functions for better 8732 naming consistency. 8733 8734 Ref: #10818 8735 Closes #10995 8736 8737- runtests: call timestampskippedevents() in singletest 8738 8739 ..rather than by the runner 8740 8741- runtests: assume a newer Valgrind by default 8742 8743 The tests for an older Valgrind version should probably just be deleted, 8744 given that they're testing for an 18-year-old version. 8745 8746- runtests: refactor test runner code into runner.pm 8747 8748 This is code that is directly responsible for running a single test. 8749 This will eventually run in a separate process as part of the parallel 8750 testing project. 8751 8752 Ref: #10818 8753 8754- runtests: skip unneeded work if test won't be running 8755 8756 This speeds up tests by avoiding unnecessary processing. 8757 8758 Ref: #10818 8759 8760- runtests: factor out singletest_postcheck 8761 8762 This will eventually need to be part of the test runner. 8763 8764 Ref: #10818 8765 8766- test303: kill server after test 8767 8768 Otherwise, an HTTP test closely following this one with a tight time 8769 constraint (e.g. 672) could fail because the test server stays sitting 8770 with the wait command for a while. 8771 8772Patrick Monnerat (18 Apr 2023) 8773 8774- OS400: provide ILE/RPG usage examples 8775 8776 Closes https://github.com/curl/curl/pull/10994 8777 8778- OS400: improve vararg emulation 8779 8780 - Use V7R4 RPG procedure overloading to improve vararg emulation. 8781 8782 From OS400 V7R4 and above, ILE/RPG implements a limited procedure 8783 overloading feature that can be used to improve curl's typed 8784 implementation of varargs procedures. This commit applies it to 8785 curl_easy_setopt(), curl_multi_setopt(), curl_share_setopt() and 8786 curl_easy_getinfo(). 8787 8788 Closes https://github.com/curl/curl/pull/10994 8789 8790- OS400: fix and complete ILE/RPG binding 8791 8792 - Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and 8793 curl_mime_data_ccsid(). 8794 8795 - Add recent definitions, in particular blob, header API and WebSockets 8796 API. 8797 8798 - Support for CURLVERSION_ELEVENTH. 8799 8800 - New functions for EBCDIC support. 8801 8802 Reflect these changes in README.OS400. 8803 8804 Closes https://github.com/curl/curl/pull/10994 8805 8806- OS400: implement EBCDIC support for recent features 8807 8808 - Support CURLVERSION_ELEVENTH. 8809 8810 - New function curl_url_strerror_ccsid(). 8811 8812 - curl_easy_setopt_ccsid() supports blobs and 3 recent string options. 8813 8814 - New function curl_easy_header_ccsid(). 8815 8816 - New generic latin1<-->ccsid conversion functions curl_from_ccsid() and 8817 curl_to_ccsid() for user convenience. 8818 8819 - README.OS400 updated accordingly. 8820 8821 - Removed a leftover QsoSSL support identifier. 8822 8823 Closes https://github.com/curl/curl/pull/10994 8824 8825- OS400: rework build scripts 8826 8827 - Rename shell function "system" to "CLcommand" to avoid confusion with 8828 built-in command. 8829 8830 - Reformat scripts. Fix some indentations. Avoid lines > 80 characters 8831 where possible. 8832 8833 - Support ASCII runtime development files in a user-defined directory 8834 path. 8835 8836 - FIX SONAME detection. 8837 8838 - Drop form API test program compilation (does not exist anymore). 8839 8840 Closes https://github.com/curl/curl/pull/10994 8841 8842Sevan Janiyan (18 Apr 2023) 8843 8844- tests/sshserver.pl: Define AddressFamily earlier 8845 8846 As the comment states "Address family must be specified before ListenAddress" 8847 , otherwise the tests fail to run 8848 `"failed starting SSH server" 52 times (582, 583, 600, 601, 602, 603, 604, 60 8849 5, 606 and 43 more)` 8850 8851 Closes #10983 8852 8853Stefan Eissing (18 Apr 2023) 8854 8855- quiche: Enable IDLE egress handling 8856 8857 Follow-up to 544abeea which added the handling but wrongly left it 8858 commented out. 8859 8860 Closes https://github.com/curl/curl/pull/11000 8861 8862Daniel Stenberg (18 Apr 2023) 8863 8864- docs/examples/protofeats.c: Outputs all protocols and features 8865 8866 Showing off one way to get to char pointer arrays of info returned by 8867 curl_version_info() 8868 8869 Closes #10991 8870 8871- tests/keywords.pl: remove 8872 8873 This script does not work since the introduction of the test 8874 preprocessing. If we need this functionality, it probably needs to be 8875 moved into the runtests tool or similar. 8876 8877 Reported-by: Dan Fandrich 8878 Fixes #10895 8879 Closes #10987 8880 8881Stefan Eissing (17 Apr 2023) 8882 8883- http2: support HTTP/2 to forward proxies, non-tunneling 8884 8885 - with `--proxy-http2` allow h2 ALPN negotiation to 8886 forward proxies 8887 - applies to http: requests against a https: proxy only, 8888 as https: requests will auto-tunnel 8889 - adding a HTTP/1 request parser in http1.c 8890 - removed h2h3.c 8891 - using new request parser in nghttp2 and all h3 backends 8892 - adding test 2603 for request parser 8893 - adding h2 proxy test cases to test_10_* 8894 8895 scorecard.py: request scoring accidentally always run curl 8896 with '-v'. Removed that, expect double numbers. 8897 8898 labeller: added http1.* and h2-proxy sources to detection 8899 8900 Closes #10967 8901 8902Daniel Stenberg (17 Apr 2023) 8903 8904- curl_easy_unescape.3: rename the argument 8905 8906 and highlight it appropriately in the text. 8907 8908 Closes #10979 8909 8910Viktor Szakats (17 Apr 2023) 8911 8912- autotools: sync up clang picky warnings with cmake 8913 8914 Bringing missing options over from CMake. 8915 8916 Move around existing `-Wno-pointer-bool-conversion` option to come 8917 _after_ `-Wconversion`. 8918 8919 Reviewed-by: Marcel Raad 8920 Closes #10974 8921 8922Daniel Stenberg (17 Apr 2023) 8923 8924- tests/libtest/lib1900.c: remove 8925 8926 This file was left behind when the rest of the test was previously removed. 8927 8928 Follow-up to e50a877df74f 8929 8930- src/tool_operhlp.c: fix value stored to 'uerr' is never read 8931 8932 Ref: https://github.com/curl/curl/pull/10974#issuecomment-1510461343 8933 Reported-by: Viktor Szakats 8934 Closes #10982 8935 8936Viktor Szakats (16 Apr 2023) 8937 8938- cmake: speed up and extend picky clang/gcc options 8939 8940 Extend existing picky compiler options with ones missing compared to 8941 autotools builds. Also sync options between clang and gcc. 8942 8943 Redesign the way we enable these options to avoid the slow option 8944 detection almost completely. 8945 8946 This reduces the number of detections from 35 to zero for clang and 8947 3 for gcc, even after adding a bunch of new options. 8948 8949 clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required. 8950 8951 Also show enabled picky options. 8952 8953 Ref: https://github.com/libssh2/libssh2/pull/952 8954 8955 Reviewed-by: Daniel Stenberg 8956 Closes #10973 8957 8958Andreas Falkenhahn (16 Apr 2023) 8959 8960- nbtlm: use semicolons instead of commas for (void) args 8961 8962 Closes #10978 8963 8964Daniel Stenberg (15 Apr 2023) 8965 8966- multi: free up more data earleier in DONE 8967 8968 Before checking for more users of the connection and possibly bailing 8969 out. 8970 8971 Fixes #10971 8972 Reported-by: Paweł Wegner 8973 Closes #10972 8974 8975- RELEASE-NOTES: synced 8976 8977- curl: do NOT append file name to path for upload when there's a query 8978 8979 Added test 425 to verify. 8980 8981 Reported-by: Dirk Rosenkranz 8982 Bug: https://curl.se/mail/archive-2023-04/0008.html 8983 Closes #10969 8984 8985- libcurl-thread.3: improved name resolver wording 8986 8987 And make better .SH sections 8988 8989 Closes #10966 8990 8991Colman Mbuya (14 Apr 2023) 8992 8993- CURLOPT_PROXY_SSL_VERIFYPEER.3: fix minor grammar mistake 8994 8995 Closes #10968 8996 8997Daniel Stenberg (14 Apr 2023) 8998 8999- curl: add --proxy-http2 9000 9001 For trying HTTP/2 with an HTTPS proxy. 9002 9003 Closes #10926 9004 9005- KNOWN_BUGS: remove fixed or outdated issues, move non-bugs 9006 9007 - remove h3 issues believed to be fixed 9008 9009 - make the flaky CI issue be generic and not Windows specific 9010 9011 - "TLS session cache does not work with TFO" now documented 9012 9013 This is now a documented restriction and not a bug. TFO in general is 9014 rarely used and has other problems, making it a low-priotity thing to 9015 work on. 9016 9017 - remove "Renegotiate from server may cause hang for OpenSSL backend" 9018 9019 This is an OpenSSL issue, not a curl one. Even if it taints curl. 9020 9021 - rm "make distclean loops forever" 9022 9023 - rm "configure finding libs in wrong directory" 9024 9025 Added a section to docs/INSTALL.md about it. 9026 9027 - "A shared connection cache is not thread-safe" 9028 9029 Moved over to TODO and expanded for other sharing improvements we 9030 could do 9031 9032 - rm "CURLOPT_OPENSOCKETPAIRFUNCTION is missing" 9033 9034 - rm "Blocking socket operations in non-blocking API" 9035 9036 Already listed as a TODO 9037 9038 - rm "curl compiled on OSX 10.13 failed to run on OSX 10.10" 9039 9040 Water under the bridge. No one cares about this anymore. 9041 9042 - rm "build on Linux links libcurl to libdl" 9043 9044 Verified to not be true (anymore). 9045 9046 - rm "libpsl is not supported" 9047 9048 The cmake build supports it since cafb356e19cda22 9049 9050 Closes #10963 9051 9052- url: fix PVS nits 9053 9054 - expression 'hostptr' is always true 9055 - a part of conditional expression is always true: proxypasswd 9056 - expression 'proxyuser' is always true 9057 - avoid multiple Curl_now() calls in allocate_conn 9058 9059 Ref: #10929 9060 Closes #10959 9061 9062- bufq: simplify since expression is always true 9063 9064 The check for 'len' is already done so it will remain true until 9065 updated. Pointed out by PVS. 9066 9067 Ref: #10929 9068 Closes #10958 9069 9070- hash: fix assigning same value 9071 9072 Pointed out by PVS 9073 9074 Ref: #10929 9075 Closes #10956 9076 9077- cookie: address PVS nits 9078 9079 - avoid assigning the same value again 9080 - remove superfluous check of co->domain 9081 - reduce variable scope for namep/valuep 9082 9083 Ref: #10929 9084 Closes #10954 9085 9086Stefan Eissing (14 Apr 2023) 9087 9088- cf-socket: Disable socket receive buffer by default 9089 9090 - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND 9091 is in place. 9092 9093 While we would like to use the receive buffer, we have stalls in 9094 parallel transfers where not all buffered data is consumed and no socket 9095 events happen. 9096 9097 Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround 9098 that has been disabled by default since b4b6e4f1, due to other bugs. 9099 9100 Closes https://github.com/curl/curl/pull/10961 9101 9102- cf-h2-proxy: fix processing ingress to stop too early 9103 9104 - progress ingress stopped too early, causing data 9105 from the underlying filters to not be processed and 9106 report that no tunnel data was available 9107 - this lead to "hangers" where no socket activity was 9108 seen but data rested in buffers 9109 9110 Closes #10952 9111 9112- http3: check stream_ctx more thoroughly in all backends 9113 9114 - callbacks and filter methods might be invoked at unexpected 9115 times, e.g. when the transfer's stream_ctx has not been initialized 9116 yet or, more likely, has already been taken down. 9117 - check for existance of stream_ctx in such places and return 9118 an error or silently succeed the call. 9119 9120 Closes #10951 9121 9122Daniel Stenberg (13 Apr 2023) 9123 9124- ftp: fix 'portsock' variable was assigned the same value 9125 9126 Pointed out by PVS 9127 9128 Ref: #10929 9129 Closes #10955 9130 9131- ftp: remove dead code 9132 9133 This condition can never be true here since it is handled already 28 9134 lines above. 9135 9136 Pointed out by PVS. 9137 9138 Ref: #10929 9139 Closes #10957 9140 9141- cf-h1-proxy: skip an extra NULL assign 9142 9143 and use Curl_safefree() once to save another NULL assign. Found by PVS. 9144 9145 Ref. #10929 9146 Closes #10953 9147 9148Philip Heiduck (13 Apr 2023) 9149 9150- GHA: suppress git clone output 9151 9152 Follow-up: https://github.com/curl/curl/commit/8203aa6ed405ec832d2c62f18dfda2 9153 93f89a23f9 9154 9155 Closes #10949 9156 9157Stefan Eissing (13 Apr 2023) 9158 9159- cf-socket: remove dead code discovered by PVS 9160 9161 Closes #10960 9162 9163Daniel Stenberg (13 Apr 2023) 9164 9165- http: skip a double NULL assign 9166 9167 and also use a local variable to shorten the long names and increase 9168 readability in the function. Pointed out by PVS. 9169 9170 Ref: #10929 9171 Closes #10950 9172 9173- mime: skip NULL assigns after Curl_safefree() 9174 9175 Pointed out by PVS. 9176 9177 Ref: #10929 9178 Closes #10947 9179 9180- rtsp: skip NULL assigns after Curl_safefree() 9181 9182 ... since this is a macro that assigns NULL itself. Pointed out by PVS. 9183 9184 Ref: #10929 9185 Closes #10946 9186 9187- smb: remove double assign 9188 9189 The same value is assigned the same value already a few lines above. 9190 Pointed out by PVS. 9191 9192 Ref: #10929 9193 Closes #10945 9194 9195- transfer: skip extra assign 9196 9197 The 'result' variable already contains CURLE_OK at this point, no use in 9198 setting it again. Pointed out by PVS. 9199 9200 Ref: #10929 9201 Closes #10944 9202 9203- urlapi: skip a pointless assign 9204 9205 It stores a null byte after already having confirmed there is a null 9206 byte there. Detected by PVS. 9207 9208 Ref: #10929 9209 Closes #10943 9210 9211Philip Heiduck (13 Apr 2023) 9212 9213- GHA: suppress git clone output 9214 9215 Closes #10939 9216 9217Stefan Eissing (13 Apr 2023) 9218 9219- tests: make test_12_01 a bit more forgiving on connection counts 9220 9221- cf-socket: add socket recv buffering for most tcp cases 9222 9223 - use bufq as recv buffer, also for Windows pre-receive handling 9224 - catch small reads followed by larger ones in a single socket 9225 call. A common pattern on TLS connections. 9226 9227 Closes #10787 9228 9229Daniel Stenberg (13 Apr 2023) 9230 9231- urlapi: cleanups 9232 9233 - move host checks together 9234 - simplify the scheme parser loop and the end of host name parser 9235 - avoid itermediate buffer storing in multiple places 9236 - reduce scope for several variables 9237 - skip the Curl_dyn_tail() call for speed 9238 - detect IPv6 earlier and skip extra checks for such hosts 9239 - normalize directly in dynbuf instead of itermediate buffer 9240 - split out the IPv6 parser into its own funciton 9241 - call the IPv6 parser directly for ipv6 addresses 9242 - remove (unused) special treatment of % in host names 9243 - junkscan() once in the beginning instead of scattered 9244 - make junkscan return error code 9245 - remove unused query management from dedotdotify() 9246 - make Curl_parse_login_details use memchr 9247 - more use of memchr() instead of strchr() and less strlen() calls 9248 - make junkscan check and return the URL length 9249 9250 An optimized build runs one of my benchmark URL parsing programs ~41% 9251 faster using this branch. (compared against the shipped 7.88.1 library 9252 in Debian) 9253 9254 Closes #10935 9255 9256Josh McCullough (13 Apr 2023) 9257 9258- http2: fix typo in infof() call 9259 9260 Closes #10940 9261 9262Daniel Stenberg (12 Apr 2023) 9263 9264- noproxy: pointer to local array 'hostip' is stored outside scope 9265 9266 Ref: #10929 9267 Closes #10933 9268 9269Stefan Eissing (12 Apr 2023) 9270 9271- connect: fix https connection setup to treat ssl_mode correctly 9272 9273 - for HTTPS protocol, a disabled ssl should never be acceptables. 9274 9275 Closes #10934 9276 9277Douglas R. Reno (12 Apr 2023) 9278 9279- CMakeLists.txt: fix typo for Haiku detection 9280 9281 Closes #10937 9282 9283Dan Fandrich (11 Apr 2023) 9284 9285- pathhelp: use the cached $use_cygpath when available 9286 9287- runtests: eliminate unneeded variable 9288 9289- runtests: make the # of server start attempts a constant 9290 9291- runtests: on startup failure call displaylogs only in serverfortest 9292 9293 This reduces the number of calls spread throughout the code. 9294 9295 Ref: #10818 9296 Closes #10919 9297 9298- runtests: return an error code with startservers() 9299 9300 The code indicates the kind of failure encountered in starting a server, 9301 which can be used by the caller to tailor the user experience. 9302 9303 Ref: #10818 9304 9305- runtests: abort early if runpingpongserver is given a bad server type 9306 9307- runtests: don't use the SMB server verification time as reference 9308 9309 %FTPTIME2 and %FTPTIME3 should be set by the FTP server only, for 9310 consistency. 9311 9312- tests: factor out the test server management code 9313 9314 This now lives in servers.pm with some configuration variables moved to 9315 globalconfig.pm 9316 9317 Ref: #10818 9318 9319- runtests: remove an inappropriate use of runclientoutput 9320 9321 This function is intended for running client code, not servers. 9322 9323- runtests: only add $LIBDIR to the path for checktestcmd 9324 9325 Since checkcmd is for finding servers, there will never be anything in 9326 this directory of interest to them. 9327 9328 Ref: #10818 9329 9330- tests: log sshserver.pl messages to a file 9331 9332 The logmsg messages were thrown away before, so they are now available 9333 for debugging. 9334 9335- runtests: also show DISABLED tests with -l 9336 9337 Other reasons for skipping tests are ignored for -l, so being explicitly 9338 disabled should be too. 9339 9340- runtests: move the UNIX sockets into $PIDDIR 9341 9342 These were missed when the other server files were moved there. 9343 9344 Follow-up to 70d2fca2 9345 9346 Ref: #10818 9347 9348- tests: tighten up perl exports 9349 9350 This reduces namespace pollution a little. 9351 9352 Ref: #10818 9353 9354- tests: turn perl modules into full packages 9355 9356 This helps enforce more modularization and encapsulation. Enable and fix 9357 warnings on a few packages. Also, rename ftp.pm to processhelp.pm since 9358 there's really nothing ftp-specific in it. 9359 9360 Ref: #10818 9361 9362Daniel Stenberg (11 Apr 2023) 9363 9364- multi: remove a few superfluous assigns 9365 9366 PVS found these "The 'rc' variable was assigned the same value." cases. 9367 9368 Ref: #10929 9369 Closes #10932 9370 9371- schannel: add clarifying comment 9372 9373 Explaining how the PVS warning in #10929 is wrong: Dereferencing of the 9374 null pointer 'backend->cred' might take place. 9375 9376 Closes #10931 9377 9378- cookie: clarify that init with data set to NULL reads no file 9379 9380 ... and make Curl_cookie_add() require 'data' being set proper with an 9381 assert. 9382 9383 The function has not worked with a NULL data for quite some time so this 9384 just corrects the code and comment. 9385 9386 This is a different take than the proposed fixed in #10927 9387 9388 Reported-by: Kvarec Lezki 9389 Ref: #10929 9390 Closes #10930 9391 9392Kvarec Lezki (11 Apr 2023) 9393 9394- vtls: remove int typecast for sizeof() 9395 9396 V220 Suspicious sequence of types castings: memsize -> 32-bit integer -> 9397 memsize. The value being cast: 'sizeof 9398 (buf->data)'. curl\lib\vtls\vtls.c 2025 9399 9400 https://pvs-studio.com/en/docs/warnings/v220/ 9401 9402 Closes #10928 9403 9404Stefan Eissing (11 Apr 2023) 9405 9406- http2: fix copynpaste error reported by coverity 9407 9408 - move all code handling HTTP/2 frames for a particular 9409 stream into a separate function to keep from confusing 9410 the call `data` with the stream `data`. 9411 9412 Closes #10924 9413 9414Dan Fandrich (11 Apr 2023) 9415 9416- tests: log a too-long Unix socket path in sws and socksd 9417 9418 Ref: #10919 9419 9420Daniel Stenberg (11 Apr 2023) 9421 9422- gen.pl: error on duplicated See-Also fields 9423 9424 Updated http2.d accordingly. 9425 9426 Closes #10925 9427 9428- http2: avoid possible null pointer dereference 9429 9430 Reported-by: Dan Fandrich 9431 Fixes #10920 9432 Closes #10923 9433 9434- lib1560: verify that more bad host names are rejected 9435 9436 when setting the hostname component of a URL 9437 9438 Closes #10922 9439 9440- curl_url_set.3: mention that users can set content rather freely 9441 9442 ... which then might render bad URLs if you extract a URL later. 9443 9444 Closes #10921 9445 9446Dan Fandrich (10 Apr 2023) 9447 9448- CI: retry failed downloads of aws-lc 9449 9450 Don't fail the build in case of a temporary server problem. 9451 9452- test1169: fix so it works properly everywhere 9453 9454 - Use an absolute path for the -L option since the module isn't in the 9455 perl path 9456 - Create the needed test file in a <file> section; <precheck> isn't 9457 intended for this 9458 - Fix the test number in the file name, which was wrong 9459 9460 Follow-up to f754990a 9461 9462 Ref: #10818 9463 Fixes #10889 9464 Closes #10917 9465 9466- tests: stop using strndup(), which isn't portable 9467 9468 It's not available on Solaris 10, for example. Since this is just test 9469 code that doesn't need to use an optimized system version, replace it 9470 with the implementation copied from tool_cb_hdr.c. 9471 9472- runtests: fix an incorrect comment about the ld_preload feature 9473 9474 Follow-up to 1f631864 9475 9476 Ref: #10818 9477 9478Daniel Stenberg (9 Apr 2023) 9479 9480- urlapi: prevent setting invalid schemes with *url_set() 9481 9482 A typical mistake would be to try to set "https://" - including the 9483 separator - this is now rejected as that would then lead to 9484 url_get(... URL...) would get an invalid URL extracted. 9485 9486 Extended test 1560 to verify. 9487 9488 Closes #10911 9489 9490Biswapriyo Nath (9 Apr 2023) 9491 9492- http2: remove unused Curl_http2_strerror function declaration 9493 9494 Curl_http2_strerror was renamed to http2_strerror in 9495 05b100aee247bb9bec8e9a1b0 and then http2_strerror was removed in 9496 5808a0d0f5ea0399d4a2a2 9497 9498 This also fixes the following compiler error 9499 9500 lib/http2.h:41:33: error: unknown type name 'uint32_t' 9501 lib/http2.h:1:1: note: 'uint32_t' is defined in header '<stdint.h>' 9502 9503 Closes #10912 9504 9505Daniel Stenberg (8 Apr 2023) 9506 9507- RELEASE-NOTES: synced 9508 9509SuperIlu on github (8 Apr 2023) 9510 9511- config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP 9512 9513 Fixes #10905 9514 Closes #10910 9515 9516Daniel Stenberg (8 Apr 2023) 9517 9518- lib: remove CURLX_NO_MEMORY_CALLBACKS 9519 9520 The only user of this define was 'chkdecimalpoint' - a special purpose 9521 test tool that was built but not used anymore (since 17c18fbc3 - Apr 9522 2020). 9523 9524 Closes #10908 9525 9526- CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2 9527 9528 Setting this proxy type allows curl to negotiate and use HTTP/2 with 9529 HTTPS proxies. 9530 9531 Closes #10900 9532 9533Ali Khodkar (8 Apr 2023) 9534 9535- write-out.d: add missing periods 9536 9537 Closes #10897 9538 9539Daniel Stenberg (7 Apr 2023) 9540 9541- http2: remove check for !data after it was already dereferenced 9542 9543 Pointed out by Coverity 9544 9545 Closes #10906 9546