File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / CHANGES
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:14 2020 UTC (4 years, 3 months ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    1:                                   _   _ ____  _
    2:                               ___| | | |  _ \| |
    3:                              / __| | | | |_) | |
    4:                             | (__| |_| |  _ <| |___
    5:                              \___|\___/|_| \_\_____|
    6: 
    7:                                   Changelog
    8: 
    9: Version 7.70.0 (29 Apr 2020)
   10: 
   11: Daniel Stenberg (29 Apr 2020)
   12: - RELEASE-NOTES: 7.70.0
   13: 
   14: - THANKS: synced with the 7.70.0 release
   15: 
   16: - headers: copyright range fix
   17: 
   18: - [Rikard Falkeborn brought this change]
   19: 
   20:   doh: Constify some input pointers
   21:   
   22:   Closes #5306
   23: 
   24: - nss: check for PK11_CreateDigestContext() returning NULL
   25:   
   26:   ... to avoid crashes!
   27:   
   28:   Reported-by: Hao Wu
   29:   Fixes #5302
   30:   Closes #5303
   31: 
   32: - travis: bump the wolfssl CI build to use 4.4.0
   33:   
   34:   Closes #5301
   35: 
   36: - copyright updates: adjust year ranges
   37: 
   38: Marc Hoersken (26 Apr 2020)
   39: - CI: do not include */ci branches in PR builds
   40:   
   41:   Align Azure Pipelines with GitHub Actions.
   42: 
   43: Daniel Stenberg (25 Apr 2020)
   44: - runtests: check for the disabled tests relative srcdir
   45:   
   46:   To make it work correctly for out-of-tree builds.
   47:   
   48:   Follow-up to 75e8feb6fb08b
   49:   
   50:   Bug: https://github.com/curl/curl/pull/5288#issuecomment-619346389
   51:   Reported-by: Marcel Raad
   52:   Closes #5297
   53: 
   54: - runtests: revert commenting out a line I did for debugging
   55:   
   56:   Follow-up to 11091cd4d. It was not meant to be pushed!
   57: 
   58: - smtp: set auth correctly
   59:   
   60:   Regression since 7.69.0 and 68fb25fa3fcff.
   61:   
   62:   The code wrongly assigned 'from' instead of 'auth' which probably was a
   63:   copy and paste mistake from other code, leading to that auth could
   64:   remain NULL and later cause an error to be returned.
   65:   
   66:   Assisted-by: Eric Sauvageau
   67:   Fixes #5294
   68:   Closes #5295
   69: 
   70: Marcel Raad (25 Apr 2020)
   71: - lib: clean up whitespace
   72:   
   73:   This fixes CodeFactor warnings.
   74: 
   75: Daniel Stenberg (25 Apr 2020)
   76: - [Anderson Toshiyuki Sasaki brought this change]
   77: 
   78:   libssh: avoid options override by configuration files
   79:   
   80:   Previously, options set explicitly through command line options could be
   81:   overridden by the configuration files parsed automatically when
   82:   ssh_connect() was called.
   83:   
   84:   By calling ssh_options_parse_config() explicitly, the configuration
   85:   files are parsed before setting the options, avoiding the options
   86:   override.  Once the configuration files are parsed, the automatic
   87:   configuration parsing is not executed.
   88:   
   89:   Fixes #4972
   90:   Closes #5283
   91:   Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
   92: 
   93: - runtests: when <killserver> mentions http, kill http/2 too
   94:   
   95:   Since the http2 test server is a mere proxy that needs to know about the
   96:   dynamic port the HTTP server is using, it too needs to get restarted
   97:   when the http server is killed.
   98:   
   99:   A regression caused by 80d6515.
  100:   
  101:   Fixes #5289
  102:   Closes #5291
  103: 
  104: - [Yuri Slobodyanyuk brought this change]
  105: 
  106:   docs: fix two typos
  107:   
  108:   Closes #5292
  109: 
  110: - [Emil Engler brought this change]
  111: 
  112:   tests/git: ignore mqttd and port files
  113:   
  114:   Closes #5290
  115: 
  116: - tests: make runtests check that disabled tests exists
  117:   
  118:   ... and error out if so. Removed '536' from DISABLED as there is no such
  119:   test file.
  120:   
  121:   Closes #5288
  122: 
  123: - test1154: set a proper name
  124: 
  125: - select: make Curl_socket_check take timediff_t timeout
  126:   
  127:   Coverity found CID 1461718:
  128:   
  129:   Integer handling issues (CONSTANT_EXPRESSION_RESULT) "timeout_ms >
  130:   9223372036854775807L" is always false regardless of the values of its
  131:   operands. This occurs as the logical second operand of "||".
  132:   
  133:   Closes #5240
  134: 
  135: - [i-ky brought this change]
  136: 
  137:   libcurl-multi.3: added missing full stop
  138:   
  139:   Closes #5285
  140: 
  141: Jay Satiro (22 Apr 2020)
  142: - transfer: Switch PUT to GET/HEAD on 303 redirect
  143:   
  144:   Prior to this change if there was a 303 reply to a PUT request then
  145:   the subsequent request to respond to that redirect would also be a PUT.
  146:   It was determined that was most likely incorrect based on the language
  147:   of the RFCs. Basically 303 means "see other" resource, which implies it
  148:   is most likely not the same resource, therefore we should not try to PUT
  149:   to that different resource.
  150:   
  151:   Refer to the discussions in #5237 and #5248 for more information.
  152:   
  153:   Fixes https://github.com/curl/curl/issues/5237
  154:   Closes https://github.com/curl/curl/pull/5248
  155: 
  156: Daniel Stenberg (22 Apr 2020)
  157: - lib/mk-ca-bundle: skip empty certs
  158:   
  159:   Reviewed-by: Emil Engler
  160:   Reported-by: Ashwin Metpalli
  161:   Fixes #5278
  162:   Closes #5280
  163: 
  164: - version: skip idn2_check_version() check and add precaution
  165:   
  166:   A gcc-10's -fanalyze complaint made me spot and do these improvements.
  167:   
  168:   Closes #5281
  169: 
  170: - RELEASE-NOTES: synced
  171: 
  172: - [Brian Bergeron brought this change]
  173: 
  174:   curl.h: update comment typo
  175:   
  176:   "routines with be invoked" -> "routines will be invoked"
  177:   
  178:   Closes #5279
  179: 
  180: - [Emil Engler brought this change]
  181: 
  182:   GnuTLS: Don't skip really long certificate fields
  183:   
  184:   Closes #5271
  185: 
  186: - gnutls: bump lowest supported version to 3.1.10
  187:   
  188:   GnuTLS 3.1.10 added new functions we want to use. That version was
  189:   released on Mar 22, 2013. Removing support for older versions also
  190:   greatly simplifies the code.
  191:   
  192:   Ref: #5271
  193:   Closes #5276
  194: 
  195: - mqtt: make NOSTATE get within the debug name array
  196: 
  197: - tests: run the RTSP test server on a dynamic port number
  198:   
  199:   To avoid port collisions.
  200:   
  201:   Closes #5272
  202: 
  203: - tests: add %NOLISTENPORT and use it
  204:   
  205:   The purpose with this variable is to provide a port number that is
  206:   reasonably likely to not have a listener on the local host so that tests
  207:   can try connect failures against it. It uses port 47 - "reserved"
  208:   according to IANA.
  209:   
  210:   Updated six tests to use it instead of the previous different ports.
  211:   
  212:   Assisted-by: Emil Engler
  213:   Closes #5270
  214: 
  215: - mqtt: remove code with no purpose
  216:   
  217:   Detected by Coverity. CID 1462319.
  218:   
  219:   "The same code is executed when the condition result is true or false,
  220:   because the code in the if-then branch and after the if statement is
  221:   identical."
  222:   
  223:   Closes #5275
  224: 
  225: - mqtt: fix Curl_read()  error handling while reading remaining length
  226:   
  227:   Detected by Coverity. CID 1462320.
  228:   
  229:   Closes #5274
  230: 
  231: - server/tftpd: fix compiler warning
  232:   
  233:   Follow-up from 369ce38ac1d
  234:   Reported-by: Marc Hörsken
  235: 
  236: - http: free memory when Alt-Used header creation fails due to OOM
  237:   
  238:   Reported-by: James Fuller
  239:   Fixes #5268
  240:   Closes #5269
  241: 
  242: Daniel Gustafsson (20 Apr 2020)
  243: - lib: fix typos in comments and errormessages
  244:   
  245:   This fixes a few randomly spotted typos in recently merged code, most
  246:   notably one in a userfacing errormessage the schannel code.
  247: 
  248: Daniel Stenberg (20 Apr 2020)
  249: - tests: run the SOCKS test server on a dynamic port number
  250:   
  251:   Closes #5266
  252: 
  253: - [Johannes Schindelin brought this change]
  254: 
  255:   multi-ssl: reset the SSL backend on `Curl_global_cleanup()`
  256:   
  257:   When cURL is compiled with support for multiple SSL backends, it is
  258:   possible to configure an SSL backend via `curl_global_sslset()`, but
  259:   only *before* `curl_global_init()` was called.
  260:   
  261:   If another SSL backend should be used after that, a user might be
  262:   tempted to call `curl_global_cleanup()` to start over. However, we did
  263:   not foresee that use case and forgot to reset the SSL backend in that
  264:   cleanup.
  265:   
  266:   Let's allow that use case.
  267:   
  268:   Fixes #5255
  269:   Closes #5257
  270:   Reported-by: davidedec on github
  271:   Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  272: 
  273: - tests: run the TFTP test server on a dynamic port number
  274:   
  275:   Picking a dynamic unused port is better than a fixed to avoid the
  276:   collision risk.
  277:   
  278:   Closes #5265
  279: 
  280: - mqtt: improve the state machine
  281:   
  282:   To handle PUBLISH before SUBACK and more.
  283:   
  284:   Updated the existing tests and added three new ones.
  285:   
  286:   Reported-by: Christoph Krey
  287:   Bug: https://curl.haxx.se/mail/lib-2020-04/0021.html
  288:   Closes #5246
  289: 
  290: - runtests: always put test number in servercmd file
  291: 
  292: - RELEASE-NOTES: synced
  293: 
  294: - release-notes.pl: fix parsing typo
  295: 
  296: James Fuller (20 Apr 2020)
  297: - [xquery brought this change]
  298: 
  299:   ensure all references to ports are replaced by vars
  300: 
  301: - [xquery brought this change]
  302: 
  303:   add more alt-svc test coverage
  304: 
  305: Daniel Stenberg (20 Apr 2020)
  306: - test1247: use http server to get the port number set
  307:   
  308:   Follow-up to 0f5db7b263f
  309: 
  310: - runtests: use a unix domain socket path with the pid in the name
  311:   
  312:   To make it impossible for test cases to access the file name without
  313:   using the proper variable for the purpose.
  314:   
  315:   Closes #5264
  316: 
  317: Daniel Gustafsson (19 Apr 2020)
  318: - [Tom brought this change]
  319: 
  320:   src: Remove C99 constructs to ensure C89 compliance
  321:   
  322:   This fixes the error: 'for' loop initial declaration used outside C99
  323:   mode by declaring the loop increment variable in the beginning of the
  324:   block instead of inside the for loop.
  325:   
  326:   Fixes #5254
  327:   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  328: 
  329: Daniel Stenberg (19 Apr 2020)
  330: - runtests: dummy init the ports variables to avoid warnings
  331:   
  332:   ... and generate something that can help debug test cases.
  333: 
  334: - [Patrick Monnerat brought this change]
  335: 
  336:   mime: properly check Content-Type even if it has parameters
  337:   
  338:   New test 669 checks this fix is effective.
  339:   
  340:   Fixes #5256
  341:   Closes #5258
  342:   Reported-by: thanhchungbtc on github
  343: 
  344: - tests/FILEFORMAT: converted to markdown and extended
  345:   
  346:   Closes #5261
  347: 
  348: - test1245: make it work with dynamic FTP server port
  349: 
  350: - test1055: make it work with dynamic FTP port
  351: 
  352: - test1028: make it run on dynamic FTP server port
  353: 
  354: - tests: move pingpong server to dynamic listening port
  355:   
  356:   FTP, IMAP, POP3, SMTP and their IPv6 versions are now all on dynamic
  357:   ports
  358:   
  359:   Test 842-845 are unfortunately a bit hard to move over to this concept
  360:   right now and require "default port" still...
  361: 
  362: - test1056: work with dynamic HTTP ipv6 port
  363: 
  364: - test1448: work with dynamic HTTP server port
  365: 
  366: - tests: introduce preprocessed test cases
  367:   
  368:   The runtests script now always performs variable replacement on the
  369:   entire test source file before the test gets executed, and saves the
  370:   updated version in a temporary file (log/test[num]) so that all test
  371:   case readers/servers can use that version (if present) and thus enjoy
  372:   the powers of test case variable substitution.
  373:   
  374:   This is necessary to allow complete port number freedom.
  375:   
  376:   Test 309 is updated to work with a non-fixed port number thanks to this.
  377: 
  378: - tests: make 2006-2010 handle different port number lengths
  379: 
  380: - tests: run the sws server on "any port"
  381:   
  382:   Makes the test servers for HTTP and Gopher pop up on a currently unused
  383:   port and runtests adapts to that!
  384:   
  385:   Closes #5247
  386: 
  387: Marc Hoersken (18 Apr 2020)
  388: - sockfilt: tidy variable naming and data structure in select_ws
  389:   
  390:   This commit does not introduce any logical changes to the code.
  391:   
  392:   Reviewed-by: Jay Satiro and Marcel Raad
  393:   Closes #5238
  394: 
  395: Daniel Stenberg (17 Apr 2020)
  396: - [Anderson Toshiyuki Sasaki brought this change]
  397: 
  398:   libssh: Use new ECDSA key types to check known hosts
  399:   
  400:   From libssh 0.9.0, ssh_key_type() returns different key types for ECDSA
  401:   keys depending on the curve.
  402:   
  403:   Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
  404:   Fixes #5252
  405:   Closes #5253
  406: 
  407: Marcel Raad (17 Apr 2020)
  408: - appveyor: add Unicode winbuild jobs
  409:   
  410:   These are cheap as they don't build tests.
  411:   
  412:   Closes https://github.com/curl/curl/pull/5063
  413: 
  414: Daniel Stenberg (16 Apr 2020)
  415: - mqttd: s/errno/SOCKERRNO
  416:   
  417:   To behave proper on Windows
  418:   Reported-by: Gisle Vanem
  419:   Bug: https://github.com/curl/curl/commit/5e855bbd18f84a02c951be7cac6188276818cdac#r38507132
  420:   Closes #5241
  421: 
  422: - buildconf: use find -execdir instead, remove -print and the ares files
  423:   
  424:   Follow-up to 1e41bec96a6e
  425:   
  426:   Suggested-by: Marc Hörsken
  427: 
  428: - [Alexander V. Tikhonov brought this change]
  429: 
  430:   buildconf: avoid using tempfile when removing files
  431:   
  432:   Closes #5213
  433: 
  434: - copyright: bump the copyright year range
  435: 
  436: - scripts/release-notes.pl: accept colon after the Fixes/Closes keywords
  437: 
  438: - [JP Mens brought this change]
  439: 
  440:   docs/MQTT: replace confusing 80 by 75
  441:   
  442:   I was a bit surprised by the `80`: first thought: what's HTTP doing
  443:   here? ;)
  444:   
  445:   Closes #5236
  446: 
  447: - [Brad King brought this change]
  448: 
  449:   cmake: Avoid MSVC C4273 warnings in send/recv checks
  450:   
  451:   We use `check_c_source_compiles` to check possible send/recv signatures
  452:   by reproducing the forward declarations from system headers.  On Windows
  453:   the `winsock2.h` header adds dll linkage settings to its forward
  454:   declaration.  If ours does not match the compiler warns:
  455:   
  456:       warning C4273: 'recv': inconsistent dll linkage
  457:   
  458:   Add `WINSOCK_API_LINKAGE` to our test signatures when it is defined so
  459:   that our linkage is consistent with that from `winsock2.h`.
  460:   
  461:   Fixes #4764
  462:   Closes #5232
  463: 
  464: Jay Satiro (14 Apr 2020)
  465: - KNOWN_BUGS: Add entry 'Blocking socket operations'
  466:   
  467:   - Add threaded resolver cleanup and GSSAPI for FTP to the TODO list of
  468:     known blocking operations.
  469:   
  470:   - New known bugs entry 'Blocking socket operations in non-blocking API'
  471:     that directs to the TODO's list of known blocking operations.
  472:   
  473:   Ref: https://github.com/curl/curl/pull/5214#issuecomment-612488021
  474:   
  475:   Reported-by: Marc Hoersken
  476:   
  477:   Closes https://github.com/curl/curl/pull/5216
  478: 
  479: Marc Hoersken (14 Apr 2020)
  480: - test2043: use revoked.badssl.com instead of revoked.grc.com
  481:   
  482:   The certificate of revoked.grc.com has expired on 2020-04-13.
  483:   
  484:   Reviewed-by: Jay Satiro
  485:   
  486:   Closes #5233
  487: 
  488: - sockfilt: fix broken pipe on Windows to be ready in select_ws
  489:   
  490:   Closes #5228
  491: 
  492: Daniel Stenberg (14 Apr 2020)
  493: - RELEASE-NOTES: synced
  494: 
  495: - scripts/release-notes: fix duplicate output header
  496: 
  497: - github/workflow: enable MQTT in the macOS debug build
  498: 
  499: - azure: add mqtt support to one of the Windows builds
  500: 
  501: - travis: add mqtt job on Linux
  502: 
  503: - tests: add four MQTT tests 1190 - 1193
  504: 
  505: - tests: add the mqtt test server mqttd
  506: 
  507: - tests: support hex encoded data and mqtt server
  508:   
  509:   The mqtt server is started using a "random" port.
  510: 
  511: - [Björn Stenberg brought this change]
  512: 
  513:   mqtt: add new experimental protocol
  514:   
  515:   Closes #5173
  516: 
  517: - TODO: Consider convenience options for JSON and XML?
  518:   
  519:   Closes #5203
  520: 
  521: - tool: do not declare functions with Curl_ prefix
  522:   
  523:   To avoid collision risks with private libcurl symbols when linked with
  524:   static versions (or just versions not hiding internal symbols).
  525:   
  526:   Reported-by: hydra3333 on github
  527:   Fixes #5219
  528:   Closes #5234
  529: 
  530: - [Nathaniel R. Lewis brought this change]
  531: 
  532:   cmake: add aliases so exported target names are available in tree
  533:   
  534:   Reviewed-by: Brad King
  535:   Closes #5206
  536: 
  537: - version: increase buffer space for ssl version output
  538:   
  539:   To avoid it getting truncated, especially when several SSL backends are
  540:   built-in.
  541:   
  542:   Reported-by: Gisle Vanem
  543:   Fixes #5222
  544:   Closes #5226
  545: 
  546: Marc Hoersken (13 Apr 2020)
  547: - cirrus: no longer ignore test 504 which is working again
  548:   
  549:   The test is working again, because TCP blackholing is disabled.
  550: 
  551: - appveyor: completely disable tests that fail to timeout early
  552:   
  553:   The tests changed from ignored to disabled are tests that are
  554:   about connecting to non-listening socket. On AppVeyor these
  555:   tests are not reliable, because for some unknown reason the
  556:   connect is not timing out before the test time limit is reached.
  557: 
  558: Daniel Stenberg (13 Apr 2020)
  559: - test1908: avoid using fixed port number in test data
  560:   
  561:   Closes #5225
  562: 
  563: Jay Satiro (12 Apr 2020)
  564: - [Andrew Kurushin brought this change]
  565: 
  566:   schannel: Fix blocking timeout logic
  567:   
  568:   - Fix schannel_send for the case when no timeout was set.
  569:   
  570:   Prior to this change schannel would error if the socket was not ready
  571:   to send data and no timeout was set.
  572:   
  573:   This commit is similar to parent commit 89dc6e0 which recently made the
  574:   same change for SOCKS, for the same reason. Basically it was not well
  575:   understood that when Curl_timeleft returns 0 it is not a timeout of 0 ms
  576:   but actually means no timeout.
  577:   
  578:   Fixes https://github.com/curl/curl/issues/5177
  579:   Closes https://github.com/curl/curl/pull/5221
  580: 
  581: - socks: Fix blocking timeout logic
  582:   
  583:   - Document in Curl_timeleft's comment block that returning 0 signals no
  584:     timeout (ie there's infinite time left).
  585:   
  586:   - Fix SOCKS' Curl_blockread_all for the case when no timeout was set.
  587:   
  588:   Prior to this change if the timeout had a value of 0 and that was passed
  589:   to SOCKET_READABLE it would return right away instead of blocking. That
  590:   was likely because it was not well understood that when Curl_timeleft
  591:   returns 0 it is not a timeout of 0 ms but actually means no timeout.
  592:   
  593:   Ref: https://github.com/curl/curl/pull/5214#issuecomment-612512360
  594:   
  595:   Closes https://github.com/curl/curl/pull/5220
  596: 
  597: - [Marc Hoersken brought this change]
  598: 
  599:   gopher: check remaining time left during write busy loop
  600:   
  601:   Prior to this change gopher's blocking code would block forever,
  602:   ignoring any set timeout value.
  603:   
  604:   Assisted-by: Jay Satiro
  605:   Reviewed-by: Daniel Stenberg
  606:   
  607:   Similar to #5220 and #5221
  608:   Closes #5214
  609: 
  610: Daniel Stenberg (13 Apr 2020)
  611: - [Dirkjan Bussink brought this change]
  612: 
  613:   gnutls: ensure TLS 1.3 when SRP isn't requested
  614:   
  615:   When SRP is requested in the priority string, GnuTLS will disable
  616:   support for TLS 1.3. Before this change, curl would always add +SRP to
  617:   the priority list, effectively always disabling TLS 1.3 support.
  618:   
  619:   With this change, +SRP is only added to the priority list when SRP
  620:   authentication is also requested. This also allows updating the error
  621:   handling here to not have to retry without SRP. This is because SRP is
  622:   only added when requested and in that case a retry is not needed.
  623:   
  624:   Closes #5223
  625: 
  626: Marc Hoersken (12 Apr 2020)
  627: - tests/server: add hidden window to gracefully handle WM_CLOSE
  628:   
  629:   Forward Window events as signals to existing signal event handler.
  630: 
  631: - tests/server: add CTRL event handler for Win32 consoles
  632:   
  633:   Forward CTRL events as signals to existing signal event handler.
  634: 
  635: - tests/server: move all signal handling routines to util.[ch]
  636:   
  637:   Avoid code duplication to prepare for portability enhancements.
  638: 
  639: Daniel Stenberg (12 Apr 2020)
  640: - compressed.d: stress that the headers are not modified
  641:   
  642:   Suggested-by: Michael Osipov
  643:   Assisted-by: Jay Satiro
  644:   Bug: https://github.com/curl/curl/issues/5182#issuecomment-611638008
  645:   Closes #5217
  646: 
  647: Marc Hoersken (11 Apr 2020)
  648: - tests/server/util.c: use curl_off_t instead of long for pid
  649:   
  650:   Avoid potential overflow of huge PIDs on Windows.
  651:   
  652:   Related to #5188
  653:   Assisted-by: Marcel Raad
  654: 
  655: - tests: use Cygwin/msys PIDs for stunnel and sshd on Windows
  656:   
  657:   Since the Windows versions of both programs would write Windows
  658:   PIDs to their pidfiles which we cannot handle, we need to use
  659:   our known perl.exe Cygwin/msys PID together with exec() in order
  660:   to tie the spawned processes to the existance of our perl.exe
  661:   
  662:   The perl.exe that is executing secureserver.pl and sshserver.pl
  663:   has a Cygwin/msys PID, because it is started inside Cygwin/msys.
  664:   
  665:   Related to #5188
  666: 
  667: - tests: add Windows compatible pidwait like pidkill and pidterm
  668:   
  669:   Related to #5188
  670: 
  671: - tests: fix conflict between Cygwin/msys and Windows PIDs
  672:   
  673:   Add 65536 to Windows PIDs to allow Windows specific treatment
  674:   by having disjunct ranges for Cygwin/msys and Windows PIDs.
  675:   
  676:   See also:
  677:   - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
  678:     h=b5e1003722cb14235c4f166be72c09acdffc62ea
  679:   - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
  680:     h=448cf5aa4b429d5a9cebf92a0da4ab4b5b6d23fe
  681:   
  682:   Replaces #5178
  683:   Closes #5188
  684: 
  685: Daniel Stenberg (11 Apr 2020)
  686: - RELEASE-NOTES: synced
  687: 
  688: - release-notes.pl: detect the start of the references in cleanup mode
  689: 
  690: - Revert "file: on Windows, refuse paths that start with \\"
  691:   
  692:   This reverts commit 1b71bc532bde8621fd3260843f8197182a467ff2.
  693:   
  694:   Reminded-by: Chris Roberts
  695:   Bug: https://curl.haxx.se/mail/archive-2020-04/0013.html
  696:   
  697:   Closes #5215
  698: 
  699: Jay Satiro (11 Apr 2020)
  700: - lib: fix conversion warnings for SOCKET_WRITABLE/READABLE
  701:   
  702:   - If loss of data may occur converting a timediff_t to time_t and
  703:     the time value is > TIME_T_MAX then treat it as TIME_T_MAX.
  704:   
  705:   This is a follow-up to 8843678 which removed the (time_t) typecast
  706:   from the macros so that conversion warnings could be identified.
  707:   
  708:   Closes https://github.com/curl/curl/pull/5199
  709: 
  710: - test1148: tolerate progress updates better (again)
  711:   
  712:   - Ignore intermediate progress updates.
  713:   
  714:   - Support locales that use a character other than period as decimal
  715:     separator (eg 100,0%).
  716:   
  717:   test1148 checks that the progress finishes at 100% and has the right
  718:   bar width. Prior to this change the test assumed that the only progress
  719:   reported for such a quick transfer was 100%, however in rare instances
  720:   (like in the CI where transfer time can slow considerably) there may be
  721:   intermediate updates. For example, below is stderrlog1148 from a failed
  722:   CI run with explicit \r and \n added (it is one line; broken up so that
  723:   it's easier to understand).
  724:   
  725:   \r
  726:   \r##################################                                        48.3%
  727:   \r######################################################################## 100.0%
  728:   \n
  729:   
  730:   Closes https://github.com/curl/curl/pull/5194
  731: 
  732: Marc Hoersken (10 Apr 2020)
  733: - sshserver.pl: use cached Win32 environment check variable
  734: 
  735: - appveyor: partially revert 3413a110 to keep build without proxy
  736:   
  737:   Ref: #5211 and #4526
  738:   Reported-by: Marcel Raad
  739: 
  740: - appveyor: ignore failing 'connect to non-listening proxy' tests
  741:   
  742:   Closes #5211
  743: 
  744: - CI/macos: convert CRLF to LF and align indentation
  745: 
  746: Daniel Stenberg (9 Apr 2020)
  747: - url: allow non-HTTPS altsvc-matching for debug builds
  748:   
  749:   This is already partly supported but this part was missing.
  750:   Reported-by: James Fuller
  751:   
  752:   Closes #5205
  753: 
  754: - server/resolve: remove AI_CANONNAME to make macos tell the truth
  755:   
  756:   With this bit set, my mac successfully resolves "ip6-localhost" when in
  757:   fact there is no such host known to my machine! That in turn made test
  758:   241 wrongly execute and fail.
  759:   
  760:   Closes #5202
  761: 
  762: - runtests: fix warning about using an undefined variable
  763:   
  764:   Follow-up from 4d939ef6ceb2db1
  765: 
  766: - release-notes: fix the initial reference list output
  767: 
  768: - github actions: run when pushed to master or */ci + PRs
  769:   
  770:   Avoid double-builds when using "local" branches for PRs. For both macos
  771:   and fuzz jobs.
  772:   
  773:   Closes #5201
  774: 
  775: - runtests: provide nicer errormsg when protocol "dump" file is empty
  776: 
  777: - [Gilles Vollant brought this change]
  778: 
  779:   schannel: support .P12 or .PFX client certificates
  780:   
  781:   Used with curl command line option like this: --cert
  782:   <filename>:<password> --cert-type p12
  783:   
  784:   Closes #5193
  785: 
  786: - tests: verify split initial HTTP requests with CURL_SMALLREQSEND
  787:   
  788:   test1294: "split request" being when the entire request isn't sent in
  789:   the first go, and the remainder is sent in the PERFORM state. A GET
  790:   request is otherwise not sending anything during PERFORM.
  791:   
  792:   test1295: same kind of split but with POST
  793:   
  794:   Closes #5197
  795: 
  796: - http: don't consider upload done if the request isn't completely sent off
  797:   
  798:   Fixes #4919
  799:   Closes #5197
  800: 
  801: - http: allow Curl_add_buffer_send() to do a short first send by force
  802:   
  803:   In a debug build, settting the environment variable "CURL_SMALLREQSEND"
  804:   will make the first HTTP request send not send more bytes than the set
  805:   amount, thus ending up verifying that the logic for handling a split
  806:   HTTP request send works correctly.
  807: 
  808: - connect: store connection info for QUIC connections
  809:   
  810:   Restores the --head functionality to the curl utility which extracts
  811:   'protocol' that is stored that way.
  812:   
  813:   Reported-by: James Fuller
  814:   Fixes #5196
  815:   Closes #5198
  816: 
  817: - tests/README: update the port numbers list
  818:   
  819:   Since the pipelining server is long gone.
  820:   Reported-by: James Fuller
  821: 
  822: - select: remove typecast from SOCKET_WRITABLE/READABLE macros
  823:   
  824:   So that they don't hide conversions-by-mistake
  825:   
  826:   Reviewed-by: Jay Satiro
  827:   Closes #5190
  828: 
  829: - CURLOPT_WRITEFUNCTION.3: add inline example and new see-also
  830:   
  831:   Closes #5192
  832: 
  833: - release-notes: output trailing references sorted numerically
  834: 
  835: - cleanup: correct copyright year range on a few files
  836: 
  837: - configure: remove use of -vec-report0 from CFLAGS with icc
  838:   
  839:   ... as it apparently isn't (always) supported.
  840:   Reported-by: Alain Miniussi
  841:   Fixes #5096
  842:   Closes #5191
  843: 
  844: - warnless: remove code block for icc that didn't work
  845:   
  846:   Reported-by: Alain Miniussi
  847:   Fixes #5096
  848: 
  849: Marc Hoersken (6 Apr 2020)
  850: - dist: add missing setup-win32.h
  851:   
  852:   Follow up to d820224b8b
  853: 
  854: Daniel Stenberg (6 Apr 2020)
  855: - RELEASE-NOTES: synced
  856: 
  857: - scripts/release-notes.pl: add helper script for RELEASE-NOTES maintenance
  858:   
  859:   This script helps putting entries in the RELEASE-NOTES using a coherent
  860:   style and sorting with a minimal human editing effort - as long as the
  861:   first line in the commit message is good enough! There's a short howto
  862:   at the top of the file.
  863: 
  864: - [Dennis Felsing brought this change]
  865: 
  866:   configure: don't check for Security.framework when cross-compiling
  867:   
  868:   Since it checks for the local file, not the cross-compiled one.
  869:   
  870:   Closes #5189
  871: 
  872: - TODO: Option to make -Z merge lined based outputs on stdout
  873:   
  874:   Closes #5175
  875: 
  876: - lib: never define CURL_CA_BUNDLE with a getenv
  877:   
  878:   - it breaks the build (since 6de756c9b1de34b7a1)
  879:   - it's not documented and not consistent across platforms
  880:   - the curl tool does that getenv magic
  881:   
  882:   Bug: https://github.com/curl/curl/commit/6de756c#r38127030
  883:   Reported-by: Gisle Vanem
  884:   
  885:   Closes #5187
  886: 
  887: Marc Hoersken (5 Apr 2020)
  888: - lib670: use the same Win32 API check as all other lib tests
  889: 
  890: - appveyor: use random test server ports based upon APPVEYOR_API_URL
  891:   
  892:   Avoid conflicts of test server ports with AppVeyor API on localhost.
  893:   
  894:   Closes #5034
  895: 
  896: - appveyor: sort builds by type and add two new variants
  897:   
  898:   Related to #5034 and #5063
  899: 
  900: - appveyor: show failed tests in log even if test is ignored
  901:   
  902:   And print API response with newline only if there is one
  903: 
  904: - appveyor: turn disabled tests into ignored result tests
  905: 
  906: Daniel Stenberg (5 Apr 2020)
  907: - KNOWN_BUGS: fixed "USE_UNIX_SOCKETS on Windows"
  908:   
  909:   Fixed with #5170 (commit 23a870f2fd041278)
  910: 
  911: - test1566: verify --etag-compare that gets a 304 back
  912:   
  913:   Verifies the fix in #5183
  914:   
  915:   Closes #5186
  916: 
  917: - [Kwon-Young Choi brought this change]
  918: 
  919:   CURLINFO_CONDITION_UNMET: return true for 304 http status code
  920:   
  921:   In libcurl, CURLINFO_CONDITION_UNMET is used to avoid writing to the
  922:   output file if the server did not transfered a file based on time
  923:   condition. In the same manner, getting a 304 HTTP response back from the
  924:   server, for example after passing a custom If-Match-* header, also
  925:   fulfill this condition.
  926:   
  927:   Fixes #5181
  928:   Closes #5183
  929: 
  930: - [Kwon-Young Choi brought this change]
  931: 
  932:   curl: allow both --etag-compare and --etag-save with same file name
  933:   
  934:   This change inverse the order of processing for the --etag-compare and
  935:   --etag-save option to process first --etag-compare. This in turn allows
  936:   to use the same file name to compare and save an etag.
  937:   
  938:   The original behavior of not failing if the etag file does not exists is
  939:   conserved.
  940:   
  941:   Fixes #5179
  942:   Closes #5180
  943: 
  944: Viktor Szakats (4 Apr 2020)
  945: - windows: enable UnixSockets with all build toolchains
  946:   
  947:   Extend existing unix socket support in Windows builds to be
  948:   enabled for all toolchain vendors or versions. (Previously
  949:   it was only supported with certain MSVC versions + more recent
  950:   Windows 10 SDKs)
  951:   
  952:   Ref: https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
  953:   Ref: https://github.com/curl/curl/issues/5162
  954:   Closes: https://github.com/curl/curl/pull/5170
  955: 
  956: Daniel Stenberg (4 Apr 2020)
  957: - KNOWN_BUGS: Store TLS context per transfer instead of per connection
  958:   
  959:   Closes #5102
  960: 
  961: Marc Hoersken (3 Apr 2020)
  962: - sockfilt: remove redundancy in timeout handling
  963:   
  964:   And update other logmsg output in select_ws on Windows.
  965: 
  966: - sockfilt: fix handling of ready closed sockets on Windows
  967:   
  968:   Replace the incomplete workaround regarding FD_CLOSE
  969:   only signalling once by instead doing a pre-check with
  970:   standard select and storing the result for later use.
  971:   
  972:   select keeps triggering on closed sockets on Windows while
  973:   WSAEventSelect fires only once with data still available.
  974:   By doing the pre-check we do not run in a deadlock
  975:   due to waiting forever for another FD_CLOSE event.
  976: 
  977: - sockfilt: fix race-condition of waiting threads and event handling
  978:   
  979:   Fix race-condition of waiting threads finishing while events are
  980:   already being processed which lead to invalid or skipped events.
  981:   
  982:   Use mutex to check for one event at a time or do post-processing.
  983:   In addition to mutex-based locking use specific event as signal.
  984:   
  985:   Closes #5156
  986: 
  987: Daniel Stenberg (2 Apr 2020)
  988: - [Leo Neat brought this change]
  989: 
  990:   CI-fuzz: increase fuzz time to 40 minutes
  991:   
  992:   Closes #5174
  993: 
  994: Marc Hoersken (2 Apr 2020)
  995: - CI: increase Azure Pipelines timeouts due to performance issues
  996:   
  997:   The current demand on Azure negatively impacts the CI performance.
  998: 
  999: - runtests.pl: log host OS as detected by Perl environment
 1000: 
 1001: - ftpserver.pl: log before and after data connection is closed
 1002: 
 1003: Daniel Stenberg (1 Apr 2020)
 1004: - RELEASE-NOTES: synced
 1005: 
 1006: - RELEASE-PROCEDURE.md: run the copyright.pl script!
 1007: 
 1008: - vquic/ngtcp2.h: update copyright year range
 1009:   
 1010:   Follow-up to 0736ee73d346a52
 1011: 
 1012: - [Daiki Ueno brought this change]
 1013: 
 1014:   CI: add build with ngtcp2 + gnutls on Travis CI
 1015: 
 1016: - [Daiki Ueno brought this change]
 1017: 
 1018:   vquic: add support for GnuTLS backend of ngtcp2
 1019:   
 1020:   Currently, the TLS backend used by vquic/ngtcp2.c is selected at compile
 1021:   time. Therefore OpenSSL support needs to be explicitly disabled.
 1022:   
 1023:   Signed-off-by: Daiki Ueno <dueno@redhat.com>
 1024:   Closes #5148
 1025: 
 1026: - [Gisle Vanem brought this change]
 1027: 
 1028:   examples/sessioninfo.c: add include to fix compiler warning
 1029:   
 1030:   Fixes #5171
 1031: 
 1032: - misc: copyright year updates
 1033:   
 1034:   Follow-up to 7a71965e9
 1035: 
 1036: - [Harry Sintonen brought this change]
 1037: 
 1038:   build: fixed build for systems with select() in unistd.h
 1039:   
 1040:   Closes #5169
 1041: 
 1042: - memdebug: don't log free(NULL)
 1043:   
 1044:   ... it serves no purpose and fills up the log.
 1045: 
 1046: - cleanup: insert newline after if() conditions
 1047:   
 1048:   Our code style mandates we put the conditional block on a separate
 1049:   line. These mistakes are now detected by the updated checksrc.
 1050: 
 1051: - checksrc: warn on obvious conditional blocks on the same line as if()
 1052:   
 1053:   Closes #5164
 1054: 
 1055: - [Roger Orr brought this change]
 1056: 
 1057:   cmake: add CMAKE_MSVC_RUNTIME_LIBRARY
 1058:   
 1059:   Fixes #5165
 1060:   Closes #5167
 1061: 
 1062: - [Daiki Ueno brought this change]
 1063: 
 1064:   ngtcp2: update to git master for the key installation API change
 1065:   
 1066:   This updates the ngtcp2 OpenSSL backend to follow the API change in
 1067:   commit 32e703164 of ngtcp2.
 1068:   
 1069:   Notable changes are:
 1070:   - ngtcp2_crypto_derive_and_install_{rx,tx}_key have been added to replace
 1071:     ngtcp2_crypto_derive_and_install_key
 1072:   - the 'side' argument of ngtcp2_crypto_derive_and_install_initial_key
 1073:     has been removed
 1074:   
 1075:   Fixes #5166
 1076:   Closes #5168
 1077: 
 1078: - [Cyrus brought this change]
 1079: 
 1080:   SECURITY.md: minor rephrase
 1081:   
 1082:   Closes #5158
 1083: 
 1084: - output.d: quote the URL when globbing
 1085:   
 1086:   Some shells do globbing of their own unless the URL is quoted, so maybe
 1087:   encourage this.
 1088:   
 1089:   Co-authored-by: Jay Satiro
 1090:   Closes #5160
 1091: 
 1092: - dist: add tests/version-scan.pl to tarball
 1093:   
 1094:   ... used in test 1177.
 1095:   
 1096:   Follow-up to a97d826f6de3
 1097: 
 1098: - test1177: verify that all the CURL_VERSION_ bits are documented
 1099: 
 1100: - curl.h: remnove CURL_VERSION_ESNI. Never supported nor documented
 1101:   
 1102:   Considered experimental and therefore we can do this.
 1103:   
 1104:   Closes #5157
 1105: 
 1106: - KNOWN_BUGS: DoH doesn't inherit all transfer options
 1107:   
 1108:   Closes #4578
 1109:   Closes #4579
 1110: 
 1111: - KNOWN_BUGS: DoH leaks memory after followlocation
 1112:   
 1113:   Closes #4592
 1114: 
 1115: - KNOWN_BUGS: "FTPS needs session reuse"
 1116:   
 1117:   Closes #4654
 1118: 
 1119: - KNOWN_BUGS: "stick to same family over SOCKS pro" is presumed fixed
 1120: 
 1121: - TODO: Set custom client ip when using haproxy protocol
 1122:   
 1123:   Closes #5125
 1124: 
 1125: Michael Kaufmann (27 Mar 2020)
 1126: - writeout_json: Fix data type issues
 1127:   
 1128:   Load long values correctly (e.g. for http_code).
 1129:   
 1130:   Use curl_off_t (not long) for:
 1131:   - size_download (CURLINFO_SIZE_DOWNLOAD_T)
 1132:   - size_upload (CURLINFO_SIZE_UPLOAD_T)
 1133:   
 1134:   The unit for these values is bytes/second, not microseconds:
 1135:   - speed_download (CURLINFO_SPEED_DOWNLOAD_T)
 1136:   - speed_upload (CURLINFO_SPEED_UPLOAD_T)
 1137:   
 1138:   Fixes #5131
 1139:   Closes #5152
 1140: 
 1141: Daniel Stenberg (27 Mar 2020)
 1142: - mailmap: fixup a few author names/fields
 1143:   
 1144:   Douglas Steinwand, Gökhan Şengün, Jessa Chandler, Julian Z and
 1145:   Svyatoslav Mishyn
 1146: 
 1147: - version: add 'cainfo' and 'capath' to version info struct
 1148:   
 1149:   Suggested-by: Timothe Litt
 1150:   URL: https://curl.haxx.se/mail/lib-2020-03/0090.html
 1151:   Reviewed-by: Jay Satiro
 1152:   
 1153:   Closes #5150
 1154: 
 1155: - RELEASE-NOTES: synced
 1156: 
 1157: Jay Satiro (26 Mar 2020)
 1158: - SSLCERTS.md: Fix example code for setting CA cert file
 1159:   
 1160:   Prior to this change the documentation erroneously said use
 1161:   CURLOPT_CAPATH to set a CA cert file.
 1162:   
 1163:   Bug: https://curl.haxx.se/mail/lib-2020-03/0121.html
 1164:   Reported-by: Timothe Litt
 1165:   
 1166:   Closes https://github.com/curl/curl/pull/5151
 1167: 
 1168: Marc Hoersken (26 Mar 2020)
 1169: - sockfilt: add logmsg output to select_ws_wait_thread on Windows
 1170:   
 1171:   Assisted-by: Jay Satiro
 1172:   Reviewed-by: Daniel Stenberg
 1173:   
 1174:   Closes #5086
 1175: 
 1176: Daniel Stenberg (26 Mar 2020)
 1177: - docs/make: generate curl.1 from listed files only
 1178:   
 1179:   Previously it rendered the page from files matching "*.d" in the correct
 1180:   directory, which worked fine in git builds when the files were added but
 1181:   made it easy to forget adding the files to the dist.
 1182:   
 1183:   Now, only man page sections listed in DPAGES in Makefile.inc will be
 1184:   used, thus "forcing" us to update this to get the man page right and get
 1185:   it included in the dist at the same time.
 1186:   
 1187:   Ref: #5146
 1188:   Closes #5149
 1189: 
 1190: - openssl: adapt to functions marked as deprecated since version 3
 1191:   
 1192:   OpenSSL 3 deprecates SSL_CTX_load_verify_locations and the MD4, DES
 1193:   functions we use.
 1194:   
 1195:   Fix the MD4 and SSL_CTX_load_verify_locations warnings.
 1196:   
 1197:   In configure, detect OpenSSL v3 and if so, inhibit the deprecation
 1198:   warnings. OpenSSL v3 deprecates the DES functions we use for NTLM and
 1199:   until we rewrite the code to use non-deprecated functions we better
 1200:   ignore these warnings as they don't help us.
 1201:   
 1202:   Closes #5139
 1203: 
 1204: - dist: add mail-rcpt-allowfails.d to the tarball
 1205:   
 1206:   Reported-by: Maksim Stsepanenka
 1207:   Reviewed-by: Jat Satiro
 1208:   
 1209:   Closes #5146
 1210: 
 1211: - travis: update the ngtcp2 build to use the latest OpenSSL patch
 1212:   
 1213:   ... which also makes it OpenSSL 1.1.1d based and not v3.
 1214: 
 1215: Marc Hoersken (24 Mar 2020)
 1216: - CI: remove default Ubuntu build from GitHub Actions
 1217:   
 1218:   We are already running a very similar Ubuntu build on Travis CI.
 1219:   The macOS variant of this default build is kept on Github Actions.
 1220: 
 1221: - CI: bring GitHub Actions fuzzing job in line with macOS jobs
 1222:   
 1223:   Update YAML formatting, job naming and triggers.
 1224: 
 1225: - CI: migrate macOS jobs from Azure and Travis CI to GitHub Actions
 1226:   
 1227:   Reduce workload on Azure Pipelines and Travis CI while
 1228:   consolidating macOS jobs onto less utilized GitHub Actions.
 1229:   
 1230:   Reviewed-by: Daniel Stenberg
 1231:   
 1232:   Closes #5124
 1233: 
 1234: Daniel Stenberg (24 Mar 2020)
 1235: - config: remove all defines of HAVE_DES_H
 1236:   
 1237:   As there's no code using it.
 1238:   
 1239:   Closes #5144
 1240: 
 1241: - copyright: fix out-of-date copyright ranges and missing headers
 1242:   
 1243:   Reported by the new script 'scripts/copyright.pl'. The script has a
 1244:   regex whitelist for the files that don't need copyright headers.
 1245:   
 1246:   Removed three (mostly usesless) README files from docs/
 1247:   
 1248:   Closes #5141
 1249: 
 1250: - packages: add OS400/chkstrings.c to the dist
 1251:   
 1252:   Reported-by: Jon Rumsey
 1253:   Fixes #5142
 1254:   Closes #5143
 1255: 
 1256: - [Clément Notin brought this change]
 1257: 
 1258:   nghttp2: 1.12.0 required
 1259:   
 1260:   since nghttp2_session_set_local_window_size is needed
 1261:   
 1262:   Closes #5140
 1263: 
 1264: - RELEASE-NOTES: synced
 1265: 
 1266: - [Calvin Buckley brought this change]
 1267: 
 1268:   OS400: Update strings for ccsid-ifier
 1269:   
 1270:   Fixes build.
 1271:   
 1272:   Closes #5132
 1273: 
 1274: - cirrus: make freebsd ignore the tests instead of skipping
 1275:   
 1276:   To allow us to see in the CI logs how they actually behave
 1277:   
 1278:   Closes #5091
 1279: 
 1280: - cirrus: move the sanitizer build from freebsd 13 to freebsd 12
 1281: 
 1282: - Revert "cirrus-ci: disable the FreeBSD 13 builds"
 1283:   
 1284:   This reverts commit 691b71be930f0e285c8f7a76efd56bbe0576cda6.
 1285: 
 1286: - getinfo: provide CURLINFO_HEADER_SIZE and CURLINFO_REQUEST_SIZE override
 1287:   
 1288:   To let debug-builds return fake values, like in test 970.
 1289:   
 1290:   Ref: #5131
 1291:   Closes #5136
 1292: 
 1293: - test970: improve the test
 1294:   
 1295:   - send more data to make problems more obvious
 1296:   - don't start the data with minus, it makes diffs harder to read
 1297:   - skip the headers in the stdout comparison
 1298:   - save to a file name to also verify 'filename_effective'
 1299:   
 1300:   Ref: #5131
 1301: 
 1302: - CURLINFO_NUM_CONNECTS: improve accuracy
 1303:   
 1304:   The counter was not bumped in all cases correctly.
 1305:   
 1306:   Reported-by: Marcel Raad
 1307:   Ref: #5131
 1308:   Closes #5135
 1309: 
 1310: - TODO: Use "random" ports for the test servers
 1311: 
 1312: - lib/curl_setup: adjust the copyright year range
 1313:   
 1314:   Follow-up from d820224b8
 1315: 
 1316: Jay Satiro (21 Mar 2020)
 1317: - curl_setup: define _WIN32_WINNT_[OS] symbols
 1318:   
 1319:   .. because not all Windows build systems have those symbols, and even
 1320:   those that do may be missing newer symbols (eg the Windows 7 SDK does
 1321:   not define _WIN32_WINNT_WIN10).
 1322:   
 1323:   Those symbols are used in build-time logic to decide which API to use
 1324:   and prior to this change if the symbols were missing it would have
 1325:   resulted in deprecated API being used when more recent functions were
 1326:   available (eg GetVersionEx used instead of VerifyVersionInfo).
 1327:   
 1328:   Reported-by: FuccDucc@users.noreply.github.com
 1329:   
 1330:   Probably fixes https://github.com/curl/curl/issues/4995
 1331:   Closes https://github.com/curl/curl/pull/5057
 1332: 
 1333: - [Ross Burton brought this change]
 1334: 
 1335:   curl-functions.m4: remove inappropriate AC_REQUIRE
 1336:   
 1337:   AC_REQUIRE means "if this macro hasn't been executed already, execute
 1338:   it".  So in a wrapper around AC_RUN_IFELSE, AC_REQUIRE(AC_RUN_IFELSE)
 1339:   isn't correct at that will execute AC_RUN_IFELSE without any arguments.
 1340:   
 1341:   With autoconf 2.69 this is basically a no-op, but with autoconf 2.70,
 1342:   AC_RUN_IFELSE without a default value when cross-compiling is fatal.
 1343:   The result is that curl with autoconf 2.70 cannot cross-compile.
 1344:   
 1345:   Fixes https://github.com/curl/curl/issues/5126
 1346:   Closes https://github.com/curl/curl/pull/5130
 1347: 
 1348: Marc Hoersken (20 Mar 2020)
 1349: - ci/tests: fix Azure Pipelines not running Windows containers
 1350:   
 1351:   Workaround posted here: microsoft/azure-pipelines-agent#2864
 1352:   
 1353:   Assisted-by: Simon Chalifoux
 1354:   Assisted-by: Tommy Petty
 1355:   
 1356:   Fixes #5117
 1357:   Closes #5129
 1358: 
 1359: Daniel Stenberg (20 Mar 2020)
 1360: - tests: add test 430, 431 and 432 to verify the --config fix
 1361:   
 1362:   Verify the fixes in 4e0b4fee4
 1363: 
 1364: - [Rici Lake brought this change]
 1365: 
 1366:   cmdline: fix handling of OperationConfig linked list (--next)
 1367:   
 1368:   Ensures that -K/--config inserts new items at the end of the list
 1369:   instead of overwriting the second item, and that after a -K/--config
 1370:   option has been parsed, the option parser's view of the current config
 1371:   is update.
 1372:   
 1373:   Fixes #5120
 1374:   Closes #5123
 1375: 
 1376: Marc Hoersken (20 Mar 2020)
 1377: - test2100: fix static port instead of dynamic value being used
 1378: 
 1379: - test970: fix static ip:port instead of dynamic values being used
 1380: 
 1381: Daniel Stenberg (19 Mar 2020)
 1382: - secure transport: remove the BACKEND define kludge
 1383:   
 1384:   Closes #5122
 1385: 
 1386: - mbedtls: remove the BACKEND define kludge
 1387: 
 1388: - bearssl: remove the BACKEND define kludge
 1389: 
 1390: - wolfssl: remove the BACKEND define kludge
 1391: 
 1392: - nss: remove the BACKEND define kludge
 1393: 
 1394: - gnutls: remove the BACKEND define kludge
 1395: 
 1396: - openssl: remove the BACKEND define kludge
 1397:   
 1398:   Use a proper variable instead to make it easier to use a debugger and
 1399:   read the code.
 1400: 
 1401: Marc Hoersken (19 Mar 2020)
 1402: - tests: make Python-based servers compatible with Python 2 and 3
 1403:   
 1404:   Update smbserver.py and negtelnetserver.py to be compatible with
 1405:   Python 3 while staying backwards-compatible to support Python 2.
 1406:   
 1407:   Fix string encoding and handling of echoed and transferred data.
 1408:   
 1409:   Tested with both Python 2.7.17 and Python 3.7.7
 1410:   
 1411:   Reported-by: Daniel Stenberg
 1412:   Assisted-by: Kamil Dudka
 1413:   Reviewed-by: Marcel Raad
 1414:   
 1415:   Fixes #5104
 1416:   Closes #5110
 1417: 
 1418: Daniel Stenberg (18 Mar 2020)
 1419: - writeout_json: use curl_off_t printf() option for the time output
 1420:   
 1421:   Follow-up to: 04c03416e68fd635a15
 1422:   
 1423:   Closes #5115
 1424: 
 1425: - RELEASE-NOTES: synced
 1426:   
 1427:   Uh, I missed this in 1a46b218db
 1428: 
 1429: - RELEASE-NOTES: synced
 1430:   
 1431:   ... and bumped curlver.h to 7.70.0
 1432: 
 1433: Jay Satiro (18 Mar 2020)
 1434: - http2: Fix erroneous debug message that h2 connection closed
 1435:   
 1436:   Prior to this change in libcurl debug builds http2 stream closure was
 1437:   erroneously referred to as connection closure.
 1438:   
 1439:   Before:
 1440:   * nread <= 0, server closed connection, bailing
 1441:   
 1442:   After:
 1443:   * nread == 0, stream closed, bailing
 1444:   
 1445:   Closes https://github.com/curl/curl/pull/5118
 1446: 
 1447: Daniel Stenberg (18 Mar 2020)
 1448: - tool_setopt: correct the copyright year range
 1449:   
 1450:   Follow-up to 5450428491
 1451: 
 1452: Jay Satiro (18 Mar 2020)
 1453: - [Johannes Schindelin brought this change]
 1454: 
 1455:   schannel: add "best effort" revocation check option
 1456:   
 1457:   - Implement new option CURLSSLOPT_REVOKE_BEST_EFFORT and
 1458:     --ssl-revoke-best-effort to allow a "best effort" revocation check.
 1459:   
 1460:   A best effort revocation check ignores errors that the revocation check
 1461:   was unable to take place. The reasoning is described in detail below and
 1462:   discussed further in the PR.
 1463:   
 1464:   ---
 1465:   
 1466:   When running e.g. with Fiddler, the schannel backend fails with an
 1467:   unhelpful error message:
 1468:   
 1469:           Unknown error (0x80092012) - The revocation function was unable
 1470:           to check revocation for the certificate.
 1471:   
 1472:   Sadly, many enterprise users who are stuck behind MITM proxies suffer
 1473:   the very same problem.
 1474:   
 1475:   This has been discussed in plenty of issues:
 1476:   https://github.com/curl/curl/issues/3727,
 1477:   https://github.com/curl/curl/issues/264, for example.
 1478:   
 1479:   In the latter, a Microsoft Edge developer even made the case that the
 1480:   common behavior is to ignore issues when a certificate has no recorded
 1481:   distribution point for revocation lists, or when the server is offline.
 1482:   This is also known as "best effort" strategy and addresses the Fiddler
 1483:   issue.
 1484:   
 1485:   Unfortunately, this strategy was not chosen as the default for schannel
 1486:   (and is therefore a backend-specific behavior: OpenSSL seems to happily
 1487:   ignore the offline servers and missing distribution points).
 1488:   
 1489:   To maintain backward-compatibility, we therefore add a new flag
 1490:   (`CURLSSLOPT_REVOKE_BEST_EFFORT`) and a new option
 1491:   (`--ssl-revoke-best-effort`) to select the new behavior.
 1492:   
 1493:   Due to the many related issues Git for Windows and GitHub Desktop, the
 1494:   plan is to make this behavior the default in these software packages.
 1495:   
 1496:   The test 2070 was added to verify this behavior, adapted from 310.
 1497:   
 1498:   Based-on-work-by: georgeok <giorgos.n.oikonomou@gmail.com>
 1499:   Co-authored-by: Markus Olsson <j.markus.olsson@gmail.com>
 1500:   Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
 1501:   
 1502:   Closes https://github.com/curl/curl/pull/4981
 1503: 
 1504: - multi: Improve parameter check for curl_multi_remove_handle
 1505:   
 1506:   - If an easy handle is owned by a multi different from the one specified
 1507:     then return CURLM_BAD_EASY_HANDLE.
 1508:   
 1509:   Prior to this change I assume user error could cause corruption.
 1510:   
 1511:   Closes https://github.com/curl/curl/pull/5116
 1512: 
 1513: Viktor Szakats (17 Mar 2020)
 1514: - windows: suppress UI in all CryptAcquireContext() calls
 1515:   
 1516:   Ref: https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta#parameters
 1517:   Reviewed-by: Marc Hörsken
 1518:   Closes https://github.com/curl/curl/pull/5088
 1519: 
 1520: Daniel Stenberg (17 Mar 2020)
 1521: - writeout_json: add missing comma to fix the HTTP version
 1522:   
 1523:   Follow-up to 04c03416e68fd635a15
 1524: 
 1525: - test 970: verify --write-out '%{json}'
 1526:   
 1527:   Makes curl_easy_getinfo() of "variable" numerical content instead return
 1528:   the number set in the env variable `CURL_TIME`.
 1529:   
 1530:   Makes curl_version() of "variable" textual content. This guarantees a
 1531:   stable version string which can be tested against. Environment variable
 1532:   `CURL_VERSION` defines the content.
 1533:   
 1534:   Assisted-by: Mathias Gumz
 1535: 
 1536: - [Mathias Gumz brought this change]
 1537: 
 1538:   writeout: support to generate JSON output
 1539:   
 1540:   This commit adds support to generate JSON via the writeout feature:
 1541:   
 1542:       -w "%{json}"
 1543:   
 1544:   It leverages the existing infrastructure as much as possible. Thus,
 1545:   generating the JSON on STDERR is possible by:
 1546:   
 1547:       -w "%{stderr}%{json}"
 1548:   
 1549:   This implements a variant of
 1550:   https://github.com/curl/curl/wiki/JSON#--write-out-json.
 1551:   
 1552:   Closes #4870
 1553: 
 1554: - CI: stop ignoring 323, it is disabled
 1555: 
 1556: - DISABLED: disable test 323
 1557:   
 1558:   The test uses SRP to "a server not supporting it" but modern stunnel
 1559:   versions will silently accept it and remain happy. The test is therefore
 1560:   faulty.
 1561:   
 1562:   I haven't figured out how to make stunnel explicitly reject SRP-using
 1563:   connects.
 1564:   
 1565:   Reported-by: Marc Hörsken
 1566:   Fixes #5105
 1567:   Closes #5113
 1568: 
 1569: Marc Hoersken (17 Mar 2020)
 1570: - ci/tests: increase timeouts for torture builds on Azure Pipelines
 1571:   
 1572:   For some reason the torture builds have slowed down recently.
 1573:   
 1574:   Reported-by: Daniel Stenberg
 1575: 
 1576: Daniel Stenberg (16 Mar 2020)
 1577: - cmake: add support for building with wolfSSL
 1578:   
 1579:   My working build cmdline:
 1580:   
 1581:   $ cmake -DCMAKE_PREFIX_PATH=$HOME/build-wolfssl -DCMAKE_USE_WOLFSSL=ON .
 1582:   
 1583:   Assisted-by: Brad King
 1584:   Closes #5095
 1585: 
 1586: - tool_operate: fix add_parallel_transfers when more are in queue
 1587:   
 1588:   Trying to return early from the function if no new transfers were added
 1589:   would break the "morep" argument and cause issues. This could lead to
 1590:   zero content "transfers" (within quotes since they would never be
 1591:   started) when parallel-max was reduced.
 1592:   
 1593:   Reported-by: Gavin Wong
 1594:   Analyzed-by: Jay Satiro
 1595:   Fixes #4937
 1596:   Closes #5112
 1597: 
 1598: - vtls: free ssl_config leftovers on out-of-memory
 1599:   
 1600:   Torture testing 2034 and 2037 found this.
 1601:   
 1602:   Reported-by: Marc Hörsken
 1603:   Fixes #5108
 1604:   Closes #5109
 1605: 
 1606: Marc Hoersken (16 Mar 2020)
 1607: - ci/tests: fix Azure Pipelines not running for pull requests
 1608:   
 1609:   Closes #5111
 1610: 
 1611: Daniel Stenberg (15 Mar 2020)
 1612: - gskit: update the copyright year range
 1613:   
 1614:   Follow-up from 083603c63a3
 1615: 
 1616: Marc Hoersken (15 Mar 2020)
 1617: - gskit: use our internal select wrapper for portability
 1618:   
 1619:   Follow up to c52b342
 1620:   Closes #5106
 1621: 
 1622: - tests: fix verification of stdout in test 1452 due to newline
 1623:   
 1624:   Fixes test1452:41:1: error: missing </stdout> tag before </verify>
 1625: 
 1626: - ci/tests: install impacket for SMB tests on FreeBSD using CirrusCI
 1627:   
 1628:   Also force the package index/cache to be updated before installing.
 1629:   
 1630:   Closes #5103
 1631: 
 1632: - tests/README: add note about manually installing python-impacket
 1633:   
 1634:   Follow up to 4be2560
 1635: 
 1636: Daniel Stenberg (15 Mar 2020)
 1637: - transfer: cap retries of "dead connections" to 5
 1638:   
 1639:   When libcurl retries a connection due to it being "seemingly dead" or by
 1640:   REFUSED_STREAM, it will now only do it up five times before giving up,
 1641:   to avoid never-ending loops.
 1642:   
 1643:   Reported-by: Dima Tisnek
 1644:   Bug: https://curl.haxx.se/mail/lib-2020-03/0044.html
 1645:   Closes #5074
 1646: 
 1647: - TODO: TLS-PSK with OpenSSL
 1648:   
 1649:   Closes #5081
 1650: 
 1651: Marc Hoersken (15 Mar 2020)
 1652: - select: add 'timeout_ms' wrap-around precaution to Curl_select
 1653: 
 1654: - select: fix 'pending_ms' is assigned a value that is never used
 1655:   
 1656:   Detected by Codacy
 1657: 
 1658: - select: move duplicate select preparation code into Curl_select
 1659:   
 1660:   Reviewed by Daniel Stenberg
 1661:   Reviewed by Marcel Raad
 1662:   Closes #5078
 1663: 
 1664: Daniel Stenberg (15 Mar 2020)
 1665: - connect: happy eyeballs cleanup
 1666:   
 1667:   Make sure each separate index in connn->tempaddr[] is used for a fixed
 1668:   family (and only that family) during the connection process.
 1669:   
 1670:   If family one takes a long time and family two fails immediately, the
 1671:   previous logic could misbehave and retry the same family two address
 1672:   repeatedly.
 1673:   
 1674:   Reported-by: Paul Vixie
 1675:   Reported-by: Jay Satiro
 1676:   Fixes #5083
 1677:   Fixes #4954
 1678:   Closes #5089
 1679: 
 1680: Marc Hoersken (15 Mar 2020)
 1681: - ci/tests: fix and align setting TFLAGS for make test-nonflaky
 1682: 
 1683: - ci/tests: install test suite dependencies stunnel and impacket
 1684: 
 1685: - tests: remove python_dependencies for smbserver from our tree
 1686:   
 1687:   Users of the SMB tests will have to install impacket manually.
 1688:   
 1689:   Reasoning: our in-tree version of impacket was quite outdated
 1690:   and only compatible with Python 2 which is already end-of-life.
 1691:   Upgrading to Python 3 and a compatible impacket version would
 1692:   require to import additional Python-only and CPython-extension
 1693:   dependencies. This would have hindered portability enormously.
 1694:   
 1695:   Closes #5094
 1696: 
 1697: Jay Satiro (14 Mar 2020)
 1698: - Makefile.m32: Improve windres parameter compatibility
 1699:   
 1700:   - s/COFF/coff/
 1701:   
 1702:   Some versions of windres do not recognize uppercase COFF as a valid
 1703:   way to specify the COFF output format.
 1704:   
 1705:   Reported-by: Steven Penny
 1706:   
 1707:   Fixes https://github.com/curl/curl/issues/5099
 1708:   Closes https://github.com/curl/curl/pull/5101
 1709: 
 1710: - easy: Fix curl_easy_duphandle for builds missing IPv6 that use c-ares
 1711:   
 1712:   - Ignore CURLE_NOT_BUILT_IN errors returned by c-ares functions in
 1713:     curl_easy_duphandle.
 1714:   
 1715:   Prior to this change if c-ares was used as the resolver backend and
 1716:   either it was too old or libcurl was built without IPv6 support then
 1717:   some of our resolver functions could return CURLE_NOT_BUILT_IN to
 1718:   curl_easy_duphandle causing it to fail.
 1719:   
 1720:   Caused by c8f086b which shipped in 7.69.1.
 1721:   
 1722:   Reported-by: Karl Chen
 1723:   
 1724:   Fixes https://github.com/curl/curl/issues/5097
 1725:   Closes https://github.com/curl/curl/pull/5100
 1726: 
 1727: Daniel Stenberg (13 Mar 2020)
 1728: - docs: add warnings about FILE: URLs on Windows
 1729:   
 1730:    - --url man page section
 1731:    - libcurl-security.3 gets the full text
 1732:    - CURLOPT_URL.3
 1733:   
 1734:   Reported-by: Tim Sedlmeyer
 1735: 
 1736: - server/getpart: make the "XML-parser" stricter
 1737:   
 1738:   When extracting a <section> <part> and there's no </part> before
 1739:   </section>, this now outputs an error and returns a wrong string to
 1740:   make users spot the mistake.
 1741:   
 1742:   Ref: #5070
 1743:   Closes #5071
 1744: 
 1745: Marc Hoersken (13 Mar 2020)
 1746: - impacket: some more Python 3 code compatibility updates
 1747:   
 1748:   This makes smbserver load on Python 3, but still not work completely.
 1749: 
 1750: - smbserver: pin Python version to 2 since we are not yet 3 compatible
 1751:   
 1752:   Even though the existing code can be fixed to run on Python 3, the
 1753:   tests will fail due to the Unicode transition the protocol is invalid.
 1754:   
 1755:   Follow up to ee63837
 1756:   Closes #5085
 1757: 
 1758: Daniel Stenberg (12 Mar 2020)
 1759: - [Viktor Szakats brought this change]
 1760: 
 1761:   cleanup: fix some text/comment typos
 1762:   
 1763:   Closes #5087
 1764: 
 1765: Marc Hoersken (12 Mar 2020)
 1766: - smbserver: fix Python version specific ConfigParser import
 1767:   
 1768:   Follow up to ee63837 and 8c7c4a6
 1769:   Fixes #5077
 1770: 
 1771: Daniel Stenberg (11 Mar 2020)
 1772: - RELEASE-NOTES: synced
 1773:   
 1774:   bumped to 7.69.2
 1775: 
 1776: Dan Fandrich (11 Mar 2020)
 1777: - tests/data: Fix some XML formatting issues in test cases
 1778:   
 1779:   This allows these test files to pass xmllint.
 1780: 
 1781: Daniel Stenberg (11 Mar 2020)
 1782: - [Muhammad Herdiansyah brought this change]
 1783: 
 1784:   Makefile: run the cd commands in a subshell
 1785:   
 1786:   In bmake, if the directory is changed (with cd or anything else), bmake
 1787:   won't return to the "root directory" on the next command (in the same
 1788:   Makefile rule). This commit runs the cd command in a subshell so it
 1789:   would work in bmake.
 1790:   
 1791:   Closes #5073
 1792: 
 1793: - configure: convert -I to -isystem as a last step
 1794:   
 1795:   As all the -I uses in CFLAGS at that point are for system headers and
 1796:   third party libraries this helps us remove/ignore warnings on those!
 1797:   
 1798:   Closes #5060
 1799: 
 1800: - configure: fix -pedantic-errors for GCC 5 and later
 1801:   
 1802:   If --enable-werror is used.
 1803:   
 1804:   Follow-up to d5c0351055d5709da which added it too early in the configure
 1805:   script before $compiler_num was set correctly and thus this option was
 1806:   never used.
 1807:   
 1808:   Reported-by: Stepan Efremov
 1809:   Fixes #5067
 1810:   Closes #5068
 1811: 
 1812: - configure: document 'compiler_num' for gcc
 1813:   
 1814:   The CURL_CHECK_COMPILER_GNU_C function sets the number to MAJOR*100 +
 1815:   MINOR and ignores the patch version, and since gcc version 7 it only
 1816:   sets it to MAJOR*100.
 1817:   
 1818:   Reported-by: Stepan Efremov
 1819:   Ref: #5067
 1820:   Closes #5069
 1821: 
 1822: Version 7.69.1 (11 Mar 2020)
 1823: 
 1824: Daniel Stenberg (11 Mar 2020)
 1825: - RELEASE-NOTES: 7.69.1
 1826: 
 1827: - THANKS: from the 7.69.1 release
 1828: 
 1829: - [Marc Hoersken brought this change]
 1830: 
 1831:   test1129: fix invalid case of closing XML-tag and Content-Length
 1832:   
 1833:   Fixes #5070
 1834:   Closes #5072
 1835: 
 1836: Marc Hoersken (10 Mar 2020)
 1837: - tests/data: fix static ip instead of dynamic value being used
 1838:   
 1839:   Follow up to 94ced8e
 1840: 
 1841: - tests/data: fix static ip:port instead of dynamic values being used
 1842:   
 1843:   Closes #5065
 1844: 
 1845: - tests/server: fix missing use of exe_ext helper function
 1846:   
 1847:   Follow up to 9819984 and 3dce984
 1848:   Reviewed-By: Daniel Stenberg
 1849:   Closes #5064
 1850: 
 1851: - runtests: log minimal and maximal used port numbers
 1852: 
 1853: Daniel Stenberg (9 Mar 2020)
 1854: - [Jim Fuller brought this change]
 1855: 
 1856:   sftp: fix segfault regression introduced by #4747
 1857:   
 1858:   This fix adds a defensive check for the case where the char *name in
 1859:   struct libssh2_knownhost is NULL
 1860:   
 1861:   Fixes #5041
 1862:   Closes #5062
 1863: 
 1864: - RELEASE-NOTES: synced
 1865: 
 1866: - socks4: fix host resolve regression
 1867:   
 1868:   1. The socks4 state machine was broken in the host resolving phase
 1869:   
 1870:   2. The code now insists on IPv4-only when using SOCKS4 as the protocol
 1871:   only supports that.
 1872:   
 1873:   Regression from #4907 and 4a4b63d, shipped in 7.69.0
 1874:   
 1875:   Reported-by: amishmm on github
 1876:   Bug: https://github.com/curl/curl/issues/5053#issuecomment-596191594
 1877:   Closes #5061
 1878: 
 1879: - [Patrick Monnerat brought this change]
 1880: 
 1881:   silly web server: silent a compilation warning
 1882:   
 1883:   Recent gcc warns when byte count of strncpy() equals the destination
 1884:   buffer size. Since the destination buffer is previously cleared and
 1885:   the source string is always shorter, reducing the byte count by one
 1886:   silents the warning without affecting the result.
 1887:   
 1888:   Closes #5059
 1889: 
 1890: - [Patrick Monnerat brought this change]
 1891: 
 1892:   cookie: get_top_domain() sets zero length for null domains
 1893:   
 1894:   This silents a compilation warning with gcc -O3.
 1895: 
 1896: - [Patrick Monnerat brought this change]
 1897: 
 1898:   test 1560: avoid valgrind false positives
 1899:   
 1900:   When using maximum code optimization level (-O3), valgrind wrongly
 1901:   detects uses of uninitialized values in strcmp().
 1902:   
 1903:   Preset buffers with all zeroes to avoid that.
 1904: 
 1905: Steve Holme (8 Mar 2020)
 1906: - sha256: Added WinCrypt implementation
 1907:   
 1908:   Closed #5030
 1909: 
 1910: - sha256: Added SecureTransport implementation
 1911: 
 1912: Daniel Stenberg (7 Mar 2020)
 1913: - lib1564: reduce number of mid-wait wakeup calls
 1914:   
 1915:   This test does A LOT of *wakeup() calls and then calls curl_multi_poll()
 1916:   twice. The first *poll() is then expected to return early and the second
 1917:   not - as the first is supposed to drain the socketpair pipe.
 1918:   
 1919:   It turns out however that when given "excessive" amounts of writes to
 1920:   the pipe, some operating systems (the Solaris based are known) will
 1921:   return EAGAIN before the pipe is drained, which in our test case causes
 1922:   the second *poll() call to also abort early.
 1923:   
 1924:   This change attempts to avoid the OS-specific behaviors in the test by
 1925:   reducing the amount of wakeup calls from 1234567 to 10.
 1926:   
 1927:   Reported-by: Andy Fiddaman
 1928:   Fixes #5037
 1929:   Closes #5058
 1930: 
 1931: - [Patrick Monnerat brought this change]
 1932: 
 1933:   mime: fix the binary encoder to handle large data properly
 1934:   
 1935:   New test 666 checks this is effective.
 1936:   As upload buffer size is significant in this kind of tests, shorten it
 1937:   in similar test 652.
 1938:   
 1939:   Fixes #4860
 1940:   Closes #4833
 1941:   Reported-by: RuurdBeerstra on github
 1942: 
 1943: - [Patrick Monnerat brought this change]
 1944: 
 1945:   mime: do not perform more than one read in a row
 1946:   
 1947:   Input buffer filling may delay the data sending if data reads are slow.
 1948:   To overcome this problem, file and callback data reads do not accumulate
 1949:   in buffer anymore. All other data (memory data and mime framing) are
 1950:   considered as fast and still concatenated in buffer.
 1951:   As this may highly impact performance in terms of data overhead, an early
 1952:   end of part data check is added to spare a read call.
 1953:   When encoding a part's data, an encoder may require more bytes than made
 1954:   available by a single read. In this case, the above rule does not apply
 1955:   and reads are performed until the encoder is able to deliver some data.
 1956:   
 1957:   Tests 643, 644, 645, 650 and 654 have been adapted to the output data
 1958:   changes, with test data size reduced to avoid the boredom of long lists of
 1959:   1-byte chunks in verification data.
 1960:   New test 667 checks mimepost using single-byte read callback with encoder.
 1961:   New test 668 checks the end of part data early detection.
 1962:   
 1963:   Fixes #4826
 1964:   Reported-by: MrdUkk on github
 1965: 
 1966: - [Patrick Monnerat brought this change]
 1967: 
 1968:   mime: latch last read callback status.
 1969:   
 1970:   In case a read callback returns a status (pause, abort, eof,
 1971:   error) instead of a byte count, drain the bytes read so far but
 1972:   remember this status for further processing.
 1973:   Takes care of not losing data when pausing, and properly resume a
 1974:   paused mime structure when requested.
 1975:   New tests 670-673 check unpausing cases, with easy or multi
 1976:   interface and mime or form api.
 1977:   
 1978:   Fixes #4813
 1979:   Reported-by: MrdUkk on github
 1980: 
 1981: Marc Hoersken (7 Mar 2020)
 1982: - runtests: fix missing use of exe_ext helper function
 1983: 
 1984: Daniel Stenberg (7 Mar 2020)
 1985: - [Ernst Sjöstrand brought this change]
 1986: 
 1987:   ares: store dns parameters for duphandle
 1988:   
 1989:   With c-ares the dns parameters lives in ares_channel. Store them in the
 1990:   curl handle and set them again in easy_duphandle.
 1991:   
 1992:   Regression introduced in #3228 (6765e6d), shipped in curl 7.63.0.
 1993:   
 1994:   Fixes #4893
 1995:   Closes #5020
 1996:   Signed-off-by: Ernst Sjöstrand <ernst.sjostrand@verisure.com>
 1997: 
 1998: - version: make curl_version* thread-safe without using global context
 1999:   
 2000:   Closes #5010
 2001: 
 2002: - RELEASE-NOTES: synced
 2003: 
 2004: Marc Hoersken (7 Mar 2020)
 2005: - tests: use native Sleep function as fallback on Windows
 2006:   
 2007:   Reviewed-By: Daniel Stenberg
 2008:   Closes #5054
 2009: 
 2010: - perl: align order and completeness of Windows OS checks
 2011: 
 2012: Daniel Stenberg (7 Mar 2020)
 2013: - tool_cb_see: set correct copyright year range
 2014:   
 2015:   Follow-up to a39e5bfb9
 2016: 
 2017: Marc Hoersken (7 Mar 2020)
 2018: - seek: fix fallback for missing ftruncate on Windows
 2019:   
 2020:   This fixes test 198 on versions of MinGW-w64 without ftruncate
 2021:   
 2022:   Reviewed-By: Daniel Stenberg
 2023:   Reviewed-By: Marcel Raad
 2024:   Closes #5055
 2025: 
 2026: - config-win32: Windows does not have ftruncate
 2027: 
 2028: Daniel Stenberg (7 Mar 2020)
 2029: - pause: force a connection (re-)check after unpausing
 2030:   
 2031:   There might be data available that was already read off the socket, for
 2032:   example in the TLS layer.
 2033:   
 2034:   Reported-by: Anders Berg
 2035:   Fixes #4966
 2036:   Closes #5049
 2037: 
 2038: - socks5: switch state properly when the resolve is done
 2039:   
 2040:   Regression from 4a4b63d (and #4907)
 2041:   Reported-by: vitaha85 on github
 2042:   Fixes #5053
 2043:   Closes #5056
 2044: 
 2045: Jay Satiro (7 Mar 2020)
 2046: - libssh: Fix matching user-specified MD5 hex key
 2047:   
 2048:   Prior to this change a match would never be successful because it
 2049:   was mistakenly coded to compare binary data from libssh to a
 2050:   user-specified hex string (ie CURLOPT_SSH_HOST_PUBLIC_KEY_MD5).
 2051:   
 2052:   Reported-by: fds242@users.noreply.github.com
 2053:   
 2054:   Fixes https://github.com/curl/curl/issues/4971
 2055:   Closes https://github.com/curl/curl/pull/4974
 2056: 
 2057: Daniel Stenberg (6 Mar 2020)
 2058: - pause: bail out on bad input
 2059:   
 2060:   A NULL easy handle or an easy handle without an associated connection
 2061:   cannot be paused or unpaused.
 2062:   
 2063:   Closes #5050
 2064: 
 2065: Steve Holme (6 Mar 2020)
 2066: - unit1612: fixed the inclusion and compilation of the HMAC unit test
 2067:   
 2068:   Follow up to 3f74e5e6 to fix:
 2069:   
 2070:   - A typo in Makefile.inc where unit1611 was used instead
 2071:   - Some compilation issues in unit1612.c
 2072:   
 2073:   Closes #5024
 2074: 
 2075: Daniel Stenberg (6 Mar 2020)
 2076: - pause: return early for calls that don't change pause state
 2077:   
 2078:   Reviewed-by: Patrick Monnerat
 2079:   Ref: #4833
 2080:   Closes #5026
 2081: 
 2082: Jay Satiro (6 Mar 2020)
 2083: - curl_share_setopt.3: Note sharing cookies doesn't enable the engine
 2084:   
 2085:   Follow-up to d0a7ee3 which fixed a bug in 7.66.0 that caused
 2086:   CURL_LOCK_DATA_COOKIE to enable the easy handle's cookie engine.
 2087:   
 2088:   Bug: https://curl.haxx.se/mail/lib-2020-03/0019.html
 2089:   Reported-by: Felipe Gasper
 2090:   
 2091:   Closes https://github.com/curl/curl/pull/5048
 2092: 
 2093: - multi: skip EINTR check on wakeup socket if it was closed
 2094:   
 2095:   - Don't check errno on wakeup socket if sread returned 0 since sread
 2096:     doesn't set errno in that case.
 2097:   
 2098:   This is a follow-up to cf7760a from several days ago which fixed
 2099:   Curl_multi_wait to stop busy looping sread on the non-blocking wakeup
 2100:   socket if it was closed (ie sread returns 0). Due to a logic error it
 2101:   was still possible to busy loop in that case if errno == EINTR.
 2102:   
 2103:   Closes https://github.com/curl/curl/pull/5047
 2104: 
 2105: Daniel Stenberg (6 Mar 2020)
 2106: - transfer: set correct copyright year range
 2107: 
 2108: - urldata: remove the 'stream_was_rewound' connectdata struct member
 2109:   
 2110:   ... as it is never set anywhere.
 2111:   
 2112:   Follow-up to 2f44e94ef
 2113:   Closes #5046
 2114: 
 2115: - Revert "pause: force-drain the transfer on unpause"
 2116:   
 2117:   This reverts commit fa0216b294af4c7113a9040ca65eefc7fc18ac1c (from #5000)
 2118:   
 2119:   Clearly that didn't solve the problem correctly.
 2120:   
 2121:   Reported-by: Christopher Reid
 2122:   Reopens #4966
 2123:   Fixes #5044
 2124: 
 2125: - RELEASE-NOTES: synced
 2126:   
 2127:   and bumped curlver.h
 2128: 
 2129: - MANUAL: update a dict-using command line
 2130:   
 2131:   The 'web1913' database is now invalid, use 'gcide' instead.
 2132: 
 2133: - KNOWN_BUGS: configure --with-gssapi with Heimdal is ignored on macOS
 2134:   
 2135:   Closes #3841
 2136: 
 2137: - polarssl: remove more references and mentions
 2138:   
 2139:   Assisted-by: Jay Satiro
 2140:   Follow-up to 6357a19ff29dac04
 2141:   Closes #5036
 2142: 
 2143: Marc Hoersken (4 Mar 2020)
 2144: - tests: wrap ignored test failures in braces
 2145: 
 2146: - tests: align some Windows sleep defines with each other
 2147: 
 2148: - tests: try to make sleeping portable by avoiding select
 2149:   
 2150:   select does not support just waiting on Windows:
 2151:   https://perldoc.perl.org/perlport.html#select
 2152:   
 2153:   Reviewed-By: Daniel Stenberg
 2154:   Closes #5035
 2155: 
 2156: Daniel Stenberg (4 Mar 2020)
 2157: - runtests.1: rephrase how to specify what tests to run
 2158:   
 2159:   Also mention the new tilde-prefixed way to ignore test results.
 2160:   
 2161:   Reviewed-By: Marc Hoersken
 2162:   Closes #5033
 2163: 
 2164: - cirrus-ci: disable the FreeBSD 13 builds
 2165:   
 2166:   FreeBSD 13.0 is apparently close to a year away from a stable release
 2167:   and has proven to cause intermittent builds failures recently.
 2168:   
 2169:   Assisted-by: Dan Fandrich
 2170:   Assisted-by: Fedor Korotkov
 2171:   Fixes #5028
 2172:   Closes #5029
 2173: 
 2174: Version 7.69.0 (4 Mar 2020)
 2175: 
 2176: Daniel Stenberg (4 Mar 2020)
 2177: - RELEASE-NOTES: 7.69.0
 2178: 
 2179: - THANKS: from 7.69.0
 2180:   
 2181:   Now sorted case insensitive
 2182: 
 2183: Marc Hoersken (3 Mar 2020)
 2184: - ci/tests: fix escaping of testnames and disable proxy for CI APIs
 2185:   
 2186:   Follow up to ada581f and c0d8b96
 2187:   Closes #5031
 2188: 
 2189: Jay Satiro (3 Mar 2020)
 2190: - cmake: Show HTTPS-proxy in the features output
 2191:   
 2192:   - Show HTTPS-proxy in the features output for those backends that
 2193:     support it: OpenSSL, GnuTLS and NSS.
 2194:   
 2195:   Prior to this change HTTPS-proxy was missing from the cmake features
 2196:   output even if curl was built with it. Only cmake output was affected.
 2197:   Both the library and tool correctly reported the feature.
 2198:   
 2199:   Bug: https://curl.haxx.se/mail/lib-2020-03/0008.html
 2200:   Reported-by: David Lopes
 2201:   
 2202:   Closes https://github.com/curl/curl/pull/5025
 2203: 
 2204: Marc Hoersken (3 Mar 2020)
 2205: - ci/tests: Make it possible to still run but ignore failing tests
 2206:   
 2207:   This enables the development of a solution for the failing tests by
 2208:   running them on CI while ignoring their result for the overall status.
 2209:   
 2210:   Closes #4994
 2211: 
 2212: - README.md: add Azure DevOps Pipelines build status badge
 2213: 
 2214: - ci/tests: Move CI test result creation above environment setup
 2215:   
 2216:   This avoids using our test servers as proxy to the AppVeyor API.
 2217:   
 2218:   Closes #5022
 2219: 
 2220: - ci/tests: Send test results to AppVeyor for status overview
 2221:   
 2222:   Closes #5021
 2223: 
 2224: Daniel Stenberg (3 Mar 2020)
 2225: - Revert "sha256: Added SecureTransport implementation"
 2226:   
 2227:   This reverts commit 4feb38deed33fed14ff7c370a6a9153c661dbb9c (from #4956)
 2228:   
 2229:   That commit broke test 1610 on macos builds without TLS.
 2230:   
 2231:   Closes #5027
 2232: 
 2233: - dist: include tests/azure.pm in the tarball
 2234:   
 2235:   Bug: https://github.com/curl/curl/commit/ada581f2cc32f48c1629b729707ac19208435b27#commitcomment-37601589
 2236:   Reported-by: Marcel Raad
 2237: 
 2238: Steve Holme (3 Mar 2020)
 2239: - configure.ac: Disable metalink if mbedTLS is specified
 2240:   
 2241:   Follow up to cdcc9df1 and #5006. Even though I mentioned mbedTLS as
 2242:   being one of the backends that metalink needs to be disabled for, I
 2243:   seem to have included it in the list of allowed SSL/TLS backends in
 2244:   comnfigure.ac :(
 2245:   
 2246:   Closes #5013
 2247: 
 2248: - sha256: Tidy up following recent changes
 2249:   
 2250:   Reviewed-by: Daniel Stenberg
 2251:   Closes #4956
 2252: 
 2253: - sha256: Added WinCrypt implementation
 2254: 
 2255: - sha256: Added SecureTransport implementation
 2256: 
 2257: - sha256: Added mbedtls implementation
 2258: 
 2259: - sha256: Added GNU TLS gcrypt implementation
 2260: 
 2261: - sha256: Added GNU TLS Nettle implementation
 2262: 
 2263: Jay Satiro (2 Mar 2020)
 2264: - curl_escape.3: Add a link to curl_free
 2265:   
 2266:   Ref: https://github.com/curl/curl/pull/5016#issuecomment-593628582
 2267: 
 2268: - curl_getenv.3: Fix the memory handling description
 2269:   
 2270:   - Tell the user to call curl_free() to free the pointer returned by
 2271:     curl_getenv().
 2272:   
 2273:   Prior to this change the user was directed to call free(), but that
 2274:   would not work in cases where the library and application use separate C
 2275:   runtimes and therefore have separate heap memory management.
 2276:   
 2277:   Closes https://github.com/curl/curl/pull/5016
 2278: 
 2279: Daniel Stenberg (2 Mar 2020)
 2280: - [Nick Zitzmann brought this change]
 2281: 
 2282:   md4: use init/update/final functions in Secure Transport
 2283:   
 2284:   We can use CC_MD4_Init/Update/Final without having to allocate memory
 2285:   directly.
 2286:   
 2287:   Closes #4979
 2288: 
 2289: Marc Hoersken (2 Mar 2020)
 2290: - ci/tests: some MacOS builds randomly take longer than 20min
 2291: 
 2292: Daniel Stenberg (2 Mar 2020)
 2293: - multi_wait: stop loop when sread() returns zero
 2294:   
 2295:   It's unclear why it would ever return zero here, but this change fixes
 2296:   Robert's problem and it shouldn't loop forever...
 2297:   
 2298:   Reported-by: Robert Dunaj
 2299:   Bug: https://curl.haxx.se/mail/archive-2020-02/0011.html
 2300:   Closes #5019
 2301: 
 2302: - http: mark POSTs with no body as "upload done" from the start
 2303:   
 2304:   As we have logic that checks if we get a >= 400 reponse code back before
 2305:   the upload is done, which then got confused since it wasn't "done" but
 2306:   yet there was no data to send!
 2307:   
 2308:   Reported-by: IvanoG on github
 2309:   Fixes #4996
 2310:   Closes #5002
 2311: 
 2312: - tests: disable 962, 963 and 964 on Windows
 2313:   
 2314:   These tests are also doing UTF-8 SMTP.
 2315:   
 2316:   Follow-up to df207d2dd93b9e73
 2317: 
 2318: Marc Hoersken (2 Mar 2020)
 2319: - ci/tests: fine-tune Azure Pipeline timeouts with a small puffer
 2320: 
 2321: Daniel Stenberg (2 Mar 2020)
 2322: - configure: bump the AC_COPYRIGHT year range
 2323: 
 2324: - [Steve Holme brought this change]
 2325: 
 2326:   tests: disable SMTP UTF-8 tests on Windows
 2327:   
 2328:   Fixes #4988
 2329:   Closes #4992
 2330: 
 2331: - formdata/mime: copyright year range update
 2332:   
 2333:   Due to the merge/revert cycle
 2334: 
 2335: - Revert "mime: latch last read callback status."
 2336:   
 2337:   This reverts commit 87869e38d7afdec3ef1bb4965711458b088e254f.
 2338:   
 2339:   Fixes #5014
 2340:   Closes #5015
 2341:   Reopens #4833
 2342: 
 2343: - Revert "mime: do not perform more than one read in a row"
 2344:   
 2345:   This reverts commit ed0f357f7d25566110d4302f33759f4ffb5a6f83.
 2346: 
 2347: - Revert "mime: fix the binary encoder to handle large data properly"
 2348:   
 2349:   This reverts commit b2caaa0681f329eed317ffb6ae6927f4a539f0c1.
 2350: 
 2351: - altsvc: both h3 backends now speak h3-27
 2352:   
 2353:   ... also updated the HTTP3 build description for ngtcp2 accordingly.
 2354: 
 2355: - [Patrick Monnerat brought this change]
 2356: 
 2357:   mime: fix the binary encoder to handle large data properly
 2358:   
 2359:   New test 666 checks this is effective.
 2360:   As upload buffer size is significant in this kind of tests, shorten it
 2361:   in similar test 652.
 2362:   
 2363:   Fixes #4860
 2364:   Reported-by: RuurdBeerstra on github
 2365: 
 2366: - [Patrick Monnerat brought this change]
 2367: 
 2368:   mime: do not perform more than one read in a row
 2369:   
 2370:   Input buffer filling may delay the data sending if data reads are slow.
 2371:   To overcome this problem, file and callback data reads do not accumulate
 2372:   in buffer anymore. All other data (memory data and mime framing) are
 2373:   considered as fast and still concatenated in buffer.
 2374:   As this may highly impact performance in terms of data overhead, an early
 2375:   end of part data check is added to spare a read call.
 2376:   When encoding a part's data, an encoder may require more bytes than made
 2377:   available by a single read. In this case, the above rule does not apply
 2378:   and reads are performed until the encoder is able to deliver some data.
 2379:   
 2380:   Tests 643, 644, 645, 650 and 654 have been adapted to the output data
 2381:   changes, with test data size reduced to avoid the boredom of long lists of
 2382:   1-byte chunks in verification data.
 2383:   New test 664 checks mimepost using single-byte read callback with encoder.
 2384:   New test 665 checks the end of part data early detection.
 2385:   
 2386:   Fixes #4826
 2387:   Reported-by: MrdUkk on github
 2388: 
 2389: - [Patrick Monnerat brought this change]
 2390: 
 2391:   mime: latch last read callback status.
 2392:   
 2393:   In case a read callback returns a status (pause, abort, eof,
 2394:   error) instead of a byte count, drain the bytes read so far but
 2395:   remember this status for further processing.
 2396:   Takes care of not losing data when pausing, and properly resume a
 2397:   paused mime structure when requested.
 2398:   New tests 670-673 check unpausing cases, with easy or multi
 2399:   interface and mime or form api.
 2400:   
 2401:   Fixes #4813
 2402:   Reported-by: MrdUkk on github
 2403:   Closes #4833
 2404: 
 2405: Steve Holme (1 Mar 2020)
 2406: - unit1651: Fixed conversion compilation warning
 2407:   
 2408:   371:17: warning: conversion to 'unsigned char' from 'int' may alter its
 2409:           value [-Wconversion]
 2410:   
 2411:   Closes #5008
 2412: 
 2413: - configure.ac: Disable metalink support if an incompatible SSL/TLS specified
 2414:   
 2415:   tool_metalink only supports cryptography from OpenSSL, GnuTLS, NSS,
 2416:   The Win32 Crypto library and Apple's Common Crypto library.
 2417:   
 2418:   If an TLS backend such as mbedTLS or WolfSSL is specified then the
 2419:   following error is given during compilation along, with a load of
 2420:   unresolved extern errors:
 2421:   
 2422:   Can't compile METALINK support without a crypto library.
 2423:   
 2424:   Reviewed-by: Daniel Stenberg
 2425:   Closes #5006
 2426: 
 2427: Marc Hoersken (1 Mar 2020)
 2428: - ci/tests: Update Azure DevOps pipeline job display names
 2429:   
 2430:   Make the configure step more descriptive and align others.
 2431: 
 2432: - ci/tests: Fix typo in previous commit 597cf2
 2433: 
 2434: - ci/tests: Make sure that the AZURE_ACCESS_TOKEN is available
 2435:   
 2436:   For security reasons the access token is not available to PR builds.
 2437:   Therefore we should not try to use the DevOps API with an empty token.
 2438: 
 2439: Daniel Stenberg (1 Mar 2020)
 2440: - build: remove all HAVE_OPENSSL_ENGINE_H defines
 2441:   
 2442:   ... as there's nothing in the code that actually uses the define! The
 2443:   last reference was removed in 38203f158.
 2444:   
 2445:   Closes #5007
 2446: 
 2447: Jay Satiro (29 Feb 2020)
 2448: - [Rolf Eike Beer brought this change]
 2449: 
 2450:   CMake: clean up and improve build procedures
 2451:   
 2452:   - remove check for unsupported old CMake versions
 2453:   
 2454:   - do not link to c-ares library twice
 2455:   
 2456:   - modernize custom Find modules
 2457:   
 2458:       - FindLibSSH2:
 2459:           - pass version to FPHSA to show it in the output
 2460:           - use LIBSSH2_VERSION define to extract the version number in
 2461:             one shot. This variable exists in the header for 10 years.
 2462:           - remove unneeded code
 2463:   
 2464:       - FindNGHTTP2.cmake:
 2465:           - drop needless FPHSA argument
 2466:           - mark found variables as advanced
 2467:   
 2468:       - FindNSS.cmake:
 2469:           - show version number
 2470:   
 2471:       - FindCARES.cmake:
 2472:           - drop default paths
 2473:           - use FPHSA instead of checking things by hand
 2474:   
 2475:   - remove needless explict variable dereference
 2476:   
 2477:   - simplify count_true()
 2478:   
 2479:   - allow all policies up to version 3.16 to be set to NEW
 2480:   
 2481:   - do not rerun check for -Wstrict-aliasing=3 every time
 2482:   
 2483:   In contrast to every other compiler flag this has a = in it, which CMake
 2484:   can't have in a variable name.
 2485:   
 2486:   - only read the interesting strings from curlver.h
 2487:   
 2488:   Reviewed-by: Peter Wu
 2489:   
 2490:   Closes https://github.com/curl/curl/pull/4975
 2491: 
 2492: - runtests: fix output to command log
 2493:   
 2494:   - Record only the command of the most recently ran test in the command
 2495:     log.
 2496:   
 2497:   This is a follow-up to 02988b7 from several weeks ago which fixed
 2498:   writing to the command log, however it saved all commands for all tests
 2499:   instead of just the most recently ran test as we would now expect.
 2500:   
 2501:   Fixes https://github.com/curl/curl/commit/02988b7#commitcomment-37546876
 2502:   Closes https://github.com/curl/curl/pull/5001
 2503: 
 2504: Steve Holme (1 Mar 2020)
 2505: - polarssl: Additional removal
 2506:   
 2507:   Follow up to 6357a19f.
 2508:   
 2509:   Reviewed-by: Daniel Stenberg
 2510:   Closes #5004
 2511: 
 2512: - [Jonathan Cardoso Machado brought this change]
 2513: 
 2514:   docs: fix typo on CURLINFO_RETRY_AFTER - alwaus -> always
 2515:   
 2516:   Reviewed-by: Steve Holme
 2517:   Closes #5005
 2518: 
 2519: - md5: Added implementation for mbedTLS
 2520:   
 2521:   Reviewed-by: Jay Satiro
 2522:   Closes #4980
 2523: 
 2524: - md5: Use pointer notation for array parameters in GnuTLS implementation
 2525: 
 2526: - md4: Use non-deprecated functions in mbedTLS >= 2.7.0
 2527:   
 2528:   Closes #4983
 2529: 
 2530: Marc Hoersken (29 Feb 2020)
 2531: - ci/tests: Send test results to Azure DevOps for reporting
 2532: 
 2533: Daniel Stenberg (29 Feb 2020)
 2534: - pause: force-drain the transfer on unpause
 2535:   
 2536:   ... since the socket might not actually be readable anymore when for
 2537:   example the data is already buffered in the TLS layer.
 2538:   
 2539:   Fixes #4966
 2540:   Reported-by: Anders Berg
 2541:   Closes #5000
 2542: 
 2543: - TODO: curl --proxycommand
 2544:   
 2545:   Suggested-by: Kristian Mide
 2546:   Closes #4941
 2547: 
 2548: - smtp: overwriting 'from' leaks memory
 2549:   
 2550:   Detected by Coverity. CID 1418139.
 2551:   
 2552:   Also, make sure to return error if the new 'from' allocation fails.
 2553:   
 2554:   Closes #4997
 2555: 
 2556: - CIfuzz: switch off 'dry_run' mode
 2557:   
 2558:   Follow-up from #4960: now make it fail if it detects problems.
 2559:   
 2560:   Closes #4998
 2561: 
 2562: Marc Hoersken (28 Feb 2020)
 2563: - ci/tests: Increase timeouts of Windows builds due to new tests
 2564:   
 2565:   Recently added tests increased their runtime above the limit of 60min.
 2566: 
 2567: - ci/tests: align Azure Pipeline job names with each other
 2568: 
 2569: - ci/tests: Add Windows builds via Azure Pipelines using Docker
 2570: 
 2571: - tests: fix Python 3 compatibility of smbserver.py
 2572: 
 2573: Daniel Stenberg (27 Feb 2020)
 2574: - runtests: restore the command log
 2575:   
 2576:   The log file with all command lines for the invoked command lines is now
 2577:   called logs/commands.log
 2578:   
 2579:   Fixes #4911
 2580:   Closes #4989
 2581: 
 2582: - smtp: fix memory leak on exit path
 2583:   
 2584:   Detected by Coverity. CID 1418139. "leaked_storage: Variable 'from'
 2585:   going out of scope leaks the storage it points to"
 2586:   
 2587:   Closes #4990
 2588: 
 2589: Steve Holme (27 Feb 2020)
 2590: - gtls: Fixed compilation when using GnuTLS < 3.5.0
 2591:   
 2592:   Reverts the functionality from 41fcb4f when compiling with GnuTLS older
 2593:   than 3.5.0.
 2594:   
 2595:   Reviewed-by: Daniel Stenberg
 2596:   Closes #4984
 2597: 
 2598: - RELEASE-NOTES: Corrected the link to issue #4892
 2599: 
 2600: Daniel Stenberg (27 Feb 2020)
 2601: - Curl_is_ASCII_name: handle a NULL argument
 2602:   
 2603:   Make the function tolerate a NULL pointer input to avoid dereferencing
 2604:   that pointer.
 2605:   
 2606:   Follow-up to efce3ea5a85126d
 2607:   Detected by OSS-Fuzz
 2608:   Reviewed-By: Steve Holme
 2609:   Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20907
 2610:   Fixes #4985
 2611:   Closes #4986
 2612: 
 2613: - RELEASE-NOTES: synced
 2614: 
 2615: - http2: make pausing/unpausing set/clear local stream window
 2616:   
 2617:   This reduces the HTTP/2 window size to 32 MB since libcurl might have to
 2618:   buffer up to this amount of data in memory and yet we don't want it set
 2619:   lower to potentially impact tranfer performance on high speed networks.
 2620:   
 2621:   Requires nghttp2 commit b3f85e2daa629
 2622:   (https://github.com/nghttp2/nghttp2/pull/1444) to work properly, to end
 2623:   up in the next release after 1.40.0.
 2624:   
 2625:   Fixes #4939
 2626:   Closes #4940
 2627: 
 2628: - [Anderson Toshiyuki Sasaki brought this change]
 2629: 
 2630:   libssh: improve known hosts handling
 2631:   
 2632:   Previously, it was not possible to get a known hosts file entry due to
 2633:   the lack of an API.  ssh_session_get_known_hosts_entry(), introduced in
 2634:   libssh-0.9.0, allows libcurl to obtain such information and behave the
 2635:   same as when compiled with libssh2.
 2636:   
 2637:   This also tries to avoid the usage of deprecated functions when the
 2638:   replacements are available.  The behaviour will not change if versions
 2639:   older than libssh-0.8.0 are used.
 2640:   
 2641:   Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
 2642:   
 2643:   Fixes #4953
 2644:   Closes #4962
 2645: 
 2646: Steve Holme (27 Feb 2020)
 2647: - tests: Automatically deduce the tool name from the test case for unit tests
 2648:   
 2649:   It is still possible to override the executable to run during the test,
 2650:   using the <tool> tag, but this patch removes the requirement that the
 2651:   tag must be present for unit tests.
 2652:   
 2653:   It also removes the possibility of human error when existing test cases
 2654:   are used as the basis for new tests, as recently witnessed in 81c37124.
 2655:   
 2656:   Reviewed-by: Daniel Stenberg
 2657:   Closes #4976
 2658: 
 2659: - test1323: Added the missing 'unit test' feature requirement in the test case
 2660: 
 2661: Daniel Stenberg (26 Feb 2020)
 2662: - cookie: remove unnecessary check for 'out != 0'
 2663:   
 2664:   ... as it will always be non-NULL at this point.
 2665:   
 2666:   Detected by Coverity: CID 1459009
 2667: 
 2668: - http: added 417 response treatment
 2669:   
 2670:   When doing a request with a body + Expect: 100-continue and the server
 2671:   responds with a 417, the same request will be retried immediately
 2672:   without the Expect: header.
 2673:   
 2674:   Added test 357 to verify.
 2675:   
 2676:   Also added a control instruction to tell the sws test server to not read
 2677:   the request body if Expect: is present, which the new test 357 uses.
 2678:   
 2679:   Reported-by: bramus on github
 2680:   Fixes #4949
 2681:   Closes #4964
 2682: 
 2683: Steve Holme (26 Feb 2020)
 2684: - smtp: Tidy up, following recent changes, to maintain the coding style
 2685:   
 2686:   Closes #4892
 2687: 
 2688: - smtp: Support the SMTPUTF8 extension for the EXPN command
 2689:   
 2690:   Simply notify the server we support the SMTPUTF8 extension if it does.
 2691: 
 2692: - smtp: Support the SMTPUTF8 extension in the VRFY command
 2693: 
 2694: - smtp: Support the SMTPUTF8 extension in the RCPT TO command
 2695:   
 2696:   Note: The RCPT TO command isn't required to advertise to the server that
 2697:   it contains UTF-8 characters, instead the server is told that a mail may
 2698:   contain UTF-8 in any envelope command via the MAIL command.
 2699: 
 2700: - smtp: Support the SMTPUTF8 extension in the MAIL command
 2701:   
 2702:   Support the SMTPUTF8 extension when sending mailbox information in the
 2703:   MAIL command (FROM and AUTH parameters). Non-ASCII domain names will
 2704:   be ACE encoded, if IDN is supported, whilst non-ASCII characters in
 2705:   the local address part are passed to the server.
 2706:   
 2707:   Reported-by: ygthien on github
 2708:   Fixes #4828
 2709: 
 2710: - smtp: Detect server support for the UTF-8 extension as defined in RFC-6531
 2711: 
 2712: - smtp: Support UTF-8 based host names in the VRFY command
 2713: 
 2714: - smtp: Support UTF-8 based host names in the RCPT TO command
 2715: 
 2716: - smtp: Support UTF-8 based host names in the MAIL command
 2717:   
 2718:   Non-ASCII host names will be ACE encoded if IDN is supported.
 2719: 
 2720: - url: Make the IDN conversion functions available to others
 2721: 
 2722: - smtp: Added UTF-8 mailbox tests to verify existing behaviour
 2723: 
 2724: - ftpserver: Updated VRFY_smtp() so the response isn't necessary in the test case
 2725: 
 2726: - ftpserver: Corrected the e-mail address regex in MAIL_smtp() and RCTP_smtp()
 2727:   
 2728:   The dot character between the host and the tld was not being escaped,
 2729:   which meant it specified a match of 'any' character rather than an
 2730:   explicit dot separator.
 2731:   
 2732:   Additionally removed the dot character from the host name as it allowed
 2733:   the following to be specified as a valid address in our test cases:
 2734:   
 2735:   <bad@example......com>
 2736:   
 2737:   Both are typos from 98f7ca7 and 8880f84 :(
 2738:   
 2739:   I can't remember whether my intention was to allow sub-domains to be
 2740:   specified in the host or not with these additional dots, but by placing
 2741:   it outside of the host means it can only be specified once per domain
 2742:   and by placing a + after the new grouping support for sub-domains is
 2743:   kept.
 2744:   
 2745:   Closes #4912
 2746: 
 2747: - hmac: Added a unit test for the HMAC hash generation
 2748:   
 2749:   Closes #4973
 2750: 
 2751: - ntlm: Moved the HMAC MD5 function into the HMAC module as a generic function
 2752: 
 2753: - tests: Added a unit test for MD4 digest generation
 2754:   
 2755:   Closes #4970
 2756: 
 2757: - md4: Use const for the length input parameter
 2758:   
 2759:   This keeps the interface the same as md5 and sha256.
 2760: 
 2761: - test1610: Fixed the link to the unit test
 2762:   
 2763:   Typo from 81c37124.
 2764: 
 2765: - ntlm: Removed the dependency on the TLS libaries when using MD5
 2766:   
 2767:   As we have our own MD5 implementation use the MD5 wrapper to remove the
 2768:   TLS dependency.
 2769:   
 2770:   Closes #4967
 2771: 
 2772: - md5/sha256: Updated the functions to allow non-string data to be hashed
 2773: 
 2774: - digest: Corrected the name of the local HTTP digest function
 2775:   
 2776:   Follow up to 2b5b37cb. Local static functions do not require the Curl
 2777:   prefix.
 2778: 
 2779: - tests: Added a unit test for SHA256 digest generation
 2780:   
 2781:   Follow up to 2b5b37c.
 2782:   
 2783:   Closes #4968
 2784: 
 2785: - md4: Fixed compilation issues when using GNU TLS gcrypt
 2786:   
 2787:   * Don't include 'struct' in the gcrypt MD4_CTX typedef
 2788:   * The call to gcry_md_read() should use a dereferenced ctx
 2789:   * The call to gcry_md_close() should use a dereferenced ctx
 2790:   
 2791:   Additional minor whitespace issue in the USE_WIN32_CRYPTO code.
 2792:   
 2793:   Closes #4959
 2794: 
 2795: Daniel Stenberg (21 Feb 2020)
 2796: - RELEASE-NOTES: synced
 2797: 
 2798: - http2: now require nghttp2 >= 1.12.0
 2799:   
 2800:   To simplify our code and since earlier versions lack important function
 2801:   calls libcurl needs to function correctly.
 2802:   
 2803:   nghttp2 1.12.0 was relased on June 26, 2016.
 2804:   
 2805:   Closes #4961
 2806: 
 2807: - gtls: fix the copyright year
 2808:   
 2809:   Follow-up from 41fcb4f609
 2810: 
 2811: - [jethrogb brought this change]
 2812: 
 2813:   GnuTLS: Always send client cert
 2814:   
 2815:   TLS servers may request a certificate from the client. This request
 2816:   includes a list of 0 or more acceptable issuer DNs. The client may use
 2817:   this list to determine which certificate to send. GnuTLS's default
 2818:   behavior is to not send a client certificate if there is no
 2819:   match. However, OpenSSL's default behavior is to send the configured
 2820:   certificate. The `GNUTLS_FORCE_CLIENT_CERT` flag mimics OpenSSL
 2821:   behavior.
 2822:   
 2823:   Authored-by: jethrogb on github
 2824:   Fixes #1411
 2825:   Closes #4958
 2826: 
 2827: - [Leo Neat brought this change]
 2828: 
 2829:   github action: add CIFuzz
 2830:   
 2831:   Closes #4960
 2832: 
 2833: - cleanup: comment typos
 2834:   
 2835:   Spotted by 'codespell'
 2836:   
 2837:   Closes #4957
 2838: 
 2839: Steve Holme (20 Feb 2020)
 2840: - win32: USE_WIN32_CRYPTO to enable Win32 based MD4, MD5 and SHA256 functions
 2841:   
 2842:   Whilst lib\md4.c used this pre-processor, lib\md5.c and
 2843:   src\tool_metalink.c did not and simply relied on the WIN32
 2844:   pre-processor directive.
 2845:   
 2846:   Reviewed-by: Marcel Raad
 2847:   Closes #4955
 2848: 
 2849: Daniel Stenberg (19 Feb 2020)
 2850: - connect: remove some spurious infof() calls
 2851:   
 2852:   As they were added primarily for debugging, they provide little use for
 2853:   users.
 2854:   
 2855:   Closes #4951
 2856: 
 2857: - HTTP-COOKIES: mention that a trailing newline is required
 2858:   
 2859:   ... so that we know we got the whole and not a partial line.
 2860:   
 2861:   Also, changed the formatting of the fields away from a table again since
 2862:   the table format requires a github-markdown tool version that we don't
 2863:   run on the web server atm.
 2864:   
 2865:   Reported-by: Sunny Bean
 2866:   Fixes #4946
 2867:   Closes #4947
 2868: 
 2869: - nit: Copyright year out of date
 2870:   
 2871:   Follow-up to 1fc0617dcc
 2872: 
 2873: Jay Satiro (18 Feb 2020)
 2874: - tool_util: Improve Windows version of tvnow()
 2875:   
 2876:   - Change tool_util.c tvnow() for Windows to match more closely to
 2877:     timeval.c Curl_now().
 2878:   
 2879:   - Create a win32 init function for the tool, since some initialization
 2880:     is required for the tvnow() changes.
 2881:   
 2882:   Prior to this change the monotonic time function used by curl in Windows
 2883:   was determined at build-time and not runtime. That was a problem because
 2884:   when curl was built targeted for compatibility with old versions of
 2885:   Windows (eg _WIN32_WINNT < 0x0600) it would use GetTickCount which wraps
 2886:   every 49.7 days that Windows has been running.
 2887:   
 2888:   This change makes curl behave similar to libcurl's tvnow function, which
 2889:   determines at runtime whether the OS is Vista+ and if so calls
 2890:   QueryPerformanceCounter instead. (Note QueryPerformanceCounter is used
 2891:   because it has higher resolution than the more obvious candidate
 2892:   GetTickCount64). The changes to tvnow are basically a copy and paste but
 2893:   the types in some cases are different.
 2894:   
 2895:   Ref: https://github.com/curl/curl/issues/3309
 2896:   
 2897:   Closes https://github.com/curl/curl/pull/4847
 2898: 
 2899: Daniel Stenberg (18 Feb 2020)
 2900: - SOCKS: fix typo in printf formatting
 2901:   
 2902:   Follow-up to 4a4b63daa
 2903:   
 2904:   Reported-by: Peter Piekarski
 2905:   Bug: https://github.com/curl/curl/commit/4a4b63daaa01ef59b131d91e8e6e6dfe275c0f08#r37351330
 2906: 
 2907: - CURLOPT_REDIR_PROTOCOLS.3: update the DEFAULT section
 2908:   
 2909:   to be in sync with the description above
 2910:   
 2911:   Reported-by: Joonas Kuorilehto
 2912:   Fixes #4943
 2913:   Closes #4945
 2914: 
 2915: - docs/GOVERNANCE: refreshed + added "donations" and "commercial support"
 2916: 
 2917: - altsvc: make saving the cache an atomic operation
 2918:   
 2919:   ... by writing the file to temp name then rename to the final when done.
 2920:   
 2921:   Assisted-by: Jay Satiro
 2922:   Fixes #4936
 2923:   Closes #4942
 2924: 
 2925: - rename: a new file for Curl_rename()
 2926:   
 2927:   And make the cookie save function use it.
 2928: 
 2929: - cookies: make saving atomic with a rename
 2930:   
 2931:   Saves the file as "[filename].[8 random hex digits].tmp" and renames
 2932:   away the extension when done.
 2933:   
 2934:   Co-authored-by: Jay Satiro
 2935:   Reported-by: Mike Frysinger
 2936:   Fixes #4914
 2937:   Closes #4926
 2938: 
 2939: - RELEASE-NOTES: synced
 2940: 
 2941: - socks: make the connect phase non-blocking
 2942:   
 2943:   Removes two entries from KNOWN_BUGS.
 2944:   
 2945:   Closes #4907
 2946: 
 2947: - multi: if Curl_readwrite sets 'comeback' use expire, not loop
 2948:   
 2949:   Otherwise, a very fast single transfer ricks starving out other
 2950:   concurrent transfers.
 2951:   
 2952:   Closes #4927
 2953: 
 2954: - ftp: convert 'sock_accepted' to a plain boolean
 2955:   
 2956:   This was an array indexed with sockindex but it was only ever used for
 2957:   the secondary socket.
 2958:   
 2959:   Closes #4929
 2960: 
 2961: Jay Satiro (15 Feb 2020)
 2962: - CURLINFO_COOKIELIST.3: Fix example
 2963:   
 2964:   Prior to this change the example would try to import cookies from stdin,
 2965:   which wasn't what was intended.
 2966:   
 2967:   Reported-by: 3dyd@users.noreply.github.com
 2968:   
 2969:   Fixes https://github.com/curl/curl/issues/4930
 2970: 
 2971: Daniel Stenberg (14 Feb 2020)
 2972: - TODO: Paged searches on LDAP server
 2973:   
 2974:   Closes #4452
 2975: 
 2976: - TODO: CURLOPT_SSL_CTX_FUNCTION for LDAPS
 2977:   
 2978:   Closes #4108
 2979: 
 2980: - azure: disable brotli on the macos debug-builds
 2981:   
 2982:   Because of:
 2983:   
 2984:   brotli/decode.h:204:33: error: variable length array used [-Werror,-Wvla]
 2985:       const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
 2986:   
 2987:   Closes #4925
 2988: 
 2989: Steve Holme (13 Feb 2020)
 2990: - tool_home: Fix the copyright year being out of date
 2991:   
 2992:   Follow up to 9dc350b6.
 2993: 
 2994: Jay Satiro (12 Feb 2020)
 2995: - tool_homedir: Change GetEnv() to use libcurl's curl_getenv()
 2996:   
 2997:   - Deduplicate GetEnv() code.
 2998:   
 2999:   - On Windows change ultimate call to use Windows API
 3000:     GetEnvironmentVariable() instead of C runtime getenv().
 3001:   
 3002:   Prior to this change both libcurl and the tool had their own GetEnv
 3003:   which over time diverged. Now the tool's GetEnv is a wrapper around
 3004:   curl_getenv (libcurl API function which is itself a wrapper around
 3005:   libcurl's GetEnv).
 3006:   
 3007:   Furthermore this change fixes a bug in that Windows API
 3008:   GetEnvironmentVariable() is called instead of C runtime getenv() to get
 3009:   the environment variable since some changes aren't always visible to the
 3010:   latter.
 3011:   
 3012:   Reported-by: Christoph M. Becker
 3013:   
 3014:   Fixes https://github.com/curl/curl/issues/4774
 3015:   Closes https://github.com/curl/curl/pull/4863
 3016: 
 3017: Daniel Stenberg (12 Feb 2020)
 3018: - strerror.h: Copyright year out of date
 3019:   
 3020:   Follow-up to 1c4fa67e8a8fcf6
 3021: 
 3022: Jay Satiro (12 Feb 2020)
 3023: - strerror: Increase STRERROR_LEN 128 -> 256
 3024:   
 3025:   STRERROR_LEN is the constant used throughout the library to set the size
 3026:   of the buffer on the stack that the curl strerror functions write to.
 3027:   
 3028:   Prior to this change some extended length Windows error messages could
 3029:   be truncated.
 3030:   
 3031:   Closes https://github.com/curl/curl/pull/4920
 3032: 
 3033: - multi: fix outdated comment
 3034:   
 3035:   - Do not say that conn->data is "cleared" by multi_done().
 3036:   
 3037:   If the connection is in use then multi_done assigns another easy handle
 3038:   still using the connection to conn->data, therefore in that case it is
 3039:   not cleared.
 3040:   
 3041:   Closes https://github.com/curl/curl/pull/4901
 3042: 
 3043: - easy: remove dead code
 3044:   
 3045:   multi is already assigned to data->multi by curl_multi_add_handle.
 3046:   
 3047:   Closes https://github.com/curl/curl/pull/4900
 3048: 
 3049: Daniel Stenberg (12 Feb 2020)
 3050: - create-dirs.d: mention the mode
 3051:   
 3052:   Reported-by: Dan Jacobson
 3053:   Fixes #4766
 3054:   Closes #4916
 3055: 
 3056: - CURLOPT_ALTSVC_CTRL.3: fix the DEFAULT wording
 3057:   
 3058:   Assisted-by: Jay Satiro
 3059:   Reported-by: Craig Andrews
 3060:   Fixes #4909
 3061:   Closes #4910
 3062: 
 3063: - RELEASE-NOTES: synced
 3064: 
 3065: Steve Holme (9 Feb 2020)
 3066: - smtp: Simplify the MAIL command and avoid a duplication of send strings
 3067:   
 3068:   This avoids the duplication of strings when the optional AUTH and SIZE
 3069:   parameters are required. It also assists with the modifications that
 3070:   are part of #4892.
 3071:   
 3072:   Closes #4903
 3073: 
 3074: Daniel Stenberg (9 Feb 2020)
 3075: - altsvc: keep a copy of the file name to survive handle reset
 3076:   
 3077:   The alt-svc cache survives a call to curl_easy_reset fine, but the file
 3078:   name to use for saving the cache was cleared. Now the alt-svc cache has
 3079:   a copy of the file name to survive handle resets.
 3080:   
 3081:   Added test 1908 to verify.
 3082:   
 3083:   Reported-by: Craig Andrews
 3084:   Fixes #4898
 3085:   Closes #4902
 3086: 
 3087: Steve Holme (9 Feb 2020)
 3088: - url: Include the failure reason when curl_win32_idn_to_ascii() fails
 3089:   
 3090:   Provide the failure reason in the failf() info just as we do for the
 3091:   libidn2 version of code.
 3092:   
 3093:   Closes #4899
 3094: 
 3095: Jay Satiro (9 Feb 2020)
 3096: - asyn-thread: remove dead code
 3097: 
 3098: Daniel Stenberg (8 Feb 2020)
 3099: - [Emil Engler brought this change]
 3100: 
 3101:   github: Instructions to post "uname -a" on Unix systems in issues
 3102:   
 3103:   Closes #4896
 3104: 
 3105: - [Cristian Greco brought this change]
 3106: 
 3107:   configure.ac: fix comments about --with-quiche
 3108:   
 3109:   A simple s/nghttp3/quiche in some comments of --with-quiche.
 3110:   Looks like a copy-paste error from --with-nghttp3.
 3111:   
 3112:   Closes #4897
 3113: 
 3114: Steve Holme (7 Feb 2020)
 3115: - checksrc.bat: Fix not being able to run script from the main curl directory
 3116:   
 3117:   If the script was ran from the main curl directory rather then the
 3118:   projects directory then the script would simply exit without error:
 3119:   
 3120:   C:\url> projects\checksrc.bat
 3121:   
 3122:   The user would either need to change to the projects directory,
 3123:   explicitly specify the current working directory, or perform a
 3124:   oneline hacky workaround:
 3125:   
 3126:   C:\url> cd projects
 3127:   C:\url\projects> checksrc.bat
 3128:   
 3129:   C:\url> checksrc.bat %cd%
 3130:   
 3131:   C:\url> pushd projects & checksrc.bat & popd
 3132:   
 3133:   Closes #4894
 3134: 
 3135: Daniel Stenberg (7 Feb 2020)
 3136: - [Pierre-Yves Bigourdan brought this change]
 3137: 
 3138:   digest: Do not quote algorithm in HTTP authorisation
 3139:   
 3140:   RFC 7616 section 3.4 (The Authorization Header Field) states that "For
 3141:   historical reasons, a sender MUST NOT generate the quoted string syntax
 3142:   for the following parameters: algorithm, qop, and nc". This removes the
 3143:   quoting for the algorithm parameter.
 3144:   
 3145:   Reviewed-by: Steve Holme
 3146:   Closes #4890
 3147: 
 3148: - ftp: remove the duplicated user/password struct fields
 3149:   
 3150:   Closes #4887
 3151: 
 3152: - ftp: remove superfluous checking for crlf in user or pwd
 3153:   
 3154:   ... as this is already done much earlier in the URL parser.
 3155:   
 3156:   Also add test case 894 that verifies that pop3 with an encodedd CR in
 3157:   the user name is rejected.
 3158:   
 3159:   Closes #4887
 3160: 
 3161: Steve Holme (6 Feb 2020)
 3162: - ntlm_wb: Use Curl_socketpair() for greater portability
 3163:   
 3164:   Reported-by: Daniel Stenberg
 3165:   Closes #4886
 3166: 
 3167: Daniel Stenberg (5 Feb 2020)
 3168: - [Frank Gevaerts brought this change]
 3169: 
 3170:   contributors: Also include people who contributed to curl-www
 3171:   
 3172:   Closes #4884
 3173: 
 3174: - [Frank Gevaerts brought this change]
 3175: 
 3176:   contrithanks: Use the most recent tag by default
 3177:   
 3178:   (similar to 5296abe)
 3179:   
 3180:   Closes #4883
 3181: 
 3182: - scripts: use last set tag if none given
 3183:   
 3184:   Makes 'delta' and 'contributors.sh' easier to use.
 3185:   
 3186:   Make the delta script invoke contrithanks to get current number of
 3187:   contributors instead of counting THANKS, for accuracy.
 3188:   
 3189:   Closes #4881
 3190: 
 3191: - ftp: shrink temp buffers used for PORT
 3192:   
 3193:   These two stack based buffers only need to be 46 + 66 bytes instead of
 3194:   256 + 1024.
 3195:   
 3196:   Closes #4880
 3197: 
 3198: - curl: error on --alt-svc use w/o support
 3199:   
 3200:   Make the tool check for alt-svc support at run-time and return error
 3201:   accordingly if not present when the option is used.
 3202:   
 3203:   Reported-by: Harry Sintonen
 3204:   Closes #4878
 3205: 
 3206: - docs/HTTP3: add --enable-alt-svc to curl's configure
 3207: 
 3208: - RELEASE-PROCEDURE: feature win is closed post-release a few days
 3209:   
 3210:   We've tried to uphold this already but let's make it official by
 3211:   publicly stating this is the way we do it.
 3212:   
 3213:   Closes #4877
 3214: 
 3215: - altsvc: set h3 version at a common single spot
 3216:   
 3217:   ... and move the #ifdefs out of the functions. Addresses the fact they
 3218:   were different before this change.
 3219:   
 3220:   Reported-by: Harry Sintonen
 3221:   Closes #4876
 3222: 
 3223: - [Harry Sintonen brought this change]
 3224: 
 3225:   altsvc: improved header parser
 3226:   
 3227:   - Fixed the flag parsing to apply to specific alternative entry only, as
 3228:   per RFC. The earlier code would also get totally confused by
 3229:   multiprotocol header, parsing flags from the wrong part of the header.
 3230:   
 3231:   - Fixed the parser terminating on unknown protocols, instead of skipping
 3232:   them.
 3233:   
 3234:   - Fixed a busyloop when protocol-id was present without an equal sign.
 3235:   
 3236:   Closes #4875
 3237: 
 3238: - [Harry Sintonen brought this change]
 3239: 
 3240:   ngtcp2: fixed to only use AF_INET6 when ENABLE_IPV6
 3241: 
 3242: - docs/HTTP3: update the OpenSSL branch to use for ngtcp2
 3243:   
 3244:   Reported-by: James Fuller
 3245: 
 3246: Steve Holme (4 Feb 2020)
 3247: - ntlm: Pass the Curl_easy structure to the private winbind functions
 3248:   
 3249:   ...rather than the full conndata structure.
 3250: 
 3251: Daniel Stenberg (4 Feb 2020)
 3252: - RELEASE-NOTES: synced
 3253: 
 3254: - tool_operhlp: Copyright year out of date, should be 2020
 3255:   
 3256:   Follow-up from 2bc373740a3
 3257: 
 3258: - [Orgad Shaneh brought this change]
 3259: 
 3260:   curl: avoid using strlen for testing if a string is empty
 3261:   
 3262:   Closes #4873
 3263: 
 3264: Steve Holme (3 Feb 2020)
 3265: - ntlm: Ensure the HTTP header data is not stored in the challenge/response
 3266: 
 3267: Marcel Raad (3 Feb 2020)
 3268: - openssl: remove redundant assignment
 3269:   
 3270:   Fixes a scan-build failure on Bionic.
 3271:   
 3272:   Closes https://github.com/curl/curl/pull/4872
 3273: 
 3274: - travis: update non-OpenSSL Linux jobs to Bionic
 3275:   
 3276:   For the OpenSSL builds, test 323 [TLS-SRP to non-TLS-SRP server] is
 3277:   failing with "curl returned 52, when expecting 35".
 3278:   
 3279:   Closes https://github.com/curl/curl/pull/4872
 3280: 
 3281: Dan Fandrich (3 Feb 2020)
 3282: - cirrus: Add some missing semicolons
 3283:   
 3284:   Newlines aren't preserved in this section so they're needed to separate
 3285:   commands. The exports luckily worked anyway as a single long line, but
 3286:   erroneously exported a variable called "export"
 3287:   [skip ci]
 3288: 
 3289: Daniel Gustafsson (2 Feb 2020)
 3290: - [Pedro Monreal brought this change]
 3291: 
 3292:   cleanup: fix typos and wording in docs and comments
 3293:   
 3294:   Closes #4869
 3295:   Reviewed-by: Emil Engler and Daniel Gustafsson
 3296: 
 3297: Steve Holme (2 Feb 2020)
 3298: - ntlm: Move the winbind data into the NTLM data structure
 3299:   
 3300:   To assist with adding winbind support to the SASL NTLM authentication,
 3301:   move the winbind specific data out of conndata into ntlmdata.
 3302: 
 3303: Daniel Stenberg (30 Jan 2020)
 3304: - quiche: Copyright year out of date
 3305:   
 3306:   Follow-up to 7fc63d72333a
 3307: 
 3308: - altsvc: use h3-25
 3309:   
 3310:   Closes #4868
 3311: 
 3312: - [Alessandro Ghedini brought this change]
 3313: 
 3314:   quiche: update to draft-25
 3315:   
 3316:   Closes #4867
 3317: 
 3318: - ngtcp2: update to git master and its draft-25 support
 3319:   
 3320:   Closes #4865
 3321: 
 3322: - cookie: check __Secure- and __Host- case sensitively
 3323:   
 3324:   While most keywords in cookies are case insensitive, these prefixes are
 3325:   specified explicitly to get checked "with a case-sensitive match".
 3326:   
 3327:   (From the 6265bis document in progress)
 3328:   
 3329:   Ref: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-04
 3330:   Closes #4864
 3331: 
 3332: - KNOWN_BUGS: Multiple methods in a single WWW-Authenticate: header
 3333: 
 3334: - oauth2-bearer.d: works for HTTP too
 3335:   
 3336:   Reported-by: Mischa Salle
 3337:   Bug: https://curl.haxx.se/mail/lib-2020-01/0070.html
 3338:   Closes #4862
 3339: 
 3340: - multi_done: if multiplexed, make conn->data point to another transfer
 3341:   
 3342:   ... since the current transfer is being killed. Setting to NULL is
 3343:   wrong, leaving it pointing to 'data' is wrong since that handle might be
 3344:   about to get freed.
 3345:   
 3346:   Fixes #4845
 3347:   Closes #4858
 3348:   Reported-by: dmitrmax on github
 3349: 
 3350: - location.d: the method change is from POST to GET only
 3351:   
 3352:   Not from generic non-GET to GET.
 3353:   
 3354:   Reported-by: Andrius Merkys
 3355:   Ref: #4859
 3356:   Closes #4861
 3357: 
 3358: - urlapi: guess scheme correct even with credentials given
 3359:   
 3360:   In the "scheme-less" parsing case, we need to strip off credentials
 3361:   first before we guess scheme based on the host name!
 3362:   
 3363:   Assisted-by: Jay Satiro
 3364:   Fixes #4856
 3365:   Closes #4857
 3366: 
 3367: - global_init: move the IPv6 works status bool to multi handle
 3368:   
 3369:   Previously it was stored in a global state which contributed to
 3370:   curl_global_init's thread unsafety. This boolean is now instead figured
 3371:   out in curl_multi_init() and stored in the multi handle. Less effective,
 3372:   but thread safe.
 3373:   
 3374:   Closes #4851
 3375: 
 3376: - [Jay Satiro brought this change]
 3377: 
 3378:   README: mention that the docs is in docs/
 3379:   
 3380:   Reported-by: Austin Green
 3381:   Fixes #4830
 3382:   Closes #4853
 3383: 
 3384: - curl.h: define CURL_WIN32 on windows
 3385:   
 3386:   ... so that the subsequent logic below can use a single known define to know
 3387:   when built on Windows (as we don't define WIN32 anymore).
 3388:   
 3389:   Follow-up to 1adebe7886ddf20b
 3390:   
 3391:   Reported-by: crazydef on github
 3392:   Assisted-by: Marcel Raad
 3393:   Fixes #4854
 3394:   Closes #4855
 3395: 
 3396: - RELEASE-NOTES: synced
 3397: 
 3398: - [Jon Rumsey brought this change]
 3399: 
 3400:   urldata: do string enums without #ifdefs for build scripts
 3401:   
 3402:   ... and check for inconsistencies for OS400 at build time with the new
 3403:   chkstrings tool.
 3404:   
 3405:   Closes #4822
 3406: 
 3407: - curl: make the -# spaceship bar not wrap the line
 3408:   
 3409:   The fixed-point math made us lose precision and thus a too high index
 3410:   value could be used for outputting the hashtags which could overwrite
 3411:   the newline.
 3412:   
 3413:   The fix increases the precision in the sine table (*100) and the
 3414:   associated position math.
 3415:   
 3416:   Reported-by: Andrew Potter
 3417:   Fixes #4849
 3418:   Closes #4850
 3419: 
 3420: - global_init: assume the EINTR bit by default
 3421:   
 3422:   - Removed from global_init since it isn't thread-safe. The symbol will
 3423:     still remain to not break compiles, it just won't have any effect going
 3424:     forward.
 3425:   
 3426:   - make the internals NOT loop on EINTR (the opposite from previously).
 3427:     It only risks returning from the select/poll/wait functions early, and that
 3428:     should be risk-free.
 3429:   
 3430:   Closes #4840
 3431: 
 3432: - [Peter Piekarski brought this change]
 3433: 
 3434:   conn: do not reuse connection if SOCKS proxy credentials differ
 3435:   
 3436:   Closes #4835
 3437: 
 3438: - llist: removed unused Curl_llist_move()
 3439:   
 3440:   (and the corresponding unit test)
 3441:   
 3442:   Closes #4842
 3443: 
 3444: - conncache: removed unused Curl_conncache_bundle_size()
 3445: 
 3446: - strcase: turn Curl_raw_tolower into static
 3447:   
 3448:   Only ever used from within this file.
 3449: 
 3450: - singleuse.pl: support new API functions, fix curl_dbg_ handling
 3451: 
 3452: - wolfssh: make it init properly via Curl_ssh_init()
 3453:   
 3454:   Closes #4846
 3455: 
 3456: - [Aron Rotteveel brought this change]
 3457: 
 3458:   form.d: fix two minor typos
 3459:   
 3460:   Closes #4843
 3461: 
 3462: - openssl: make CURLINFO_CERTINFO not truncate x509v3 fields
 3463:   
 3464:   Avoid "reparsing" the content and instead deliver more exactly what is
 3465:   provided in the certificate and avoid truncating the data after 512
 3466:   bytes as done previously. This no longer removes embedded newlines.
 3467:   
 3468:   Fixes #4837
 3469:   Reported-by: bnfp on github
 3470:   Closes #4841
 3471: 
 3472: Jay Satiro (23 Jan 2020)
 3473: - CURLOPT_PROXY_SSL_OPTIONS.3: Sync with CURLOPT_SSL_OPTIONS.3
 3474:   
 3475:   - Copy CURLOPT_SSL_OPTIONS.3 description to CURLOPT_PROXY_SSL_OPTIONS.3.
 3476:   
 3477:   Prior to this change CURLSSLOPT_NO_PARTIALCHAIN was missing from the
 3478:   CURLOPT_PROXY_SSL_OPTIONS description.
 3479: 
 3480: Daniel Stenberg (22 Jan 2020)
 3481: - mk-ca-bundle: add support for CKA_NSS_SERVER_DISTRUST_AFTER
 3482:   
 3483:   For now, no cert in the bundle actually sets a date there...
 3484:   
 3485:   Co-Authored-by: Jay Satiro
 3486:   Reported-by: Christian Heimes
 3487:   Fixes #4834
 3488:   Closes #4836
 3489: 
 3490: - RELEASE-NOTES: synced
 3491: 
 3492: - [Pavel Volgarev brought this change]
 3493: 
 3494:   smtp: Allow RCPT TO command to fail for some recipients
 3495:   
 3496:   Introduces CURLOPT_MAIL_RCPT_ALLLOWFAILS.
 3497:   
 3498:   Verified with the new tests 3002-3007
 3499:   
 3500:   Closes #4816
 3501: 
 3502: - copyright: fix year ranges
 3503:   
 3504:   follow-up from dea17b519d (one of these days I'll learn to check before
 3505:   I push)
 3506: 
 3507: - [nao brought this change]
 3508: 
 3509:   http: move "oauth_bearer" from connectdata to Curl_easy
 3510:   
 3511:   Fixes the bug where oauth_bearer gets deallocated when we re-use a
 3512:   connection.
 3513:   
 3514:   Closes #4824
 3515: 
 3516: - [Emil Engler brought this change]
 3517: 
 3518:   curl: Let -D merge headers in one file again
 3519:   
 3520:   Closes #4762
 3521:   Fixes #4753
 3522: 
 3523: - data.d: remove "Multiple files can also be specified"
 3524:   
 3525:   It is superfluous and could even be misleading.
 3526:   
 3527:   Bug: https://curl.haxx.se/mail/archive-2020-01/0016.html
 3528:   Reported-by: Mike Norton
 3529:   Closes #4832
 3530: 
 3531: Marcel Raad (20 Jan 2020)
 3532: - CMake: support specifying the target Windows version
 3533:   
 3534:   Previously, it was only possible to set it to Windows Vista or XP by
 3535:   setting the option `ENABLE_INET_PTON` to `ON` resp. `OFF`.
 3536:   Use a new cache variable `CURL_TARGET_WINDOWS_VERSION` to be able to
 3537:   explicitly set the target Windows version. `ENABLE_INET_PTON` is
 3538:   ignored in this case.
 3539:   
 3540:   Ref: https://github.com/curl/curl/pull/1639#issuecomment-313039352
 3541:   Ref: https://github.com/curl/curl/pull/4607#issuecomment-557541456
 3542:   Closes https://github.com/curl/curl/pull/4815
 3543: 
 3544: Daniel Stenberg (20 Jan 2020)
 3545: - http.h: Copyright year out of date, should be 2020
 3546:   
 3547:   Follow-up to 7ff9222ced8c
 3548: 
 3549: - [加藤郁之 brought this change]
 3550: 
 3551:   HTTP: increase EXPECT_100_THRESHOLD to 1Mb
 3552:   
 3553:   Mentioned: https://curl.haxx.se/mail/lib-2020-01/0050.html
 3554:   
 3555:   Closes #4814
 3556: 
 3557: - ROADMAP: thread-safe `curl_global_init()`
 3558:   
 3559:   I'd like to see this happen.
 3560: 
 3561: - RELEASE-NOTES: synced
 3562: 
 3563: - wolfssl: use the wc-prefixed symbol alternatives
 3564:   
 3565:   The symbols without wc_ prefix are not always provided.
 3566:   
 3567:   Ref: https://github.com/wolfSSL/wolfssl/issues/2744
 3568:   
 3569:   Closes #4827
 3570: 
 3571: - polarssl: removed
 3572:   
 3573:   As detailed in DEPRECATE.md, the polarssl support is now removed after
 3574:   having been disabled for 6 months and nobody has missed it.
 3575:   
 3576:   The threadlock files used by mbedtls are renamed to an 'mbedtls' prefix
 3577:   instead of the former 'polarssl' and the common functions that
 3578:   previously were shared between mbedtls and polarssl and contained the
 3579:   name 'polarssl' have now all been renamed to instead say 'mbedtls'.
 3580:   
 3581:   Closes #4825
 3582: 
 3583: Marcel Raad (16 Jan 2020)
 3584: - libssh2: fix variable type
 3585:   
 3586:   This led to a conversion warning on 64-bit MinGW, which has 32-bit
 3587:   `long` but 64-bit `size_t`.
 3588:   
 3589:   Closes https://github.com/curl/curl/pull/4823
 3590: 
 3591: Daniel Stenberg (16 Jan 2020)
 3592: - curl:progressbarinit: ignore column width from terminals < 20
 3593:   
 3594:   To avoid division by zero - or other issues.
 3595:   
 3596:   Reported-by: Daniel Marjamäki
 3597:   Closes #4818
 3598: 
 3599: - wolfssh: set the password correctly for PASSWORD auth
 3600: 
 3601: - wolfssh: remove fprintf() calls (and uses of __func__)
 3602: 
 3603: Marcel Raad (14 Jan 2020)
 3604: - CMake: use check_symbol_exists also for inet_pton
 3605:   
 3606:   It doesn't make much sense to only check if the function can be linked
 3607:   when it's not declared in any header and that is treated as an error.
 3608:   With the correct target Windows version set, the function is declared
 3609:   in ws2tcpip.h and the comment above the modified block is invalid.
 3610:   
 3611:   Also, move the definition of `_WIN32_WINNT` up to before all symbol
 3612:   availability checks so that we don't have to care which ones must be
 3613:   done after it.
 3614:   
 3615:   Tested with Visual Studio 2019 and current MinGW-w64.
 3616:   
 3617:   Closes https://github.com/curl/curl/pull/4808
 3618: 
 3619: Jay Satiro (13 Jan 2020)
 3620: - schannel_verify: Fix alt names manual verify for UNICODE builds
 3621:   
 3622:   Follow-up to 29e40a6 from two days ago, which added that feature for
 3623:   Windows 7 and earlier. The bug only occurred in same.
 3624:   
 3625:   Ref: https://github.com/curl/curl/pull/4761
 3626: 
 3627: Daniel Stenberg (13 Jan 2020)
 3628: - HTTP-COOKIES.md: describe the cookie file format
 3629:   
 3630:   ... and refer to that file from from CURLOPT_COOKIEFILE.3 and
 3631:   CURLOPT_COOKIELIST.3
 3632:   
 3633:   Assisted-by: Jay Satiro
 3634:   Reported-by: bsammon on github
 3635:   Fixes #4805
 3636:   Closes #4806
 3637: 
 3638: - [Tobias Hieta brought this change]
 3639: 
 3640:   CMake: Add support for CMAKE_LTO option.
 3641:   
 3642:   This enables Link Time Optimization. LTO is a proven technique for
 3643:   optimizing across compilation units.
 3644:   
 3645:   Closes #4799
 3646: 
 3647: - RELEASE-NOTES: synced
 3648: 
 3649: - ConnectionExists: respect the max_concurrent_streams limits
 3650:   
 3651:   A regression made the code use 'multiplexed' as a boolean instead of the
 3652:   counter it is intended to be. This made curl try to "over-populate"
 3653:   connections with new streams.
 3654:   
 3655:   This regression came with 41fcdf71a1, shipped in curl 7.65.0.
 3656:   
 3657:   Also, respect the CURLMOPT_MAX_CONCURRENT_STREAMS value in the same
 3658:   check.
 3659:   
 3660:   Reported-by: Kunal Ekawde
 3661:   Fixes #4779
 3662:   Closes #4784
 3663: 
 3664: - curl: make #0 not output the full URL
 3665:   
 3666:   It was not intended nor documented!
 3667:   
 3668:   Added test 1176 to verify.
 3669:   
 3670:   Reported-by: vshmuk on hackerone
 3671:   
 3672:   Closes #4812
 3673: 
 3674: - wolfSSH: new SSH backend
 3675:   
 3676:   Adds support for SFTP (not SCP) using WolfSSH.
 3677:   
 3678:   Closes #4231
 3679: 
 3680: - curl: remove 'config' field from OutStruct
 3681:   
 3682:   As it was just unnecessary duplicated information already stored in the
 3683:   'per_transfer' struct and that's around mostly anyway.
 3684:   
 3685:   The duplicated pointer caused problems when the code flow was aborted
 3686:   before the dupe was filled in and could cause a NULL pointer access.
 3687:   
 3688:   Reported-by: Brian Carpenter
 3689:   Fixes #4807
 3690:   Closes #4810
 3691: 
 3692: - misc: Copyright year out of date, should be 2020
 3693:   
 3694:   Follow-up to recent commits
 3695:   
 3696:   [skip ci]
 3697: 
 3698: Jay Satiro (11 Jan 2020)
 3699: - [Santino Keupp brought this change]
 3700: 
 3701:   libssh2: add support for forcing a hostkey type
 3702:   
 3703:   - Allow forcing the host's key type found in the known_hosts file.
 3704:   
 3705:   Currently, curl (with libssh2) does not take keys from your known_hosts
 3706:   file into account when talking to a server. With this patch the
 3707:   known_hosts file will be searched for an entry matching the hostname
 3708:   and, if found, libssh2 will be told to claim this key type from the
 3709:   server.
 3710:   
 3711:   Closes https://github.com/curl/curl/pull/4747
 3712: 
 3713: - [Nicolas Guillier brought this change]
 3714: 
 3715:   cmake: Improve libssh2 check on Windows
 3716:   
 3717:   - Add "libssh2" name to FindLibSSH2 library search.
 3718:   
 3719:   On Windows systems, libSSH2 CMake installation may name the library
 3720:   "LibSSH2".
 3721:   
 3722:   Prior to this change cmake only checked for name "ssh2". On Linux that
 3723:   works fine because it will prepend the "lib", but it doesn't do that on
 3724:   Windows.
 3725:   
 3726:   Closes https://github.com/curl/curl/pull/4804
 3727: 
 3728: - [Faizur Rahman brought this change]
 3729: 
 3730:   schannel: Make CURLOPT_CAINFO work better on Windows 7
 3731:   
 3732:   - Support hostname verification via alternative names (SAN) in the
 3733:     peer certificate when CURLOPT_CAINFO is used in Windows 7 and earlier.
 3734:   
 3735:   CERT_NAME_SEARCH_ALL_NAMES_FLAG doesn't exist before Windows 8. As a
 3736:   result CertGetNameString doesn't quite work on those versions of
 3737:   Windows. This change provides an alternative solution for
 3738:   CertGetNameString by iterating through CERT_ALT_NAME_INFO for earlier
 3739:   versions of Windows.
 3740:   
 3741:   Prior to this change many certificates failed the hostname validation
 3742:   when CURLOPT_CAINFO was used in Windows 7 and earlier. Most certificates
 3743:   now represent multiple hostnames and rely on the alternative names field
 3744:   exclusively to represent their hostnames.
 3745:   
 3746:   Reported-by: Jeroen Ooms
 3747:   
 3748:   Fixes https://github.com/curl/curl/issues/3711
 3749:   Closes https://github.com/curl/curl/pull/4761
 3750: 
 3751: - [Emil Engler brought this change]
 3752: 
 3753:   ngtcp2: Add an error code for QUIC connection errors
 3754:   
 3755:   - Add new error code CURLE_QUIC_CONNECT_ERROR for QUIC connection
 3756:     errors.
 3757:   
 3758:   Prior to this change CURLE_FAILED_INIT was used, but that was not
 3759:   correct.
 3760:   
 3761:   Closes https://github.com/curl/curl/pull/4754
 3762: 
 3763: - multi: Change curl_multi_wait/poll to error on negative timeout
 3764:   
 3765:   - Add new error CURLM_BAD_FUNCTION_ARGUMENT and return that error when
 3766:     curl_multi_wait/poll is passed timeout param < 0.
 3767:   
 3768:   Prior to this change passing a negative value to curl_multi_wait/poll
 3769:   such as -1 could cause the function to wait forever.
 3770:   
 3771:   Reported-by: hamstergene@users.noreply.github.com
 3772:   
 3773:   Fixes https://github.com/curl/curl/issues/4763
 3774:   
 3775:   Closes https://github.com/curl/curl/pull/4765
 3776: 
 3777: - [Marc Aldorasi brought this change]
 3778: 
 3779:   cmake: Enable SMB for Windows builds
 3780:   
 3781:   - Define USE_WIN32_CRYPTO by default. This enables SMB.
 3782:   
 3783:   - Show whether SMB is enabled in the "Enabled features" output.
 3784:   
 3785:   - Fix mingw compiler warning for call to CryptHashData by casting away
 3786:     const param. mingw CryptHashData prototype is wrong.
 3787:   
 3788:   Closes https://github.com/curl/curl/pull/4717
 3789: 
 3790: - vtls: Refactor Curl_multissl_version to make the code clearer
 3791:   
 3792:   Reported-by: Johannes Schindelin
 3793:   
 3794:   Ref: https://github.com/curl/curl/pull/3863#pullrequestreview-241395121
 3795:   
 3796:   Closes https://github.com/curl/curl/pull/4803
 3797: 
 3798: Daniel Stenberg (10 Jan 2020)
 3799: - fix: Copyright year out of date, should be 2020
 3800:   
 3801:   Follow-up to 875314ed0bf3b
 3802: 
 3803: Marcel Raad (10 Jan 2020)
 3804: - hostip: move code to resolve IP address literals to `Curl_resolv`
 3805:   
 3806:   The code was duplicated in the various resolver backends.
 3807:   
 3808:   Also, it was called after the call to `Curl_ipvalid`, which matters in
 3809:   case of `CURLRES_IPV4` when called from `connect.c:bindlocal`. This
 3810:   caused test 1048 to fail on classic MinGW.
 3811:   
 3812:   The code ignores `conn->ip_version` as done previously in the
 3813:   individual resolver backends.
 3814:   
 3815:   Move the call to the `resolver_start` callback up to appease test 655,
 3816:   which wants it to be called also for literal addresses.
 3817:   
 3818:   Closes https://github.com/curl/curl/pull/4798
 3819: 
 3820: Daniel Stenberg (9 Jan 2020)
 3821: - scripts/delta: adapt to new public header layout
 3822: 
 3823: - test1167: verify global symbols in public headers are curl prefixed
 3824:   
 3825:   ... using the new badsymbols.pl perl script
 3826:   
 3827:   Fixes #4793
 3828:   Closes #4794
 3829: 
 3830: - libtest/mk-lib1521: adapt to new public header layout
 3831: 
 3832: - include: remove non-curl prefixed defines
 3833:   
 3834:   ...requires some rearranging of the setup of CURLOPT_ and CURLMOPT_
 3835:   enums.
 3836: 
 3837: - curl.h: remove WIN32 define
 3838:   
 3839:   It isn't our job to define this in a public header - and it defines a
 3840:   name outside of our naming scope.
 3841: 
 3842: - tool_dirhie.c: fix the copyright year range
 3843:   
 3844:   Follow-up to: 4027bd72d9
 3845: 
 3846: - bump: work towards 7.69.0 is started
 3847: 
 3848: Jay Satiro (9 Jan 2020)
 3849: - tool_dirhie: Allow directory traversal during creation
 3850:   
 3851:   - When creating a directory hierarchy do not error when mkdir fails due
 3852:     to error EACCESS (13) "access denied".
 3853:   
 3854:   Some file systems allow for directory traversal; in this case that it
 3855:   should be possible to create child directories when permission to the
 3856:   parent directory is restricted.
 3857:   
 3858:   This is a regression caused by me in f16bed0 (precedes curl-7_61_1).
 3859:   Basically I had assumed that if a directory already existed it would
 3860:   fail only with error EEXIST, and not error EACCES. The latter may
 3861:   happen if the directory exists but has certain restricted permissions.
 3862:   
 3863:   Reported-by: mbeifuss@users.noreply.github.com
 3864:   
 3865:   Fixes https://github.com/curl/curl/issues/4796
 3866:   Closes https://github.com/curl/curl/pull/4797
 3867: 
 3868: Daniel Stenberg (9 Jan 2020)
 3869: - KNOWN_BUGS: AUTH PLAIN for SMTP is not working on all servers
 3870:   
 3871:   Closes #4080
 3872: 
 3873: - docs/RELEASE-PROCEDURE.md: pushed some release dates
 3874:   
 3875:   Ref: https://curl.haxx.se/mail/lib-2020-01/0031.html
 3876: 
 3877: - runtests: make random seed fixed for a month
 3878:   
 3879:   When using randomized features of runtests (-R and --shallow) it is
 3880:   useful to have a fixed random seed to make sure for example extra
 3881:   commits in a branch or a rebase won't change the seed that would make
 3882:   repeated runs work differently.
 3883:   
 3884:   As it is also useful to change seed sometimes, the default seed is now
 3885:   determined based on the current month (and first line curl -V
 3886:   output). When the month changes, so will the random seed.
 3887:   
 3888:   The specific seed is also shown in the standard test suite top header
 3889:   and it can be set explictly with the new --seed=[num] option so that the
 3890:   exact order of a previous run can be achieved.
 3891:   
 3892:   Closes #4734
 3893: 
 3894: - RELEASE-PROCEDURE.md: fix next release date (Feb 26)
 3895:   
 3896:   [skip ci]
 3897: 
 3898: Version 7.68.0 (8 Jan 2020)
 3899: 
 3900: Daniel Stenberg (8 Jan 2020)
 3901: - RELEASE-NOTES: 7.68.0
 3902: 
 3903: - THANKS: updated with names from the 7.68.0 release
 3904: 
 3905: - RELEASE-PROCEDURE: add four future release dates
 3906:   
 3907:   and remove four past release dates
 3908:   
 3909:   [skip ci]
 3910: 
 3911: Marcel Raad (6 Jan 2020)
 3912: - TrackMemory tests: always remove CR before LF
 3913:   
 3914:   It was removed for output containing ' =' via `s/ =.*//`. With classic
 3915:   MinGW, this made lines with `free()` end with CRLF, but lines with e.g.
 3916:   `malloc()` end with only LF. The tests expect LF only.
 3917:   
 3918:   Closes https://github.com/curl/curl/pull/4788
 3919: 
 3920: Daniel Stenberg (6 Jan 2020)
 3921: - multi.h: move INITIAL_MAX_CONCURRENT_STREAMS from public header
 3922:   
 3923:   ... to the private multihhandle.h. It is not for public use and it
 3924:   wasn't prefixed correctly anyway!
 3925:   
 3926:   Closes #4790
 3927: 
 3928: - file: fix copyright year range
 3929:   
 3930:   Follow-up to 1b71bc532bd
 3931: 
 3932: - curl -w: handle a blank input file correctly
 3933:   
 3934:   Previously it would end up with an uninitialized memory buffer that
 3935:   would lead to a crash or junk getting output.
 3936:   
 3937:   Added test 1271 to verify.
 3938:   
 3939:   Reported-by: Brian Carpenter
 3940:   Closes #4786
 3941: 
 3942: - file: on Windows, refuse paths that start with \\
 3943:   
 3944:   ... as that might cause an unexpected SMB connection to a given host
 3945:   name.
 3946:   
 3947:   Reported-by: Fernando Muñoz
 3948:   CVE-2019-15601
 3949:   Bug: https://curl.haxx.se/docs/CVE-2019-15601.html
 3950: 
 3951: Jay Satiro (6 Jan 2020)
 3952: - CURLOPT_READFUNCTION.3: fix fopen params in example
 3953: 
 3954: - CURLOPT_READFUNCTION.3: fix variable name in example
 3955:   
 3956:   Reported-by: Paul Joyce
 3957:   
 3958:   Fixes https://github.com/curl/curl/issues/4787
 3959: 
 3960: Daniel Stenberg (5 Jan 2020)
 3961: - curl:getparameter return error for --http3 if libcurl doesn't support
 3962:   
 3963:   Closes #4785
 3964: 
 3965: - docs: mention CURL_MAX_INPUT_LENGTH restrictions
 3966:   
 3967:   ... for curl_easy_setopt() and curl_url_set().
 3968:   
 3969:   [skip ci]
 3970:   
 3971:   Closes #4783
 3972: 
 3973: - curl: properly free mimepost data
 3974:   
 3975:   ... as it could otherwise leak memory when a transfer failed.
 3976:   
 3977:   Added test 1293 to verify.
 3978:   
 3979:   Reported-by: Brian Carpenter
 3980:   Fixes #4781
 3981:   Closes #4782
 3982: 
 3983: - curl: cleanup multi handle on failure
 3984:   
 3985:   ... to fix memory leak in error path.
 3986:   
 3987:   Fixes #4772
 3988:   Closes #4780
 3989:   Reported-by: Brian Carpenter
 3990: 
 3991: Marcel Raad (3 Jan 2020)
 3992: - lib: fix compiler warnings with `CURL_DISABLE_VERBOSE_STRINGS`
 3993:   
 3994:   Closes https://github.com/curl/curl/pull/4775
 3995: 
 3996: Daniel Stenberg (3 Jan 2020)
 3997: - COPYING: it's 2020!
 3998:   
 3999:   [skip ci]
 4000: 
 4001: Jay Satiro (3 Jan 2020)
 4002: - [Marc Aldorasi brought this change]
 4003: 
 4004:   tests: Fix bounce requests with truncated writes
 4005:   
 4006:   Prior to this change the swsbounce check in service_connection could
 4007:   fail because prevtestno and prevpartno were not set, which would cause
 4008:   the wrong response data to be sent to some tests and cause them to fail.
 4009:   
 4010:   Ref: https://github.com/curl/curl/pull/4717#issuecomment-570240785
 4011: 
 4012: Marcel Raad (31 Dec 2019)
 4013: - tool: make a few char pointers point to const char instead
 4014:   
 4015:   These are read-only.
 4016:   
 4017:   Closes https://github.com/curl/curl/pull/4771
 4018: 
 4019: Jay Satiro (31 Dec 2019)
 4020: - tests: Change NTLM tests to require SSL
 4021:   
 4022:   Prior to this change tests that required NTLM feature did not require
 4023:   SSL feature.
 4024:   
 4025:   There are pending changes to cmake builds that will allow enabling NTLM
 4026:   in non-SSL builds in Windows. In that case the NTLM auth strings created
 4027:   are different from what is expected by the NTLM tests and they fail:
 4028:   
 4029:   "The issue with NTLM is that previous non-SSL builds would not enable
 4030:   NTLM and so the NTLM tests would be skipped."
 4031:   
 4032:   Assisted-by: marc-groundctl@users.noreply.github.com
 4033:   
 4034:   Ref: https://github.com/curl/curl/pull/4717#issuecomment-566218729
 4035:   
 4036:   Closes https://github.com/curl/curl/pull/4768
 4037: 
 4038: - [Michael Forney brought this change]
 4039: 
 4040:   bearssl: Improve I/O handling
 4041:   
 4042:   Factor out common I/O loop as bearssl_run_until, which reads/writes TLS
 4043:   records until the desired engine state is reached. This is now used for
 4044:   the handshake, read, write, and close.
 4045:   
 4046:   Match OpenSSL SSL_write behavior, and don't return the number of bytes
 4047:   written until the corresponding records have been completely flushed
 4048:   across the socket. This involves keeping track of the length of data
 4049:   buffered into the TLS engine, and assumes that when CURLE_AGAIN is
 4050:   returned, the write function will be called again with the same data
 4051:   and length arguments. This is the same requirement of SSL_write.
 4052:   
 4053:   Handle TLS close notify as EOF when reading by returning 0.
 4054:   
 4055:   Closes https://github.com/curl/curl/pull/4748
 4056: 
 4057: - travis: Fix error detection
 4058:   
 4059:   - Stop using inline shell scripts for before_script and script sections.
 4060:   
 4061:   Prior to this change Travis could ignore errors from commands in inline
 4062:   scripts. I don't understand how or why it happens. This is a workaround.
 4063:   
 4064:   Assisted-by: Simon Warta
 4065:   
 4066:   Ref: https://github.com/travis-ci/travis-ci/issues/1066
 4067:   
 4068:   Fixes https://github.com/curl/curl/issues/3730
 4069:   Closes https://github.com/curl/curl/pull/3755
 4070: 
 4071: - tool_operate: fix mem leak when failed config parse
 4072:   
 4073:   Found by fuzzing the config file.
 4074:   
 4075:   Reported-by: Geeknik Labs
 4076:   
 4077:   Fixes https://github.com/curl/curl/issues/4767
 4078: 
 4079: - [Xiang Xiao brought this change]
 4080: 
 4081:   lib: remove erroneous +x file permission on some c files
 4082:   
 4083:   Modified by commit eb9a604 accidentally.
 4084:   
 4085:   Closes https://github.com/curl/curl/pull/4756
 4086: 
 4087: - [Xiang Xiao brought this change]
 4088: 
 4089:   lib: fix warnings found when porting to NuttX
 4090:   
 4091:   - Undefine DEBUGASSERT in curl_setup_once.h in case it was already
 4092:     defined as a system macro.
 4093:   
 4094:   - Don't compile write32_le in curl_endian unless
 4095:     CURL_SIZEOF_CURL_OFF_T > 4, since it's only used by Curl_write64_le.
 4096:   
 4097:   - Include <arpa/inet.h> in socketpair.c.
 4098:   
 4099:   Closes https://github.com/curl/curl/pull/4756
 4100: 
 4101: - os400: Add missing CURLE error constants
 4102:   
 4103:   Bug: https://github.com/curl/curl/pull/4754#issuecomment-569126922
 4104:   Reported-by: Emil Engler
 4105: 
 4106: - CURLOPT_HEADERFUNCTION.3: Document that size is always 1
 4107:   
 4108:   For compatibility with `fwrite`, the `CURLOPT_HEADERFUNCTION` callback
 4109:   is passed two `size_t` parameters which, when multiplied, designate the
 4110:   number of bytes of data passed in. In practice, CURL always sets the
 4111:   first parameter (`size`) to 1.
 4112:   
 4113:   This practice is also enshrined in documentation and cannot be changed
 4114:   in future. The documentation states that the default callback is
 4115:   `fwrite`, which means `fwrite` must be a suitable function for this
 4116:   purpose. However, the documentation also states that the callback must
 4117:   return the number of *bytes* it successfully handled, whereas ISO C
 4118:   `fwrite` returns the number of items (each of size `size`) which it
 4119:   wrote. The only way these numbers can be equal is if `size` is 1.
 4120:   
 4121:   Since `size` is 1 and can never be changed in future anyway, document
 4122:   that fact explicitly and let users rely on it.
 4123:   
 4124:   Reported-by: Frank Gevaerts
 4125:   Commit-message-by: Christopher Head
 4126:   
 4127:   Ref: https://github.com/curl/curl/pull/2787
 4128:   
 4129:   Fixes https://github.com/curl/curl/issues/4758
 4130: 
 4131: - examples/postinmemory.c: Call curl_global_cleanup always
 4132:   
 4133:   Prior to this change curl_global_cleanup was not called if
 4134:   curl_easy_init failed.
 4135:   
 4136:   Reported-by: kouzhudong@users.noreply.github.com
 4137:   
 4138:   Fixes https://github.com/curl/curl/issues/4751
 4139: 
 4140: Daniel Stenberg (21 Dec 2019)
 4141: - url2file.c: fix copyright year
 4142:   
 4143:   Follow-up to 525787269599b5
 4144: 
 4145: - [Rickard Hallerbäck brought this change]
 4146: 
 4147:   examples/url2file.c: corrected a comment
 4148:   
 4149:   The comment was confusing and suggested that setting CURLOPT_NOPROGRESS
 4150:   to 0L would both enable and disable debug output at the same time, like
 4151:   a Schrödinger's cat of CURLOPTs.
 4152:   
 4153:   Closes #4745
 4154: 
 4155: - HISTORY: OSS-Fuzz started fuzzing libcurl in 2017
 4156: 
 4157: - RELEASE-NOTES: synced
 4158: 
 4159: Jay Satiro (20 Dec 2019)
 4160: - ngtcp2: Support the latest update key callback type
 4161:   
 4162:   - Remove our cb_update_key in favor of ngtcp2's new
 4163:     ngtcp2_crypto_update_key_cb which does the same thing.
 4164:   
 4165:   Several days ago the ngtcp2_update_key callback function prototype was
 4166:   changed in ngtcp2/ngtcp2@42ce09c. Though it would be possible to
 4167:   fix up our cb_update_key for that change they also added
 4168:   ngtcp2_crypto_update_key_cb which does the same thing so we'll use that
 4169:   instead.
 4170:   
 4171:   Ref: https://github.com/ngtcp2/ngtcp2/commit/42ce09c
 4172:   
 4173:   Closes https://github.com/curl/curl/pull/4735
 4174: 
 4175: Daniel Stenberg (19 Dec 2019)
 4176: - sws: search for "Testno:" header uncondtionally if no testno
 4177:   
 4178:   Even if the initial request line wasn't found. With the fix to 1455, the
 4179:   test number is now detected correctly.
 4180:   
 4181:   (Problem found when running tests in random order.)
 4182:   
 4183:   Closes #4744
 4184: 
 4185: - tests: set LC_ALL in more tests
 4186:   
 4187:   Follow-up to 23208e330ac0c21
 4188:   
 4189:   Closes #4743
 4190: 
 4191: - test165: set LC_ALL=en_US.UTF-8 too
 4192:   
 4193:   On my current Debian Unstable with libidn2 2.2.0, I get an error if
 4194:   LC_ALL is set to blank. Then curl errors out with:
 4195:   
 4196:   curl: (3) Failed to convert www.åäö.se to ACE; could not convert string to UTF-8
 4197:   
 4198:   Closes #4738
 4199: 
 4200: - curl.h: add two defines for the "pre ISO C" case
 4201:   
 4202:   Without this fix, this caused a compilation failure on AIX with IBM xlc
 4203:   13.1.3 compiler.
 4204:   
 4205:   Reported-by: Ram Krushna Mishra
 4206:   Fixes #4739
 4207:   Closes #4740
 4208: 
 4209: - create_conn: prefer multiplexing to using new connections
 4210:   
 4211:   ... as it would previously prefer new connections rather than
 4212:   multiplexing in most conditions! The (now removed) code was a leftover
 4213:   from the Pipelining code that was translated wrongly into a
 4214:   multiplex-only world.
 4215:   
 4216:   Reported-by: Kunal Ekawde
 4217:   Bug: https://curl.haxx.se/mail/lib-2019-12/0060.html
 4218:   Closes #4732
 4219: 
 4220: - test1456: remove the use of a fixed local port
 4221:   
 4222:   Fixup the test to instead not compare the port number. It sometimes
 4223:   caused problems like this:
 4224:   
 4225:   "curl: (45) bind failed with errno 98: Address already in use"
 4226:   
 4227:   Closes #4733
 4228: 
 4229: Jay Satiro (18 Dec 2019)
 4230: - CURLOPT_QUOTE.3: fix typos
 4231:   
 4232:   Prior to this change the EXAMPLE in the QUOTE/PREQUOTE/POSTQUOTE man
 4233:   pages would not compile because a variable name was incorrect.
 4234:   
 4235:   Reported-by: Bylon2@users.noreply.github.com
 4236:   
 4237:   Fixes https://github.com/curl/curl/issues/4736
 4238: 
 4239: - [Gisle Vanem brought this change]
 4240: 
 4241:   strerror: Fix compiler warning "empty expression"
 4242:   
 4243:   - Remove the final semi-colon in the SEC2TXT() macro definition.
 4244:   
 4245:   Before:  #define SEC2TXT(sec) case sec: txt = #sec; break;
 4246:   
 4247:   After:   #define SEC2TXT(sec) case sec: txt = #sec; break
 4248:   
 4249:   Prior to this change SEC2TXT(foo); would generate break;; which caused
 4250:   the empty expression warning.
 4251:   
 4252:   Ref: https://github.com/curl/curl/commit/5b22e1a#r36458547
 4253: 
 4254: Daniel Stenberg (18 Dec 2019)
 4255: - curl/parseconfig: use curl_free() to free memory allocated by libcurl
 4256:   
 4257:   Reported-by: bxac on github
 4258:   Fixes #4730
 4259:   Closes #4731
 4260: 
 4261: - curl/parseconfig: fix mem-leak
 4262:   
 4263:   When looping, first trying '.curlrc' and then '_curlrc', the function
 4264:   would not free the first string.
 4265:   
 4266:   Closes #4731
 4267: 
 4268: - CURLOPT_URL.3: "curl supports SMB version 1 (only)"
 4269:   
 4270:   [skip ci]
 4271: 
 4272: - test1270: a basic -w redirect_url test
 4273:   
 4274:   Closes #4728
 4275: 
 4276: - HISTORY: the SMB(S) support landed in 2014
 4277: 
 4278: - define: remove HAVE_ENGINE_LOAD_BUILTIN_ENGINES, not used anymore
 4279:   
 4280:   It is covered by USE_OPENSSL_ENGINE now.
 4281:   
 4282:   Reported-by: Gisle Vanem
 4283:   Bug: https://github.com/curl/curl/commit/87b9337c8f76c21c57b204e88b68c6ecf3bd1ac0#commitcomment-36447951
 4284:   
 4285:   Closes #4725
 4286: 
 4287: - lib: remove ASSIGNWITHINCONDITION exceptions, use our code style
 4288:   
 4289:   ... even for macros
 4290:   
 4291:   Reviewed-by: Daniel Gustafsson
 4292:   Reviewed-by: Jay Satiro
 4293:   Reported-by: Jay Satiro
 4294:   Fixes #4683
 4295:   Closes #4722
 4296: 
 4297: - tests: make sure checksrc runs on header files too
 4298: 
 4299: - Revert "checksrc: fix regexp for ASSIGNWITHINCONDITION"
 4300:   
 4301:   This reverts commit ba82673dac3e8d00a76aa5e3779a0cb80e7442af.
 4302:   
 4303:   Bug: #4683
 4304: 
 4305: - KNOWN_BUGS: TLS session cache doesn't work with TFO
 4306:   
 4307:   [skip ci]
 4308:   Closes #4301
 4309: 
 4310: - KNOWN_BUGS: Connection information when using TCP Fast Open
 4311:   
 4312:   Also point to #4296 for more details
 4313:   Closes #4296
 4314: 
 4315: - KNOWN_BUGS: LDAP on Windows doesn't work
 4316:   
 4317:   Closes #4261
 4318: 
 4319: - docs: TLS SRP doesn't work with TLS 1.3
 4320:   
 4321:   Reported-by: sayrer on github
 4322:   Closes #4262
 4323:   [skip ci]
 4324: 
 4325: Dan Fandrich (16 Dec 2019)
 4326: - cirrus: Switch to the FreeBSD 12.1 point release & enable more tests.
 4327:   
 4328:   A few tests are now passing on FreeBSD, so no longer skip them.
 4329:   [skip ci]
 4330: 
 4331: Daniel Stenberg (16 Dec 2019)
 4332: - azure: the macos cmake doesn't need to install cmake
 4333:   
 4334:    Error: cmake 3.15.5 is already installed
 4335:    To upgrade to 3.16.1, run `brew upgrade cmake`.
 4336:   
 4337:   Closes #4723
 4338: 
 4339: Jay Satiro (15 Dec 2019)
 4340: - winbuild: Document CURL_STATICLIB requirement for static libcurl
 4341:   
 4342:   A static libcurl (ie winbuild mode=static) requires that the user define
 4343:   CURL_STATICLIB when using it in their application. This is already
 4344:   covered in the FAQ and INSTALL.md, but is a pretty important point so
 4345:   now it's noted in the BUILD.WINDOWS.txt as well.
 4346:   
 4347:   Assisted-by: Michael Vittiglio
 4348:   
 4349:   Closes https://github.com/curl/curl/pull/4721
 4350: 
 4351: Daniel Stenberg (15 Dec 2019)
 4352: - [Santino Keupp brought this change]
 4353: 
 4354:   libssh2: add support for ECDSA and ed25519 knownhost keys
 4355:   
 4356:   ... if a new enough libssh2 version is present.
 4357:   
 4358:   Source: https://curl.haxx.se/mail/archive-2019-12/0023.html
 4359:   Co-Authored-by: Daniel Stenberg
 4360:   Closes #4714
 4361: 
 4362: - lib1591: free memory properly on OOM, in the trailers callback
 4363:   
 4364:   Detected by torture tests.
 4365:   
 4366:   Closes #4720
 4367: 
 4368: - runtests: --repeat=[num] to repeat tests
 4369:   
 4370:   Closes #4715
 4371: 
 4372: - RELEASE-NOTES: synced
 4373: 
 4374: - azure: add a torture test on mac
 4375:   
 4376:   Uses --shallow=25 to keep it small enough to get through in time.
 4377:   
 4378:   Closes #4712
 4379: 
 4380: - multi: free sockhash on OOM
 4381:   
 4382:   This would otherwise leak memory in the error path.
 4383:   
 4384:   Detected by torture test 1540.
 4385:   
 4386:   Closes #4713
 4387: 
 4388: Marcel Raad (13 Dec 2019)
 4389: - tests: use DoH feature for DoH tests
 4390:   
 4391:   Previously, http/2 was used instead.
 4392:   
 4393:   Assisted-by: Jay Satiro
 4394:   Closes https://github.com/curl/curl/pull/4692
 4395: 
 4396: - hostip: suppress compiler warning
 4397:   
 4398:   With `--disable-doh --disable-threaded-resolver`, the `dns` parameter
 4399:   is not used.
 4400:   
 4401:   Closes https://github.com/curl/curl/pull/4692
 4402: 
 4403: - tests: fix build with `CURL_DISABLE_DOH`
 4404:   
 4405:   Closes https://github.com/curl/curl/pull/4692
 4406: 
 4407: Daniel Stenberg (13 Dec 2019)
 4408: - azure: add a torture test
 4409:   
 4410:   Skipping all FTP tests for speed reasons.
 4411:   
 4412:   Closes #4697
 4413: 
 4414: - azure: make the default build use --enable-debug --enable-werror
 4415: 
 4416: - ntlm_wb: fix double-free in OOM
 4417:   
 4418:   Detected by torture testing test 1310
 4419:   
 4420:   Closes #4710
 4421: 
 4422: Dan Fandrich (13 Dec 2019)
 4423: - cirrus: Drop the FreeBSD 10.4 build
 4424:   
 4425:   Upstream support for 10.4 ended a year ago, and it looks like the image
 4426:   is now gone, too.
 4427:   [skip ci]
 4428: 
 4429: Daniel Stenberg (13 Dec 2019)
 4430: - unit1620: fix bad free in OOM
 4431:   
 4432:   Closes #4709
 4433: 
 4434: - unit1609: fix mem-leak in OOM
 4435:   
 4436:   Closes #4709
 4437: 
 4438: - unit1607: fix mem-leak in OOM
 4439:   
 4440:   Closes #4709
 4441: 
 4442: - lib1559: fix mem-leak in OOM
 4443:   
 4444:   Closes #4709
 4445: 
 4446: - lib1557: fix mem-leak in OOM
 4447:   
 4448:   Closes #4709
 4449: 
 4450: - altsvc: make the save function ignore NULL filenames
 4451:   
 4452:   It might happen in OOM situations. Detected bv torture tests.
 4453:   
 4454:   Closes #4707
 4455: 
 4456: - curl: fix memory leak in OOM in etags logic
 4457:   
 4458:   Detected by torture tests
 4459:   
 4460:   Closes #4706
 4461: 
 4462: - doh: make it behave when built without proxy support
 4463:   
 4464:   Reported-by: Marcel Raad
 4465:   Bug: https://github.com/curl/curl/pull/4692#issuecomment-564115734
 4466:   
 4467:   Closes #4704
 4468: 
 4469: - curl: improved cleanup in upload error path
 4470:   
 4471:   Memory leak found by torture test 58
 4472:   
 4473:   Closes #4705
 4474: 
 4475: - mailmap: fix Andrew Ishchuk
 4476: 
 4477: - travis: make torture use --shallow=40
 4478:   
 4479:   As a first step to enable it to run over a more diverse set of tests in
 4480:   a reasonable time.
 4481: 
 4482: - runtests: introduce --shallow to reduce huge torture tests
 4483:   
 4484:   When set, shallow mode limits runtests -t to make no more than NUM fails
 4485:   per test case. If more are found, it will randomly discard entries until
 4486:   the number is right. The random seed can also be set.
 4487:   
 4488:   This is particularly useful when running MANY tests as then most torture
 4489:   failures will already fail the same functions over and over and make the
 4490:   total operation painfully tedious.
 4491:   
 4492:   Closes #4699
 4493: 
 4494: - conncache: CONNECT_ONLY connections assumed always in-use
 4495:   
 4496:   This makes them never to be considered "the oldest" to be discarded when
 4497:   reaching the connection cache limit. The reasoning here is that
 4498:   CONNECT_ONLY is primarily used in combination with using the
 4499:   connection's socket post connect and since that is used outside of
 4500:   curl's knowledge we must assume that it is in use until explicitly
 4501:   closed.
 4502:   
 4503:   Reported-by: Pavel Pavlov
 4504:   Reported-by: Pavel Löbl
 4505:   Fixes #4426
 4506:   Fixes #4369
 4507:   Closes #4696
 4508: 
 4509: - [Gisle Vanem brought this change]
 4510: 
 4511:   vtls: make BearSSL possible to set with CURL_SSL_BACKEND
 4512:   
 4513:   Ref: https://github.com/curl/curl/commit/9b879160df01e7ddbb4770904391d3b74114302b#commitcomment-36355622
 4514:   
 4515:   Closes #4698
 4516: 
 4517: - RELEASE-NOTES: synced
 4518: 
 4519: - travis: remove "coverage", make it "torture"
 4520:   
 4521:   The coveralls service and test coverage numbers are just too unreliable.
 4522:   Removed badge from README.md as well.
 4523:   
 4524:   Fixes #4694
 4525:   Closes #4695
 4526: 
 4527: - azure: add libssh2 and cmake macos builds
 4528:   
 4529:   Removed the macos libssh2 build from travis
 4530:   
 4531:   Closes #4686
 4532: 
 4533: - curl: use errorf() better
 4534:   
 4535:   Change series of error outputs to use errorf().
 4536:   
 4537:   Only errors that are due to mistakes in command line option usage should
 4538:   use helpf(), other types of errors in the tool should rather use
 4539:   errorf().
 4540:   
 4541:   Closes #4691
 4542: 
 4543: Jay Satiro (9 Dec 2019)
 4544: - [Marc Hoersken brought this change]
 4545: 
 4546:   tests: make it possible to set executable extensions
 4547:   
 4548:   This enables the use of Windows Subsystem for Linux (WSL) to run the
 4549:   testsuite against Windows binaries while using Linux servers.
 4550:   
 4551:   This commit introduces the following environment variables:
 4552:   - CURL_TEST_EXE_EXT: set the executable extension for all components
 4553:   - CURL_TEST_EXE_EXT_TOOL: set it for the curl tool only
 4554:   - CURL_TEST_EXE_EXT_SSH: set it for the SSH tools only
 4555:   
 4556:   Later testcurl.pl could be adjusted to make use of those variables.
 4557:   - CURL_TEST_EXE_EXT_SRV: set it for the test servers only
 4558:   
 4559:   (This is one of several commits to support use of WSL for the tests.)
 4560:   
 4561:   Closes https://github.com/curl/curl/pull/3899
 4562: 
 4563: - [Marc Hoersken brought this change]
 4564: 
 4565:   tests: fix permissions of ssh keys in WSL
 4566:   
 4567:   Keys created on Windows Subsystem for Linux (WSL) require it for some
 4568:   reason.
 4569:   
 4570:   (This is one of several commits to support use of WSL for the tests.)
 4571:   
 4572:   Ref: https://github.com/curl/curl/pull/3899
 4573: 
 4574: - [Marc Hoersken brought this change]
 4575: 
 4576:   tests: use \r\n for log messages in WSL
 4577:   
 4578:   Bash in Windows Subsystem for Linux (WSL) requires it for some reason.
 4579:   
 4580:   (This is one of several commits to support use of WSL for the tests.)
 4581:   
 4582:   Ref: https://github.com/curl/curl/pull/3899
 4583: 
 4584: - [Andrew Ishchuk brought this change]
 4585: 
 4586:   winbuild: Define CARES_STATICLIB when WITH_CARES=static
 4587:   
 4588:   When libcurl is built with MODE=static, c-ares is forced into static
 4589:   linkage too. That doesn't happen when MODE=dll so linker would break
 4590:   over undefined symbols.
 4591:   
 4592:   closes https://github.com/curl/curl/pull/4688
 4593: 
 4594: Daniel Stenberg (9 Dec 2019)
 4595: - conn: always set bits.close with connclose()
 4596:   
 4597:   Closes #4690
 4598: 
 4599: - cirrus: enable clang sanitizers on freebsd 13
 4600: 
 4601: - conncache: fix multi-thread use of shared connection cache
 4602:   
 4603:   It could accidentally let the connection get used by more than one
 4604:   thread, leading to double-free and more.
 4605:   
 4606:   Reported-by: Christopher Reid
 4607:   Fixes #4544
 4608:   Closes #4557
 4609: 
 4610: - azure: add a vanilla macos build
 4611:   
 4612:   Closes #4685
 4613: 
 4614: - curl: make the etag load logic work without fseek
 4615:   
 4616:   The fseek()s were unnecessary and caused Coverity warning CID 1456554
 4617:   
 4618:   Closes #4681
 4619: 
 4620: - mailmap: Mohammad Hasbini
 4621: 
 4622: - [Mohammad Hasbini brought this change]
 4623: 
 4624:   docs: fix some typos
 4625:   
 4626:   Closes #4680
 4627: 
 4628: - RELEASE-NOTES: synced
 4629: 
 4630: Jay Satiro (5 Dec 2019)
 4631: - lib: fix some loose ends for recently added CURLSSLOPT_NO_PARTIALCHAIN
 4632:   
 4633:   Add support for CURLSSLOPT_NO_PARTIALCHAIN in CURLOPT_PROXY_SSL_OPTIONS
 4634:   and OS400 package spec.
 4635:   
 4636:   Also I added the option to the NameValue list in the tool even though it
 4637:   isn't exposed as a command-line option (...yet?). (NameValue stringizes
 4638:   the option name for the curl cmd -> libcurl source generator)
 4639:   
 4640:   Follow-up to 564d88a which added CURLSSLOPT_NO_PARTIALCHAIN.
 4641:   
 4642:   Ref: https://github.com/curl/curl/pull/4655
 4643: 
 4644: - setopt: Fix ALPN / NPN user option when built without HTTP2
 4645:   
 4646:   - Stop treating lack of HTTP2 as an unknown option error result for
 4647:     CURLOPT_SSL_ENABLE_ALPN and CURLOPT_SSL_ENABLE_NPN.
 4648:   
 4649:   Prior to this change it was impossible to disable ALPN / NPN if libcurl
 4650:   was built without HTTP2. Setting either option would result in
 4651:   CURLE_UNKNOWN_OPTION and the respective internal option would not be
 4652:   set. That was incorrect since ALPN and NPN are used independent of
 4653:   HTTP2.
 4654:   
 4655:   Reported-by: Shailesh Kapse
 4656:   
 4657:   Fixes https://github.com/curl/curl/issues/4668
 4658:   Closes https://github.com/curl/curl/pull/4672
 4659: 
 4660: Daniel Stenberg (5 Dec 2019)
 4661: - etag: allow both --etag-compare and --etag-save in same cmdline
 4662:   
 4663:   Fixes #4669
 4664:   Closes #4678
 4665: 
 4666: Marcel Raad (5 Dec 2019)
 4667: - curl_setup: fix `CURLRES_IPV6` condition
 4668:   
 4669:   Move the definition of `CURLRES_IPV6` to before undefining
 4670:   `HAVE_GETADDRINFO`. Regression from commit 67a08dca27a which caused
 4671:   some tests to fail and others to be skipped with c-ares.
 4672:   
 4673:   Fixes https://github.com/curl/curl/issues/4673
 4674:   Closes https://github.com/curl/curl/pull/4677
 4675: 
 4676: Daniel Stenberg (5 Dec 2019)
 4677: - test342: make it return a 304 as the tag matches
 4678: 
 4679: Peter Wu (4 Dec 2019)
 4680: - CMake: add support for building with the NSS vtls backend
 4681:   
 4682:   Options are cross-checked with configure.ac and acinclude.m4.
 4683:   Tested on Arch Linux, untested on other platforms like Windows or macOS.
 4684:   
 4685:   Closes #4663
 4686:   Reviewed-by: Kamil Dudka
 4687: 
 4688: Daniel Stenberg (4 Dec 2019)
 4689: - azure: add more builds
 4690:   
 4691:   ... removed two from travis (that now runs on azure instead)
 4692:   
 4693:   Closes #4671
 4694: 
 4695: - CURLOPT_VERBOSE.3: see also ERRORBUFFER
 4696: 
 4697: - hostip4.c: bump copyright year range
 4698: 
 4699: Marcel Raad (3 Dec 2019)
 4700: - configure: enable IPv6 support without `getaddrinfo`
 4701:   
 4702:   This makes it possible to recognize and connect to literal IPv6
 4703:   addresses when `getaddrinfo` is not available, which is already the
 4704:   case for the CMake build. This affects e.g. classic MinGW because it
 4705:   still targets Windows 2000 by default, where `getaddrinfo` is not
 4706:   available, but general IPv6 support is.
 4707:   
 4708:   Instead of checking for `getaddrinfo`, check for `sockaddr_in6` as the
 4709:   CMake build does.
 4710:   
 4711:   Closes https://github.com/curl/curl/pull/4662
 4712: 
 4713: - curl_setup: disable IPv6 resolver without `getaddrinfo`
 4714:   
 4715:   Also, use `CURLRES_IPV6` only for actual DNS resolution, not for IPv6
 4716:   address support. This makes it possible to connect to IPv6 literals by
 4717:   setting `ENABLE_IPV6` even without `getaddrinfo` support. It also fixes
 4718:   the CMake build when using the synchronous resolver without
 4719:   `getaddrinfo` support.
 4720:   
 4721:   Closes https://github.com/curl/curl/pull/4662
 4722: 
 4723: Daniel Stenberg (3 Dec 2019)
 4724: - github action/azure pipeline: run 'make test-nonflaky' for tests
 4725:   
 4726:   To match travis and give more info on failures.
 4727: 
 4728: - openssl: CURLSSLOPT_NO_PARTIALCHAIN can disable partial cert chains
 4729:   
 4730:   Closes #4655
 4731: 
 4732: - openssl: set X509_V_FLAG_PARTIAL_CHAIN
 4733:   
 4734:   Have intermediate certificates in the trust store be treated as
 4735:   trust-anchors, in the same way as self-signed root CA certificates
 4736:   are. This allows users to verify servers using the intermediate cert
 4737:   only, instead of needing the whole chain.
 4738:   
 4739:   Other TLS backends already accept partial chains.
 4740:   
 4741:   Reported-by: Jeffrey Walton
 4742:   Bug: https://curl.haxx.se/mail/lib-2019-11/0094.html
 4743: 
 4744: - curl: show better error message when no homedir is found
 4745:   
 4746:   Reported-by: Vlastimil Ovčáčík
 4747:   Fixes #4644
 4748:   Closes #4665
 4749: 
 4750: - OPENSOCKETFUNCTION.3: correct the purpose description
 4751:   
 4752:   Reported-by: Jeff Mears
 4753:   Bug: https://curl.haxx.se/mail/lib-2019-12/0007.html
 4754:   
 4755:   Closes #4667
 4756: 
 4757: - [Peter Wu brought this change]
 4758: 
 4759:   travis: do not use OVERRIDE_CC or OVERRIDE_CXX if empty
 4760:   
 4761:   Fixes the macOS builds where OVERRIDE_CC and OVERRIDE_CXX are not set.
 4762:   
 4763:   Reported-by: Jay Satiro
 4764:   Fixes #4659
 4765:   Closes #4661
 4766:   Closes #4664
 4767: 
 4768: - azure-pipelines: fix the test script
 4769: 
 4770: - Azure Pipelines: initial CI setup
 4771:   
 4772:   [skip ci]
 4773: 
 4774: - docs: add "added: 7.68.0" to the --etag-* docs
 4775: 
 4776: - copyright: fix the year ranges for two files
 4777:   
 4778:   Follow-up to 9c1806ae
 4779: 
 4780: Jay Satiro (1 Dec 2019)
 4781: - build: Disable Visual Studio warning "conditional expression is constant"
 4782:   
 4783:   - Disable warning C4127 "conditional expression is constant" globally
 4784:     in curl_setup.h for when building with Microsoft's compiler.
 4785:   
 4786:   This mainly affects building with the Visual Studio project files found
 4787:   in the projects dir.
 4788:   
 4789:   Prior to this change the cmake and winbuild build systems already
 4790:   disabled 4127 globally for when building with Microsoft's compiler.
 4791:   Also, 4127 was already disabled for all build systems in the limited
 4792:   circumstance of the WHILE_FALSE macro which disabled the warning
 4793:   specifically for while(0). This commit removes the WHILE_FALSE macro and
 4794:   all other cruft in favor of disabling globally in curl_setup.
 4795:   
 4796:   Background:
 4797:   
 4798:   We have various macros that cause 0 or 1 to be evaluated, which would
 4799:   cause warning C4127 in Visual Studio. For example this causes it:
 4800:   
 4801:       #define Curl_resolver_asynch() 1
 4802:   
 4803:   Full behavior is not clearly defined and inconsistent across versions.
 4804:   However it is documented that since VS 2015 Update 3 Microsoft has
 4805:   addressed this somewhat but not entirely, not warning on while(true) for
 4806:   example.
 4807:   
 4808:   Prior to this change some C4127 warnings occurred when I built with
 4809:   Visual Studio using the generated projects in the projects dir.
 4810:   
 4811:   Closes https://github.com/curl/curl/pull/4658
 4812: 
 4813: - openssl: retrieve reported LibreSSL version at runtime
 4814:   
 4815:   - Retrieve LibreSSL runtime version when supported (>= 2.7.1).
 4816:   
 4817:   For earlier versions we continue to use the compile-time version.
 4818:   
 4819:   Ref: https://man.openbsd.org/OPENSSL_VERSION_NUMBER.3
 4820:   
 4821:   Closes https://github.com/curl/curl/pull/2425
 4822: 
 4823: - strerror: Add Curl_winapi_strerror for Win API specific errors
 4824:   
 4825:   - In all code call Curl_winapi_strerror instead of Curl_strerror when
 4826:     the error code is known to be from Windows GetLastError.
 4827:   
 4828:   Curl_strerror prefers CRT error codes (errno) over Windows API error
 4829:   codes (GetLastError) when the two overlap. When we know the error code
 4830:   is from GetLastError it is more accurate to prefer the Windows API error
 4831:   messages.
 4832:   
 4833:   Reported-by: Richard Alcock
 4834:   
 4835:   Fixes https://github.com/curl/curl/issues/4550
 4836:   Closes https://github.com/curl/curl/pull/4581
 4837: 
 4838: Daniel Stenberg (2 Dec 2019)
 4839: - global_init: undo the "intialized" bump in case of failure
 4840:   
 4841:   ... so that failures in the global init function don't count as a
 4842:   working init and it can then be called again.
 4843:   
 4844:   Reported-by: Paul Groke
 4845:   Fixes #4636
 4846:   Closes #4653
 4847: 
 4848: - parsedate: offer a getdate_capped() alternative
 4849:   
 4850:   ... and use internally. This function will return TIME_T_MAX instead of
 4851:   failure if the parsed data is found to be larger than what can be
 4852:   represented. TIME_T_MAX being the largest value curl can represent.
 4853:   
 4854:   Reviewed-by: Daniel Gustafsson
 4855:   Reported-by: JanB on github
 4856:   Fixes #4152
 4857:   Closes #4651
 4858: 
 4859: - docs: add more references to curl_multi_poll
 4860:   
 4861:   Fixes #4643
 4862:   Closes #4652
 4863: 
 4864: - sha256: bump the copyright year range
 4865:   
 4866:   Follow-up from 66e21520f
 4867: 
 4868: Daniel Gustafsson (28 Nov 2019)
 4869: - curl_setup_once: consistently use WHILE_FALSE in macros
 4870:   
 4871:   The WHILE_FALSE construction is used to avoid compiler warnings in
 4872:   macro constructions. This fixes a few instances where it was not
 4873:   used in order to keep the code consistent.
 4874:   
 4875:   Closes #4649
 4876:   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
 4877: 
 4878: Daniel Stenberg (28 Nov 2019)
 4879: - [Steve Holme brought this change]
 4880: 
 4881:   http_ntlm: Remove duplicate NSS initialisation
 4882:   
 4883:   Given that this is performed by the NTLM code there is no need to
 4884:   perform the initialisation in the HTTP layer. This also keeps the
 4885:   initialisation the same as the SASL based protocols and also fixes a
 4886:   possible compilation issue if both NSS and SSPI were to be used as
 4887:   multiple SSL backends.
 4888:   
 4889:   Reviewed-by: Kamil Dudka
 4890:   Closes #3935
 4891: 
 4892: Daniel Gustafsson (28 Nov 2019)
 4893: - checksrc: fix regexp for ASSIGNWITHINCONDITION
 4894:   
 4895:   The regexp looking for assignments within conditions was too greedy
 4896:   and matched a too long string in the case of multiple conditionals
 4897:   on the same line. This is basically only a problem in single line
 4898:   macros, and the code which exemplified this was essentially:
 4899:   
 4900:     do { if((x) != NULL) { x = NULL; } } while(0)
 4901:   
 4902:   ..where the final parenthesis of while(0) matched the regexp, and
 4903:   the legal assignment in the block triggered the warning. Fix by
 4904:   making the regexp less greedy by matching for the tell-tale signs
 4905:   of the if statement ending.
 4906:   
 4907:   Also remove the one occurrence where the warning was disabled due
 4908:   to a construction like the above, where the warning didn't apply
 4909:   when fixed.
 4910:   
 4911:   Closes #4647
 4912:   Reviewed-by: Daniel Stenberg <daniel@haxx.se>
 4913: 
 4914: Daniel Stenberg (28 Nov 2019)
 4915: - RELEASE-NOTES: synced
 4916: 
 4917: - [Maros Priputen brought this change]
 4918: 
 4919:   curl: two new command line options for etags
 4920:   
 4921:   --etag-compare and --etag-save
 4922:   
 4923:   Suggested-by: Paul Hoffman
 4924:   Fixes #4277
 4925:   Closes #4543
 4926: 
 4927: Daniel Gustafsson (28 Nov 2019)
 4928: - docs: fix typos
 4929: 
 4930: Daniel Stenberg (28 Nov 2019)
 4931: - mailmap: Niall O'Reilly's name
 4932: 
 4933: - [Niall O'Reilly brought this change]
 4934: 
 4935:   doh: use dedicated probe slots
 4936:   
 4937:   ... to easier allow additional DNS transactions.
 4938:   
 4939:   Closes #4629
 4940: 
 4941: - travis: build ngtcp2 with --enable-lib-only
 4942:   
 4943:   ... makes it skip the examples and other stuff we don't neeed.
 4944:   
 4945:   Closes #4646
 4946: 
 4947: - [David Benjamin brought this change]
 4948: 
 4949:   ngtcp2: fix thread-safety bug in error-handling
 4950:   
 4951:   ERR_error_string(NULL) should never be called. It places the error in a
 4952:   global buffer, which is not thread-safe. Use ERR_error_string_n with a
 4953:   local buffer instead.
 4954:   
 4955:   Closes #4645
 4956: 
 4957: - travis: export the CC/CXX variables when set
 4958:   
 4959:   Suggested-by: Peter Wu
 4960:   Fixes #4637
 4961:   Closes #4640
 4962: 
 4963: Marcel Raad (26 Nov 2019)
 4964: - dist: add error-codes.pl
 4965:   
 4966:   Follow-up to commit 74f441c6d31.
 4967:   This should fix test 1175 when run via the daily source tarballs.
 4968:   
 4969:   Closes https://github.com/curl/curl/pull/4638
 4970: 
 4971: Daniel Stenberg (26 Nov 2019)
 4972: - [John Schroeder brought this change]
 4973: 
 4974:   curl: fix --upload-file . hangs if delay in STDIN
 4975:   
 4976:   Attempt to unpause a busy read in the CURLOPT_XFERINFOFUNCTION.
 4977:   
 4978:   When uploading from stdin in non-blocking mode, a delay in reading
 4979:   the stream (EAGAIN) causes curl to pause sending data
 4980:   (CURL_READFUNC_PAUSE).  Prior to this change, a busy read was
 4981:   detected and unpaused only in the CURLOPT_WRITEFUNCTION handler.
 4982:   This change performs the same busy read handling in a
 4983:   CURLOPT_XFERINFOFUNCTION handler.
 4984:   
 4985:   Fixes #2051
 4986:   Closes #4599
 4987:   Reported-by: bdry on github
 4988: 
 4989: - [John Schroeder brought this change]
 4990: 
 4991:   XFERINFOFUNCTION: support CURL_PROGRESSFUNC_CONTINUE
 4992:   
 4993:   (also for PROGRESSFUNCTION)
 4994:   
 4995:   By returning this value from the callback, the internal progress
 4996:   function call is still called afterward.
 4997:   
 4998:   Closes #4599
 4999: 
 5000: - [Michael Forney brought this change]
 5001: 
 5002:   TLS: add BearSSL vtls implementation
 5003:   
 5004:   Closes #4597
 5005: 
 5006: - curl_multi_wakeup.3: add example and AVAILABILITY
 5007:   
 5008:   Reviewed-by: Gergely Nagy
 5009:   Closes #4635
 5010: 
 5011: - [Gergely Nagy brought this change]
 5012: 
 5013:   multi: add curl_multi_wakeup()
 5014:   
 5015:   This commit adds curl_multi_wakeup() which was previously in the TODO
 5016:   list under the curl_multi_unblock name.
 5017:   
 5018:   On some platforms and with some configurations this feature might not be
 5019:   available or can fail, in these cases a new error code
 5020:   (CURLM_WAKEUP_FAILURE) is returned from curl_multi_wakeup().
 5021:   
 5022:   Fixes #4418
 5023:   Closes #4608
 5024: 
 5025: Jay Satiro (24 Nov 2019)
 5026: - [Xiaoyin Liu brought this change]
 5027: 
 5028:   schannel: fix --tls-max for when min is --tlsv1 or default
 5029:   
 5030:   Prior to this change schannel ignored --tls-max (CURL_SSLVERSION_MAX_
 5031:   macros) when --tlsv1 (CURL_SSLVERSION_TLSv1) or default TLS
 5032:   (CURL_SSLVERSION_DEFAULT), using a max of TLS 1.2 always.
 5033:   
 5034:   Closes https://github.com/curl/curl/pull/4633
 5035: 
 5036: - checksrc.bat: Add a check for vquic and vssh directories
 5037:   
 5038:   Ref: https://github.com/curl/curl/pull/4607
 5039: 
 5040: - projects: Fix Visual Studio projects SSH builds
 5041:   
 5042:   - Generate VQUIC and VSSH filenames in Visual Studio project files.
 5043:   
 5044:   Prior to this change generated Visual Studio project configurations that
 5045:   enabled SSH did not build properly. Broken since SSH files were moved to
 5046:   lib/vssh 3 months ago in 5b2d703.
 5047:   
 5048:   Fixes https://github.com/curl/curl/issues/4492
 5049:   Fixes https://github.com/curl/curl/issues/4630
 5050:   Closes https://github.com/curl/curl/pull/4607
 5051: 
 5052: Daniel Stenberg (23 Nov 2019)
 5053: - RELEASE-NOTES: synced
 5054: 
 5055: Jay Satiro (22 Nov 2019)
 5056: - openssl: Revert to less sensitivity for SYSCALL errors
 5057:   
 5058:   - Disable the extra sensitivity except in debug builds (--enable-debug).
 5059:   
 5060:   - Improve SYSCALL error message logic in ossl_send and ossl_recv so that
 5061:     "No error" / "Success" socket error text isn't shown on SYSCALL error.
 5062:   
 5063:   Prior to this change 0ab38f5 (precedes 7.67.0) increased the sensitivity
 5064:   of OpenSSL's SSL_ERROR_SYSCALL error so that abrupt server closures were
 5065:   also considered errors. For example, a server that does not send a known
 5066:   protocol termination point (eg HTTP content length or chunked encoding)
 5067:   _and_ does not send a TLS termination point (close_notify alert) would
 5068:   cause an error if it closed the connection.
 5069:   
 5070:   To be clear that behavior made it into release build 7.67.0
 5071:   unintentionally. Several users have reported it as an issue.
 5072:   
 5073:   Ultimately the idea is a good one, since it can help prevent against a
 5074:   truncation attack. Other SSL backends may already behave similarly (such
 5075:   as Windows native OS SSL Schannel). However much more of our user base
 5076:   is using OpenSSL and there is a mass of legacy users in that space, so I
 5077:   think that behavior should be partially reverted and then rolled out
 5078:   slowly.
 5079:   
 5080:   This commit changes the behavior so that the increased sensitivity is
 5081:   disabled in all curl builds except curl debug builds (DEBUGBUILD). If
 5082:   after a period of time there are no major issues then it can be enabled
 5083:   in dev and release builds with the newest OpenSSL (1.1.1+), since users
 5084:   using the newest OpenSSL are the least likely to have legacy problems.
 5085:   
 5086:   Bug: https://github.com/curl/curl/issues/4409#issuecomment-555955794
 5087:   Reported-by: Bjoern Franke
 5088:   
 5089:   Fixes https://github.com/curl/curl/issues/4624
 5090:   Closes https://github.com/curl/curl/pull/4623
 5091: 
 5092: - [Daniel Stenberg brought this change]
 5093: 
 5094:   openssl: improve error message for SYSCALL during connect
 5095:   
 5096:   Reported-by: Paulo Roberto Tomasi
 5097:   Bug: https://curl.haxx.se/mail/archive-2019-11/0005.html
 5098:   
 5099:   Closes https://github.com/curl/curl/pull/4593
 5100: 
 5101: Daniel Stenberg (22 Nov 2019)
 5102: - test1175: verify symbols-in-versions and libcurl-errors.3 in sync
 5103:   
 5104:   Closes #4628
 5105: 
 5106: - include: make CURLE_HTTP3 use a new error code
 5107:   
 5108:   To avoid potential issues with error code reuse.
 5109:   
 5110:   Reported-by: Christoph M. Becker
 5111:   Assisted-by: Dan Fandrich
 5112:   Fixes #4601
 5113:   Closes #4627
 5114: 
 5115: - bump: next release will be 7.68.0
 5116: 
 5117: - curl: add --parallel-immediate
 5118:   
 5119:   Starting with this change when doing parallel transfers, without this
 5120:   option set, curl will prefer to create new transfers multiplexed on an
 5121:   existing connection rather than creating a brand new one.
 5122:   
 5123:   --parallel-immediate can be set to tell curl to prefer to use new
 5124:   connections rather than to wait and try to multiplex.
 5125:   
 5126:   libcurl-wise, this means that curl will set CURLOPT_PIPEWAIT by default
 5127:   on parallel transfers.
 5128:   
 5129:   Suggested-by: Tom van der Woerdt
 5130:   Closes #4500
 5131: 
 5132: Daniel Gustafsson (20 Nov 2019)
 5133: - [Victor Magierski brought this change]
 5134: 
 5135:   docs: fix typos
 5136:   
 5137:   Change 'experiemental' to 'experimental'.
 5138:   
 5139:   Closes #4618
 5140:   Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
 5141: 
 5142: Jay Satiro (18 Nov 2019)
 5143: - projects: Fix Visual Studio wolfSSL configurations
 5144:   
 5145:   - s/USE_CYASSL/USE_WOLFSSL/
 5146:   
 5147:   - Remove old compatibility macros.
 5148:   
 5149:   Follow-up to 1c6c59a from several months ago when CyaSSL named symbols
 5150:   were renamed to wolfSSL. The wolfSSL library was formerly named CyaSSL
 5151:   and we kept using their old name for compatibility reasons, until
 5152:   earlier this year.
 5153: 
 5154: Daniel Stenberg (18 Nov 2019)
 5155: - RELEASE-NOTES: synced
 5156: 
 5157: - [Javier Blazquez brought this change]
 5158: 
 5159:   ngtcp2: use overflow buffer for extra HTTP/3 data
 5160:   
 5161:   Fixes #4525
 5162:   Closes #4603
 5163: 
 5164: - altsvc: bump to h3-24
 5165:   
 5166:   ... as both ngtcp2 and quiche now support that in their master branches
 5167:   
 5168:   Closes #4604
 5169: 
 5170: - ngtcp2: free used resources on disconnect
 5171:   
 5172:   Fixes #4614
 5173:   Closes #4615
 5174: 
 5175: - ngtcp2: handle key updates as ngtcp2 master branch tells us
 5176:   
 5177:   Reviewed-by: Tatsuhiro Tsujikawa
 5178:   
 5179:   Fixes #4612
 5180:   Closes #4613
 5181: 
 5182: Jay Satiro (17 Nov 2019)
 5183: - [Gergely Nagy brought this change]
 5184: 
 5185:   multi: Fix curl_multi_poll wait when extra_fds && !extra_nfds
 5186:   
 5187:   Prior to this change:
 5188:   
 5189:   The check if an extra wait is necessary was based not on the
 5190:   number of extra fds but on the pointer.
 5191:   
 5192:   If a non-null pointer was given in extra_fds, but extra_nfds
 5193:   was zero, then the wait was skipped even though poll was not
 5194:   called.
 5195:   
 5196:   Closes https://github.com/curl/curl/pull/4610
 5197: 
 5198: - lib: Move lib/ssh.h -> lib/vssh/ssh.h
 5199:   
 5200:   Follow-up to 5b2d703 which moved ssh source files to vssh.
 5201:   
 5202:   Closes https://github.com/curl/curl/pull/4609
 5203: 
 5204: Daniel Stenberg (16 Nov 2019)
 5205: - [Andreas Falkenhahn brought this change]
 5206: 
 5207:   INSTALL.md: provide Android build instructions
 5208:   
 5209:   Closes #4606
 5210: 
 5211: - [Niall O'Reilly brought this change]
 5212: 
 5213:   doh: improced both encoding and decoding
 5214:   
 5215:   Improved estimation of expected_len and updated related comments;
 5216:   increased strictness of QNAME-encoding, adding error detection for empty
 5217:   labels and names longer than the overall limit; avoided treating DNAME
 5218:   as unexpected;
 5219:   
 5220:   updated unit test 1655 with more thorough set of proofs and tests
 5221:   
 5222:   Closes #4598
 5223: 
 5224: - ngtcp2: increase QUIC window size when data is consumed
 5225:   
 5226:   Assisted-by: Javier Blazquez
 5227:   Ref #4525 (partial fix)
 5228:   Closes #4600
 5229: 
 5230: - [Melissa Mears brought this change]
 5231: 
 5232:   config-win32: cpu-machine-OS for Windows on ARM
 5233:   
 5234:   Define the OS macro properly for Windows on ARM builds.  Also, we might
 5235:   as well add the GCC-style IA-64 macro.
 5236:   
 5237:   Closes #4590
 5238: 
 5239: - examples: add multi-poll.c
 5240:   
 5241:   Show how curl_multi_poll() makes it even easier to use the multi
 5242:   interface.
 5243:   
 5244:   Closes #4596
 5245: 
 5246: - multi_poll: avoid busy-loop when called without easy handles attached
 5247:   
 5248:   Fixes #4594
 5249:   Closes #4595
 5250:   Reported-by: 3dyd on github
 5251: 
 5252: - curl: fix -T globbing
 5253:   
 5254:   Regression from e59371a4936f8 (7.67.0)
 5255:   
 5256:   Added test 490, 491 and 492 to verify the functionality.
 5257:   
 5258:   Reported-by: Kamil Dudka
 5259:   Reported-by: Anderson Sasaki
 5260:   
 5261:   Fixes #4588
 5262:   Closes #4591
 5263: 
 5264: - HISTORY: added cmake, HTTP/3 and parallel downloads with curl
 5265: 
 5266: - quiche: reject headers in the wrong order
 5267:   
 5268:   Pseudo header MUST come before regular headers or cause an error.
 5269:   
 5270:   Reported-by: Cynthia Coan
 5271:   Fixes #4571
 5272:   Closes #4584
 5273: 
 5274: - openssl: prevent recursive function calls from ctx callbacks
 5275:   
 5276:   Follow the pattern of many other callbacks.
 5277:   
 5278:   Ref: #4546
 5279:   Closes #4585
 5280: 
 5281: - CURL-DISABLE: initial docs for the CURL_DISABLE_* defines
 5282:   
 5283:   The disable-scan script used in test 1165 is extended to also verify
 5284:   that the docs cover all used defines and all defines offered by
 5285:   configure.
 5286:   
 5287:   Reported-by: SLDiggie on github
 5288:   Fixes #4545
 5289:   Closes #4587
 5290: 
 5291: - remove_handle: clear expire timers after multi_done()
 5292:   
 5293:   Since 59041f0, a new timer might be set in multi_done() so the clearing
 5294:   of the timers need to happen afterwards!
 5295:   
 5296:   Reported-by: Max Kellermann
 5297:   Fixes #4575
 5298:   Closes #4583
 5299: 
 5300: Marcel Raad (10 Nov 2019)
 5301: - test1558: use double slash after file:
 5302:   
 5303:   Classic MinGW / MSYS 1 doesn't support `MSYS2_ARG_CONV_EXCL`, so this
 5304:   test unnecessarily failed when using `file:/` instead of `file:///`.
 5305:   
 5306:   Closes https://github.com/curl/curl/pull/4554
 5307: 
 5308: Daniel Stenberg (10 Nov 2019)
 5309: - pause: avoid updating socket if done was already called
 5310:   
 5311:   ... avoids unnecesary recursive risk when the transfer is already done.
 5312:   
 5313:   Reported-by: Richard Bowker
 5314:   Fixes #4563
 5315:   Closes #4574
 5316: 
 5317: Jay Satiro (9 Nov 2019)
 5318: - strerror: Fix an error looking up some Windows error strings
 5319:   
 5320:   - Use FORMAT_MESSAGE_IGNORE_INSERTS to ignore format specifiers in
 5321:     Windows error strings.
 5322:   
 5323:   Since we are not in control of the error code we don't know what
 5324:   information may be needed by the error string's format specifiers.
 5325:   
 5326:   Prior to this change Windows API error strings which contain specifiers
 5327:   (think specifiers like similar to printf specifiers) would not be shown.
 5328:   The FormatMessage Windows API call which turns a Windows error code into
 5329:   a string could fail and set error ERROR_INVALID_PARAMETER if that error
 5330:   string contained a format specifier. FormatMessage expects a va_list for
 5331:   the specifiers, unless inserts are ignored in which case no substitution
 5332:   is attempted.
 5333:   
 5334:   Ref: https://devblogs.microsoft.com/oldnewthing/20071128-00/?p=24353
 5335: 
 5336: - [r-a-sattarov brought this change]
 5337: 
 5338:   system.h: fix for MCST lcc compiler
 5339:   
 5340:   Fixed build by MCST lcc compiler on MCST Elbrus 2000 architecture and do
 5341:   some code cleanup.
 5342:   
 5343:   e2k (Elbrus 2000) - this is VLIW/EPIC architecture, like Intel Itanium
 5344:   architecture.
 5345:   
 5346:   Ref: https://en.wikipedia.org/wiki/Elbrus_2000
 5347:   
 5348:   Closes https://github.com/curl/curl/pull/4576
 5349: 
 5350: Daniel Stenberg (8 Nov 2019)
 5351: - TODO: curl_multi_unblock
 5352:   
 5353:   Closes #4418
 5354: 
 5355: - TODO: Run web-platform-tests url tests
 5356:   
 5357:   Closes #4477
 5358: 
 5359: - TODO: 1.4 alt-svc sharing
 5360:   
 5361:   Closes #4476
 5362: 
 5363: - test1560: require IPv6 for IPv6 aware URL parsing
 5364:   
 5365:   The URL parser function can't reject a bad IPv6 address properly when
 5366:   curl was built without IPv6 support.
 5367:   
 5368:   Reported-by: Marcel Raad
 5369:   Fixes #4556
 5370:   Closes #4572
 5371: 
 5372: - checksrc: repair the copyrightyear check
 5373:   
 5374:   - Consider a modified file to be committed this year.
 5375:   
 5376:   - Make the travis CHECKSRC also do COPYRIGHTYEAR scan in examples and
 5377:     includes
 5378:   
 5379:   - Ignore 0 parents when getting latest commit date of file.
 5380:   
 5381:   since in the CI we're dealing with a truncated repo of last 50 commits,
 5382:   the file's most recent commit may not be available. when this happens
 5383:   git log and rev-list show the initial commit (ie first commit not to be
 5384:   truncated) but that's incorrect so ignore it.
 5385:   
 5386:   Ref: https://github.com/curl/curl/pull/4547
 5387:   
 5388:   Closes https://github.com/curl/curl/pull/4549
 5389:   
 5390:   Co-authored-by: Jay Satiro
 5391: 
 5392: - copyrights: fix copyright year range
 5393:   
 5394:   .. because checksrc's copyright year check stopped working.
 5395:   
 5396:   Ref: https://github.com/curl/curl/pull/4547
 5397:   
 5398:   Closes https://github.com/curl/curl/pull/4549
 5399: 
 5400: - RELEASE-NOTES: synced
 5401: 
 5402: - curlver: bump to 7.67.1
 5403: 
 5404: - mailmap: fixup Massimiliano Fantuzzi
 5405: 
 5406: - scripts/contributors: make committers get included too
 5407:   
 5408:   in addition to authors
 5409: 
 5410: Jay Satiro (8 Nov 2019)
 5411: - [Massimiliano Fantuzzi brought this change]
 5412: 
 5413:   configure: fix typo in help text
 5414:   
 5415:   Closes https://github.com/curl/curl/pull/4570
 5416: 
 5417: Daniel Stenberg (7 Nov 2019)
 5418: - [Christian Schmitz brought this change]
 5419: 
 5420:   ntlm: USE_WIN32_CRYPTO check removed to get USE_NTLM2SESSION set
 5421:   
 5422:   Closes #3704
 5423: 
 5424: Jay Satiro (6 Nov 2019)
 5425: - [Wyatt O'Day brought this change]
 5426: 
 5427:   build: fix for CURL_DISABLE_DOH
 5428:   
 5429:   Fixes https://github.com/curl/curl/issues/4565
 5430:   Closes https://github.com/curl/curl/pull/4566
 5431: 
 5432: - [Leonardo Taccari brought this change]
 5433: 
 5434:   configure: avoid unportable `==' test(1) operator
 5435:   
 5436:   Closes https://github.com/curl/curl/pull/4567
 5437: 
 5438: Version 7.67.0 (5 Nov 2019)
 5439: 
 5440: Daniel Stenberg (5 Nov 2019)
 5441: - RELEASE-NOTES: synced
 5442:   
 5443:   The 7.67.0 release
 5444: 
 5445: - THANKS: add new names from 7.67.0
 5446: 
 5447: - configure: only say ipv6 enabled when the variable is set
 5448:   
 5449:   Previously it could say "IPv6: enabled" at the end of the configure run
 5450:   but the define wasn't set because of a missing getaddrinfo().
 5451:   
 5452:   Reported-by: Marcel Raad
 5453:   Fixes #4555
 5454:   Closes #4560
 5455: 
 5456: Marcel Raad (2 Nov 2019)
 5457: - certs/Server-localhost-lastSAN-sv: regenerate with sha256
 5458:   
 5459:   All other certificates were regenerated in commit ba782baac30, but
 5460:   this one was missed.
 5461:   Fixes test3001 on modern systems.
 5462:   
 5463:   Closes https://github.com/curl/curl/pull/4551
 5464: 
 5465: Daniel Stenberg (2 Nov 2019)
 5466: - [Vilhelm Prytz brought this change]
 5467: 
 5468:   copyrights: update all copyright notices to 2019 on files changed this year
 5469:   
 5470:   Closes #4547
 5471: 
 5472: - [Bastien Bouclet brought this change]
 5473: 
 5474:   mbedtls: add error message for cert validity starting in the future
 5475:   
 5476:   Closes #4552
 5477: 
 5478: Jay Satiro (1 Nov 2019)
 5479: - schannel_verify: Fix concurrent openings of CA file
 5480:   
 5481:   - Open the CA file using FILE_SHARE_READ mode so that others can read
 5482:     from it as well.
 5483:   
 5484:   Prior to this change our schannel code opened the CA file without
 5485:   sharing which meant concurrent openings (eg an attempt from another
 5486:   thread or process) would fail during the time it was open without
 5487:   sharing, which in curl's case would cause error:
 5488:   "schannel: failed to open CA file".
 5489:   
 5490:   Bug: https://curl.haxx.se/mail/lib-2019-10/0104.html
 5491:   Reported-by: Richard Alcock
 5492: 
 5493: Daniel Stenberg (31 Oct 2019)
 5494: - gtls: make gnutls_bye() not wait for response on shutdown
 5495:   
 5496:   ... as it can make it wait there for a long time for no good purpose.
 5497:   
 5498:   Patched-by: Jay Satiro
 5499:   Reported-by: Bylon2 on github
 5500:   Adviced-by: Nikos Mavrogiannopoulos
 5501:   
 5502:   Fixes #4487
 5503:   Closes #4541
 5504: 
 5505: - [Michał Janiszewski brought this change]
 5506: 
 5507:   appveyor: publish artifacts on appveyor
 5508:   
 5509:   This allows obtaining upstream builds of curl directly from appveyor for
 5510:   all the available configurations
 5511:   
 5512:   Closes #4509
 5513: 
 5514: - url: make Curl_close() NULLify the pointer too
 5515:   
 5516:   This is the common pattern used in the code and by a unified approach we
 5517:   avoid mistakes.
 5518:   
 5519:   Closes #4534
 5520: 
 5521: - [Trivikram Kamat brought this change]
 5522: 
 5523:   INSTALL: add missing space for configure commands
 5524:   
 5525:   Closes #4539
 5526: 
 5527: - url: Curl_free_request_state() should also free doh handles
 5528:   
 5529:   ... or risk DoH memory leaks.
 5530:   
 5531:   Reported-by: Paul Dreik
 5532:   Fixes #4463
 5533:   Closes #4527
 5534: 
 5535: - examples: remove the "this exact code has not been verified"
 5536:   
 5537:   ... as really confuses the reader to not know what to believe!
 5538: 
 5539: - [Trivikram Kamat brought this change]
 5540: 
 5541:   HTTP3: fix typo somehere1 > somewhere1
 5542:   
 5543:   Closes #4535
 5544: 
 5545: Jay Satiro (28 Oct 2019)
 5546: - [Javier Blazquez brought this change]
 5547: 
 5548:   HTTP3: fix invalid use of sendto for connected UDP socket
 5549:   
 5550:   On macOS/BSD, trying to call sendto on a connected UDP socket fails
 5551:   with a EISCONN error. Because the singleipconnect has already called
 5552:   connect on the socket when we're trying to use it for QUIC transfers
 5553:   we need to use plain send instead.
 5554:   
 5555:   Fixes #4529
 5556:   Closes https://github.com/curl/curl/pull/4533
 5557: 
 5558: Daniel Stenberg (28 Oct 2019)
 5559: - RELEASE-NOTES: synced
 5560: 
 5561: - [Javier Blazquez brought this change]
 5562: 
 5563:   HTTP3: fix Windows build
 5564:   
 5565:   The ngtcp2 QUIC backend was using the MSG_DONTWAIT flag for send/recv
 5566:   in order to perform nonblocking operations. On Windows this flag does
 5567:   not exist. Instead, the socket must be set to nonblocking mode via
 5568:   ioctlsocket.
 5569:   
 5570:   This change sets the nonblocking flag on UDP sockets used for QUIC on
 5571:   all platforms so the use of MSG_DONTWAIT is not needed.
 5572:   
 5573:   Fixes #4531
 5574:   Closes #4532
 5575: 
 5576: Marcel Raad (27 Oct 2019)
 5577: - appveyor: add --disable-proxy autotools build
 5578:   
 5579:   This would have caught issue #3926.
 5580:   
 5581:   Also make formatting more consistent.
 5582:   
 5583:   Closes https://github.com/curl/curl/pull/4526
 5584: 
 5585: Daniel Stenberg (25 Oct 2019)
 5586: - appveyor: make winbuilds with DEBUG=no/yes and VS 2015/2017
 5587:   
 5588:   ... and invoke "curl -V" once done
 5589:   
 5590:   Co-Authored-By: Jay Satiro
 5591:   
 5592:   Closes #4523
 5593: 
 5594: - [Francois Rivard brought this change]
 5595: 
 5596:   schannel: reverse the order of certinfo insertions
 5597:   
 5598:   Fixes #4518
 5599:   Closes #4519
 5600: 
 5601: Marcel Raad (24 Oct 2019)
 5602: - test1591: fix spelling of http feature
 5603:   
 5604:   The test never got run because the feature name is `http` in lowercase.
 5605:   
 5606:   Closes https://github.com/curl/curl/pull/4520
 5607: 
 5608: Daniel Stenberg (23 Oct 2019)
 5609: - [Michał Janiszewski brought this change]
 5610: 
 5611:   appveyor: Use two parallel compilation on appveyor with CMake
 5612:   
 5613:   Appveyor provides 2 CPUs for each builder[1], make sure to use parallel
 5614:   compilation, when running with CMake. CMake learned this new option in
 5615:   version 3.12[2] and the version provided by appveyor is fresh enough.
 5616:   
 5617:   Curl doesn't really take that long to build and it is using the slowest
 5618:   builder available, msbuild, so expect only a moderate improvement in
 5619:   build times.
 5620:   
 5621:   [1] https://www.appveyor.com/docs/build-environment/
 5622:   [2] https://cmake.org/cmake/help/v3.12/release/3.12.html
 5623:   
 5624:   Closes #4508
 5625: 
 5626: - conn-reuse: requests wanting NTLM can reuse non-NTLM connections
 5627:   
 5628:   Added test case 338 to verify.
 5629:   
 5630:   Reported-by: Daniel Silverstone
 5631:   Fixes #4499
 5632:   Closes #4514
 5633: 
 5634: Marcel Raad (23 Oct 2019)
 5635: - tests: add missing proxy features
 5636: 
 5637: Daniel Stenberg (22 Oct 2019)
 5638: - RELEASE-NOTES: synced
 5639: 
 5640: Marcel Raad (21 Oct 2019)
 5641: - tests: use %FILE_PWD for file:// URLs
 5642:   
 5643:   This way, we always have exactly one slash after the host name, making
 5644:   the tests pass when curl is compiled with the MSYS GCC.
 5645:   
 5646:   Closes https://github.com/curl/curl/pull/4512
 5647: 
 5648: - tests: add `connect to non-listen` keywords
 5649:   
 5650:   These tests try to connect to ports nothing is listening on.
 5651:   
 5652:   Closes https://github.com/curl/curl/pull/4511
 5653: 
 5654: - runtests: get textaware info from curl instead of perl
 5655:   
 5656:   The MSYS system on Windows can run the test suite for curl built with
 5657:   any toolset. When built with the MSYS GCC, curl uses Unix line endings,
 5658:   while it uses Windows line endings when built with the MinGW GCC, and
 5659:   `^O` reports 'msys' in both cases. Use the curl executable itself to
 5660:   determine the line endings instead, which reports 'x86_64-pc-msys' when
 5661:   built with the MSYS GCC.
 5662:   
 5663:   Closes https://github.com/curl/curl/pull/4506
 5664: 
 5665: Daniel Stenberg (20 Oct 2019)
 5666: - [Michał Janiszewski brought this change]
 5667: 
 5668:   appveyor: Add MSVC ARM64 build
 5669:   
 5670:   Closes #4507
 5671: 
 5672: - http2_recv: a closed stream trumps pause state
 5673:   
 5674:   ... and thus should return 0, not EAGAIN.
 5675:   
 5676:   Reported-by: Tom van der Woerdt
 5677:   Fixes #4496
 5678:   Closes #4505
 5679: 
 5680: - http2: expire a timeout at end of stream
 5681:   
 5682:   To make sure that transfer is being dealt with. Streams without
 5683:   Content-Length need a final read to notice the end-of-stream state.
 5684:   
 5685:   Reported-by: Tom van der Woerdt
 5686:   Fixes #4496
 5687: 
 5688: Dan Fandrich (18 Oct 2019)
 5689: - travis: Add an ARM64 build
 5690:   
 5691:   Test 323 is failing for some reason, so disable it there for now.
 5692: 
 5693: Marcel Raad (18 Oct 2019)
 5694: - examples/sslbackend: fix -Wchar-subscripts warning
 5695:   
 5696:   With the `isdigit` implementation that comes with MSYS2, the argument
 5697:   is used as an array subscript, resulting in a -Wchar-subscripts
 5698:   warning. `isdigit`'s behavior is undefined if the argument is negative
 5699:   and not EOF [0]. As done in lib/curl_ctype.h, cast the `char` variable
 5700:   to `unsigned char` to avoid that.
 5701:   
 5702:   [0] https://en.cppreference.com/w/c/string/byte/isdigit
 5703:   
 5704:   Closes https://github.com/curl/curl/pull/4503
 5705: 
 5706: Daniel Stenberg (18 Oct 2019)
 5707: - configure: remove all cyassl references
 5708:   
 5709:   In particular, this removes the case where configure would find an old
 5710:   cyall installation rather than a wolfssl one if present. The library is
 5711:   named wolfssl in modern days so there's no real need to keep support for
 5712:   the former.
 5713:   
 5714:   Reported-by: Jacob Barthelmeh
 5715:   Closes #4502
 5716: 
 5717: Marcel Raad (17 Oct 2019)
 5718: - test1162: disable MSYS2's POSIX path conversion
 5719:   
 5720:   This avoids MSYS2 converting the backslasb in the URL to a slash,
 5721:   causing the test to fail.
 5722: 
 5723: Daniel Stenberg (17 Oct 2019)
 5724: - RELEASE-NOTES: synced
 5725: 
 5726: Jay Satiro (16 Oct 2019)
 5727: - CURLOPT_TIMEOUT.3: Clarify transfer timeout time includes queue time
 5728:   
 5729:   Prior to this change some users did not understand that the "request"
 5730:   starts when the handle is added to the multi handle, or probably they
 5731:   did not understand that some of those transfers may be queued and that
 5732:   time is included in timeout.
 5733:   
 5734:   Reported-by: Jeroen Ooms
 5735:   
 5736:   Fixes https://github.com/curl/curl/issues/4486
 5737:   Closes https://github.com/curl/curl/pull/4489
 5738: 
 5739: - [Stian Soiland-Reyes brought this change]
 5740: 
 5741:   tool_operate: Fix retry sleep time shown to user when Retry-After
 5742:   
 5743:   - If server header Retry-After is being used for retry sleep time then
 5744:     show that value to the user instead of the normal retry sleep time.
 5745:   
 5746:   This is a follow-up to 640b973 (7.66.0) which changed curl tool so that
 5747:   the value from Retry-After header overrides other retry timing options.
 5748:   
 5749:   Closes https://github.com/curl/curl/pull/4498
 5750: 
 5751: Daniel Stenberg (16 Oct 2019)
 5752: - url: normalize CURLINFO_EFFECTIVE_URL
 5753:   
 5754:   The URL extracted with CURLINFO_EFFECTIVE_URL was returned as given as
 5755:   input in most cases, which made it not get a scheme prefixed like before
 5756:   if the URL was given without one, and it didn't remove dotdot sequences
 5757:   etc.
 5758:   
 5759:   Added test case 1907 to verify that this now works as intended and as
 5760:   before 7.62.0.
 5761:   
 5762:   Regression introduced in 7.62.0
 5763:   
 5764:   Reported-by: Christophe Dervieux
 5765:   Fixes #4491
 5766:   Closes #4493
 5767: 
 5768: Marcel Raad (16 Oct 2019)
 5769: - tests: line ending fixes for Windows
 5770:   
 5771:   Mark some files as text.
 5772:   
 5773:   Closes https://github.com/curl/curl/pull/4490
 5774: 
 5775: - tests: use proxy feature
 5776:   
 5777:   This makes the tests succeed when using --disable-proxy.
 5778:   
 5779:   Closes https://github.com/curl/curl/pull/4488
 5780: 
 5781: - smbserver: fix Python 3 compatibility
 5782:   
 5783:   Python 2's `ConfigParser` module is spelled `configparser` in Python 3.
 5784:   
 5785:   Closes https://github.com/curl/curl/pull/4484
 5786: 
 5787: - security: silence conversion warning
 5788:   
 5789:   With MinGW-w64, `curl_socket_t` is is a 32 or 64 bit unsigned integer,
 5790:   while `read` expects a 32 bit signed integer.
 5791:   Use `sread` instead of `read` to use the correct parameter type.
 5792:   
 5793:   Closes https://github.com/curl/curl/pull/4483
 5794: 
 5795: - connect: silence sign-compare warning
 5796:   
 5797:   With MinGW-w64 using WinSock, `curl_socklen_t` is signed, while the
 5798:   result of `sizeof` is unsigned.
 5799:   
 5800:   Closes https://github.com/curl/curl/pull/4483
 5801: 
 5802: Daniel Stenberg (13 Oct 2019)
 5803: - TODO: Handle growing SFTP files
 5804:   
 5805:   Closes #4344
 5806: 
 5807: - KNOWN_BUGS: remove "CURLFORM_CONTENTLEN in an array"
 5808:   
 5809:   The curl_formadd() function is deprecated and shouldn't be used so the
 5810:   real fix for applications is to switch to the curl_mime_* API.
 5811: 
 5812: - KNOWN_BUGS: "LDAP on Windows does authentication wrong"
 5813:   
 5814:   Closes #3116
 5815: 
 5816: - appveyor: add a winbuild that uses VS2017
 5817:   
 5818:   Closes #4482
 5819: 
 5820: - [Harry Sintonen brought this change]
 5821: 
 5822:   socketpair: fix include and define for older TCP header systems
 5823:   
 5824:   fixed build for systems that need netinet/in.h for IPPROTO_TCP and are
 5825:   missing INADDR_LOOPBACK
 5826:   
 5827:   Closes #4480
 5828: 
 5829: - socketpair: fix double-close in error case
 5830:   
 5831:   Follow-up to bc2dbef0afc08
 5832: 
 5833: - gskit: use the generic Curl_socketpair
 5834: 
 5835: - asyn-thread: make use of Curl_socketpair() where available
 5836: 
 5837: - socketpair: an implemention for Windows and more
 5838:   
 5839:   Curl_socketpair() is designed to be used and work everywhere if there's
 5840:   no native version or the native version isn't good enough.
 5841:   
 5842:   Closes #4466
 5843: 
 5844: - RELEASE-NOTES: synced
 5845: 
 5846: - connect: return CURLE_OPERATION_TIMEDOUT for errno == ETIMEDOUT
 5847:   
 5848:   Previosly all connect() failures would return CURLE_COULDNT_CONNECT, no
 5849:   matter what errno said.
 5850:   
 5851:   This makes for example --retry work on these transfer failures.
 5852:   
 5853:   Reported-by: Nathaniel J. Smith
 5854:   Fixes #4461
 5855:   Clsoes #4462
 5856: 
 5857: - cirrus: switch off blackhole status on the freebsd CI machines
 5858: 
 5859: - tests: use port 2 instead of 60000 for a safer non-listening port
 5860:   
 5861:   ... when the tests want "connection refused".
 5862: 
 5863: - KNOWN_BUGS: IDN tests failing on Windows
 5864:   
 5865:   Closes #3747
 5866: 
 5867: Dan Fandrich (9 Oct 2019)
 5868: - cirrus: Increase the git clone depth.
 5869:   
 5870:   If more commits are submitted to master between the time of triggering
 5871:   the first Cirrus build and the time the final build gets started, the
 5872:   desired commit is no longer at HEAD and the build will error out.
 5873:   [skip ci]
 5874: 
 5875: Daniel Stenberg (9 Oct 2019)
 5876: - docs: make sure the --no-progress-meter docs file is in dist too
 5877: 
 5878: - docs: document it as --no-progress-meter instead of the reverse
 5879:   
 5880:   Follow-up to 93373a960c3bb4
 5881:   
 5882:   Reported-by: infinnovation-dev on github
 5883:   Fixes #4474
 5884:   Closes #4475
 5885: 
 5886: Dan Fandrich (9 Oct 2019)
 5887: - cirrus: Switch the FreeBSD 11.x build to 11.3 and add a 13.0 build.
 5888:   
 5889:   Also, select the images using image_family to get the latest snapshots
 5890:   automatically.
 5891:   [skip ci]
 5892: 
 5893: Daniel Stenberg (8 Oct 2019)
 5894: - curl: --no-progress-meter
 5895:   
 5896:   New option that allows a user to ONLY switch off curl's progress meter
 5897:   and leave everything else in "talkative" mode.
 5898:   
 5899:   Reported-by: Piotr Komborski
 5900:   Fixes #4422
 5901:   Closes #4470
 5902: 
 5903: - TODO: Consult %APPDATA% also for .netrc
 5904:   
 5905:   Closes #4016
 5906: 
 5907: - CURLOPT_TIMEOUT.3: remove the mention of "minutes"
 5908:   
 5909:   ... just say that limiting operations risk aborting otherwise fine
 5910:   working transfers. If that means seconds, minutes or hours, we leave to
 5911:   the user.
 5912:   
 5913:   Reported-by: Martin Gartner
 5914:   Closes #4469
 5915: 
 5916: - [Andrei Valeriu BICA brought this change]
 5917: 
 5918:   docs: added multi-event.c example
 5919:   
 5920:   Similar to multi-uv.c but using libevent 2. This is a simpler libevent
 5921:   integration example then hiperfifo.c.
 5922:   
 5923:   Closes #4471
 5924: 
 5925: Jay Satiro (5 Oct 2019)
 5926: - [Nicolas brought this change]
 5927: 
 5928:   ldap: fix OOM error on missing query string
 5929:   
 5930:   - Allow missing queries, don't return NO_MEMORY error in such a case.
 5931:   
 5932:   It is acceptable for there to be no specified query string, for example:
 5933:   
 5934:   curl ldap://ldap.forumsys.com
 5935:   
 5936:   A regression bug in 1b443a7 caused this issue.
 5937:   
 5938:   This is a partial fix for #4261.
 5939:   
 5940:   Bug: https://github.com/curl/curl/issues/4261#issuecomment-525543077
 5941:   Reported-by: Jojojov@users.noreply.github.com
 5942:   Analyzed-by: Samuel Surtees
 5943:   
 5944:   Closes https://github.com/curl/curl/pull/4467
 5945: 
 5946: - [Paul B. Omta brought this change]
 5947: 
 5948:   build: Remove unused HAVE_LIBSSL and HAVE_LIBCRYPTO defines
 5949:   
 5950:   Closes https://github.com/curl/curl/pull/4460
 5951: 
 5952: Daniel Stenberg (5 Oct 2019)
 5953: - RELEASE-NOTES: synced
 5954: 
 5955: - [Stian Soiland-Reyes brought this change]
 5956: 
 5957:   curl: ensure HTTP 429 triggers --retry
 5958:   
 5959:   This completes #3794.
 5960:   
 5961:   Also make sure the new tests from #4195 are enabled
 5962:   
 5963:   Closes #4465
 5964: 
 5965: Marcel Raad (4 Oct 2019)
 5966: - [apique brought this change]
 5967: 
 5968:   winbuild: add ENABLE_UNICODE option
 5969:   
 5970:   Fixes https://github.com/curl/curl/issues/4308
 5971:   Closes https://github.com/curl/curl/pull/4309
 5972: 
 5973: Daniel Stenberg (4 Oct 2019)
 5974: - ngtcp2: adapt to API change
 5975:   
 5976:   Closes #4457
 5977: 
 5978: - cookies: change argument type for Curl_flush_cookies
 5979:   
 5980:   The second argument is really a 'bool' so use that and pass in TRUE/FALSE
 5981:   to make it clear.
 5982:   
 5983:   Closes #4455
 5984: 
 5985: - http2: move state-init from creation to pre-transfer
 5986:   
 5987:   To make sure that the HTTP/2 state is initialized correctly for
 5988:   duplicated handles. It would otherwise easily generate "spurious"
 5989:   PRIORITY frames to get sent over HTTP/2 connections when duplicated easy
 5990:   handles were used.
 5991:   
 5992:   Reported-by: Daniel Silverstone
 5993:   Fixes #4303
 5994:   Closes #4442
 5995: 
 5996: - urlapi: fix use-after-free bug
 5997:   
 5998:   Follow-up from 2c20109a9b5d04
 5999:   
 6000:   Added test 663 to verify.
 6001:   
 6002:   Reported by OSS-Fuzz
 6003:   Bug: https://crbug.com/oss-fuzz/17954
 6004:   
 6005:   Closes #4453
 6006: 
 6007: - [Paul Dreik brought this change]
 6008: 
 6009:   cookie: avoid harmless use after free
 6010:   
 6011:   This fix removes a use after free which can be triggered by
 6012:   the internal cookie fuzzer, but otherwise is probably
 6013:   impossible to trigger from an ordinary application.
 6014:   
 6015:   The following program reproduces it:
 6016:   
 6017:           curl_global_init(CURL_GLOBAL_DEFAULT);
 6018:           CURL*  handle=curl_easy_init();
 6019:           CookieInfo* info=Curl_cookie_init(handle,NULL,NULL,false);
 6020:           curl_easy_setopt(handle, CURLOPT_COOKIEJAR, "/dev/null");
 6021:           Curl_flush_cookies(handle, true);
 6022:           Curl_cookie_cleanup(info);
 6023:           curl_easy_cleanup(handle);
 6024:           curl_global_cleanup();
 6025:   
 6026:   This was found through fuzzing.
 6027:   
 6028:   Closes #4454
 6029: 
 6030: - [Denis Chaplygin brought this change]
 6031: 
 6032:   docs: add note on failed handles not being counted by curl_multi_perform
 6033:   
 6034:   Closes #4446
 6035: 
 6036: - CURLMOPT_MAX_CONCURRENT_STREAMS.3: fix SEE ALSO typo
 6037: 
 6038: - [Niall O'Reilly brought this change]
 6039: 
 6040:   ESNI: initial build/setup
 6041:   
 6042:   Closes #4011
 6043: 
 6044: - RELEASE-NOTES: synced
 6045: 
 6046: - redirect: when following redirects to an absolute URL, URL encode it
 6047:   
 6048:   ... to make it handle for example (RFC violating) embeded spaces.
 6049:   
 6050:   Reported-by: momala454 on github
 6051:   Fixes #4445
 6052:   Closes #4447
 6053: 
 6054: - urlapi: fix URL encoding when setting a full URL
 6055: 
 6056: - tool_operate: rename functions to make more sense
 6057: 
 6058: - curl: create easy handles on-demand and not ahead of time
 6059:   
 6060:   This should again enable crazy-large download ranges of the style
 6061:   [1-10000000] that otherwise easily ran out of memory starting in 7.66.0
 6062:   when this new handle allocating scheme was introduced.
 6063:   
 6064:   Reported-by: Peter Sumatra
 6065:   Fixes #4393
 6066:   Closes #4438
 6067: 
 6068: - [Kunal Ekawde brought this change]
 6069: 
 6070:   CURLMOPT_MAX_CONCURRENT_STREAMS: new setopt
 6071:   
 6072:   Closes #4410
 6073: 
 6074: - chunked-encoding: stop hiding the CURLE_BAD_CONTENT_ENCODING error
 6075:   
 6076:   Unknown content-encoding would get returned as CURLE_WRITE_ERROR if the
 6077:   response is chunked-encoded.
 6078:   
 6079:   Reported-by: Ilya Kosarev
 6080:   Fixes #4310
 6081:   Closes #4449
 6082: 
 6083: Marcel Raad (1 Oct 2019)
 6084: - checksrc: fix uninitialized variable warning
 6085:   
 6086:   The loop doesn't need to be executed without a file argument.
 6087:   
 6088:   Closes https://github.com/curl/curl/pull/4444
 6089: 
 6090: - urlapi: fix unused variable warning
 6091:   
 6092:   `dest` is only used with `ENABLE_IPV6`.
 6093:   
 6094:   Closes https://github.com/curl/curl/pull/4444
 6095: 
 6096: - lib: silence conversion warnings
 6097:   
 6098:   Closes https://github.com/curl/curl/pull/4444
 6099: 
 6100: - AppVeyor: add 32-bit MinGW-w64 build
 6101:   
 6102:   With WinSSL and testing enabled so that it would have detected most of
 6103:   the warnings fixed in [0] and [1].
 6104:   
 6105:   [0] https://github.com/curl/curl/pull/4398
 6106:   [1] https://github.com/curl/curl/pull/4415
 6107:   
 6108:   Closes https://github.com/curl/curl/pull/4433
 6109: 
 6110: - AppVeyor: remove MSYS2_ARG_CONV_EXCL for winbuild
 6111:   
 6112:   It's only used for MSYS2 with MinGW.
 6113:   
 6114:   Closes
 6115: 
 6116: Daniel Stenberg (30 Sep 2019)
 6117: - [Emil Engler brought this change]
 6118: 
 6119:   git: add tests/server/disabled to .gitignore
 6120:   
 6121:   Closes #4441
 6122: 
 6123: - altsvc: accept quoted ma and persist values
 6124:   
 6125:   As mandated by the spec. Test 1654 is extended to verify.
 6126:   
 6127:   Closes #4443
 6128: 
 6129: - mailmap: a Lucas fix
 6130: 
 6131: Alessandro Ghedini (29 Sep 2019)
 6132: - [Lucas Pardue brought this change]
 6133: 
 6134:   quiche: update HTTP/3 config creation to new API
 6135: 
 6136: Daniel Stenberg (29 Sep 2019)
 6137: - BINDINGS: PureBasic, Net::Curl for perl and Nim
 6138: 
 6139: - BINDINGS: Kapito is an Erlang library, basically a binding
 6140: 
 6141: - BINDINGS: added clj-curl
 6142:   
 6143:   Reported-by: Lucas Severo
 6144: 
 6145: - [Jay Satiro brought this change]
 6146: 
 6147:   docs: disambiguate CURLUPART_HOST is for host name (ie no port)
 6148:   
 6149:   Closes #4424
 6150: 
 6151: - cookies: using a share with cookies shouldn't enable the cookie engine
 6152:   
 6153:   The 'share object' only sets the storage area for cookies. The "cookie
 6154:   engine" still needs to be enabled or activated using the normal cookie
 6155:   options.
 6156:   
 6157:   This caused the curl command line tool to accidentally use cookies
 6158:   without having been told to, since curl switched to using shared cookies
 6159:   in 7.66.0.
 6160:   
 6161:   Test 1166 verifies
 6162:   
 6163:   Updated test 506
 6164:   
 6165:   Fixes #4429
 6166:   Closes #4434
 6167: 
 6168: - setopt: handle ALTSVC set to NULL
 6169: 
 6170: - RELEASE-NOTES: synced
 6171: 
 6172: - [grdowns brought this change]
 6173: 
 6174:   INSTALL: add vcpkg installation instructions
 6175:   
 6176:   Closes #4435
 6177: 
 6178: - [Zenju brought this change]
 6179: 
 6180:   FTP: add test for FTPFILE_NOCWD: Avoid redundant CWDs
 6181:   
 6182:   Add libtest 661
 6183:   
 6184:   Closes #4417
 6185: 
 6186: - [Zenju brought this change]
 6187: 
 6188:   FTP: url-decode path before evaluation
 6189:   
 6190:   Closes #4428
 6191: 
 6192: Marcel Raad (27 Sep 2019)
 6193: - tests: fix narrowing conversion warnings
 6194:   
 6195:   `timediff_t` is 64 bits wide also on 32-bit systems since
 6196:   commit b1616dad8f0.
 6197:   
 6198:   Closes https://github.com/curl/curl/pull/4415
 6199: 
 6200: Jay Satiro (27 Sep 2019)
 6201: - [Julian Z brought this change]
 6202: 
 6203:   vtls: Fix comment typo about macosx-version-min compiler flag
 6204:   
 6205:   Closes https://github.com/curl/curl/pull/4425
 6206: 
 6207: Daniel Stenberg (26 Sep 2019)
 6208: - [Yechiel Kalmenson brought this change]
 6209: 
 6210:   README: minor grammar fix
 6211:   
 6212:   Closes #4431
 6213: 
 6214: - [Spezifant brought this change]
 6215: 
 6216:   HTTP3: fix prefix parameter for ngtcp2 build
 6217:   
 6218:   Closes #4430
 6219: 
 6220: - quiche: don't close connection at end of stream!
 6221: 
 6222: - quiche: set 'drain' when returning without having drained the queues
 6223: 
 6224: - Revert "FTP: url-decode path before evaluation"
 6225:   
 6226:   This reverts commit 2f036a72d543e96128bd75cb0fedd88815fd42e2.
 6227: 
 6228: - HTTP3: merged and simplified the two 'running' sections
 6229: 
 6230: - HTTP3: show an --alt-svc using example too
 6231: 
 6232: - [Zenju brought this change]
 6233: 
 6234:   FTP: url-decode path before evaluation
 6235:   
 6236:   Closes #4423
 6237: 
 6238: - openssl: use strerror on SSL_ERROR_SYSCALL
 6239:   
 6240:   Instead of showing the somewhat nonsensical errno number, use strerror()
 6241:   to provide a more relatable error message.
 6242:   
 6243:   Closes #4411
 6244: 
 6245: - HTTP3: update quic.aiortc.org + add link to server list
 6246:   
 6247:   Reported-by: Jeremy Lainé
 6248: 
 6249: Jay Satiro (26 Sep 2019)
 6250: - url: don't set appconnect time for non-ssl/non-ssh connections
 6251:   
 6252:   Prior to this change non-ssl/non-ssh connections that were reused set
 6253:   TIMER_APPCONNECT [1]. Arguably that was incorrect since no SSL/SSH
 6254:   handshake took place.
 6255:   
 6256:   [1]: TIMER_APPCONNECT is publicly known as CURLINFO_APPCONNECT_TIME in
 6257:   libcurl and %{time_appconnect} in the curl tool. It is documented as
 6258:   "the time until the SSL/SSH handshake is completed".
 6259:   
 6260:   Reported-by: Marcel Hernandez
 6261:   
 6262:   Ref: https://github.com/curl/curl/issues/3760
 6263:   
 6264:   Closes https://github.com/curl/curl/pull/3773
 6265: 
 6266: Daniel Stenberg (25 Sep 2019)
 6267: - ngtcp2: remove fprintf() calls
 6268:   
 6269:   - convert some of them to H3BUF() calls to infof()
 6270:   - remove some of them completely
 6271:   - made DEBUG_HTTP3 defined only if CURLDEBUG is set for now
 6272:   
 6273:   Closes #4421
 6274: 
 6275: - [Jay Satiro brought this change]
 6276: 
 6277:   url: fix the NULL hostname compiler warning case
 6278:   
 6279:   Closes #4403
 6280: 
 6281: - [Jay Satiro brought this change]
 6282: 
 6283:   travis: move the go install to linux-only
 6284:   
 6285:   ... to repair the build again
 6286:   Closes #4403
 6287: 
 6288: - altsvc: correct the #ifdef for the ngtcp2 backend
 6289: 
 6290: - altsvc: save h3 as h3-23
 6291:   
 6292:   Follow-up to d176a2c7e5
 6293: 
 6294: - urlapi: question mark within fragment is still fragment
 6295:   
 6296:   The parser would check for a query part before fragment, which caused it
 6297:   to do wrong when the fragment contains a question mark.
 6298:   
 6299:   Extended test 1560 to verify.
 6300:   
 6301:   Reported-by: Alex Konev
 6302:   Fixes #4412
 6303:   Closes #4413
 6304: 
 6305: - [Alex Samorukov brought this change]
 6306: 
 6307:   HTTP3.md: move -p for mkdir, remove -j for make
 6308:   
 6309:   - mkdir on OSX/Darwin requires `-p` argument before dir
 6310:   
 6311:   - portabbly figuring out number of cores is an exercise for somewhere
 6312:     else
 6313:   
 6314:   Closes #4407
 6315: 
 6316: Patrick Monnerat (24 Sep 2019)
 6317: - os400: getpeername() and getsockname() return ebcdic AF_UNIX sockaddr,
 6318:   
 6319:   As libcurl now uses these 2 system functions, wrappers are needed on os400
 6320:   to convert returned AF_UNIX sockaddrs to ascii.
 6321:   
 6322:   This is a follow-up to commit 7fb54ef.
 6323:   See also #4037.
 6324:   Closes #4214
 6325: 
 6326: Jay Satiro (24 Sep 2019)
 6327: - [Lucas Pardue brought this change]
 6328: 
 6329:   strcase: fix raw lowercasing the letter X
 6330:   
 6331:   Casing mistake in Curl_raw_tolower 'X' wasn't lowercased as 'x' prior to
 6332:   this change.
 6333:   
 6334:   Follow-up to 0023fce which added the function several days ago.
 6335:   
 6336:   Ref: https://github.com/curl/curl/pull/4401#discussion_r327396546
 6337:   
 6338:   Closes https://github.com/curl/curl/pull/4408
 6339: 
 6340: Daniel Stenberg (23 Sep 2019)
 6341: - http2: Expression 'stream->stream_id != - 1' is always true
 6342:   
 6343:   PVS-Studio warning
 6344:   Fixes #4402
 6345: 
 6346: - http2: A value is being subtracted from the unsigned variable
 6347:   
 6348:   PVS-Studio warning
 6349:   Fixes #4402
 6350: 
 6351: - libssh: part of conditional expression is always true: !result
 6352:   
 6353:   PVS-Studio warning
 6354:   Fixed #4402
 6355: 
 6356: - libssh: part of conditional expression is always true
 6357:   
 6358:   PVS-Studio warning
 6359:   Fixes #4402
 6360: 
 6361: - libssh: The expression is excessive or contains a misprint
 6362:   
 6363:   PVS-Studio warning
 6364:   Fixes #4402
 6365: 
 6366: - quiche: The expression must be surrounded by parentheses
 6367:   
 6368:   PVS-Studio warning
 6369:   Fixes #4402
 6370: 
 6371: - vauth: The parameter 'status' must be surrounded by parentheses
 6372:   
 6373:   PVS-Studio warning
 6374:   Fixes #4402
 6375: 
 6376: - [Paul Dreik brought this change]
 6377: 
 6378:   doh: allow only http and https in debug mode
 6379:   
 6380:   Otherwise curl may be told to use for instance pop3 to
 6381:   communicate with the doh server, which most likely
 6382:   is not what you want.
 6383:   
 6384:   Found through fuzzing.
 6385:   
 6386:   Closes #4406
 6387: 
 6388: - [Paul Dreik brought this change]
 6389: 
 6390:   doh: return early if there is no time left
 6391:   
 6392:   Closes #4406
 6393: 
 6394: - [Barry Pollard brought this change]
 6395: 
 6396:   http: lowercase headernames for HTTP/2 and HTTP/3
 6397:   
 6398:   Closes #4401
 6399:   Fixes #4400
 6400: 
 6401: Marcel Raad (23 Sep 2019)
 6402: - vtls: fix narrowing conversion warnings
 6403:   
 6404:   Curl_timeleft returns `timediff_t`, which is 64 bits wide also on
 6405:   32-bit systems since commit b1616dad8f0.
 6406:   
 6407:   Closes https://github.com/curl/curl/pull/4398
 6408: 
 6409: Daniel Stenberg (23 Sep 2019)
 6410: - [Joel Depooter brought this change]
 6411: 
 6412:   winbuild: Add manifest to curl.exe for proper OS version detection
 6413:   
 6414:   This is a small fix to commit ebd213270a017a6830928ee2e1f4a9cabc799898
 6415:   in pull request #1221. That commit added the CURL_EMBED_MANIFEST flag to
 6416:   CURL_RC_FLAGS. However, later in the file CURL_RC_FLAGS is
 6417:   overwritten. The fix is to append values to CURL_RC_FLAGS instead of
 6418:   overwriting
 6419:   
 6420:   Closes #4399
 6421: 
 6422: - RELEASE-NOTES: synced
 6423: 
 6424: Marcel Raad (22 Sep 2019)
 6425: - openssl: fix compiler warning with LibreSSL
 6426:   
 6427:   It was already fixed for BoringSSL in commit a0f8fccb1e0.
 6428:   LibreSSL has had the second argument to SSL_CTX_set_min_proto_version
 6429:   as uint16_t ever since the function was added in [0].
 6430:   
 6431:   [0] https://github.com/libressl-portable/openbsd/commit/56f107201baefb5533486d665a58d8f57fd3aeda
 6432:   
 6433:   Closes https://github.com/curl/curl/pull/4397
 6434: 
 6435: Daniel Stenberg (22 Sep 2019)
 6436: - curl: exit the create_transfers loop on errors
 6437:   
 6438:   When looping around the ranges and given URLs to create transfers, all
 6439:   errors should exit the loop and return. Previously it would keep
 6440:   looping.
 6441:   
 6442:   Reported-by: SumatraPeter on github
 6443:   Bug: #4393
 6444:   Closes #4396
 6445: 
 6446: Jay Satiro (21 Sep 2019)
 6447: - socks: Fix destination host shown on SOCKS5 error
 6448:   
 6449:   Prior to this change when a server returned a socks5 connect error then
 6450:   curl would parse the destination address:port from that data and show it
 6451:   to the user as the destination:
 6452:   
 6453:   curld -v --socks5 10.0.3.1:1080 http://google.com:99
 6454:   * SOCKS5 communication to google.com:99
 6455:   * SOCKS5 connect to IPv4 172.217.12.206 (locally resolved)
 6456:   * Can't complete SOCKS5 connection to 253.127.0.0:26673. (1)
 6457:   curl: (7) Can't complete SOCKS5 connection to 253.127.0.0:26673. (1)
 6458:   
 6459:   That's incorrect because the address:port included in the connect error
 6460:   is actually a bind address:port (typically unused) and not the
 6461:   destination address:port. This fix changes curl to show the destination
 6462:   information that curl sent to the server instead:
 6463:   
 6464:   curld -v --socks5 10.0.3.1:1080 http://google.com:99
 6465:   * SOCKS5 communication to google.com:99
 6466:   * SOCKS5 connect to IPv4 172.217.7.14:99 (locally resolved)
 6467:   * Can't complete SOCKS5 connection to 172.217.7.14:99. (1)
 6468:   curl: (7) Can't complete SOCKS5 connection to 172.217.7.14:99. (1)
 6469:   
 6470:   curld -v --socks5-hostname 10.0.3.1:1080 http://google.com:99
 6471:   * SOCKS5 communication to google.com:99
 6472:   * SOCKS5 connect to google.com:99 (remotely resolved)
 6473:   * Can't complete SOCKS5 connection to google.com:99. (1)
 6474:   curl: (7) Can't complete SOCKS5 connection to google.com:99. (1)
 6475:   
 6476:   Ref: https://tools.ietf.org/html/rfc1928#section-6
 6477:   
 6478:   Closes https://github.com/curl/curl/pull/4394
 6479: 
 6480: Daniel Stenberg (21 Sep 2019)
 6481: - travis: enable ngtcp2 h3-23 builds
 6482: 
 6483: - altsvc: both backends run h3-23 now
 6484:   
 6485:   Closes #4395
 6486: 
 6487: - http: fix warning on conversion from int to bit
 6488:   
 6489:   Follow-up from 03ebe66d70
 6490: 
 6491: - urldata: use 'bool' for the bit type on MSVC compilers
 6492:   
 6493:   Closes #4387
 6494:   Fixes #4379
 6495: 
 6496: - appveyor: upgrade VS2017 to VS2019
 6497:   
 6498:   Closes #4383
 6499: 
 6500: - [Zenju brought this change]
 6501: 
 6502:   FTP: FTPFILE_NOCWD: avoid redundant CWDs
 6503:   
 6504:   Closes #4382
 6505: 
 6506: - cookie: pass in the correct cookie amount to qsort()
 6507:   
 6508:   As the loop discards cookies without domain set. This bug would lead to
 6509:   qsort() trying to sort uninitialized pointers. We have however not found
 6510:   it a security problem.
 6511:   
 6512:   Reported-by: Paul Dreik
 6513:   Closes #4386
 6514: 
 6515: - [Paul Dreik brought this change]
 6516: 
 6517:   urlapi: avoid index underflow for short ipv6 hostnames
 6518:   
 6519:   If the input hostname is "[", hlen will underflow to max of size_t when
 6520:   it is subtracted with 2.
 6521:   
 6522:   hostname[hlen] will then cause a warning by ubsanitizer:
 6523:   
 6524:   runtime error: addition of unsigned offset to 0x<snip> overflowed to
 6525:   0x<snip>
 6526:   
 6527:   I think that in practice, the generated code will work, and the output
 6528:   of hostname[hlen] will be the first character "[".
 6529:   
 6530:   This can be demonstrated by the following program (tested in both clang
 6531:   and gcc, with -O3)
 6532:   
 6533:   int main() {
 6534:     char* hostname=strdup("[");
 6535:     size_t hlen = strlen(hostname);
 6536:   
 6537:     hlen-=2;
 6538:     hostname++;
 6539:     printf("character is %d\n",+hostname[hlen]);
 6540:     free(hostname-1);
 6541:   }
 6542:   
 6543:   I found this through fuzzing, and even if it seems harmless, the proper
 6544:   thing is to return early with an error.
 6545:   
 6546:   Closes #4389
 6547: 
 6548: - [Tatsuhiro Tsujikawa brought this change]
 6549: 
 6550:   ngtcp2: compile with latest ngtcp2 + nghttp3 draft-23
 6551:   
 6552:   Closes #4392
 6553: 
 6554: - THANKS-filter: deal with my typos 'Jat' => 'Jay'
 6555: 
 6556: - travis: use go master
 6557:   
 6558:   ... as the boringssl builds needs a very recent version
 6559:   
 6560:   Co-authored-by: Jat Satiro
 6561:   Closes #4361
 6562: 
 6563: - tool_operate: removed unused variable 'done'
 6564:   
 6565:   Fixes warning detected by PVS-Studio
 6566:   Fixes #4374
 6567: 
 6568: - tool_operate: Expression 'config->resume_from' is always true
 6569:   
 6570:   Fixes warning detected by PVS-Studio
 6571:   Fixes #4374
 6572: 
 6573: - tool_getparam: remove duplicate switch case
 6574:   
 6575:   Fixes warning detected by PVS-Studio
 6576:   Fixes #4374
 6577: 
 6578: - libssh2: part of conditional expression is always true: !result
 6579:   
 6580:   Fixes warning detected by PVS-Studio
 6581:   Fixes #4374
 6582: 
 6583: - urlapi: Expression 'storep' is always true
 6584:   
 6585:   Fixes warning detected by PVS-Studio
 6586:   Fixes #4374
 6587: 
 6588: - urlapi: 'scheme' is always true
 6589:   
 6590:   Fixes warning detected by PVS-Studio
 6591:   Fixes #4374
 6592: 
 6593: - urlapi: part of conditional expression is always true: (relurl[0] == '/')
 6594:   
 6595:   Fixes warning detected by PVS-Studio
 6596:   Fixes #4374
 6597: 
 6598: - setopt: store CURLOPT_RTSP_SERVER_CSEQ correctly
 6599:   
 6600:   Fixes bug detected by PVS-Studio
 6601:   Fixes #4374
 6602: 
 6603: - mime: make Curl_mime_duppart() assert if called without valid dst
 6604:   
 6605:   Fixes warning detected by PVS-Studio
 6606:   Fixes #4374
 6607: 
 6608: - http_proxy: part of conditional expression is always true: !error
 6609:   
 6610:   Fixes warning detected by PVS-Studio
 6611:   Fixes #4374
 6612: 
 6613: - imap: merged two case-branches performing the same action
 6614:   
 6615:   Fixes warning detected by PVS-Studio
 6616:   Fixes #4374
 6617: 
 6618: - multi: value '2L' is assigned to a boolean
 6619:   
 6620:   Fixes warning detected by PVS-Studio
 6621:   Fixes #4374
 6622: 
 6623: - easy: part of conditional expression is always true: !result
 6624:   
 6625:   Fixes warning detected by PVS-Studio
 6626:   Fixes #4374
 6627: 
 6628: - netrc: part of conditional expression is always true: !done
 6629:   
 6630:   Fixes warning detected by PVS-Studio
 6631:   Fixes #4374
 6632: 
 6633: - version: Expression 'left > 1' is always true
 6634:   
 6635:   Fixes warning detected by PVS-Studio
 6636:   Fixes #4374
 6637: 
 6638: - url: remove dead code
 6639:   
 6640:   Fixes warning detected by PVS-Studio
 6641:   Fixes #4374
 6642: 
 6643: - url: part of expression is always true: (bundle->multiuse == 0)
 6644:   
 6645:   Fixes warning detected by PVS-Studio
 6646:   Fixes #4374
 6647: 
 6648: - ftp: the conditional expression is always true
 6649:   
 6650:   ... both !result and (ftp->transfer != FTPTRANSFER_BODY)!
 6651:   
 6652:   Fixes warning detected by PVS-Studio
 6653:   Fixes #4374
 6654: 
 6655: - ftp: Expression 'ftpc->wait_data_conn' is always false
 6656:   
 6657:   Fixes warning detected by PVS-Studio
 6658:   Fixes #4374
 6659: 
 6660: - ftp: Expression 'ftpc->wait_data_conn' is always true
 6661:   
 6662:   Fixes warning detected by PVS-Studio
 6663:   Fixes #4374
 6664: 
 6665: - ftp: part of conditional expression is always true: !result
 6666:   
 6667:   Fixes warning detected by PVS-Studio
 6668:   Fixes #4374
 6669: 
 6670: - http: fix Expression 'http->postdata' is always false
 6671:   
 6672:   Fixes warning detected by PVS-Studio
 6673:   Fixes #4374
 6674:   Reported-by: Valerii Zapodovnikov
 6675: 
 6676: - [Niall O'Reilly brought this change]
 6677: 
 6678:   doh: avoid truncating DNS QTYPE to lower octet
 6679:   
 6680:   Closes #4381
 6681: 
 6682: - [Jens Finkhaeuser brought this change]
 6683: 
 6684:   urlapi: CURLU_NO_AUTHORITY allows empty authority/host part
 6685:   
 6686:   CURLU_NO_AUTHORITY is intended for use with unknown schemes (i.e. not
 6687:   "file:///") to override cURL's default demand that an authority exists.
 6688:   
 6689:   Closes #4349
 6690: 
 6691: - version: next release will be 7.67.0
 6692: 
 6693: - RELEASE-NOTES: synced
 6694: 
 6695: - url: only reuse TLS connections with matching pinning
 6696:   
 6697:   If the requests have different CURLOPT_PINNEDPUBLICKEY strings set, the
 6698:   connection should not be reused.
 6699:   
 6700:   Bug: https://curl.haxx.se/mail/lib-2019-09/0061.html
 6701:   Reported-by: Sebastian Haglund
 6702:   
 6703:   Closes #4347
 6704: 
 6705: - README: add OSS-Fuzz badge [skip ci]
 6706:   
 6707:   Closes #4380
 6708: 
 6709: Michael Kaufmann (18 Sep 2019)
 6710: - http: merge two "case" statements
 6711: 
 6712: Daniel Stenberg (18 Sep 2019)
 6713: - [Zenju brought this change]
 6714: 
 6715:   FTP: remove trailing slash from path for LIST/MLSD
 6716:   
 6717:   Closes #4348
 6718: 
 6719: - mime: when disabled, avoid C99 macro
 6720:   
 6721:   Closes #4368
 6722: 
 6723: - url: cleanup dangling DOH request headers too
 6724:   
 6725:   Follow-up to 9bc44ff64d9081
 6726:   
 6727:   Credit to OSS-Fuzz
 6728:   Bug: https://crbug.com/oss-fuzz/17269
 6729:   
 6730:   Closes #4372
 6731: 
 6732: - [Christoph M. Becker brought this change]
 6733: 
 6734:   http2: relax verification of :authority in push promise requests
 6735:   
 6736:   If the :authority pseudo header field doesn't contain an explicit port,
 6737:   we assume it is valid for the default port, instead of rejecting the
 6738:   request for all ports.
 6739:   
 6740:   Ref: https://curl.haxx.se/mail/lib-2019-09/0041.html
 6741:   
 6742:   Closes #4365
 6743: 
 6744: - doh: clean up dangling DOH handles and memory on easy close
 6745:   
 6746:   If you set the same URL for target as for DoH (and it isn't a DoH
 6747:   server), like "https://example.com" in both, the easy handles used for
 6748:   the DoH requests could be left "dangling" and end up not getting freed.
 6749:   
 6750:   Reported-by: Paul Dreik
 6751:   Closes #4366
 6752: 
 6753: - unit1655: make it C90 compliant
 6754:   
 6755:   Unclear why this was not detected in the CI.
 6756:   
 6757:   Follow-up to b7666027296a
 6758: 
 6759: - smb: check for full size message before reading message details
 6760:   
 6761:   To avoid reading of uninitialized data.
 6762:   
 6763:   Assisted-by: Max Dymond
 6764:   Bug: https://crbug.com/oss-fuzz/16907
 6765:   Closes #4363
 6766: 
 6767: - quiche: persist connection details
 6768:   
 6769:   ... like we do for other protocols at connect time. This makes "curl -I"
 6770:   and other things work.
 6771:   
 6772:   Reported-by: George Liu
 6773:   Fixes #4358
 6774:   Closes #4360
 6775: 
 6776: - openssl: fix warning with boringssl and SSL_CTX_set_min_proto_version
 6777:   
 6778:   Follow-up to ffe34b7b59
 6779:   Closes #4359
 6780: 
 6781: - [Paul Dreik brought this change]
 6782: 
 6783:   doh: fix undefined behaviour and open up for gcc and clang optimization
 6784:   
 6785:   The undefined behaviour is annoying when running fuzzing with
 6786:   sanitizers. The codegen is the same, but the meaning is now not up for
 6787:   dispute. See https://cppinsights.io/s/516a2ff4
 6788:   
 6789:   By incrementing the pointer first, both gcc and clang recognize this as
 6790:   a bswap and optimizes it to a single instruction.  See
 6791:   https://godbolt.org/z/994Zpx
 6792:   
 6793:   Closes #4350
 6794: 
 6795: - [Paul Dreik brought this change]
 6796: 
 6797:   doh: fix (harmless) buffer overrun
 6798:   
 6799:   Added unit test case 1655 to verify.
 6800:   Close #4352
 6801:   
 6802:   the code correctly finds the flaws in the old code,
 6803:   if one temporarily restores doh.c to the old version.
 6804: 
 6805: Alessandro Ghedini (15 Sep 2019)
 6806: - docs: remove trailing ':' from section names in CURLOPT_TRAILER* man
 6807: 
 6808: - docs: fix typo in CURLOPT_HTTP_VERSION man
 6809: 
 6810: GitHub (14 Sep 2019)
 6811: - [Daniel Stenberg brought this change]
 6812: 
 6813:   CI: inintial github action job
 6814:   
 6815:   First shot at a CI build on github actions
 6816: 
 6817: Daniel Stenberg (13 Sep 2019)
 6818: - appveyor: add a winbuild
 6819:   
 6820:   Assisted-by: Marcel Raad
 6821:   Assisted-by: Jay Satiro
 6822:   
 6823:   Closes #4324
 6824: 
 6825: - FTP: allow "rubbish" prepended to the SIZE response
 6826:   
 6827:   This is a protocol violation but apparently there are legacy proprietary
 6828:   servers doing this.
 6829:   
 6830:   Added test 336 and 337 to verify.
 6831:   
 6832:   Reported-by: Philippe Marguinaud
 6833:   Closes #4339
 6834: 
 6835: - [Zenju brought this change]
 6836: 
 6837:   FTP: skip CWD to entry dir when target is absolute
 6838:   
 6839:   Closes #4332
 6840: 
 6841: Kamil Dudka (13 Sep 2019)
 6842: - curl: fix memory leaked by parse_metalink()
 6843:   
 6844:   This commit fixes a regression introduced by curl-7_65_3-5-gb88940850.
 6845:   Detected by tests 2005, 2008, 2009, 2010, 2011, and 2012 with valgrind
 6846:   and libmetalink enabled.
 6847:   
 6848:   Closes #4326
 6849: 
 6850: Daniel Stenberg (13 Sep 2019)
 6851: - parsedate: still provide the name arrays when disabled
 6852:   
 6853:   If FILE or FTP are enabled, since they also use them!
 6854:   
 6855:   Reported-by: Roland Hieber
 6856:   Fixes #4325
 6857:   Closes #4343
 6858: 
 6859: - [Gilles Vollant brought this change]
 6860: 
 6861:   curl:file2string: load large files much faster
 6862:   
 6863:   ... by using a more efficient realloc scheme.
 6864:   
 6865:   Bug: https://curl.haxx.se/mail/lib-2019-09/0045.html
 6866:   Closes #4336
 6867: 
 6868: - openssl: close_notify on the FTP data connection doesn't mean closure
 6869:   
 6870:   For FTPS transfers, curl gets close_notify on the data connection
 6871:   without that being a signal to close the control connection!
 6872:   
 6873:   Regression since 3f5da4e59a556fc (7.65.0)
 6874:   
 6875:   Reported-by: Zenju on github
 6876:   Reviewed-by: Jay Satiro
 6877:   Fixes #4329
 6878:   Closes #4340
 6879: 
 6880: - [Jimmy Gaussen brought this change]
 6881: 
 6882:   docs/HTTP3: fix `--with-ssl` ngtcp2 configure flag
 6883:   
 6884:   Closes #4338
 6885: 
 6886: - RELEASE-NOTES: synced
 6887: 
 6888: - curlver: bump to 7.66.1
 6889: 
 6890: - [Zenju brought this change]
 6891: 
 6892:   setopt: make it easier to add new enum values
 6893:   
 6894:   ... by using the *_LAST define names better.
 6895:   
 6896:   Closes #4321
 6897: 
 6898: - asyn-thread: s/AF_LOCAL/AF_UNIX for Solaris
 6899:   
 6900:   Reported-by: Dagobert Michelsen
 6901:   Fixes #4328
 6902:   Closes #4333
 6903: 
 6904: - [Bernhard Walle brought this change]
 6905: 
 6906:   winbuild/MakefileBuild.vc: Add vssh
 6907:   
 6908:   Without that modification, the Windows build using the makefiles doesn't
 6909:   work.
 6910:   
 6911:   Signed-off-by: Bernhard Walle <bernhard.walle@posteo.eu>
 6912:   
 6913:   Fixes #4322
 6914:   Closes #4323
 6915: 
 6916: Bernhard Walle (11 Sep 2019)
 6917: - winbuild/MakefileBuild.vc: Fix line endings
 6918:   
 6919:   The file had mixed line endings.
 6920:   
 6921:   Signed-off-by: Bernhard Walle <bernhard.walle@posteo.eu>
 6922: 
 6923: Jay Satiro (11 Sep 2019)
 6924: - ldap: Stop using wide char version of ldapp_err2string
 6925:   
 6926:   Despite ldapp_err2string being documented by MS as returning a
 6927:   PCHAR (char *), when UNICODE it is mapped to ldap_err2stringW and
 6928:   returns PWCHAR (wchar_t *).
 6929:   
 6930:   We have lots of code that expects ldap_err2string to return char *,
 6931:   most of it failf used like this:
 6932:   
 6933:   failf(data, "LDAP local: Some error: %s", ldap_err2string(rc));
 6934:   
 6935:   Closes https://github.com/curl/curl/pull/4272
 6936: 
 6937: Version 7.66.0 (10 Sep 2019)
 6938: 
 6939: Daniel Stenberg (10 Sep 2019)
 6940: - RELEASE-NOTES: curl 7.66.0
 6941: 
 6942: - THANKS: from the 7.66.0 release
 6943: 
 6944: - curl: make sure the parallel transfers do them all
 6945:   
 6946:   The logic could erroneously break the loop too early before all
 6947:   transfers had been transferred.
 6948:   
 6949:   Reported-by: Tom van der Woerdt
 6950:   Fixes #4316
 6951:   Closes #4317
 6952: 
 6953: - urlapi: one colon is enough for the strspn() input (typo)
 6954: 
 6955: - urlapi: verify the IPv6 numerical address
 6956:   
 6957:   It needs to parse correctly. Otherwise it could be tricked into letting
 6958:   through a-f using host names that libcurl would then resolve. Like
 6959:   '[ab.be]'.
 6960:   
 6961:   Reported-by: Thomas Vegas
 6962:   Closes #4315
 6963: 
 6964: - [Clément Notin brought this change]
 6965: 
 6966:   openssl: use SSL_CTX_set_<min|max>_proto_version() when available
 6967:   
 6968:   OpenSSL 1.1.0 adds SSL_CTX_set_<min|max>_proto_version() that we now use
 6969:   when available.  Existing code is preserved for older versions of
 6970:   OpenSSL.
 6971:   
 6972:   Closes #4304
 6973: 
 6974: - [Clément Notin brought this change]
 6975: 
 6976:   openssl: indent, re-organize and add comments
 6977: 
 6978: - [migueljcrum brought this change]
 6979: 
 6980:   sspi: fix memory leaks
 6981:   
 6982:   Closes #4299
 6983: 
 6984: - travis: disable ngtcp2 builds (again)
 6985: 
 6986: - Curl_fillreadbuffer: avoid double-free trailer buf on error
 6987:   
 6988:   Reviewed-by: Jay Satiro
 6989:   Reported-by: Thomas Vegas
 6990:   
 6991:   Closes #4307
 6992: 
 6993: - tool_setopt: handle a libcurl build without netrc support
 6994:   
 6995:   Reported-by: codesniffer13 on github
 6996:   Fixes #4302
 6997:   Closes #4305
 6998: 
 6999: - security:read_data fix bad realloc()
 7000:   
 7001:   ... that could end up a double-free
 7002:   
 7003:   CVE-2019-5481
 7004:   Bug: https://curl.haxx.se/docs/CVE-2019-5481.html
 7005: 
 7006: - [Thomas Vegas brought this change]
 7007: 
 7008:   tftp: Alloc maximum blksize, and use default unless OACK is received
 7009:   
 7010:   Fixes potential buffer overflow from 'recvfrom()', should the server
 7011:   return an OACK without blksize.
 7012:   
 7013:   Bug: https://curl.haxx.se/docs/CVE-2019-5482.html
 7014:   CVE-2019-5482
 7015: 
 7016: - [Thomas Vegas brought this change]
 7017: 
 7018:   tftp: return error when packet is too small for options
 7019: 
 7020: - KNOWN_BUGS/TODO: cleanup and remove outdated issues
 7021: 
 7022: - RELEASE-NOTES: synced
 7023: 
 7024: - netrc: free 'home' on error
 7025:   
 7026:   Follow-up to f9c7ba9096ec2
 7027:   
 7028:   Coverity CID 1453474
 7029:   
 7030:   Closes #4291
 7031: 
 7032: - urldata: avoid 'generic', use dedicated pointers
 7033:   
 7034:   For the 'proto' union within the connectdata struct.
 7035:   
 7036:   Closes #4290
 7037: 
 7038: - cleanup: move functions out of url.c and make them static
 7039:   
 7040:   Closes #4289
 7041: 
 7042: - smtp: check for and bail out on too short EHLO response
 7043:   
 7044:   Otherwise, a three byte response would make the smtp_state_ehlo_resp()
 7045:   function misbehave.
 7046:   
 7047:   Credit to OSS-Fuzz
 7048:   Bug: https://crbug.com/oss-fuzz/16918
 7049:   
 7050:   Assisted-by: Max Dymond
 7051:   
 7052:   Closes #4287
 7053: 
 7054: - smb: init *msg to NULL in smb_send_and_recv()
 7055:   
 7056:   ... it might otherwise return OK from this function leaving that pointer
 7057:   uninitialized.
 7058:   
 7059:   Bug: https://crbug.com/oss-fuzz/16907
 7060:   
 7061:   Closes #4286
 7062: 
 7063: - ROADMAP: updated after recent user poll
 7064:   
 7065:   In rough prio order
 7066: 
 7067: - THANKS: remove duplicate
 7068: 
 7069: - Curl_addr2string: take an addrlen argument too
 7070:   
 7071:   This allows the function to figure out if a unix domain socket has a
 7072:   file name or not associated with it! When a socket is created with
 7073:   socketpair(), as done in the fuzzer testing, the path struct member is
 7074:   uninitialized and must not be accessed.
 7075:   
 7076:   Bug: https://crbug.com/oss-fuzz/16699
 7077:   
 7078:   Closes #4283
 7079: 
 7080: - [Rolf Eike Beer brought this change]
 7081: 
 7082:   CMake: remove needless newlines at end of gss variables
 7083: 
 7084: - [Rolf Eike Beer brought this change]
 7085: 
 7086:   CI: remove duplicate configure flag for LGTM.com
 7087: 
 7088: - [Rolf Eike Beer brought this change]
 7089: 
 7090:   CMake: use platform dependent name for dlopen() library
 7091:   
 7092:   Closes #4279
 7093: 
 7094: - quiche: expire when poll returned data
 7095:   
 7096:   ... to make sure we continue draining the queue until empty
 7097:   
 7098:   Closes #4281
 7099: 
 7100: - quiche: decrease available buffer size, don't assign it!
 7101:   
 7102:   Found-by: Jeremy Lainé
 7103: 
 7104: - RELEASE-NOTES: synced
 7105: 
 7106: - [Kyohei Kadota brought this change]
 7107: 
 7108:   curl: fix include conditions
 7109: 
 7110: - [Kyohei Kadota brought this change]
 7111: 
 7112:   plan9: fix installation instructions
 7113:   
 7114:   Closes #4276
 7115: 
 7116: - ngtcp2: on h3 stream close, call expire
 7117:   
 7118:   ... to trigger a new read to detect the stream close!
 7119:   
 7120:   Closes #4275
 7121: 
 7122: - [Tatsuhiro Tsujikawa brought this change]
 7123: 
 7124:   ngtcp2: build latest ngtcp2 and ngtcp2_crypto_openssl
 7125:   
 7126:   Closes #4278
 7127: 
 7128: - ngtcp2: set flow control window to stream buffer size
 7129:   
 7130:   Closes #4274
 7131: 
 7132: - [Christopher Head brought this change]
 7133: 
 7134:   CURLOPT_HEADERFUNCTION.3: clarify
 7135:   
 7136:   Closes #4273
 7137: 
 7138: - CURLINFO docs: mention that in redirects times are added
 7139:   
 7140:   Suggested-by: Brandon Dong
 7141:   Fixes #4250
 7142:   Closes #4269
 7143: 
 7144: - travis: enable ngtcp2 builds again
 7145:   
 7146:   Switched to the openssl-quic-draft-22 openssl branch.
 7147:   
 7148:   Closes #4271
 7149: 
 7150: - HTTP3: switched openssl branch to use
 7151: 
 7152: - [Tatsuhiro Tsujikawa brought this change]
 7153: 
 7154:   ngtcp2: Build with latest ngtcp2 and ngtcp2_crypto_openssl
 7155:   
 7156:   Closes #4270
 7157: 
 7158: - http2: when marked for closure and wanted to close == OK
 7159:   
 7160:   It could otherwise return an error even when closed correctly if GOAWAY
 7161:   had been received previously.
 7162:   
 7163:   Reported-by: Tom van der Woerdt
 7164:   Fixes #4267
 7165:   Closes #4268
 7166: 
 7167: - RELEASE-NOTES: synced
 7168: 
 7169: - build-openssl: fix build with Visual Studio 2019
 7170:   
 7171:   Reviewed-by: Marcel Raad
 7172:   Contributed-by: osabc on github
 7173:   Fixes #4188
 7174:   Closes #4266
 7175: 
 7176: Kamil Dudka (26 Aug 2019)
 7177: - vauth: return CURLE_AUTH_ERROR on gss_init_sec_context() failure
 7178:   
 7179:   This is a follow-up to https://github.com/curl/curl/pull/3864 .
 7180:   
 7181:   Closes #4224
 7182: 
 7183: Daniel Stenberg (26 Aug 2019)
 7184: - KNOWN_BUGS: USE_UNIX_SOCKETS on Windows
 7185:   
 7186:   Closes #4040
 7187: 
 7188: - quiche: send the HTTP body correctly on callback uploads
 7189:   
 7190:   Closes #4265
 7191: 
 7192: - travis: disable ngtcp2 builds (temporarily)
 7193:   
 7194:   Just too many API changes right now
 7195:   
 7196:   Closes #4264
 7197: 
 7198: - ngtcp2: add support for SSLKEYLOGFILE
 7199:   
 7200:   Closes #4260
 7201: 
 7202: - ngtcp2: improve h3 response receiving
 7203:   
 7204:   Closes #4259
 7205: 
 7206: - ngtcp2: use nghttp3_version()
 7207: 
 7208: - ngtcp2: sync with upstream API changes
 7209:   
 7210:   Assisted-by: Tatsuhiro Tsujikawa
 7211: 
 7212: - [Kyle Abramowitz brought this change]
 7213: 
 7214:   scp: fix directory name length used in memcpy
 7215:   
 7216:   Fix read off end of array due to bad pointer math in getworkingpath for
 7217:   SCP home directory case.
 7218:   
 7219:   Closes #4258

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>