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

                                  Changelog

Version 7.63.0 (12 Dec 2018)

Daniel Stenberg (12 Dec 2018)
- RELEASE-NOTES: 7.63.0

- THANKS: from the curl 7.62.0 cycle

- test1519: use lib1518 and test CURLINFO_REDIRECT_URL more

- Curl_follow: extract the Location: header field unvalidated
  
  ... when not actually following the redirect. Otherwise we return error
  for this and an application can't extract the value.
  
  Test 1518 added to verify.
  
  Reported-by: Pavel Pavlov
  Fixes #3340
  Closes #3364

- multi: convert two timeout variables to timediff_t
  
  The time_t type is unsigned on some systems and these variables are used
  to hold return values from functions that return timediff_t
  already. timediff_t is always a signed type.
  
  Closes #3363

- delta: use --diff-filter on the git diff-tree invokes
  
  Suggested-by: Dave Reisner

Patrick Monnerat (11 Dec 2018)
- documentation: curl_formadd field and file names are now escaped
  
  Prior to 7.56.0, fieldnames and filenames were set in Content-Disposition
  header without special processing: this may lead to invalid RFC 822
  quoted-strings.
  7.56.0 introduces escaping of backslashes and double quotes in these names:
  mention it in the documentation.
  
  Reported-by: daboul on github
  Closes #3361

Daniel Stenberg (11 Dec 2018)
- scripts/delta: show repo delta info from last release
  
  ... where "last release" should be the git tag in the repo.

Daniel Gustafsson (11 Dec 2018)
- tests: add urlapi unittest
  
  This adds a new unittest intended to cover the internal functions in
  the urlapi code, starting with parse_port(). In order to avoid name
  collisions in debug builds, parse_port() is renamed Curl_parse_port()
  since it will be exported.
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>

- urlapi: fix portnumber parsing for ipv6 zone index
  
  An IPv6 URL which contains a zone index includes a '%%25<zode id>'
  string before the ending ']' bracket. The parsing logic wasn't set
  up to cope with the zone index however, resulting in a malformed url
  error being returned. Fix by breaking the parsing into two stages
  to correctly handle the zone index.
  
  Closes #3355
  Closes #3319
  Reported-by: tonystz on Github
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>

Daniel Stenberg (11 Dec 2018)
- [Jay Satiro brought this change]

  http: fix HTTP auth to include query in URI
  
  - Include query in the path passed to generate HTTP auth.
  
  Recent changes to use the URL API internally (46e1640, 7.62.0)
  inadvertently broke authentication URIs by omitting the query.
  
  Fixes https://github.com/curl/curl/issues/3353
  Closes #3356

- [Michael Kaufmann brought this change]

  http: don't set CURLINFO_CONDITION_UNMET for http status code 204
  
  The http status code 204 (No Content) should not change the "condition
  unmet" flag. Only the http status code 304 (Not Modified) should do
  this.
  
  Closes #359

- [Samuel Surtees brought this change]

  ldap: fix LDAP URL parsing regressions
  
  - Match URL scheme with LDAP and LDAPS
  - Retrieve attributes, scope and filter from URL query instead
  
  Regression brought in 46e164069d1a5230 (7.62.0)
  
  Closes #3362

- RELEASE-NOTES: synced

- [Stefan Kanthak brought this change]

  (lib)curl.rc: fixup for minor bugs
  
  All resources defined in lib/libcurl.rc and curl.rc are language
  neutral.
  
  winbuild/MakefileBuild.vc ALWAYS defines the macro DEBUGBUILD, so the
  ifdef's in line 33 of lib/libcurl.rc and src/curl.rc are wrong.
  
  Replace the hard-coded constants in both *.rc files with #define'd
  values.
  
  Thumbs-uped-by: Rod Widdowson, Johannes Schindelin
  URL: https://curl.haxx.se/mail/lib-2018-11/0000.html
  Closes #3348

- test329: verify cookie max-age=0 immediate expiry

- cookies: expire "Max-Age=0" immediately
  
  Reported-by: Jeroen Ooms
  Fixes #3351
  Closes #3352

- [Johannes Schindelin brought this change]

  Upon HTTP_1_1_REQUIRED, retry the request with HTTP/1.1
  
  This is a companion patch to cbea2fd2c (NTLM: force the connection to
  HTTP/1.1, 2018-12-06): with NTLM, we can switch to HTTP/1.1
  preemptively. However, with other (Negotiate) authentication it is not
  clear to this developer whether there is a way to make it work with
  HTTP/2, so let's try HTTP/2 first and fall back in case we encounter the
  error HTTP_1_1_REQUIRED.
  
  Note: we will still keep the NTLM workaround, as it avoids an extra
  round trip.
  
  Daniel Stenberg helped a lot with this patch, in particular by
  suggesting to introduce the Curl_h2_http_1_1_error() function.
  
  Closes #3349
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- [Ben Greear brought this change]

  openssl: fix unused variable compiler warning with old openssl
  
  URL: https://curl.haxx.se/mail/lib-2018-11/0055.html
  
  Closes #3347

- [Johannes Schindelin brought this change]

  NTLM: force the connection to HTTP/1.1
  
  Since v7.62.0, cURL tries to use HTTP/2 whenever the server announces
  the capability. However, NTLM authentication only works with HTTP/1.1,
  and will likely remain in that boat (for details, see
  https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis#when-is-http2-not-supported).
  
  When we just found out that we want to use NTLM, and when the current
  connection runs in HTTP/2 mode, let's force the connection to be closed
  and to be re-opened using HTTP/1.1.
  
  Fixes https://github.com/curl/curl/issues/3341.
  Closes #3345
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- [Johannes Schindelin brought this change]

  curl_global_sslset(): id == -1 is not necessarily an error
  
  It is allowed to call that function with id set to -1, specifying the
  backend by the name instead. We should imitate what is done further down
  in that function to allow for that.
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  
  Closes #3346

Johannes Schindelin (6 Dec 2018)
- .gitattributes: make tabs in indentation a visible error
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

Daniel Stenberg (6 Dec 2018)
- RELEASE-NOTES: synced

- doh: fix memory leak in OOM situation
  
  Reviewed-by: Daniel Gustafsson
  Closes #3342

- doh: make it work for h2-disabled builds too
  
  Reported-by: dtmsecurity at github
  Fixes #3325
  Closes #3336

- packages: remove old leftover files and dirs
  
  This subdir has mostly become an attic of never-used cruft from the
  past.
  
  Closes #3331

- [Gergely Nagy brought this change]

  openssl: do not use file BIOs if not requested
  
  Moves the file handling BIO calls to the branch of the code where they
  are actually used.
  
  Closes #3339

- [Paul Howarth brought this change]

  nss: Fix compatibility with nss versions 3.14 to 3.15

- [Paul Howarth brought this change]

  nss: Improve info message when falling back SSL protocol
  
  Use descriptive text strings rather than decimal numbers.

- [Paul Howarth brought this change]

  nss: Fall back to latest supported SSL version
  
  NSS may be built without support for the latest SSL/TLS versions,
  leading to "SSL version range is not valid" errors when the library
  code supports a recent version (e.g. TLS v1.3) but it has explicitly
  been disabled.
  
  This change adjusts the maximum SSL version requested by libcurl to
  be the maximum supported version at runtime, as long as that version
  is at least as high as the minimum version required by libcurl.
  
  Fixes #3261

Daniel Gustafsson (3 Dec 2018)
- travis: enable COPYRIGHTYEAR extended warning
  
  The extended warning for checking incorrect COPYRIGHTYEAR is quite
  expensive to run, so rather than expecting every developer to do it
  we ensure it's turned on locally for Travis.

- checksrc: add COPYRIGHTYEAR check
  
  Forgetting to bump the year in the copyright clause when hacking has
  been quite common among curl developers, but a traditional checksrc
  check isn't a good fit as it would penalize anyone hacking on January
  1st (among other things). This adds a more selective COPYRIGHTYEAR
  check which intends to only cover the currently hacked on changeset.
  
  The check for updated copyright year is currently not enforced on all
  files but only on files edited and/or committed locally. This is due to
  the amount of files which aren't updated with their correct copyright
  year at the time of their respective commit.
  
  To further avoid running this expensive check for every developer, it
  adds a new local override mode for checksrc where a .checksrc file can
  be used to turn on extended warnings locally.
  
  Closes #3303
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (3 Dec 2018)
- CHECKSRC.md: document more warnings
  
  Closes #3335
  [ci skip]

- RELEASE-NOTES: synced

- SECURITY-PROCESS: bountygraph shuts down
  
  This backpedals back the documents to the state before bountygraph.
  
  Closes #3311

- curl: fix memory leak reading --writeout from file
  
  If another string had been set first, the writout function for reading
  the syntax from file would leak the previously allocated memory.
  
  Reported-by: Brian Carpenter
  Fixes #3322
  Closes #3330

- tool_main: rename function to make it unique and better
  
  ... there's already another function in the curl tool named
  free_config_fields!

Daniel Gustafsson (29 Nov 2018)
- TODO: remove CURLOPT_DNS_USE_GLOBAL_CACHE entry
  
  Commit 7c5837e79280e6abb3ae143dfc49bca5e74cdd11 deprecated the option
  making it a manual code-edit operation to turn it back on. The removal
  process has thus started and is now documented in docs/DEPRECATE.md so
  remove from the TODO to avoid anyone looking for something to pick up
  spend cycles on an already in-progress entry.
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Jay Satiro (29 Nov 2018)
- [Sevan Janiyan brought this change]

  connect: fix building for recent versions of Minix
  
  EBADIOCTL doesn't exist on more recent Minix.
  There have also been substantial changes to the network stack.
  Fixes build on Minix 3.4rc
  
  Closes https://github.com/curl/curl/pull/3323

- [Konstantin Kushnir brought this change]

  CMake: fix MIT/Heimdal Kerberos detection
  
  - fix syntax error in FindGSS.cmake
  - correct krb5 include directory. FindGSS exports
    "GSS_INCLUDE_DIR" variable.
  
  Closes https://github.com/curl/curl/pull/3316

Daniel Stenberg (28 Nov 2018)
- test328: verify Content-Encoding: none
  
  Because of issue #3315
  
  Closes #3317

- [James Knight brought this change]

  configure: include all libraries in ssl-libs fetch
  
  When compiling a collection of SSL libraries to link against (SSL_LIBS),
  ensure all libraries are included. The call `--libs-only-l` can produce
  only a subset of found in a `--libs` call (e.x. pthread may be excluded).
  Adding `--libs-only-other` ensures other libraries are also included in
  the list. This corrects select build environments compiling against a
  static version of OpenSSL. Before the change, the following could be
  observed:
  
      checking for openssl options with pkg-config... found
      configure: pkg-config: SSL_LIBS: "-lssl -lz -ldl -lcrypto -lz -ldl "
      configure: pkg-config: SSL_LDFLAGS: "-L/home/jdknight/<workdir>/staging/usr/lib -L/home/jdknight/<workdir>/staging/usr/lib "
      configure: pkg-config: SSL_CPPFLAGS: "-I/home/jdknight/<workdir>/staging/usr/include "
      checking for HMAC_Update in -lcrypto... no
      checking for HMAC_Init_ex in -lcrypto... no
      checking OpenSSL linking with -ldl... no
      checking OpenSSL linking with -ldl and -lpthread... no
      configure: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.
      configure: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.
      ...
      SSL support:      no      (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )
      ...
  
  And include the other libraries when compiling SSL_LIBS succeeds with:
  
      checking for openssl options with pkg-config... found
      configure: pkg-config: SSL_LIBS: "-lssl -lz -ldl -pthread -lcrypto -lz -ldl -pthread "
      configure: pkg-config: SSL_LDFLAGS: "-L/home/jdknight/<workdir>/staging/usr/lib -L/home/jdknight/<workdir>/staging/usr/lib "
      configure: pkg-config: SSL_CPPFLAGS: "-I/home/jdknight/<workdir>/staging/usr/include "
      checking for HMAC_Update in -lcrypto... yes
      checking for SSL_connect in -lssl... yes
      ...
      SSL support:      enabled (OpenSSL)
      ...
  
  Signed-off-by: James Knight <james.d.knight@live.com>
  Closes #3193

Daniel Gustafsson (26 Nov 2018)
- doh: fix typo in infof call
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- cmdline-opts/gen.pl: define the correct varname
  
  The variable definition had a small typo making it declare another
  variable then the intended.
  
  Closes #3304
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (25 Nov 2018)
- RELEASE-NOTES: synced

- curl_easy_perform: fix timeout handling
  
  curl_multi_wait() was erroneously used from within
  curl_easy_perform(). It could lead to it believing there was no socket
  to wait for and then instead sleep for a while instead of monitoring the
  socket and then miss acting on that activity as swiftly as it should
  (causing an up to 1000 ms delay).
  
  Reported-by: Antoni Villalonga
  Fixes #3305
  Closes #3306
  Closes #3308

- CURLOPT_WRITEFUNCTION.3: spell out that it gets called many times

- cookies: create the cookiejar even if no cookies to save
  
  Important for when the file is going to be read again and thus must not
  contain old contents!
  
  Adds test 327 to verify.
  
  Reported-by: daboul on github
  Fixes #3299
  Closes #3300

- checksrc: ban snprintf use, add command line flag to override warns

- snprintf: renamed and we now only use msnprintf()
  
  The function does not return the same value as snprintf() normally does,
  so readers may be mislead into thinking the code works differently than
  it actually does. A different function name makes this easier to detect.
  
  Reported-by: Tomas Hoger
  Assisted-by: Daniel Gustafsson
  Fixes #3296
  Closes #3297

- [Tobias Hintze brought this change]

  test: update test20/1322 for eglibc bug workaround
  
  The tests 20 and 1322 are using getaddrinfo of libc for resolving. In
  eglibc-2.19 there is a memory leakage and invalid free bug which
  surfaces in some special circumstances (PF_UNSPEC hint with invalid or
  non-existent names). The valgrind runs in testing fail in these
  situations.
  
  As the tests 20/1322 are not specific on either protocol (IPv4/IPv6)
  this commit changes the hints to IPv4 protocol by passing `--ipv4` flag
  on the tests' command line.  This prevents the valgrind failures.

- [Tobias Hintze brought this change]

  host names: allow trailing dot in name resolve, then strip it
  
  Delays stripping of trailing dots to after resolving the hostname.
  
  Fixes #3022
  Closes #3222

- [UnknownShadow200 brought this change]

  CURLOPT_HEADERFUNCTION.3: match 'nitems' name in synopsis and description
  
  Closes #3295

Daniel Gustafsson (21 Nov 2018)
- configure: Fix typo in comment

Michael Kaufmann (21 Nov 2018)
- openssl: support session resume with TLS 1.3
  
  Session resumption information is not available immediately after a TLS 1.3
  handshake. The client must wait until the server has sent a session ticket.
  
  Use OpenSSL's "new session" callback to get the session information and put it
  into curl's session cache. For TLS 1.3 sessions, this callback will be invoked
  after the server has sent a session ticket.
  
  The "new session" callback is invoked only if OpenSSL's session cache is
  enabled, so enable it and use the "external storage" mode which lets curl manage
  the contents of the session cache.
  
  A pointer to the connection data and the sockindex are now saved as "SSL extra
  data" to make them available to the callback.
  
  This approach also works for old SSL/TLS versions and old OpenSSL versions.
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  
  Fixes #3202
  Closes #3271

- ssl: fix compilation with OpenSSL 0.9.7
  
  - ENGINE_cleanup() was used without including "openssl/engine.h"
  - enable engine support for OpenSSL 0.9.7
  
  Closes #3266

Daniel Stenberg (21 Nov 2018)
- openssl: disable TLS renegotiation with BoringSSL
  
  Since we're close to feature freeze, this change disables this feature
  with an #ifdef. Define ALLOW_RENEG at build-time to enable.
  
  This could be converted to a bit for CURLOPT_SSL_OPTIONS to let
  applications opt-in this.
  
  Concern-raised-by: David Benjamin
  Fixes #3283
  Closes #3293

- [Romain Fliedel brought this change]

  ares: remove fd from multi fd set when ares is about to close the fd
  
  When using c-ares for asyn dns, the dns socket fd was silently closed
  by c-ares without curl being aware. curl would then 'realize' the fd
  has been removed at next call of Curl_resolver_getsock, and only then
  notify the CURLMOPT_SOCKETFUNCTION to remove fd from its poll set with
  CURL_POLL_REMOVE. At this point the fd is already closed.
  
  By using ares socket state callback (ARES_OPT_SOCK_STATE_CB), this
  patch allows curl to be notified that the fd is not longer needed
  for neither for write nor read. At this point by calling
  Curl_multi_closed we are able to notify multi with CURL_POLL_REMOVE
  before the fd is actually closed by ares.
  
  In asyn-ares.c Curl_resolver_duphandle we can't use ares_dup anymore
  since it does not allow passing a different sock_state_cb_data
  
  Closes #3238

- [Romain Fliedel brought this change]

  examples/ephiperfifo: report error when epoll_ctl fails

Daniel Gustafsson (20 Nov 2018)
- [pkubaj brought this change]

  ntlm: Remove redundant ifdef USE_OPENSSL
  
  lib/curl_ntlm.c had code that read as follows:
  
    #ifdef USE_OPENSSL
    # ifdef USE_OPENSSL
    # else
    # ..
    # endif
    #endif
  
  Remove the redundant USE_OPENSSL along with #else (it's not possible to
  reach it anyway). The removed construction is a leftover from when the
  SSLeay support was removed.
  
  Closes #3269
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (20 Nov 2018)
- [Han Han brought this change]

  ssl: replace all internal uses of CURLE_SSL_CACERT
  
  Closes #3291

Han Han (19 Nov 2018)
- docs: add more description to unified ssl error codes

- curle: move deprecated error code to ifndef block

Patrick Monnerat (19 Nov 2018)
- os400: add CURLOPT_CURLU to ILE/RPG binding.

- os400: Add curl_easy_conn_upkeep() to ILE/RPG binding.

- os400: fix return type of curl_easy_pause() in ILE/RPG binding.

Daniel Stenberg (19 Nov 2018)
- RELEASE-NOTES: synced

- impacket: add LICENSE
  
  The license for the impacket package was not in our tree.
  
  Imported now from upstream's
  https://github.com/SecureAuthCorp/impacket/blob/master/LICENSE
  
  Reported-by: infinnovation-dev on github
  Fixes #3276
  Closes #3277

Daniel Gustafsson (18 Nov 2018)
- tool_doswin: Fix uninitialized field warning
  
  The partial struct initialization in 397664a065abffb7c3445ca9 caused
  a warning on uninitialized MODULEENTRY32 struct members:
  
    /src/tool_doswin.c:681:3: warning: missing initializer for field
    'th32ModuleID' of 'MODULEENTRY32 {aka struct tagMODULEENTRY32}'
    [-Wmissing-field-initializers]
  
  This is sort of a bogus warning as the remaining members will be set
  to zero by the compiler, as all omitted members are. Nevertheless,
  remove the warning by omitting all members and setting the dwSize
  members explicitly.
  
  Closes #3254
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>

- openssl: Remove SSLEAY leftovers
  
  Commit 709cf76f6bb7dbac deprecated USE_SSLEAY, as curl since long isn't
  compatible with the SSLeay library. This removes the few leftovers that
  were omitted in the less frequently used platform targets.
  
  Closes #3270
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (16 Nov 2018)
- [Elia Tufarolo brought this change]

  http_negotiate: do not close connection until negotiation is completed
  
  Fix HTTP POST using CURLAUTH_NEGOTIATE.
  
  Closes #3275

- pop3: only do APOP with a valid timestamp
  
  Brought-by: bobmitchell1956 on github
  Fixes #3278
  Closes #3279

Jay Satiro (16 Nov 2018)
- [Peter Wu brought this change]

  openssl: do not log excess "TLS app data" lines for TLS 1.3
  
  The SSL_CTX_set_msg_callback callback is not just called for the
  Handshake or Alert protocols, but also for the raw record header
  (SSL3_RT_HEADER) and the decrypted inner record type
  (SSL3_RT_INNER_CONTENT_TYPE). Be sure to ignore the latter to avoid
  excess debug spam when using `curl -v` against a TLSv1.3-enabled server:
  
      * TLSv1.3 (IN), TLS app data, [no content] (0):
  
  (Following this message, another callback for the decrypted
  handshake/alert messages will be be present anyway.)
  
  Closes https://github.com/curl/curl/pull/3281

Marc Hoersken (15 Nov 2018)
- tests: disable SO_EXCLUSIVEADDRUSE for stunnel on Windows
  
  SO_EXCLUSIVEADDRUSE is on by default on Vista or newer,
  but does not work together with SO_REUSEADDR being on.
  
  The default changes were made with stunnel 5.34 and 5.35.

Daniel Stenberg (13 Nov 2018)
- [Kamil Dudka brought this change]

  nss: remove version selecting dead code
  
  Closes #3262

- nss: set default max-tls to 1.3/1.2
  
  Fixes #3261

Daniel Gustafsson (13 Nov 2018)
- tool_cb_wrt: Silence function cast compiler warning
  
  Commit 5bfaa86ceb3c2a9ac474a928e748c4a86a703b33 introduced a new
  compiler warning on Windows cross compilation with GCC. See below
  for an example of the warning from the autobuild logs (whitespace
  edited to fit):
  
  /src/tool_cb_wrt.c:175:9: warning: cast from function call of type
      'intptr_t {aka long long int}' to non-matching type 'void *'
      [-Wbad-function-cast]
  (HANDLE) _get_osfhandle(fileno(outs->stream)),
  ^
  
  Store the return value from _get_osfhandle() in an intermediate
  variable and cast the variable in WriteConsoleW() rather than the
  function call directly to avoid a compiler warning.
  
  In passing, also add inspection of the MultiByteToWideChar() return
  value and return failure in case an error is reported.
  
  Closes #3263
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
  Reviewed-by: Viktor Szakats <commit@vszakats.net>

Daniel Stenberg (12 Nov 2018)
- nss: fix fallthrough comment to fix picky compiler warning

- docs: expanded on some CURLU details

- [Tim Rühsen brought this change]

  ftp: avoid two unsigned int overflows in FTP listing parser
  
  Curl_ftp_parselist: avoid unsigned integer overflows
  
  The overflow has no real world impact, just avoid it for "best
  practice".
  
  Closes #3225

- curl: --local-port range was not "including"
  
  The end port number in a given range was not included in the range used,
  as it is documented to be.
  
  Reported-by: infinnovation-dev on github
  Fixes #3251
  Closes #3255

- [Jérémy Rocher brought this change]

  openssl: support BoringSSL TLS renegotiation
  
  As per BoringSSL porting documentation [1], BoringSSL rejects peer
  renegotiations by default.
  
  curl fails when trying to authenticate to server through client
  certificate if it is requested by server after the initial TLS
  handshake.
  
  Enable renegotiation by default with BoringSSL to get same behavior as
  with OpenSSL. This is done by calling SSL_set_renegotiate_mode [2]
  which was introduced in commit 1d5ef3bb1eb9 [3].
  
  1 - https://boringssl.googlesource.com/boringssl/+/HEAD/PORTING.md#tls-renegotiation
  2 - https://boringssl.googlesource.com/boringssl/+/master/include/openssl/ssl.h#3482
  3 - https://boringssl.googlesource.com/boringssl/+/1d5ef3bb1eb97848617db5e7d633d735a401df86
  
  Signed-off-by: Jérémy Rocher <rocher.jeremy@gmail.com>
  Fixes #3258
  Closes #3259

- HISTORY: add some milestones
  
  Added a few of the more notable milestones in curl history that were
  missing. Primarily more recent ones but I also noted some older that
  could be worth mentioning.
  
  [ci skip]
  Closes #3257

Daniel Gustafsson (9 Nov 2018)
- KNOWN_BUGS: add --proxy-any connection issue
  
  Add the identified issue with --proxy-any and proxy servers which
  advertise authentication schemes other than the supported one.
  
  Closes #876
  Closes #3250
  Reported-by: NTMan on Github
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (9 Nov 2018)
- [Jim Fuller brought this change]

  setopt: add CURLOPT_CURLU
  
  Allows an application to pass in a pre-parsed URL via a URL handle.
  
  Closes #3227

- [Gisle Vanem brought this change]

  docs: ESCape "\n" codes
  
  Groff / Troff will display a:
   printaf("Errno: %ld\n", error);
  as:
    printf("Errno: %ld0, error);
  
  when a "\n" is not escaped. Use "\\n" instead.
  
  Closes #3246

- curl: --local-port fix followup
  
  Regression by 52db54869e6.
  
  Reported-by: infinnovation-dev on github
  Fixes #3248
  Closes #3249

GitHub (7 Nov 2018)
- [Gisle Vanem brought this change]

  More "\n" ESCaping

Daniel Stenberg (7 Nov 2018)
- RELEASE-NOTES: synced

- curl: fix --local-port integer overflow
  
  The tool's local port command line range parser didn't check for integer
  overflows and could pass "weird" data to libcurl for this option.
  libcurl however, has a strict range check for the values so it rejects
  anything outside of the accepted range.
  
  Reported-by: Brian Carpenter
  Closes #3242

- curl: correct the switch() logic in ourWriteOut
  
  Follow-up to e431daf013, as I did the wrong correction for a compiler
  warning. It should be a break and not a fall-through.
  
  Pointed-out-by: Frank Gevaerts

- [Frank Gevaerts brought this change]

  curl: add %{stderr} and %{stdout} for --write-out
  
  Closes #3115

Daniel Gustafsson (7 Nov 2018)
- winssl: be consistent in Schannel capitalization
  
  The productname from Microsoft is "Schannel", but in infof/failf
  reporting we use "schannel". This removes different versions.
  
  Closes #3243
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (7 Nov 2018)
- TODO: Have the URL API offer IDN decoding
  
  Similar to how URL decoding/encoding is done, we could have URL
  functions to convert IDN host names to punycode.
  
  Suggested-by: Alexey Melnichuk
  Closes #3232

- urlapi: only skip encoding the first '=' with APPENDQUERY set
  
  APPENDQUERY + URLENCODE would skip all equals signs but now it only skip
  encoding the first to better allow "name=content" for any content.
  
  Reported-by: Alexey Melnichuk
  Fixes #3231
  Closes #3231

- url: a short host name + port is not a scheme
  
  The function identifying a leading "scheme" part of the URL considered a
  few letters ending with a colon to be a scheme, making something like
  "short:80" to become an unknown scheme instead of a short host name and
  a port number.
  
  Extended test 1560 to verify.
  
  Also fixed test203 to use file_pwd to make it get the correct path on
  windows. Removed test 2070 since it was a duplicate of 203.
  
  Assisted-by: Marcel Raad
  Reported-by: Hagai Auro
  Fixes #3220
  Fixes #3233
  Closes #3223
  Closes #3235

- [Sangamkar brought this change]

  libcurl: stop reading from paused transfers
  
  In the transfer loop it would previously not acknwledge the pause bit
  and continue until drained or loop ended.
  
  Closes #3240

Jay Satiro (6 Nov 2018)
- tool: add undocumented option --dump-module-paths for win32
  
  - Add an undocumented diagnostic option for Windows to show the full
    paths of all loaded modules regardless of whether or not libcurl
    initialization succeeds.
  
  This is needed so that in the CI we can get a list of all DLL
  dependencies after initialization (when they're most likely to have
  finished loading) and then package them as artifacts so that a
  functioning build can be downloaded. Also I imagine it may have some use
  as a diagnostic for help requests.
  
  Ref: https://github.com/curl/curl/pull/3103
  
  Closes https://github.com/curl/curl/pull/3208

- curl_multibyte: fix a malloc overcalculation
  
  Prior to this change twice as many bytes as necessary were malloc'd when
  converting wchar to UTF8. To allay confusion in the future I also
  changed the variable name for the amount of bytes from len to bytes.
  
  Closes https://github.com/curl/curl/pull/3209

Michael Kaufmann (5 Nov 2018)
- netrc: don't ignore the login name specified with "--user"
  
  - for "--netrc", don't ignore the login/password specified with "--user",
    only ignore the login/password in the URL.
    This restores the netrc behaviour of curl 7.61.1 and earlier.
  - fix the documentation of CURL_NETRC_REQUIRED
  - improve the detection of login/password changes when reading .netrc
  - don't read .netrc if both login and password are already set
  
  Fixes #3213
  Closes #3224

Patrick Monnerat (5 Nov 2018)
- OS400: add URL API ccsid wrappers and sync ILE/RPG bindings

Daniel Stenberg (5 Nov 2018)
- [Yasuhiro Matsumoto brought this change]

  curl: fixed UTF-8 in current console code page (Windows)
  
  Fixes #3211
  Fixes #3175
  Closes #3212

- TODO: 2.6 multi upkeep
  
  Closes #3199

Daniel Gustafsson (5 Nov 2018)
- unittest: make 1652 stable across collations
  
  The previous coding used a format string whose output depended on the
  current locale of the environment running the test. Since the gist of
  the test is to have a format string, with the actual formatting being
  less important, switch to a more stable formatstring with decimals.
  
  Reported-by: Marcel Raad
  Closes #3234
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>

Daniel Stenberg (5 Nov 2018)
- Revert "url: a short host name + port is not a scheme"
  
  This reverts commit 226cfa8264cd979eff3fd52c0f3585ef095e7cf2.
  
  This commit caused test failures on appveyor/windows. Work on fixing them is
  in #3235.

- symbols-in-versions: add missing CURLU_ symbols
  
  ...and fix symbol-scan.pl to also scan urlapi.h
  
  Reported-by: Alexey Melnichuk
  Fixes #3226
  Closes #3230

Daniel Gustafsson (3 Nov 2018)
- infof: clearly indicate truncation
  
  The internal buffer in infof() is limited to 2048 bytes of payload plus
  an additional byte for NULL termination. Servers with very long error
  messages can however cause truncation of the string, which currently
  isn't very clear, and leads to badly formatted output.
  
  This appends a "...\n" (or just "..." in case the format didn't with a
  newline char) marker to the end of the string to clearly show
  that it has been truncated.
  
  Also include a unittest covering infof() to try and catch any bugs
  introduced in this quite important function.
  
  Closes #3216
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>

Michael Kaufmann (3 Nov 2018)
