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

                                  Changelog

Version 7.56.0 (4 Oct 2017)

Daniel Stenberg (4 Oct 2017)
- RELEASE-NOTES: curl 7.56.0

- THANKS: added new 7.56.0 contributors

Jay Satiro (4 Oct 2017)
- build-openssl.bat: Warn OpenSSL 1.1.0 not yet supported
  
  Ref: https://github.com/curl/curl/issues/1002

Michael Kaufmann (3 Oct 2017)
- idn: fix source code comment

- vtls: compare and clone ssl configs properly
  
  Compare these settings in Curl_ssl_config_matches():
  - verifystatus (CURLOPT_SSL_VERIFYSTATUS)
  - random_file (CURLOPT_RANDOM_FILE)
  - egdsocket (CURLOPT_EGDSOCKET)
  
  Also copy the setting "verifystatus" in Curl_clone_primary_ssl_config(),
  and copy the setting "sessionid" unconditionally.
  
  This means that reusing connections that are secured with a client
  certificate is now possible, and the statement "TLS session resumption
  is disabled when a client certificate is used" in the old advisory at
  https://curl.haxx.se/docs/adv_20170419.html is obsolete.
  
  Reviewed-by: Daniel Stenberg
  
  Closes #1917

- proxy: read the "no_proxy" variable only if necessary
  
  Reviewed-by: Daniel Stenberg
  
  Closes #1919

Patrick Monnerat (3 Oct 2017)
- libcurl-tutorial: add casts in example to avoid compilation warnings.

Daniel Stenberg (3 Oct 2017)
- examples: bring back curl_formadd-using examples
  
  ... now with a -formadd suffix. While the new mime API is introduced in
  7.56.0 we must acknowledge that lots of users can't upgrade their curl
  versions immediately.

- test1153: verify quoted double-qoutes in PWD response

- FTP: zero terminate the entry path even on bad input
  
  ... a single double quote could leave the entry path buffer without a zero
  terminating byte. CVE-2017-1000254
  
  Test 1152 added to verify.
  
  Reported-by: Max Dymond
  Bug: https://curl.haxx.se/docs/adv_20171004.html

Jay Satiro (2 Oct 2017)
- [Sergei Nikulov brought this change]

  cmake: disable tests and man generation if perl/nroff not found
  
  Fixes https://github.com/curl/curl/issues/1500
  Reported-by: Jay Satiro
  
  Fixes https://github.com/curl/curl/pull/1662
  Assisted-by: Tom Seddon
  Assisted-by: dpull@users.noreply.github.com
  Assisted-by: elelel@users.noreply.github.com
  
  Closes https://github.com/curl/curl/pull/1924

Patrick Monnerat (2 Oct 2017)
- libcurl-tutorial: fix two typos.

- TODO: remove deprecated form API items.

- libcurl-tutorial: describe MIME API and deprecate form API.
  
  Include a guide to form/mime API conversion.

Daniel Stenberg (30 Sep 2017)
- cookie: fix memory leak if path was set twice in header
  
  ... this will let the second occurance override the first.
  
  Added test 1161 to verify.
  
  Reported-by: Max Dymond
  Fixes #1932
  Closes #1933

Dan Fandrich (30 Sep 2017)
- test650: Use variable replacement to set the host address and port
  
  Otherwise, the test fails when the -b test option is used to set a
  different test port range.

- Set and use more necessary options when some protocols are disabled
  
  When curl and libcurl are built with some protocols disabled, they stop
  setting and receiving some options that don't make sense with those
  protocols.  In particular, when HTTP is disabled many options aren't set
  that are used only by HTTP.  However, some options that appear to be
  HTTP-only are actually used by other protocols as well (some despite
  having HTTP in the name) and should be set, but weren't. This change now
  causes some of these options to be set and used for more (or for all)
  protocols. In particular, this fixes tests 646 through 649 in an
  HTTP-disabled build, which use the MIME API in the mail protocols.

Daniel Stenberg (29 Sep 2017)
- test1160: verifies cookie leak for large cookies
  
  The fix done in 20ea22ff735

- cookie: fix memory leak on oversized rejection
  
  Regression brought by 2bc230de63b
  
  Detected by OSS-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3513
  Assisted-by: Max Dymond
  
  Closes #1930

- [Anders Bakken brought this change]

  connect: fix race condition with happy eyeballs timeout
  
  The timer should be started after conn->connecttime is set. Otherwise
  the timer could expire without this condition being true:
  
      /* should we try another protocol family? */
      if(i == 0 && conn->tempaddr[1] == NULL &&
        curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) {
  
  Ref: #1928

Michael Kaufmann (28 Sep 2017)
- docs: link CURLOPT_CONNECTTIMEOUT and CURLOPT_CONNECTTIMEOUT_MS
  
  Closes #1922

- docs: clarify the use of environment variables for proxy
  
  Closes #1921

- http: add custom empty headers to repeated requests
  
  Closes #1920

- reuse_conn: don't copy flags that are known to be equal
  
  A connection can only be reused if the flags "conn_to_host" and
  "conn_to_port" match. Therefore it is not necessary to copy these flags
  in reuse_conn().
  
  Closes #1918

Daniel Stenberg (27 Sep 2017)
- curl.h: include <sys/select.h> on cygwin too
  
  When building with -std=c++14 on cygwin, this header won't be
  automatically included as it otherwise is.
  
  The <sys/select.h> include decision should ideally be reversed and be
  avoided where that header file doesn't exist.
  
  Reported-by: Ian Fette
  Fixes #1925

- RELEASE-NOTES: synced with d8ab5dc50

Michael Kaufmann (24 Sep 2017)
- tests: adjust .gitignore for new tests

Jay Satiro (23 Sep 2017)
- ntlm: move NTLM_NEEDS_NSS_INIT define into core NTLM header
  
  .. and include the core NTLM header in all NTLM-related source files.
  
  Follow up to 6f86022. Since then http_ntlm checks NTLM_NEEDS_NSS_INIT
  but did not include vtls.h where it was defined.
  
  Closes https://github.com/curl/curl/pull/1911

Daniel Stenberg (23 Sep 2017)
- file_range: avoid integer overflow when figuring out byte range
  
  When trying to bump the value with one and the value is already at max,
  it causes an integer overflow.
  
  Closes #1908
  Detected by oss-fuzz:
  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3465
  
  Assisted-by: Max Dymond

Michael Kaufmann (23 Sep 2017)
- tests: fix a compiler warning in test 643

Jay Satiro (23 Sep 2017)
- symbols-in-versions: fix CURLSSLSET_NO_BACKENDS entry
  
  - Use spaces instead of tabs as the delimiter.
  
  Follow up to 7c52b12 which added the entry. The entry had used tabs but
  the symbol-scan parser doesn't recognize tabs and would fail the symbol.

Viktor Szakats (22 Sep 2017)
- metalink: fix NSS issue in MultiSSL builds
  
  In MultiSSL mode (i.e. when more than one SSL backend is compiled
  in), we cannot use the compile time flag `USE_NSS` as indicator that
  the NSS backend is in use. As far as Metalink is concerned, the SSL
  backend is only used for MD5, SHA-1 and SHA-256 calculations,
  therefore one of the available SSL backends is selected at compile
  time, in a strict order of preference.
  
  Let's introduce a new `HAVE_NSS_CONTEXT` constant that can be used
  to determine whether the SSL backend used for Metalink is the NSS
  backend, and use that to guard the code that wants to de-initialize
  the NSS-specific data structure.
  
  Ref: https://github.com/curl/curl/pull/1848

- ntlm: use strict order for SSL backend #if branches
  
  With the recently introduced MultiSSL support multiple SSL backends
  can be compiled into cURL That means that now the order of the SSL
  
  One option would be to use the same SSL backend as was configured
  via `curl_global_sslset()`, however, NTLMv2 support would appear
  to be available only with some SSL backends. For example, when
  eb88d778e (ntlm: Use Windows Crypt API, 2014-12-02) introduced
  support for NTLMv1 using Windows' Crypt API, it specifically did
  *not* introduce NTLMv2 support using Crypt API at the same time.
  
  So let's select one specific SSL backend for NTLM support when
  compiled with multiple SSL backends, using a priority order such
  that we support NTLMv2 even if only one compiled-in SSL backend can
  be used for that.
  
  Ref: https://github.com/curl/curl/pull/1848

Daniel Stenberg (22 Sep 2017)
- symbols-in-versions: add CURLSSLSET_NO_BACKENDS
  
  ...fixup from b8e0fe19ec

- imap: quote atoms properly when escaping characters
  
  Updates test 800 to verify
  
  Fixes #1902
  Closes #1903

- tests: make the imap server not verify user+password
  
  ... as the test cases themselves do that and it makes it easier to add
  crazy test cases.
  
  Test 800 updated to use user name + password that need quoting.
  
  Test 856 updated to trigger an auth fail differently.
  
  Ref: #1902

- vtls: provide curl_global_sslset() even in non-SSL builds
  
  ... it just returns error:
  
  Bug: https://github.com/curl/curl/commit/1328f69d53f2f2e937696ea954c480412b018451#commitcomment-24470367
  Reported-by: Marcel Raad
  
  Closes #1906

Patrick Monnerat (22 Sep 2017)
- form/mime: field names are not allowed to contain zero-valued bytes.
  
  Also suppress length argument of curl_mime_name() (names are always
  zero-terminated).

Daniel Stenberg (21 Sep 2017)
- [Dirk Feytons brought this change]

  openssl: only verify RSA private key if supported
  
  In some cases the RSA key does not support verifying it because it's
  located on a smart card, an engine wants to hide it, ...
  Check the flags on the key before trying to verify it.
  OpenSSL does the same thing internally; see ssl/ssl_rsa.c
  
  Closes #1904

Marcel Raad (21 Sep 2017)
- examples/post-callback: use long for CURLOPT_POSTFIELDSIZE
  
  Otherwise, typecheck-gcc.h warns on MinGW-w64.

Patrick Monnerat (20 Sep 2017)
- mime: rephrase the multipart output state machine (#1898) ...
  
  ... in hope coverity will like it much.

- mime: fix an explicit null dereference (#1899)

Daniel Stenberg (20 Sep 2017)
- curl: check fseek() return code and bail on error
  
  Detected by coverity. CID 1418137.

- smtp: fix memory leak in OOM
  
  Regression since ce0881edee
  
  Coverity CID 1418139 and CID 1418136 found it, but it was also seen in
  torture testing.

- RELEASE-NOTES: synced with 5fe85587c

- [Pavel P brought this change]

  cookies: use lock when using CURLINFO_COOKIELIST
  
  Closes #1896

- [Max Dymond brought this change]

  ossfuzz: changes before merging the generated corpora
  
  Before merging in the oss-fuzz corpora from Google, there are some changes
  to the fuzzer.
  - Add a read corpus script, to display corpus files nicely.
  - Change the behaviour of the fuzzer so that TLV parse failures all now
    go down the same execution paths, which should reduce the size of the
    corpora.
  - Make unknown TLVs a failure to parse, which should decrease the size
    of the corpora as well.
  
  Closes #1881

- mime:escape_string minor clarification change
  
  ... as it also removes a warning with old gcc versions.
  
  Bug: https://curl.haxx.se/mail/lib-2017-09/0049.html
  Reported-by: Ben Greear

- [Max Dymond brought this change]

  ossfuzz: don't write out to stdout
  
  Don't make the fuzzer write out to stdout - instead write some of the
  contents to a memory block so we exercise the data output code but
  quietly.
  
  Closes #1885

- cookies: reject oversized cookies
  
  ... instead of truncating them.
  
  There's no fixed limit for acceptable cookie names in RFC 6265, but the
  entire cookie is said to be less than 4096 bytes (section 6.1). This is
  also what browsers seem to implement.
  
  We now allow max 5000 bytes cookie header. Max 4095 bytes length per
  cookie name and value. Name + value together may not exceed 4096 bytes.
  
  Added test 1151 to verify
  
  Bug: https://curl.haxx.se/mail/lib-2017-09/0062.html
  Reported-by: Kevin Smith
  
  Closes #1894

- travis: on mac, don't install openssl or libidn
  
  - openssl is already installed and causes warnings when trying to
    install again
  
  - libidn isn't used these days, and homebrew doesn't seem to have a
    libidn2 package to replace with easily
  
  Closes #1895

- curl: make str2udouble not return values on error
  
  ... previously it would store a return value even when it returned
  error, which could make the value get used anyway!
  
  Reported-by: Brian Carpenter
  Closes #1893

Jay Satiro (18 Sep 2017)
- socks: fix incorrect port number in SOCKS4 error message
  
  Prior to this change it appears the SOCKS5 port parsing was erroneously
  used for the SOCKS4 error message, and as a result an incorrect port
  would be shown in the error message.
  
  Bug: https://github.com/curl/curl/issues/1892
  Reported-by: Jackarain@users.noreply.github.com

- [Marc Aldorasi brought this change]

  schannel: Support partial send for when data is too large
  
  Schannel can only encrypt a certain amount of data at once.  Instead of
  failing when too much data is to be sent at once, send as much data as
  we can and let the caller send the remaining data by calling send again.
  
  Bug: https://curl.haxx.se/mail/lib-2014-07/0033.html
  
  Closes https://github.com/curl/curl/pull/1890

- [David Benjamin brought this change]

  openssl: add missing includes
  
  lib/vtls/openssl.c uses OpenSSL APIs from BUF_MEM and BIO APIs. Include
  their headers directly rather than relying on other OpenSSL headers
  including things.
  
  Closes https://github.com/curl/curl/pull/1891

Daniel Stenberg (15 Sep 2017)
- conversions: fix several compiler warnings

- server/getpart: provide dummy function to build conversion enabled

- non-ascii: use iconv() with 'char **' argument
  
  Bug: https://curl.haxx.se/mail/lib-2017-09/0031.html

- escape.c: error: pointer targets differ in signedness

- docs: clarify the CURLOPT_INTERLEAVE* options behavior

- [Max Dymond brought this change]

  rtsp: Segfault in rtsp.c when using WRITEDATA
  
  If the INTERLEAVEFUNCTION is defined, then use that plus the
  INTERLEAVEDATA information when writing RTP. Otherwise, use
  WRITEFUNCTION and WRITEDATA.
  
  Fixes #1880
  Closes #1884

Marcel Raad (15 Sep 2017)
- [Isaac Boukris brought this change]

  tests: enable gssapi in travis-ci linux build
  
  Closes https://github.com/curl/curl/pull/1687

- [Isaac Boukris brought this change]

  tests: add initial gssapi test using stub implementation
  
  The stub implementation is pre-loaded using LD_PRELOAD
  and emulates common gssapi uses (only builds if curl is
  initially built with gssapi support).
  
  The initial tests are currently disabled for debug builds
  as LD_PRELOAD is not used then.
  
  Ref: https://github.com/curl/curl/pull/1687

Daniel Stenberg (15 Sep 2017)
- test1150: verify same host fetch using different ports over proxy
  
  Closes #1889

- URL: on connection re-use, still pick the new remote port
  
  ... as when a proxy connection is being re-used, it can still get a
  different remote port.
  
  Fixes #1887
  Reported-by: Oli Kingshott

- RELEASE-NOTES: synced with 87501e57f

- code style: remove wrong uses of multiple spaces
  
  Closes #1878

- checksrc: detect and warn for multiple spaces

- code style: use space after semicolon

- checksrc: verify space after semicolons

- code style: use spaces around pluses

- checksrc: detect and warn for lack of spaces next to plus signs

- code style: use spaces around equals signs

- checksrc: verify spaces around equals signs
  
  ... as the code style mandates.

- Curl_checkheaders: make it available for IMAP and SMTP too
  
  ... not only HTTP uses this now.
  
  Closes #1875

- travis: add build without HTTP/SMTP/IMAP

Jay Satiro (10 Sep 2017)
- mbedtls: enable CA path processing
  
  CA path processing was implemented when mbedtls.c was added to libcurl
  in fe7590f, but it was never enabled.
  
  Bug: https://github.com/curl/curl/issues/1877
  Reported-by: SBKarr@users.noreply.github.com

Daniel Stenberg (8 Sep 2017)
- rtsp: do not call fwrite() with NULL pointer FILE *
  
  If the default write callback is used and no destination has been set, a
  NULL pointer would be passed to fwrite()'s 4th argument.
  
  OSS-fuzz bug https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3327
  (not publicly open yet)
  
  Detected by OSS-fuzz
  Closes #1874

- configure: use -Wno-varargs on clang 3.9[.X] debug builds
  
  ... to avoid a clang bug

- [Max Dymond brought this change]

  ossfuzz: add some more handled CURL options
  
  Add support for HEADER, COOKIE, RANGE, CUSTOMREQUEST, MAIL_RECIPIENT,
  MAIL_FROM and uploading data.

- configure: check for C++ compiler after C, to make it non-fatal
  
  The tests for object file/executable file extensions are presumably only
  done for the first of these macros in the configure file.
  
  Bug: https://github.com/curl/curl/pull/1851#issuecomment-327597515
  Reported-by: Marcel Raad
  Closes #1873

Patrick Monnerat (7 Sep 2017)
- form API: add new test 650.
  
  Now that the form API is deprecated and not used anymore in curl tool,
  a lot of its features left untested. Test 650 attempts to check all these
  features not tested elsewhere.

Jay Satiro (7 Sep 2017)
- configure: fix curl_off_t check's include order
  
  - Prepend srcdir include path instead of append.
  
  Prior to this change it was possible that during the check for the size
  of curl_off_t the include path of a user's already installed curl could
  come before the include path of the to-be-built curl, resulting in the
  system.h of the former being incorrectly included for that check.
  
  Closes https://github.com/curl/curl/pull/1870

Daniel Stenberg (7 Sep 2017)
- [Jakub Zakrzewski brought this change]

  KNOWN_BUGS: Remove CMake symbol hiding issue
  
  It has already been fixed in 6140dfc

- http-proxy: when not doing CONNECT, that phase is done immediately
  
  `conn->connect_state` is NULL when doing a regular non-CONNECT request
  over the proxy and should therefor be considered complete at once.
  
  Fixes #1853
  Closes #1862
  Reported-by: Lawrence Wagerfield

- [Johannes Schindelin brought this change]

  OpenSSL: fix yet another mistake while encapsulating SSL backend data
  
  Another mistake in my manual fixups of the largely mechanical
  search-and-replace ("connssl->" -> "BACKEND->"), just like the previous
  commit concerning HTTPS proxies (and hence not caught during my
  earlier testing).
  
  Fixes #1855
  Closes #1871
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- [Johannes Schindelin brought this change]

  OpenSSL: fix erroneous SSL backend encapsulation
  
  In d65e6cc4f (vtls: prepare the SSL backends for encapsulated private
  data, 2017-06-21), this developer prepared for a separation of the
  private data of the SSL backends from the general connection data.
  
  This conversion was partially automated (search-and-replace) and
  partially manual (e.g. proxy_ssl's backend data).
  
  Sadly, there was a crucial error in the manual part, where the wrong
  handle was used: rather than connecting ssl[sockindex]' BIO to the
  proxy_ssl[sockindex]', we reconnected proxy_ssl[sockindex]. The reason
  was an incorrect location to paste "BACKEND->"... d'oh.
  
  Reported by Jay Satiro in https://github.com/curl/curl/issues/1855.
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- [Jay Satiro brought this change]

  vtls: fix memory corruption
  
  Ever since 70f1db321 (vtls: encapsulate SSL backend-specific data,
  2017-07-28), the code handling HTTPS proxies was broken because the
  pointer to the SSL backend data was not swapped between
  conn->ssl[sockindex] and conn->proxy_ssl[sockindex] as intended, but
  instead set to NULL (causing segmentation faults).
  
  [jes: provided the commit message, tested and verified the patch]
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- vtls: switch to CURL_SHA256_DIGEST_LENGTH define
  
  ... instead of the prefix-less version since WolfSSL 3.12 now uses an
  enum with that name that causes build failures for us.
  
  Fixes #1865
  Closes #1867
  Reported-by: Gisle Vanem

- travis: add c-ares enabled builds linux + osx
  
  Closes #1868

- HISTORY: added some recent items

Jay Satiro (6 Sep 2017)
- SSL: fix unused parameter warnings

Patrick Monnerat (6 Sep 2017)
- mime: drop internal FILE * support.
  
  - The part kind MIMEKIND_FILE and associated code are suppressed.
  - Seek data origin offset not used anymore: suppressed.
  - MIMEKIND_NAMEDFILE renamed MIMEKIND_FILE; associated fields/functions
    renamed accordingly.
  - Curl_getformdata() processes stdin via a callback.

Daniel Stenberg (6 Sep 2017)
- configure: remove --enable-soname-bump and SONAME_BUMP
  
  Back in 2008, (and commit 3f3d6ebe665f3) we changed the logic in how we
  determine the native type for `curl_off_t`. To really make sure we
  didn't break ABI without bumping SONAME, we introduced logic that
  attempted to detect that it would use a different size and thus not be
  compatible. We also provided a manual switch that allowed users to tell
  configure to bump SONAME by force.
  
  Today, we know of no one who ever got a SONAME bump auto-detected and we
  don't know of anyone who's using the manual bump feature. The auto-
  detection is also no longer working since we introduced defining
  curl_off_t in system.h (7.55.0).
  
  Finally, this bumping logic is not present in the cmake build.
  
  Closes #1861

Jay Satiro (6 Sep 2017)
- [Gisle Vanem brought this change]

  vtls: select ssl backend case-insensitive (follow-up)
  
  - Do a case-insensitive comparison of CURL_SSL_BACKEND env as well.
  
  - Change Curl_strcasecompare calls to strcasecompare
    (maps to the former but shorter).
  
  Follow-up to c290b8f.
  
  Bug: https://github.com/curl/curl/commit/c290b8f#commitcomment-24094313
  
  Co-authored-by: Jay Satiro

- openssl: Integrate Peter Wu's SSLKEYLOGFILE implementation
  
  This is an adaptation of 2 of Peter Wu's SSLKEYLOGFILE implementations.
  
  The first one, written for old OpenSSL versions:
  https://git.lekensteyn.nl/peter/wireshark-notes/tree/src/sslkeylog.c
  
  The second one, written for BoringSSL and new OpenSSL versions:
  https://github.com/curl/curl/pull/1346
  
  Note the first one is GPL licensed but the author gave permission to
  waive that license for libcurl.
  
  As of right now this feature is disabled by default, and does not have
  a configure option to enable it. To enable this feature define
  ENABLE_SSLKEYLOGFILE when building libcurl and set environment
  variable SSLKEYLOGFILE to a pathname that will receive the keys.
  
  And in Wireshark change your preferences to point to that key file:
  Edit > Preferences > Protocols > SSL > Master-Secret
  
  Co-authored-by: Peter Wu
  
  Ref: https://github.com/curl/curl/pull/1030
  Ref: https://github.com/curl/curl/pull/1346
  
  Closes https://github.com/curl/curl/pull/1866

Patrick Monnerat (5 Sep 2017)
- mime: fix a trivial warning.

- mime: replace 'struct Curl_mimepart' by 'curl_mimepart' in encoder code.
  
  mime_state is now a typedef.

- mime: implement encoders.
  
  curl_mime_encoder() is operational and documented.
  curl tool -F option is extended with ";encoder=".
  curl tool --libcurl option generates calls to curl_mime_encoder().
  New encoder tests 648 & 649.
  Test 1404 extended with an encoder specification.

- runtests.pl: support attribute "nonewline" in part verify/upload.

- [Daniel Stenberg brought this change]

  fixup data/test1135

- [Daniel Stenberg brought this change]

  mime: unified to use the typedef'd mime structs everywhere
  
  ... and slightly edited to follow our code style better.

- [Daniel Stenberg brought this change]

  curl.h: use lower case curl_mime* as for all public symbols

- [Daniel Stenberg brought this change]

  docs/curl_mime_*.3: use correct variable types in examples

Kamil Dudka (5 Sep 2017)
- openssl: use OpenSSL's default ciphers by default
  
  Up2date versions of OpenSSL maintain the default reasonably secure
  without breaking compatibility, so it is better not to override the
  default by curl.  Suggested at https://bugzilla.redhat.com/1483972
  
  Closes #1846

Viktor Szakats (5 Sep 2017)
- examples/mime: minor example code fixes

Daniel Stenberg (5 Sep 2017)
- docs/curl_mime_*.3: added examples

- configure: add MultiSSL to FEATURES when enabled
  
  ...for curl-config and its corresponding test 1014

- http-proxy: treat all 2xx as CONNECT success
  
  Added test 1904 to verify.
  
  Reported-by: Lawrence Wagerfield
  Fixes #1859
  Closes #1860

- MAIL-ETIQUETTE: added "1.9 Your emails are public"

- curl.h: fix "unused checksrc ignore", remove dangling reference
  
  ... to a README file that doesn't exist anymore

Viktor Szakats (4 Sep 2017)
- docs: Update to secure URL versions

- mime: use CURL_ZERO_TERMINATED in examples
  
  and some minor whitespace fixes

Daniel Stenberg (4 Sep 2017)
- schannel: return CURLE_SSL_CACERT on failed verification
  
  ... not *CACERT_BADFILE as it isn't really because of a bad file.
  
  Bug: https://curl.haxx.se/mail/lib-2017-09/0002.html
  Closes #1858

- test1135: fixed after bd8070085f9

- examples/post-callback: stop returning one byte at a time
  
  ... since people copy and paste code from this example and thus they get
  an inefficient POST operation without a good reason and sometimes
  without understanding why.
  
  Instead this now returns as much data as possible.

- RELEASE-NOTES: fixed the function counter script

- curl.h: make the curl_strequal() protos use the same style
  
  ... as the other functions. Makes it easier to machine-parse!

- docs: curl_mime_*.3 man page formatting edits

- RELEASE-NOTES: synced with 1ab9e9b50

Patrick Monnerat (4 Sep 2017)
- lib: bump version info (soname). Adapt and reenable test 1135.

Daniel Stenberg (3 Sep 2017)
- headers: move the global_sslset() proto from multi.h to curl.h
  
  As it was added to multi.h simply to not break test 1135, which now has
  been disabled due to the mime API addition anyway and su we can now move
  the sslset stuff to where the other curl_global_* prototypes are.

Patrick Monnerat (3 Sep 2017)
- mime: fix signed/unsigned conversions.
  
  Use and generate CURL_ZERO_TERMINATED in curl tool and tests.

Jay Satiro (3 Sep 2017)
- tool_formparse: fix some trivial warnings

Patrick Monnerat (3 Sep 2017)
- mime: use size_t instead of ssize_t in public API interface.
  
  To support telling a string is nul-terminated, symbol CURL_ZERO_TERMINATED
  has been introduced.
  
  Documentation updated accordingly.
  
  symbols in versions updated. Added form API symbols deprecation info.

- mime: remove support "-" stdin pseudo-file name in curl_mime_filedata().
  
  This feature is badly supported in Windows: as a replacement, a caller has
  to use curl_mime_data_cb() with fread, fseek and possibly fclose
  callbacks to process opened files.
  
  The cli tool and documentation are updated accordingly.
  
  The feature is however kept internally for form API compatibility, with
  the known caveats it always had.
  
  As a side effect, stdin size is not determined by the cli tool even if
  possible and this results in a chunked transfer encoding. Test 173 is
  updated accordingly.

- mime: fix some implicit curl_off_t --> size_t conversion warnings.

- mime: tests and examples.
  
  Additional mime-specific tests.
  Existing tests updated to reflect small differences (Expect: 100-continue,
  data size change due to empty lines, etc).
  Option -F headers= keyword added to tests.
  test1135 disabled until the entry point order change is resolved.
  New example smtp-mime.
  Examples postit2 and multi-post converted from form API to mime API.

- mime: use in curl cli tool instead of form API.
  
  Extended -F option syntax to support multipart mail messages.
  -F keyword headers= added to include custom headers in parts.
  Documentation upgraded.

- mime: new MIME API.
  
  Available in HTTP, SMTP and IMAP.
  Deprecates the FORM API.
  See CURLOPT_MIMEPOST.
  Lib code and associated documentation.

- test564: Add a warning comment about shell profile output.
  
  Shell profile output makes the SSH server failing and this problem reason
  is not easy to find when no hint is given.

- checksrc: disable SPACEBEFOREPAREN for case statement.
  
  The case keyword may be followed by a constant expression and thus should
  allow it to start with an open parenthesis.

- runtests.pl: allow <file[1-4]> tags in client section.
  
  This enables tests to create more than one file on the client side.

- runtests.pl: Apply strippart to upload too.
  
  This will allow substitution of boundaries in mail messages.

- Curl_base64_encode: always call with a real data handle.
  
  Some calls in different modules were setting the data handle to NULL, causing
  segmentation faults when using builds that enable character code conversions.

- non-ascii: allow conversion functions to be called with a NULL data handle.

- http: fix a memory leakage in checkrtspprefix().

Daniel Stenberg (2 Sep 2017)
- [Max Dymond brought this change]

  ossfuzz: Move to C++ for curl_fuzzer.
  
  Automake gets confused if you want to use C++ static libraries with C
  code - basically we need to involve the clang++ linker. The easiest way
  of achieving this is to rename the C code as C++ code. This gets us a
  bit further along the path and ought to be compatible with Google's
  version of clang.

- curl_global_sslset: select backend by name case insensitively
  
  Closes #1849

- [Max Dymond brought this change]

  ossfuzz: additional seed corpora
  
  Create simple seed corpora for:
  - FTP
  - telnet
  - dict
  - tftp
  - imap
  - pop3
  
  based off the tests of the same number.
  
  Closes #1842

- [Max Dymond brought this change]

  ossfuzz: moving towards the ideal integration
  
  - Start with the basic code from the ossfuzz project.
  - Rewrite fuzz corpora to be binary files full of Type-Length-Value
    data, and write a glue layer in the fuzzing function to convert
    corpora into CURL options.
  - Have supporting functions to generate corpora from existing tests
  - Integrate with Makefile.am

- strcase: corrected comment header for Curl_strcasecompare()

- unit1301: fix error message on first test

- curl_global_sslset.3: show the struct and enum too
  
  ... so that users can actually write code based on the man page alone,
  not having to read the header file.

Jay Satiro (31 Aug 2017)
- darwinssl: handle long strings in TLS certs (follow-up)
  
  - Fix handling certificate subjects that are already UTF-8 encoded.
  
  Follow-up to b3b75d1 from two days ago. Since then a copy would be
  skipped if the subject was already UTF-8, possibly resulting in a NULL
  deref later on.
  
  Ref: https://github.com/curl/curl/issues/1823
  Ref: https://github.com/curl/curl/pull/1831
