Annotation of embedaddon/curl/CHANGES, revision 1.1

1.1     ! misho       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>