                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 7.70.0 (29 Apr 2020)

Daniel Stenberg (29 Apr 2020)
- RELEASE-NOTES: 7.70.0

- THANKS: synced with the 7.70.0 release

- headers: copyright range fix

- [Rikard Falkeborn brought this change]

  doh: Constify some input pointers
  
  Closes #5306

- nss: check for PK11_CreateDigestContext() returning NULL
  
  ... to avoid crashes!
  
  Reported-by: Hao Wu
  Fixes #5302
  Closes #5303

- travis: bump the wolfssl CI build to use 4.4.0
  
  Closes #5301

- copyright updates: adjust year ranges

Marc Hoersken (26 Apr 2020)
- CI: do not include */ci branches in PR builds
  
  Align Azure Pipelines with GitHub Actions.

Daniel Stenberg (25 Apr 2020)
- runtests: check for the disabled tests relative srcdir
  
  To make it work correctly for out-of-tree builds.
  
  Follow-up to 75e8feb6fb08b
  
  Bug: https://github.com/curl/curl/pull/5288#issuecomment-619346389
  Reported-by: Marcel Raad
  Closes #5297

- runtests: revert commenting out a line I did for debugging
  
  Follow-up to 11091cd4d. It was not meant to be pushed!

- smtp: set auth correctly
  
  Regression since 7.69.0 and 68fb25fa3fcff.
  
  The code wrongly assigned 'from' instead of 'auth' which probably was a
  copy and paste mistake from other code, leading to that auth could
  remain NULL and later cause an error to be returned.
  
  Assisted-by: Eric Sauvageau
  Fixes #5294
  Closes #5295

Marcel Raad (25 Apr 2020)
- lib: clean up whitespace
  
  This fixes CodeFactor warnings.

Daniel Stenberg (25 Apr 2020)
- [Anderson Toshiyuki Sasaki brought this change]

  libssh: avoid options override by configuration files
  
  Previously, options set explicitly through command line options could be
  overridden by the configuration files parsed automatically when
  ssh_connect() was called.
  
  By calling ssh_options_parse_config() explicitly, the configuration
  files are parsed before setting the options, avoiding the options
  override.  Once the configuration files are parsed, the automatic
  configuration parsing is not executed.
  
  Fixes #4972
  Closes #5283
  Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>

- runtests: when <killserver> mentions http, kill http/2 too
  
  Since the http2 test server is a mere proxy that needs to know about the
  dynamic port the HTTP server is using, it too needs to get restarted
  when the http server is killed.
  
  A regression caused by 80d6515.
  
  Fixes #5289
  Closes #5291

- [Yuri Slobodyanyuk brought this change]

  docs: fix two typos
  
  Closes #5292

- [Emil Engler brought this change]

  tests/git: ignore mqttd and port files
  
  Closes #5290

- tests: make runtests check that disabled tests exists
  
  ... and error out if so. Removed '536' from DISABLED as there is no such
  test file.
  
  Closes #5288

- test1154: set a proper name

- select: make Curl_socket_check take timediff_t timeout
  
  Coverity found CID 1461718:
  
  Integer handling issues (CONSTANT_EXPRESSION_RESULT) "timeout_ms >
  9223372036854775807L" is always false regardless of the values of its
  operands. This occurs as the logical second operand of "||".
  
  Closes #5240

- [i-ky brought this change]

  libcurl-multi.3: added missing full stop
  
  Closes #5285

Jay Satiro (22 Apr 2020)
- transfer: Switch PUT to GET/HEAD on 303 redirect
  
  Prior to this change if there was a 303 reply to a PUT request then
  the subsequent request to respond to that redirect would also be a PUT.
  It was determined that was most likely incorrect based on the language
  of the RFCs. Basically 303 means "see other" resource, which implies it
  is most likely not the same resource, therefore we should not try to PUT
  to that different resource.
  
  Refer to the discussions in #5237 and #5248 for more information.
  
  Fixes https://github.com/curl/curl/issues/5237
  Closes https://github.com/curl/curl/pull/5248

Daniel Stenberg (22 Apr 2020)
- lib/mk-ca-bundle: skip empty certs
  
  Reviewed-by: Emil Engler
  Reported-by: Ashwin Metpalli
  Fixes #5278
  Closes #5280

- version: skip idn2_check_version() check and add precaution
  
  A gcc-10's -fanalyze complaint made me spot and do these improvements.
  
  Closes #5281

- RELEASE-NOTES: synced

- [Brian Bergeron brought this change]

  curl.h: update comment typo
  
  "routines with be invoked" -> "routines will be invoked"
  
  Closes #5279

- [Emil Engler brought this change]

  GnuTLS: Don't skip really long certificate fields
  
  Closes #5271

- gnutls: bump lowest supported version to 3.1.10
  
  GnuTLS 3.1.10 added new functions we want to use. That version was
  released on Mar 22, 2013. Removing support for older versions also
  greatly simplifies the code.
  
  Ref: #5271
  Closes #5276

- mqtt: make NOSTATE get within the debug name array

- tests: run the RTSP test server on a dynamic port number
  
  To avoid port collisions.
  
  Closes #5272

- tests: add %NOLISTENPORT and use it
  
  The purpose with this variable is to provide a port number that is
  reasonably likely to not have a listener on the local host so that tests
  can try connect failures against it. It uses port 47 - "reserved"
  according to IANA.
  
  Updated six tests to use it instead of the previous different ports.
  
  Assisted-by: Emil Engler
  Closes #5270

- mqtt: remove code with no purpose
  
  Detected by Coverity. CID 1462319.
  
  "The same code is executed when the condition result is true or false,
  because the code in the if-then branch and after the if statement is
  identical."
  
  Closes #5275

- mqtt: fix Curl_read()  error handling while reading remaining length
  
  Detected by Coverity. CID 1462320.
  
  Closes #5274

- server/tftpd: fix compiler warning
  
  Follow-up from 369ce38ac1d
  Reported-by: Marc Hörsken

- http: free memory when Alt-Used header creation fails due to OOM
  
  Reported-by: James Fuller
  Fixes #5268
  Closes #5269

Daniel Gustafsson (20 Apr 2020)
- lib: fix typos in comments and errormessages
  
  This fixes a few randomly spotted typos in recently merged code, most
  notably one in a userfacing errormessage the schannel code.

Daniel Stenberg (20 Apr 2020)
- tests: run the SOCKS test server on a dynamic port number
  
  Closes #5266

- [Johannes Schindelin brought this change]

  multi-ssl: reset the SSL backend on `Curl_global_cleanup()`
  
  When cURL is compiled with support for multiple SSL backends, it is
  possible to configure an SSL backend via `curl_global_sslset()`, but
  only *before* `curl_global_init()` was called.
  
  If another SSL backend should be used after that, a user might be
  tempted to call `curl_global_cleanup()` to start over. However, we did
  not foresee that use case and forgot to reset the SSL backend in that
  cleanup.
  
  Let's allow that use case.
  
  Fixes #5255
  Closes #5257
  Reported-by: davidedec on github
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- tests: run the TFTP test server on a dynamic port number
  
  Picking a dynamic unused port is better than a fixed to avoid the
  collision risk.
  
  Closes #5265

- mqtt: improve the state machine
  
  To handle PUBLISH before SUBACK and more.
  
  Updated the existing tests and added three new ones.
  
  Reported-by: Christoph Krey
  Bug: https://curl.haxx.se/mail/lib-2020-04/0021.html
  Closes #5246

- runtests: always put test number in servercmd file

- RELEASE-NOTES: synced

- release-notes.pl: fix parsing typo

James Fuller (20 Apr 2020)
- [xquery brought this change]

  ensure all references to ports are replaced by vars

- [xquery brought this change]

  add more alt-svc test coverage

Daniel Stenberg (20 Apr 2020)
- test1247: use http server to get the port number set
  
  Follow-up to 0f5db7b263f

- runtests: use a unix domain socket path with the pid in the name
  
  To make it impossible for test cases to access the file name without
  using the proper variable for the purpose.
  
  Closes #5264

Daniel Gustafsson (19 Apr 2020)
- [Tom brought this change]

  src: Remove C99 constructs to ensure C89 compliance
  
  This fixes the error: 'for' loop initial declaration used outside C99
  mode by declaring the loop increment variable in the beginning of the
  block instead of inside the for loop.
  
  Fixes #5254
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (19 Apr 2020)
- runtests: dummy init the ports variables to avoid warnings
  
  ... and generate something that can help debug test cases.

- [Patrick Monnerat brought this change]

  mime: properly check Content-Type even if it has parameters
  
  New test 669 checks this fix is effective.
  
  Fixes #5256
  Closes #5258
  Reported-by: thanhchungbtc on github

- tests/FILEFORMAT: converted to markdown and extended
  
  Closes #5261

- test1245: make it work with dynamic FTP server port

- test1055: make it work with dynamic FTP port

- test1028: make it run on dynamic FTP server port

- tests: move pingpong server to dynamic listening port
  
  FTP, IMAP, POP3, SMTP and their IPv6 versions are now all on dynamic
  ports
  
  Test 842-845 are unfortunately a bit hard to move over to this concept
  right now and require "default port" still...

- test1056: work with dynamic HTTP ipv6 port

- test1448: work with dynamic HTTP server port

- tests: introduce preprocessed test cases
  
  The runtests script now always performs variable replacement on the
  entire test source file before the test gets executed, and saves the
  updated version in a temporary file (log/test[num]) so that all test
  case readers/servers can use that version (if present) and thus enjoy
  the powers of test case variable substitution.
  
  This is necessary to allow complete port number freedom.
  
  Test 309 is updated to work with a non-fixed port number thanks to this.

- tests: make 2006-2010 handle different port number lengths

- tests: run the sws server on "any port"
  
  Makes the test servers for HTTP and Gopher pop up on a currently unused
  port and runtests adapts to that!
  
  Closes #5247

Marc Hoersken (18 Apr 2020)
- sockfilt: tidy variable naming and data structure in select_ws
  
  This commit does not introduce any logical changes to the code.
  
  Reviewed-by: Jay Satiro and Marcel Raad
  Closes #5238

Daniel Stenberg (17 Apr 2020)
- [Anderson Toshiyuki Sasaki brought this change]

  libssh: Use new ECDSA key types to check known hosts
  
  From libssh 0.9.0, ssh_key_type() returns different key types for ECDSA
  keys depending on the curve.
  
  Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
  Fixes #5252
  Closes #5253

Marcel Raad (17 Apr 2020)
- appveyor: add Unicode winbuild jobs
  
  These are cheap as they don't build tests.
  
  Closes https://github.com/curl/curl/pull/5063

Daniel Stenberg (16 Apr 2020)
- mqttd: s/errno/SOCKERRNO
  
  To behave proper on Windows
  Reported-by: Gisle Vanem
  Bug: https://github.com/curl/curl/commit/5e855bbd18f84a02c951be7cac6188276818cdac#r38507132
  Closes #5241

- buildconf: use find -execdir instead, remove -print and the ares files
  
  Follow-up to 1e41bec96a6e
  
  Suggested-by: Marc Hörsken

- [Alexander V. Tikhonov brought this change]

  buildconf: avoid using tempfile when removing files
  
  Closes #5213

- copyright: bump the copyright year range

- scripts/release-notes.pl: accept colon after the Fixes/Closes keywords

- [JP Mens brought this change]

  docs/MQTT: replace confusing 80 by 75
  
  I was a bit surprised by the `80`: first thought: what's HTTP doing
  here? ;)
  
  Closes #5236

- [Brad King brought this change]

  cmake: Avoid MSVC C4273 warnings in send/recv checks
  
  We use `check_c_source_compiles` to check possible send/recv signatures
  by reproducing the forward declarations from system headers.  On Windows
  the `winsock2.h` header adds dll linkage settings to its forward
  declaration.  If ours does not match the compiler warns:
  
      warning C4273: 'recv': inconsistent dll linkage
  
  Add `WINSOCK_API_LINKAGE` to our test signatures when it is defined so
  that our linkage is consistent with that from `winsock2.h`.
  
  Fixes #4764
  Closes #5232

Jay Satiro (14 Apr 2020)
- KNOWN_BUGS: Add entry 'Blocking socket operations'
  
  - Add threaded resolver cleanup and GSSAPI for FTP to the TODO list of
    known blocking operations.
  
  - New known bugs entry 'Blocking socket operations in non-blocking API'
    that directs to the TODO's list of known blocking operations.
  
  Ref: https://github.com/curl/curl/pull/5214#issuecomment-612488021
  
  Reported-by: Marc Hoersken
  
  Closes https://github.com/curl/curl/pull/5216

Marc Hoersken (14 Apr 2020)
- test2043: use revoked.badssl.com instead of revoked.grc.com
  
  The certificate of revoked.grc.com has expired on 2020-04-13.
  
  Reviewed-by: Jay Satiro
  
  Closes #5233

- sockfilt: fix broken pipe on Windows to be ready in select_ws
  
  Closes #5228

Daniel Stenberg (14 Apr 2020)
- RELEASE-NOTES: synced

- scripts/release-notes: fix duplicate output header

- github/workflow: enable MQTT in the macOS debug build

- azure: add mqtt support to one of the Windows builds

- travis: add mqtt job on Linux

- tests: add four MQTT tests 1190 - 1193

- tests: add the mqtt test server mqttd

- tests: support hex encoded data and mqtt server
  
  The mqtt server is started using a "random" port.

- [Björn Stenberg brought this change]

  mqtt: add new experimental protocol
  
  Closes #5173

- TODO: Consider convenience options for JSON and XML?
  
  Closes #5203

- tool: do not declare functions with Curl_ prefix
  
  To avoid collision risks with private libcurl symbols when linked with
  static versions (or just versions not hiding internal symbols).
  
  Reported-by: hydra3333 on github
  Fixes #5219
  Closes #5234

- [Nathaniel R. Lewis brought this change]

  cmake: add aliases so exported target names are available in tree
  
  Reviewed-by: Brad King
  Closes #5206

- version: increase buffer space for ssl version output
  
  To avoid it getting truncated, especially when several SSL backends are
  built-in.
  
  Reported-by: Gisle Vanem
  Fixes #5222
  Closes #5226

Marc Hoersken (13 Apr 2020)
- cirrus: no longer ignore test 504 which is working again
  
  The test is working again, because TCP blackholing is disabled.

- appveyor: completely disable tests that fail to timeout early
  
  The tests changed from ignored to disabled are tests that are
  about connecting to non-listening socket. On AppVeyor these
  tests are not reliable, because for some unknown reason the
  connect is not timing out before the test time limit is reached.

Daniel Stenberg (13 Apr 2020)
- test1908: avoid using fixed port number in test data
  
  Closes #5225

Jay Satiro (12 Apr 2020)
- [Andrew Kurushin brought this change]

  schannel: Fix blocking timeout logic
  
  - Fix schannel_send for the case when no timeout was set.
  
  Prior to this change schannel would error if the socket was not ready
  to send data and no timeout was set.
  
  This commit is similar to parent commit 89dc6e0 which recently made the
  same change for SOCKS, for the same reason. Basically it was not well
  understood that when Curl_timeleft returns 0 it is not a timeout of 0 ms
  but actually means no timeout.
  
  Fixes https://github.com/curl/curl/issues/5177
  Closes https://github.com/curl/curl/pull/5221

- socks: Fix blocking timeout logic
  
  - Document in Curl_timeleft's comment block that returning 0 signals no
    timeout (ie there's infinite time left).
  
  - Fix SOCKS' Curl_blockread_all for the case when no timeout was set.
  
  Prior to this change if the timeout had a value of 0 and that was passed
  to SOCKET_READABLE it would return right away instead of blocking. That
  was likely because it was not well understood that when Curl_timeleft
  returns 0 it is not a timeout of 0 ms but actually means no timeout.
  
  Ref: https://github.com/curl/curl/pull/5214#issuecomment-612512360
  
  Closes https://github.com/curl/curl/pull/5220

- [Marc Hoersken brought this change]

  gopher: check remaining time left during write busy loop
  
  Prior to this change gopher's blocking code would block forever,
  ignoring any set timeout value.
  
  Assisted-by: Jay Satiro
  Reviewed-by: Daniel Stenberg
  
  Similar to #5220 and #5221
  Closes #5214

Daniel Stenberg (13 Apr 2020)
- [Dirkjan Bussink brought this change]

  gnutls: ensure TLS 1.3 when SRP isn't requested
  
  When SRP is requested in the priority string, GnuTLS will disable
  support for TLS 1.3. Before this change, curl would always add +SRP to
  the priority list, effectively always disabling TLS 1.3 support.
  
  With this change, +SRP is only added to the priority list when SRP
  authentication is also requested. This also allows updating the error
  handling here to not have to retry without SRP. This is because SRP is
  only added when requested and in that case a retry is not needed.
  
  Closes #5223

Marc Hoersken (12 Apr 2020)
- tests/server: add hidden window to gracefully handle WM_CLOSE
  
  Forward Window events as signals to existing signal event handler.

- tests/server: add CTRL event handler for Win32 consoles
  
  Forward CTRL events as signals to existing signal event handler.

- tests/server: move all signal handling routines to util.[ch]
  
  Avoid code duplication to prepare for portability enhancements.

Daniel Stenberg (12 Apr 2020)
- compressed.d: stress that the headers are not modified
  
  Suggested-by: Michael Osipov
  Assisted-by: Jay Satiro
  Bug: https://github.com/curl/curl/issues/5182#issuecomment-611638008
  Closes #5217

Marc Hoersken (11 Apr 2020)
- tests/server/util.c: use curl_off_t instead of long for pid
  
  Avoid potential overflow of huge PIDs on Windows.
  
  Related to #5188
  Assisted-by: Marcel Raad

- tests: use Cygwin/msys PIDs for stunnel and sshd on Windows
  
  Since the Windows versions of both programs would write Windows
  PIDs to their pidfiles which we cannot handle, we need to use
  our known perl.exe Cygwin/msys PID together with exec() in order
  to tie the spawned processes to the existance of our perl.exe
  
  The perl.exe that is executing secureserver.pl and sshserver.pl
  has a Cygwin/msys PID, because it is started inside Cygwin/msys.
  
  Related to #5188

- tests: add Windows compatible pidwait like pidkill and pidterm
  
  Related to #5188

- tests: fix conflict between Cygwin/msys and Windows PIDs
  
  Add 65536 to Windows PIDs to allow Windows specific treatment
  by having disjunct ranges for Cygwin/msys and Windows PIDs.
  
  See also:
  - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
    h=b5e1003722cb14235c4f166be72c09acdffc62ea
  - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵
    h=448cf5aa4b429d5a9cebf92a0da4ab4b5b6d23fe
  
  Replaces #5178
  Closes #5188

Daniel Stenberg (11 Apr 2020)
- RELEASE-NOTES: synced

- release-notes.pl: detect the start of the references in cleanup mode

- Revert "file: on Windows, refuse paths that start with \\"
  
  This reverts commit 1b71bc532bde8621fd3260843f8197182a467ff2.
  
  Reminded-by: Chris Roberts
  Bug: https://curl.haxx.se/mail/archive-2020-04/0013.html
  
  Closes #5215

Jay Satiro (11 Apr 2020)
- lib: fix conversion warnings for SOCKET_WRITABLE/READABLE
  
  - If loss of data may occur converting a timediff_t to time_t and
    the time value is > TIME_T_MAX then treat it as TIME_T_MAX.
  
  This is a follow-up to 8843678 which removed the (time_t) typecast
  from the macros so that conversion warnings could be identified.
  
  Closes https://github.com/curl/curl/pull/5199

- test1148: tolerate progress updates better (again)
  
  - Ignore intermediate progress updates.
  
  - Support locales that use a character other than period as decimal
    separator (eg 100,0%).
  
  test1148 checks that the progress finishes at 100% and has the right
  bar width. Prior to this change the test assumed that the only progress
  reported for such a quick transfer was 100%, however in rare instances
  (like in the CI where transfer time can slow considerably) there may be
  intermediate updates. For example, below is stderrlog1148 from a failed
  CI run with explicit \r and \n added (it is one line; broken up so that
  it's easier to understand).
  
  \r
  \r##################################                                        48.3%
  \r######################################################################## 100.0%
  \n
  
  Closes https://github.com/curl/curl/pull/5194

Marc Hoersken (10 Apr 2020)
- sshserver.pl: use cached Win32 environment check variable

- appveyor: partially revert 3413a110 to keep build without proxy
  
  Ref: #5211 and #4526
  Reported-by: Marcel Raad

- appveyor: ignore failing 'connect to non-listening proxy' tests
  
  Closes #5211

- CI/macos: convert CRLF to LF and align indentation

Daniel Stenberg (9 Apr 2020)
- url: allow non-HTTPS altsvc-matching for debug builds
  
  This is already partly supported but this part was missing.
  Reported-by: James Fuller
  
  Closes #5205

- server/resolve: remove AI_CANONNAME to make macos tell the truth
  
  With this bit set, my mac successfully resolves "ip6-localhost" when in
  fact there is no such host known to my machine! That in turn made test
  241 wrongly execute and fail.
  
  Closes #5202

- runtests: fix warning about using an undefined variable
  
  Follow-up from 4d939ef6ceb2db1

- release-notes: fix the initial reference list output

- github actions: run when pushed to master or */ci + PRs
  
  Avoid double-builds when using "local" branches for PRs. For both macos
  and fuzz jobs.
  
  Closes #5201

- runtests: provide nicer errormsg when protocol "dump" file is empty

- [Gilles Vollant brought this change]

  schannel: support .P12 or .PFX client certificates
  
  Used with curl command line option like this: --cert
  <filename>:<password> --cert-type p12
  
  Closes #5193

- tests: verify split initial HTTP requests with CURL_SMALLREQSEND
  
  test1294: "split request" being when the entire request isn't sent in
  the first go, and the remainder is sent in the PERFORM state. A GET
  request is otherwise not sending anything during PERFORM.
  
  test1295: same kind of split but with POST
  
  Closes #5197

- http: don't consider upload done if the request isn't completely sent off
  
  Fixes #4919
  Closes #5197

- http: allow Curl_add_buffer_send() to do a short first send by force
  
  In a debug build, settting the environment variable "CURL_SMALLREQSEND"
  will make the first HTTP request send not send more bytes than the set
  amount, thus ending up verifying that the logic for handling a split
  HTTP request send works correctly.

- connect: store connection info for QUIC connections
  
  Restores the --head functionality to the curl utility which extracts
  'protocol' that is stored that way.
  
  Reported-by: James Fuller
  Fixes #5196
  Closes #5198

- tests/README: update the port numbers list
  
  Since the pipelining server is long gone.
  Reported-by: James Fuller

- select: remove typecast from SOCKET_WRITABLE/READABLE macros
  
  So that they don't hide conversions-by-mistake
  
  Reviewed-by: Jay Satiro
  Closes #5190

- CURLOPT_WRITEFUNCTION.3: add inline example and new see-also
  
  Closes #5192

- release-notes: output trailing references sorted numerically

- cleanup: correct copyright year range on a few files

- configure: remove use of -vec-report0 from CFLAGS with icc
  
  ... as it apparently isn't (always) supported.
  Reported-by: Alain Miniussi
  Fixes #5096
  Closes #5191

- warnless: remove code block for icc that didn't work
  
  Reported-by: Alain Miniussi
  Fixes #5096

Marc Hoersken (6 Apr 2020)
- dist: add missing setup-win32.h
  
  Follow up to d820224b8b

Daniel Stenberg (6 Apr 2020)
- RELEASE-NOTES: synced

- scripts/release-notes.pl: add helper script for RELEASE-NOTES maintenance
  
  This script helps putting entries in the RELEASE-NOTES using a coherent
  style and sorting with a minimal human editing effort - as long as the
  first line in the commit message is good enough! There's a short howto
  at the top of the file.

- [Dennis Felsing brought this change]

  configure: don't check for Security.framework when cross-compiling
  
  Since it checks for the local file, not the cross-compiled one.
  
  Closes #5189

- TODO: Option to make -Z merge lined based outputs on stdout
  
  Closes #5175

- lib: never define CURL_CA_BUNDLE with a getenv
  
  - it breaks the build (since 6de756c9b1de34b7a1)
  - it's not documented and not consistent across platforms
  - the curl tool does that getenv magic
  
  Bug: https://github.com/curl/curl/commit/6de756c#r38127030
  Reported-by: Gisle Vanem
  
  Closes #5187

Marc Hoersken (5 Apr 2020)
- lib670: use the same Win32 API check as all other lib tests

- appveyor: use random test server ports based upon APPVEYOR_API_URL
  
  Avoid conflicts of test server ports with AppVeyor API on localhost.
  
  Closes #5034

- appveyor: sort builds by type and add two new variants
  
  Related to #5034 and #5063

- appveyor: show failed tests in log even if test is ignored
  
  And print API response with newline only if there is one

- appveyor: turn disabled tests into ignored result tests

Daniel Stenberg (5 Apr 2020)
- KNOWN_BUGS: fixed "USE_UNIX_SOCKETS on Windows"
  
  Fixed with #5170 (commit 23a870f2fd041278)

- test1566: verify --etag-compare that gets a 304 back
  
  Verifies the fix in #5183
  
  Closes #5186

- [Kwon-Young Choi brought this change]

  CURLINFO_CONDITION_UNMET: return true for 304 http status code
  
  In libcurl, CURLINFO_CONDITION_UNMET is used to avoid writing to the
  output file if the server did not transfered a file based on time
  condition. In the same manner, getting a 304 HTTP response back from the
  server, for example after passing a custom If-Match-* header, also
  fulfill this condition.
  
  Fixes #5181
  Closes #5183

- [Kwon-Young Choi brought this change]

  curl: allow both --etag-compare and --etag-save with same file name
  
  This change inverse the order of processing for the --etag-compare and
  --etag-save option to process first --etag-compare. This in turn allows
  to use the same file name to compare and save an etag.
  
  The original behavior of not failing if the etag file does not exists is
  conserved.
  
  Fixes #5179
  Closes #5180

Viktor Szakats (4 Apr 2020)
- windows: enable UnixSockets with all build toolchains
  
  Extend existing unix socket support in Windows builds to be
  enabled for all toolchain vendors or versions. (Previously
  it was only supported with certain MSVC versions + more recent
  Windows 10 SDKs)
  
  Ref: https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
  Ref: https://github.com/curl/curl/issues/5162
  Closes: https://github.com/curl/curl/pull/5170

Daniel Stenberg (4 Apr 2020)
- KNOWN_BUGS: Store TLS context per transfer instead of per connection
  
  Closes #5102

Marc Hoersken (3 Apr 2020)
- sockfilt: remove redundancy in timeout handling
  
  And update other logmsg output in select_ws on Windows.

- sockfilt: fix handling of ready closed sockets on Windows
  
  Replace the incomplete workaround regarding FD_CLOSE
  only signalling once by instead doing a pre-check with
  standard select and storing the result for later use.
  
  select keeps triggering on closed sockets on Windows while
  WSAEventSelect fires only once with data still available.
  By doing the pre-check we do not run in a deadlock
  due to waiting forever for another FD_CLOSE event.

- sockfilt: fix race-condition of waiting threads and event handling
  
  Fix race-condition of waiting threads finishing while events are
  already being processed which lead to invalid or skipped events.
  
  Use mutex to check for one event at a time or do post-processing.
  In addition to mutex-based locking use specific event as signal.
  
  Closes #5156

Daniel Stenberg (2 Apr 2020)
- [Leo Neat brought this change]

  CI-fuzz: increase fuzz time to 40 minutes
  
  Closes #5174

Marc Hoersken (2 Apr 2020)
- CI: increase Azure Pipelines timeouts due to performance issues
  
  The current demand on Azure negatively impacts the CI performance.

- runtests.pl: log host OS as detected by Perl environment

