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

                                  Changelog

Version 7.54.0 (19 Apr 2017)

Daniel Stenberg (19 Apr 2017)
- THANKS: add contributors from 7.54.0 release notes

- RELEASE-NOTES: curl 7.54.0

Marcel Raad (18 Apr 2017)
- nss: fix MinGW compiler warnings
  
  This fixes 3 warnings issued by MinGW:
  1. PR_ImportTCPSocket actually has a paramter of type PROsfd instead of
  PRInt32, which is 64 bits on Windows. Fixed this by including the
  corresponding header file instead of redeclaring the function, which is
  supported even though it is in the private include folder. [1]
  2. In 64-bit mode, size_t is 64 bits while CK_ULONG is 32 bits, so an explicit
  narrowing cast is needed.
  3. Curl_timeleft returns time_t instead of long since commit
  21aa32d30dbf319f2d336e0cb68d3a3235869fbb.
  
  [1] https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/PR_ImportTCPSocket
  
  Closes https://github.com/curl/curl/pull/1393

Daniel Stenberg (18 Apr 2017)
- [Jay Satiro brought this change]

  TLS: Fix switching off SSL session id when client cert is used
  
  Move the sessionid flag to ssl_primary_config so that ssl and proxy_ssl
  will each have their own sessionid flag.
  
  Regression since HTTPS-Proxy support was added in cb4e2be. Prior to that
  this issue had been fixed in 247d890, CVE-2016-5419.
  
  Bug: https://github.com/curl/curl/issues/1341
  Reported-by: lijian996@users.noreply.github.com
  
  The new incarnation of this bug is called CVE-2017-7468 and is documented
  here: https://curl.haxx.se/docs/adv_20170419.html

- [David Benjamin brought this change]

  openssl: don't try to print nonexistant peer private keys
  
  X.509 certificates carry public keys, not private keys. Fields
  corresponding to the private half of the key will always be NULL.
  
  Closes #1425

- [David Benjamin brought this change]

  openssl: fix thread-safety bugs in error-handling
  
  ERR_error_string with NULL parameter is not thread-safe. The library
  writes the string into some static buffer. Two threads doing this at
  once may clobber each other and run into problems. Switch to
  ERR_error_string_n which avoids this problem and is explicitly
  bounds-checked.
  
  Also clean up some remnants of OpenSSL 0.9.5 around here. A number of
  comments (fixed buffer size, explaining that ERR_error_string_n was
  added in a particular version) date to when ossl_strerror tried to
  support pre-ERR_error_string_n OpenSSLs.
  
  Closes #1424

- [David Benjamin brought this change]

  openssl: make SSL_ERROR_to_str more future-proof
  
  Rather than making assumptions about the values, use a switch-case.
  
  Closes #1424

- [Daniel Gustafsson brought this change]

  code: fix typos and style in comments
  
  A few random typos, and minor whitespace cleanups, found in comments
  while reading code.
  
  Closes #1423

Marcel Raad (17 Apr 2017)
- extern-scan.pl: strip trailing CR
  
  This makes test 1135 pass with CRLF checkouts.
  
  Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166
  Closes https://github.com/curl/curl/pull/1422

- configure.ac: ignore CR after version numbers
  
  Ignore everything after the version numbers in LIBCURL_VERSION and
  LIBCURL_VERSION_NUM to ged rid of the extra CR character.
  This makes tests 1022 and 1023 pass on Linux with a CRLF checkout.
  
  Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166
  Closes https://github.com/curl/curl/pull/1422

- .gitattributes: force shell scripts to LF
  
  Bash on Linux errors out on CR characters.
  This makes tests 1221 and 1222 pass on Linux with a CRLF checkout.
  
  Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166
  Closes https://github.com/curl/curl/pull/1422

- unit1303: fix compiler warning
  
  MinGW-w64 complains:
  warning: conversion to 'long int' from 'time_t {aka long long int}' may
  alter its value [-Wconversion]
  Fix this by using the correct type.

Daniel Stenberg (16 Apr 2017)
- RELEASE-NOTES: synced with 1451271e0

- [Larry Stefani brought this change]

  http2: fix handle leak in error path
  
  Add missing newhandle free call in push_promise().
  
  Closes #1416

- [Larry Stefani brought this change]

  mbedtls: fix memory leak in error path
  
  Add missing our_ssl_sessionid free call in mbed_connect_step3().
  
  Closes #1417

Marcel Raad (15 Apr 2017)
- curl-compilers.m4: turn implicit function declarations into errors
  
  This adds -Werror-implicit-function-declaration for GCC 2.95+ so that
  these errors are visible at the point where they occur instead of only
  at link time.
  Implicit function declarations are illegal in C99 and C++ anyway, and
  the same warning has been turned into an error for ICC in commit
  3072c5b8a127057aa922b7c51051bbb4a630b091.
  
  Ref: https://gcc.gnu.org/onlinedocs/gcc-2.95.2/gcc_2.html#SEC8
  Ref: https://curl.haxx.se/mail/lib-2017-04/0001.html
  Closes https://github.com/curl/curl/pull/1419

- test1541: also test for CURL_PULL_WS2TCPIP_H
  
  Ref: https://github.com/curl/curl/issues/1408
  Closes https://github.com/curl/curl/pull/1412

- tests/server/util: prefer <poll.h> over <sys/poll.h>
  
  Follow-up to aa573c3c55cda72ec5ef677d87f6f46a53385f0c
  
  Ref: https://github.com/curl/curl/pull/1406

Daniel Stenberg (11 Apr 2017)
- Curl_expire_latest: ignore already expired timers
  
  If the existing timer is still in there but has expired, the new timer
  should be added.
  
  Reported-by: Rainer Canavan
  Bug: https://curl.haxx.se/mail/lib-2017-04/0030.html
  Closes #1407

- system.h: fix mingw section
  
  Reported-by: Marcel Raad
  Fixes #1408
  Closes #1409

Marcel Raad (11 Apr 2017)
- polarssl: unbreak build with versions < 1.3.8
  
  ssl_session_init was only introduced in version 1.3.8, the penultimate
  version. The function only contains a memset, so replace it with that.
  
  Suggested-by: Jay Satiro
  Fixes https://github.com/curl/curl/issues/1401

- poll: prefer <poll.h> over <sys/poll.h>
  
  The POSIX standard location is <poll.h>. Using <sys/poll.h> results in
  warning spam when using the musl standard library.
  
  Closes https://github.com/curl/curl/pull/1406

Daniel Stenberg (10 Apr 2017)
- [Alexis La Goutte brought this change]

  openssl: fix this statement may fall through [-Wimplicit-fallthrough=]
  
  Closes #1402

Kamil Dudka (10 Apr 2017)
- nss: load CA certificates even with --insecure
  
  ... because they may include an intermediate certificate for a client
  certificate and the intermediate certificate needs to be presented to
  the server, no matter if we verify the peer or not.
  
  Reported-by: thraidh
  Closes #851

Daniel Stenberg (10 Apr 2017)
- RELEASE-NOTES: synced with f9d1e9a27f7e1

Dan Fandrich (10 Apr 2017)
- libcurl-thread.3: fixed a bad macro that caused test 1140 to fail

Daniel Stenberg (9 Apr 2017)
- libcurl-thread.3: also mention threaded-resolver
  
  Reported-by: Alex Bligh
  Bug: https://curl.haxx.se/mail/lib-2017-04/0044.html

- .github/stale.yml: enable the stale bot
  
  Issues and PRs with no activity for 180 days will get marked as stale,
  and if no further activity happens within 14 more days, the issue gets
  closed.
  
  This follows our established policy of not letting stalled bugs "get in
  the way": https://curl.haxx.se/docs/bugs.html#Closing_off_stalled_bugs
  
  Closes #1398

Jay Satiro (8 Apr 2017)
- CURLINFO_SCHEME.3: fix variable type
  
  - Change documented param type to char ** from incorrect long *.

Marcel Raad (8 Apr 2017)
- INSTALL.md: fix secure transport configure arguments
  
  --without-ssl is needed instead of --with-winssl.

- vtls: fix unreferenced variable warnings
  
  ... by moving the variables into the correct #ifdef block.

Daniel Stenberg (7 Apr 2017)
- BUGS: "Bugs in old versions"

- system.h: add section for tcc
  
  Closes #1397

Marcel Raad (7 Apr 2017)
- schannel: fix compiler warnings
  
  When UNICODE is not defined, the Curl_convert_UTF8_to_tchar macro maps
  directly to its argument. As it is declared as a pointer to const and
  InitializeSecurityContext expects a pointer to non-const, both MSVC and MinGW
  issue a warning about implicitly casting away the const. Fix this by declaring
  the variables as pointers to non-const.
  
  Closes https://github.com/curl/curl/pull/1394

- [Isaac Boukris brought this change]

  sspi: print out InitializeSecurityContext() error message
  
  Reported-by: Carsten (talksinmath)
  
  Fixes #1384
  Closes #1395

- gtls: fix compiler warning
  
  Curl_timeleft returns time_t instead of long since commit
  21aa32d30dbf319f2d336e0cb68d3a3235869fbb.

Daniel Stenberg (6 Apr 2017)
- test1606: verify speedcheck

- low_speed_limit: improved function for longer time periods
  
  Previously, periods of fast speed between periods of slow speed would
  not count and could still erroneously trigger a timeout.
  
  Reported-by: Paul Harris
  Fixes #1345
  Closes #1390

- system.h: set sizeof long to 4 on "default 32 bit" systems
  
  Triggered a test failure on test 1541 for the build known as
  "Linux 4.4 i686 tcc 0.9.26 glibc 2.20"

Marcel Raad (6 Apr 2017)
- nss: fix build after e60fe20fdf94e829ba5fce33f7a9d6c281149f7d
  
  Curl_llist_alloc is now Curl_llist_init.
  
  Closes https://github.com/curl/curl/pull/1391

Daniel Stenberg (6 Apr 2017)
- INSTALL.cmake: more problems
  
  and mention specific issues where they are discussed

- test1541: ignore the curl_off_t variable type name comparison
  
  ... the sizes and the formatting strings are what's really important and
  avoids problems with int64_t vs "long long".
  
  Bug: https://curl.haxx.se/mail/lib-2017-04/0019.html

- Revert "configure: prefer 'long long' to int64_t for curl_off_t"
  
  This reverts commit 81284374bf3c670d2050f8562edeb69f060b07cc.
  
  Due to mingw32 brekage.

Marcel Raad (5 Apr 2017)
- tool_operate: fix MinGW compiler warning
  
  MinGW complains:
  tool_operate.c:197:15: error: comparison is always true due to limited range
  of data type [-Werror=type-limits]
  
  Fix this by only doing the comparison if 'long' is large enough to hold the
  constant it is compared with.
  
  Closes https://github.com/curl/curl/pull/1378

- tool_operate: move filetime code to its own function
  
  Ref: https://github.com/curl/curl/pull/1378

Daniel Stenberg (5 Apr 2017)
- configure: prefer 'long long' to int64_t for curl_off_t
  
  Since it is a native type and it makes it less complicated to find a
  matching one in system.h
  
  Bug: https://curl.haxx.se/mail/lib-2017-04/0010.html
  Reported-by: Dan Fandrich
  
  Closes #1388

- [Dániel Bakai brought this change]

  tests: added test for Curl_splaygetbest to unit1309
  
  This checks the new behavior of Curl_splaygetbest, so that the smallest
  node not larger than the key is removed, and FIFO behavior is kept even
  when there are multiple nodes with the same key.
  
  Closes #1358

- [Dániel Bakai brought this change]

  multi: fix queueing of pending easy handles
  
  Multi handles repeatedly invert the queue of pending easy handles when
  used with CURLMOPT_MAX_TOTAL_CONNECTIONS. This is caused by a multistep
  process involving Curl_splaygetbest and violates the FIFO property of
  the multi handle.
  This patch fixes this issue by redefining the "best" node in the
  context of timeouts as the "smallest not larger than now", and
  implementing the necessary data structure modifications to do this
  effectively, namely:
   - splay nodes with the same key are now stored in a doubly-linked
     circular list instead of a non-circular one to enable O(1)
     insertion to the tail of the list
   - Curl_splayinsert inserts nodes with the same key to the tail of
     the same list
   - in case of multiple nodes with the same key, the one on the head of
     the list gets selected

Marcel Raad (4 Apr 2017)
- tool: fix Windows Unicode build
  
  ... by explicitly calling the ANSI versions of Windows API functions where
  required.

Daniel Stenberg (4 Apr 2017)
- [Martin Kepplinger brought this change]

  curl_sasl: declare mechtable static
  
  struct mechtable is only used locally here. It can be declared static.

Jay Satiro (4 Apr 2017)
- [Antti Hätälä brought this change]

  url: don't free postponed data on connection reuse
  
  - Don't free postponed data on a connection that will be reused since
    doing so can cause data loss when pipelining.
  
  Only Windows builds are affected by this.
  
  Closes https://github.com/curl/curl/issues/1380

Daniel Stenberg (4 Apr 2017)
- RELEASE-NOTES: synced with 4f2e348f9b42c69c480

- hash: move key into hash struct to reduce mallocs
  
  This removes one tiny malloc for each hash struct allocated. In a simple
  case like "curl localhost", this save three mallocs.
  
  Closes #1376

- llist: replace Curl_llist_alloc with Curl_llist_init
  
  No longer allocate the curl_llist head struct for lists separately.
  
  Removes 17 (15%) tiny allocations in a normal "curl localhost" invoke.
  
  closes #1381

Jay Satiro (4 Apr 2017)
- easy: silence compiler warning
  
  Safe to silence warning adding time delta of poll, which can trigger on
  Windows since sizeof time_t > sizeof long.
  
  warning C4244: '+=' : conversion from 'time_t' to 'long', possible loss
  of data

Daniel Stenberg (4 Apr 2017)
- [Richlv brought this change]

  docs: minor typo in write-out.d
  
  Closes #1382

- include: curl/system.h is a run-time version of curlbuild.h
  
  system.h is aimed to replace curlbuild.h at a later point in time when
  we feel confident system.h works sufficiently well.
  
  curl/system.h is currently used in parallel with curl/curlbuild.h
  
  curl/system.h determines a data sizes, data types and include file
  status based on available preprocessor defines instead of getting
  generated at build-time. This, in order to avoid relying on a build-time
  generated file that makes it complicated to do 32 and 64 bit bields from
  the same installed set of headers.
  
  Test 1541 verifies that system.h comes to the same conclusion that
  curlbuild.h offers.
  
  Closes #1373

- multi: make curl_multi_wait avoid malloc in the typical case
  
  When only a few additional file descriptors are used, avoid the malloc.
  
  Closes #1377

Marcel Raad (3 Apr 2017)
- tests/server/util: remove in6addr_any for recent MinGW
  
  In ancient MinGW versions, in6addr_any was declared as extern, but not
  defined. Because of that, 22a0c57746ae12506b1ba0f0fafffd26c1907d6a added
  definitions for in6addr_any when compiling with MinGW. The bug was fixed in
  w32api version 3.6 from 2006, so this workaround is not needed anymore for
  recent versions.
  
  This fixes the following MinGW-w64 warnings because the MinGW-w64 version of
  IN6ADDR_ANY_INIT has the two additional braces inside the macro:
  util.c:59:14: warning: braces around scalar initializer
  util.c:59:40: warning: excess elements in scalar initializer
  
  Ref: https://sourceforge.net/p/mingw/mingw-org-wsl/ci/e4803e0da25c57ae1ad0fa75ae2b7182ff7fa339/tree/w32api/ChangeLog
  Closes https://github.com/curl/curl/pull/1379

Daniel Stenberg (3 Apr 2017)
- docs: added examples for CURLINFO_FILETIME.3 and CURLOPT_FILETIME.3

Jay Satiro (31 Mar 2017)
- fail-early.d: fix typos

- docs: Explain --fail-early does not imply --fail
  
  Closes https://github.com/curl/curl/pull/1375

Daniel Stenberg (1 Apr 2017)
- telnet: (win32) fix read callback return variable
  
  telnet.c(1427,21): warning: comparison of constant 268435456 with
  expression of type 'CURLcode' is always false
  
  telnet.c(1433,21): warning: comparison of constant 268435457 with
  expression of type 'CURLcode' is always false
  
  Reviewed-by: Jay Satiro
  Reported-by: Gisle Vanem
  Bug: https://github.com/curl/curl/issues/1225#issuecomment-290340890
  
  Closes #1374

- CTestConfig.cmake: removed, unused

- libcurl.def: removed, unused

- docs/index.html: removed, was not shipped anyway

- dist: add missing files to the tarball

Peter Wu (30 Mar 2017)
- cmake: fix build with cmake 2.8.12.2
  
  For some reason, CMake 2.8.12.2 did not expand the list argument in a
  single DEPENDS argument. Remove the quotes, so it gets expanded into
  multiple arguments for add_custom_command and add_custom_target.
  
  Fixes https://github.com/curl/curl/issues/1370
  Closes #1372

Marcel Raad (30 Mar 2017)
- ssh: fix narrowing conversion warning
  
  'left' is used as time_t but declared as long.
  MinGW complains:
  error: conversion to 'long int' from 'time_t {aka long long int}' may alter
  its value [-Werror=conversion]
  Changed the declaration to time_t.

- http2: silence unused parameter warnings
  
  In release mode, MinGW complains:
  error: unused parameter 'lib_error_code' [-Werror=unused-parameter]

Daniel Stenberg (30 Mar 2017)
- [Hanno Böck brought this change]

  curl: fix callback functions to match prototype
  
  The function tool_debug_cb doesn't match curl_debug_callback in curl.h
  (unsigned vs. signed char* for 3rd param).
  
  Bug: https://curl.haxx.se/mail/lib-2017-03/0120.html

- [Alexis La Goutte brought this change]

  gcc7: fix ‘*’ in boolean context, suggest ‘&&’ instead [-Wint-in-bool-context]
  
  Closes #1371

Marcel Raad (30 Mar 2017)
- schannel: fix unused variable warning
  
  If CURL_DISABLE_VERBOSE_STRINGS is defined, hostname is not used in
  schannel_connect_step3.

- connect: fix unreferenced parameter warning
  
  When CURL_DISABLE_VERBOSE_STRINGS is defined, the reason parameter in
  Curl_conncontrol is not used as the infof macro expands to nothing.

- select: use correct SIZEOF_ constant
  
  At least under Windows, there is no SIZEOF_LONG, so it evaluates to 0 even
  though sizeof(int) == sizeof(long). This should probably have been
  CURL_SIZEOF_LONG, but the type of timeout_ms changed from long to time_t
  anyway.
  This triggered MSVC warning C4668 about implicitly replacing undefined
  macros with '0'.
  
  Closes https://github.com/curl/curl/pull/1362

Daniel Stenberg (30 Mar 2017)
- cmake: add cmake file in docs/libcurl/opts/ to dist

- cmake: add more missing files to the dist

- docs/Makefile.am: include CMakeLists.txt in the dist tarball

Marcel Raad (29 Mar 2017)
- NTLM: check for features with #ifdef instead of #if
  
  Feature defines are normally checked with #ifdef instead of #if in the rest of
  the codebase. Additionally, some compilers warn when a macro is implicitly
  evaluated to 0 because it is not defined, which was the case here.
  
  Ref: https://github.com/curl/curl/pull/1362#discussion_r108605101
  Closes https://github.com/curl/curl/pull/1367

Daniel Stenberg (29 Mar 2017)
- [Hanno Böck brought this change]

  curl: fix callback argument inconsistency
  
  As you can see the callback definition uses a char* for the first
  argument, while the function uses a void*.
  
  URL: https://curl.haxx.se/mail/lib-2017-03/0116.html

- RELEASE-NOTES: synced with 556c51a2df

- [madblobfish brought this change]

  KNOWN_BUGS: typo
  
  Closes #1364

- [Maksim Stsepanenka brought this change]

  make: use the variable MAKE for recursive calls
  
  Closes #1366

- conncache: make hashkey avoid malloc
  
  ... to make it much faster. Idea developed with primepie on IRC.
  
  Closes #1365

Kamil Dudka (28 Mar 2017)
- http: do not treat FTPS over CONNECT as HTTPS
  
  If we use FTPS over CONNECT, the TLS handshake for the FTPS control
  connection needs to be initiated in the SENDPROTOCONNECT state, not
  the WAITPROXYCONNECT state.  Otherwise, if the TLS handshake completed
  without blocking, the information about the completed TLS handshake
  would be saved to a wrong flag.  Consequently, the TLS handshake would
  be initiated in the SENDPROTOCONNECT state once again on the same
  connection, resulting in a failure of the TLS handshake.  I was able to
  observe the failure with the NSS backend if curl ran through valgrind.
  
  Note that this commit partially reverts curl-7_21_6-52-ge34131d.

Daniel Stenberg (28 Mar 2017)
- pause: handle mixed types of data when paused
  
  When receiving chunked encoded data with trailers, and the write
  callback returns PAUSE, there might be both body and header to store to
  resend on unpause. Previously libcurl returned error for that case.
  
  Added test case 1540 to verify.
  
  Reported-by: Stephen Toub
  Fixes #1354
  Closes #1357

Jay Satiro (28 Mar 2017)
- [Isaac Boukris brought this change]

  http: Fix proxy connection reuse with basic-auth
  
  When using basic-auth, connections and proxy connections
  can be re-used with different Authorization headers since
  it does not authenticate the connection (like NTLM does).
  
  For instance, the below command should re-use the proxy
  connection, but it currently doesn't:
  curl -v -U alice:a -x http://localhost:8181 http://localhost/
    --next -U bob:b -x http://localhost:8181 http://localhost/
  
  This is a regression since refactoring of ConnectionExists()
  as part of: cb4e2be7c6d42ca0780f8e0a747cecf9ba45f151
  
  Fix the above by removing the username and password compare
  when re-using proxy connection at proxy_info_matches().
  
  However, this fix brings back another bug would make curl
  to re-print the old proxy-authorization header of previous
  proxy basic-auth connection because it wasn't cleared.
  
  For instance, in the below command the second request should
  fail if the proxy requires authentication, but would succeed
  after the above fix (and before aforementioned commit):
  curl -v -U alice:a -x http://localhost:8181 http://localhost/
    --next -x http://localhost:8181 http://localhost/
  
  Fix this by clearing conn->allocptr.proxyuserpwd after use
  unconditionally, same as we do for conn->allocptr.userpwd.
  
  Also fix test 540 to not expect digest auth header to be
  resent when connection is reused.
  
  Signed-off-by: Isaac Boukris <iboukris@gmail.com>
  
  Closes https://github.com/curl/curl/pull/1350

- openssl: exclude DSA code when OPENSSL_NO_DSA is defined
  
  - Fix compile errors that occur in openssl.c when OpenSSL lib was
    built without DSA support.
  
  Bug: https://github.com/curl/curl/issues/1361
  Reported-by: neheb@users.noreply.github.com

- examples/fopen: checksrc compliance

Marcel Raad (28 Mar 2017)
- schannel: fix variable shadowing warning
  
  No need to redeclare the variable.

- multi: fix MinGW-w64 compiler warnings
  
  error: conversion to 'long int' from 'time_t {aka long long int}' may alter
  its value [-Werror=conversion]

- .gitattributes: turn off CRLF for *.am
  
  If Makefile.am uses CRLF, buildconf in a Windows checkout fails with:
  ".ibtoolize: error: AC_CONFIG_MACRO_DIRS([m4]) conflicts with
  ACLOCAL_AMFLAGS=-I m4"

Daniel Stenberg (26 Mar 2017)
- [klemens brought this change]

  spelling fixes
  
  Closes #1356

- curl: check for end of input in writeout backslash handling
  
  Reported-by: Brian Carpenter
  
  Added test 1442 to verify

Marcel Raad (24 Mar 2017)
- tests/README: make "Run" section foolproof
  
  curl must be built before building the tests.
  
  Closes https://github.com/curl/curl/pull/1352

Daniel Stenberg (23 Mar 2017)
- openssl: fix comparison between signed and unsigned integer expressions

Marcel Raad (23 Mar 2017)
- [Edward Kimmel brought this change]

  asiohiper: make sure socket is open in event_cb
  
  Send curl_socket_t to event_cb and make sure it hasn't been closed yet.
  
  Closes https://github.com/curl/curl/pull/1318

Dan Fandrich (23 Mar 2017)
- openssl: made the error table static const

Jay Satiro (23 Mar 2017)
- openssl: fall back on SSL_ERROR_* string when no error detail
  
  - If SSL_get_error is called but no extended error detail is available
    then show that SSL_ERROR_* as a string.
  
  Prior to this change there was some inconsistency in that case: the
  SSL_ERROR_* code may or may not have been shown, or may have been shown
  as unknown even if it was known.
  
  Ref: https://github.com/curl/curl/issues/1300
  
  Closes https://github.com/curl/curl/pull/1348

Dan Fandrich (23 Mar 2017)
- mkhelp: disable compression if the perl gzip module is unavailable
  
  This is nowadays included with the base perl distribution, but wasn't
  prior to about perl 5.14

Daniel Stenberg (23 Mar 2017)
- [Anders Roxell brought this change]

  tests/README: mention nroff for --manual tests
  
  Signed-off-by: Anders Roxell <anders.roxell@gmail.com>
  
  Closes #1342

- CURLINFO_PRIMARY_IP.3: add example

- travis: run tests-nonflaky instead of tests-full

- make: introduce 'test-nonflaky' target
  
  Running this in the root build dir will invoke the test suite to only
  run tests not marked as 'flaky'.

- test2033: flaky

Jay Satiro (21 Mar 2017)
- [Ales Mlakar brought this change]

  mbedtls: add support for CURLOPT_SSL_CTX_FUNCTION
  
  Ref: https://curl.haxx.se/mail/lib-2017-02/0097.html
  
  Closes https://github.com/curl/curl/pull/1272

Peter Wu (21 Mar 2017)
- cmake: add support for building HTML and PDF docs
  
  Note that for some reason there is this warning (that also exists with
  autotools, added since curl-7_15_1-94-ga718cb05f):
  
      docs/libcurl/curl_multi_socket_all.3:1: can't open `man3/curl_multi_socket.3': No such file or directory
  
  Additionally, adjust the roffit --mandir option to support creating
  links when doing out-of-tree builds.
  
  Ref: https://github.com/curl/curl/pull/1288

- cmake: build manual pages (including curl.1)
  
  Also make Perl mandatory to allow building the docs.
  
  While CMakeLists.txt could probably read the list of manual pages from
  Makefile.am, actually putting those in CMakeLists.txt is cleaner so that
  is what is done here.
  
  Fixes #1230
  Ref: https://github.com/curl/curl/pull/1288

- docs: split file lists into Makefile.inc
  
  For easier sharing with CMake. The contents were reformatted to use
  two-space indent and expanded tabs (matching lib/Makefile.common).
  
  Ref: https://github.com/curl/curl/pull/1288

Daniel Stenberg (21 Mar 2017)
- examples: comment typos in http2 examples

- RELEASE-NOTES: typo

- RELEASE-NOTES: synced with 6e0f26c8a8c28df

- multi: fix streamclose() crash in debug mode
  
  The code would refer to the wrong data pointer. Only debug builds do
  this - for verbosity.
  
  Reported-by: zelinchen@users.noreply.github.com
  Fixes #1329

- CONTRIBUTE: mention referring to github issues in commit msgs

Dan Fandrich (20 Mar 2017)
- runtests.pl: fixed display of the Gopher IPv6 port number

- tests: fixed the documented test server port numbers

- test714/5: added HTTP as a required feature
  
  These tests use an HTTP proxy so require that curl be built with HTTP
  support.

- tests: strip more options from non-HTTP --libcurl tests
  
  The CURLOPT_USERAGENT and CURLOPT_MAXREDIRS options are only set if HTTP
  support is available, so ignore them in tests where HTTP is not
  guaranteed.

Jay Satiro (18 Mar 2017)
- [Palo Markovic brought this change]

  darwinssl: fix typo in variable name
  
  Broken a week ago in 6448f98.
  
  Closes https://github.com/curl/curl/pull/1337

- tool_operate: Fix showing HTTPS-Proxy options on CURLE_SSL_CACERT
  
  - Show the HTTPS-proxy options on CURLE_SSL_CACERT if libcurl was built
    with HTTPS-proxy support.
  
  Prior to this change those options were shown only if an HTTPS-proxy was
  specified by --proxy, but that did not take into account environment
  variables such as http_proxy, https_proxy, etc. Follow-up to e1187c4.
  
  Bug: https://github.com/curl/curl/issues/1331
  Reported-by: Nehal J Wani

- CURLINFO_LOCAL_PORT.3: fix typo

Daniel Stenberg (16 Mar 2017)
- CURLINFO_LOCAL_PORT.3: added example

- SSLCERTS.md: mention HTTPS proxies and their separate options

- BINDINGS: a Delphi binding

- KNOWN_BUGS: remove libidn related issue
  
  ... as we no longer use libidn

Dan Fandrich (14 Mar 2017)
- build: removed redundant DEPENDENCIES from makefiles

Daniel Stenberg (13 Mar 2017)
- [Sylvestre Ledru brought this change]

  Improve code readbility
  
  ... by removing the else branch after a return, break or continue.
  
  Closes #1310

Jay Satiro (13 Mar 2017)
- [Anatol Belski brought this change]

  winbuild: add basic support for OpenSSL 1.1.x
  
  - Auto-detect OpenSSL 1.1 libs
  
  Closes https://github.com/curl/curl/pull/1322

Daniel Stenberg (13 Mar 2017)
- RELEASE-NOTES: synced with c25e0761d0fc49c4

- make: regenerate docs/curl.1 by runinng make in docs
  
  ... previously, docs/ was only a dist subdir, now also a build subdir.
  
  Reported-by: Dan Fandrich
  Bug: https://curl.haxx.se/mail/lib-2017-03/0017.html

Dan Fandrich (12 Mar 2017)
- test1440/1: depend on well-defined file: behaviour
  
  Depend on the known behaviour of URLs for nonexistent files rather than
  the undefined behaviour of URLs for directories (which fails on Windows).
  The test isn't about file: URLs at all, so the URL used doesn't really
  matter.

- tests: clear the SSL_CERT_FILE variable on --libcurl tests
  
  Otherwise, the contents will end up in the output and fail the
  verification.

- test1287: added verbose logs keyword

- tool_writeout: fixed a buffer read overrun on --write-out
  
  If a % ended the statement, the string's trailing NUL would be skipped
  and memory past the end of the buffer would be accessed and potentially
  displayed as part of the --write-out output. Added tests 1440 and 1441
  to check for this kind of condition.
  
  Reported-by: Brian Carpenter

Jay Satiro (12 Mar 2017)
- [Desmond O. Chang brought this change]

  url: add option CURLOPT_SUPPRESS_CONNECT_HEADERS
  
  - Add new option CURLOPT_SUPPRESS_CONNECT_HEADERS to allow suppressing
    proxy CONNECT response headers from the user callback functions
    CURLOPT_HEADERFUNCTION and CURLOPT_WRITEFUNCTION.
  
  - Add new tool option --suppress-connect-headers to expose
    CURLOPT_SUPPRESS_CONNECT_HEADERS and allow suppressing proxy CONNECT
    response headers from --dump-header and --include.
  
  Assisted-by: Jay Satiro
  Assisted-by: CarloCannas@users.noreply.github.com
  Closes https://github.com/curl/curl/pull/783

- http_proxy: Ignore TE and CL in CONNECT 2xx responses
  
  A client MUST ignore any Content-Length or Transfer-Encoding header
  fields received in a successful response to CONNECT.
  "Successful" described as: 2xx (Successful). RFC 7231 4.3.6
  
  Prior to this change such a case would cause an error.
  
  In some ways this bug appears to be a regression since c50b878. Prior to
  that libcurl may have appeared to function correctly in such cases by
  acting on those headers instead of causing an error. But that behavior
  was also incorrect.
  
  Bug: https://github.com/curl/curl/issues/1317
  Reported-by: mkzero@users.noreply.github.com

- [Thomas Glanzmann brought this change]

  mbedtls: fix typo in variable name
  
  Broken a few days ago in 6448f98.
  
  Bug: https://curl.haxx.se/mail/lib-2017-03/0015.html

Michael Kaufmann (11 Mar 2017)
- tests: fix the authretry tests
