gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnurl] branch master updated (71b588320 -> 697584161)


From: gnunet
Subject: [gnurl] branch master updated (71b588320 -> 697584161)
Date: Fri, 10 Jan 2020 23:05:38 +0100

This is an automated email from the git hooks/post-receive script.

ng0 pushed a change to branch master
in repository gnurl.

    from 71b588320 Merge branch 'master' of https://github.com/curl/curl
     new 4c2f5d52b url2file.c: fix copyright year
     new 68da0b8b8 examples/postinmemory.c: Call curl_global_cleanup always
     new 97934a2f7 CURLOPT_HEADERFUNCTION.3: Document that size is always 1
     new 779b415a2 os400: Add missing CURLE error constants
     new 4b463992e lib: fix warnings found when porting to NuttX
     new 060fb84a5 lib: remove erroneous +x file permission on some c files
     new 249f7b37e tool_operate: fix mem leak when failed config parse
     new 943486477 travis: Fix error detection
     new 9024b0138 bearssl: Improve I/O handling
     new 9603c8299 tests: Change NTLM tests to require SSL
     new a8d13336b tool: make a few char pointers point to const char instead
     new be83fe11b tests: Fix bounce requests with truncated writes
     new e24ea706f COPYING: it's 2020!
     new 291ed5212 lib: fix compiler warnings with 
`CURL_DISABLE_VERBOSE_STRINGS`
     new 271ec6b9b curl: cleanup multi handle on failure
     new 392bff4ab curl: properly free mimepost data
     new 2150c4b5d docs: mention CURL_MAX_INPUT_LENGTH restrictions
     new 459d0db45 curl:getparameter return error for --http3 if libcurl 
doesn't support
     new e9dd17b75 CURLOPT_READFUNCTION.3: fix variable name in example
     new aeb32d059 CURLOPT_READFUNCTION.3: fix fopen params in example
     new 1b71bc532 file: on Windows, refuse paths that start with \\
     new 4c34af4c9 curl -w: handle a blank input file correctly
     new 50e35ccfb file: fix copyright year range
     new 9275c2be8 multi.h: move INITIAL_MAX_CONCURRENT_STREAMS from public 
header
     new 8cf875ed3 TrackMemory tests: always remove CR before LF
     new f147c6947 RELEASE-PROCEDURE: add four future release dates
     new 72e304c77 THANKS: updated with names from the 7.68.0 release
     new 2cfac302f RELEASE-NOTES: 7.68.0
     new 697584161 Merge tag 'curl-7_68_0'

The 29 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .travis.yml                                        | 255 +--------------------
 COPYING                                            |   2 +-
 RELEASE-NOTES                                      |  74 ++++--
 docs/RELEASE-PROCEDURE.md                          |   8 +-
 docs/THANKS                                        |  32 +++
 docs/examples/postinmemory.c                       |   5 +-
 docs/examples/url2file.c                           |   2 +-
 docs/libcurl/gnurl_easy_setopt.3                   |   6 +-
 docs/libcurl/gnurl_url_set.3                       |   6 +-
 docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3        |   6 +-
 docs/libcurl/opts/GNURLOPT_READFUNCTION.3          |   4 +-
 include/gnurl/multi.h                              |   5 +-
 lib/asyn-thread.c                                  |   0
 lib/connect.c                                      |  12 +-
 lib/curl_endian.c                                  |   2 +-
 lib/curl_setup_once.h                              |   1 +
 lib/file.c                                         |   8 +-
 lib/http.c                                         |   4 +-
 lib/multi.c                                        |   0
 lib/multihandle.h                                  |   6 +-
 lib/socketpair.c                                   |   3 +
 lib/strerror.c                                     |   5 +-
 lib/vtls/bearssl.c                                 | 162 +++++++------
 lib/vtls/schannel.c                                |   4 +-
 packages/OS400/curl.inc.in                         |   6 +
 scripts/travis/before_script.sh                    | 107 +++++++++
 .../travis/iconv-env.sh                            |   0
 scripts/travis/script.sh                           | 155 +++++++++++++
 src/tool_getparam.c                                |  10 +-
 src/tool_operate.c                                 |  13 +-
 src/tool_paramhlp.c                                |   6 +-
 src/tool_paramhlp.h                                |   2 +-
 tests/data/Makefile.inc                            |   6 +-
 tests/data/test1008                                |   1 +
 tests/data/test1021                                |   1 +
 tests/data/test1097                                |   1 +
 tests/data/test1100                                |   1 +
 tests/data/test1215                                |   1 +
 tests/data/{test512 => test1271}                   |  23 +-
 tests/data/{test293 => test1293}                   |  25 +-
 tests/data/test1330                                |   1 +
 tests/data/test150                                 |   1 +
 tests/data/test155                                 |   1 +
 tests/data/test159                                 |   1 +
 tests/data/test162                                 |   1 +
 tests/data/test169                                 |   1 +
 tests/data/test170                                 |   1 +
 tests/data/test176                                 |   1 +
 tests/data/test2025                                |   1 +
 tests/data/test2028                                |   1 +
 tests/data/test2029                                |   1 +
 tests/data/test2030                                |   1 +
 tests/data/test2031                                |   1 +
 tests/data/test2032                                |   1 +
 tests/data/test2033                                |   1 +
 tests/data/test209                                 |   1 +
 tests/data/test213                                 |   1 +
 tests/data/test239                                 |   1 +
 tests/data/test243                                 |   1 +
 tests/data/test265                                 |   1 +
 tests/data/test267                                 |   1 +
 tests/data/test547                                 |   1 +
 tests/data/test548                                 |   1 +
 tests/data/test555                                 |   1 +
 tests/data/test558                                 |   1 +
 tests/data/test590                                 |   1 +
 tests/data/test67                                  |   1 +
 tests/data/test68                                  |   1 +
 tests/data/test69                                  |   1 +
 tests/data/test81                                  |   1 +
 tests/data/test822                                 |   1 +
 tests/data/test827                                 |   1 +
 tests/data/test831                                 |   1 +
 tests/data/test834                                 |   1 +
 tests/data/test868                                 |   1 +
 tests/data/test873                                 |   1 +
 tests/data/test877                                 |   1 +
 tests/data/test880                                 |   1 +
 tests/data/test89                                  |   1 +
 tests/data/test90                                  |   1 +
 tests/data/test906                                 |   1 +
 tests/data/test91                                  |   1 +
 tests/data/test921                                 |   1 +
 tests/data/test933                                 |   1 +
 tests/data/test936                                 |   1 +
 tests/server/sws.c                                 |   2 +
 86 files changed, 594 insertions(+), 423 deletions(-)
 mode change 100755 => 100644 lib/asyn-thread.c
 mode change 100755 => 100644 lib/multi.c
 create mode 100755 scripts/travis/before_script.sh
 rename .travis-iconv-env.sh => scripts/travis/iconv-env.sh (100%)
 mode change 100644 => 100755
 create mode 100755 scripts/travis/script.sh
 copy tests/data/{test512 => test1271} (60%)
 copy tests/data/{test293 => test1293} (54%)

diff --git a/.travis.yml b/.travis.yml
index 8c77a746a..eacb36493 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -423,258 +423,13 @@ install:
   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew reinstall libtool > 
/dev/null; fi
   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install rtmpdump libssh2 
c-ares libmetalink libressl nghttp2 libmetalink; fi
 
+# before_script and script:
+# Travis isn't reliable catching errors in inline script commands (#3730).
+# Do not add anything here, instead add to the respective script.
 before_script:
-    - ./buildconf
-    - |
-      if [ "$NGTCP2" = yes ]; then
-       (cd $HOME &&
-       git clone --depth 1 -b openssl-quic-draft-23 
https://github.com/tatsuhiro-t/openssl possl &&
-       cd possl &&
-       ./config enable-tls1_3 --prefix=$HOME/ngbuild &&
-       make && make install_sw &&
-
-       cd .. &&
-       git clone --depth 1 https://github.com/ngtcp2/nghttp3
-       cd nghttp3 &&
-       autoreconf -i &&
-       ./configure --prefix=$HOME/ngbuild --enable-lib-only &&
-       make && make install &&
-
-       cd .. &&
-       git clone --depth 1 https://github.com/ngtcp2/ngtcp2 &&
-       cd ngtcp2 &&
-       autoreconf -i &&
-       ./configure PKG_CONFIG_PATH=$HOME/ngbuild/lib/pkgconfig 
LDFLAGS="-Wl,-rpath,$HOME/ngbuild/lib" --prefix=$HOME/ngbuild --enable-lib-only 
&&
-       make && make install)
-      fi
-    - |
-      if [ "$TRAVIS_OS_NAME" = linux -a "$BORINGSSL" ]; then
-        (cd $HOME &&
-        git clone --depth=1 https://boringssl.googlesource.com/boringssl &&
-        cd boringssl &&
-        mkdir build &&
-        cd build &&
-        CXX="g++" CC="gcc" cmake -DCMAKE_BUILD_TYPE=release 
-DBUILD_SHARED_LIBS=1 .. &&
-        make &&
-        cd .. &&
-        mkdir lib &&
-        cd lib &&
-        cp ../build/crypto/libcrypto.so . &&
-        cp ../build/ssl/libssl.so . &&
-        echo "BoringSSL lib dir: "`pwd` &&
-        cd ../build &&
-        make clean && rm -f CMakeCache.txt &&
-        CXX="g++" CC="gcc" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on .. &&
-        make &&
-        export LIBS=-lpthread )
-      fi
-    - |
-      if [ "$TRAVIS_OS_NAME" = linux -a "$QUICHE" ]; then
-        (cd $HOME &&
-        git clone --depth=1 https://github.com/cloudflare/quiche.git &&
-        curl https://sh.rustup.rs -sSf | sh -s -- -y &&
-        source $HOME/.cargo/env &&
-        cd quiche &&
-        QUICHE_BSSL_PATH=$HOME/boringssl cargo build -v --release --features 
pkg-config-meta)
-      fi
-    - |
-      if [ $TRAVIS_OS_NAME = linux ]; then
-        if [ ! -e $HOME/wolfssl-4.0.0-stable/Makefile ]; then
-          (cd $HOME && \
-          curl -LO 
https://github.com/wolfSSL/wolfssl/archive/v4.0.0-stable.tar.gz && \
-          tar -xzf v4.0.0-stable.tar.gz && \
-          cd wolfssl-4.0.0-stable && \
-          ./autogen.sh && \
-          ./configure --enable-tls13 --enable-all && \
-          touch wolfssl/wolfcrypt/fips.h && \
-          make)
-        fi
-      fi
-    - |
-      if [ $TRAVIS_OS_NAME = linux ]; then
-        if [ ! -e $HOME/mesalink-1.0.0/Makefile ]; then
-          (cd $HOME && \
-          curl https://sh.rustup.rs -sSf | sh -s -- -y && \
-          source $HOME/.cargo/env && \
-          curl -LO 
https://github.com/mesalock-linux/mesalink/archive/v1.0.0.tar.gz && \
-          tar -xzf v1.0.0.tar.gz && \
-          cd mesalink-1.0.0 && \
-          ./autogen.sh && \
-          ./configure --enable-tls13  && \
-          make)
-        fi
-      fi
-    - |
-      if [ $TRAVIS_OS_NAME = linux ]; then
-        if [ ! -e $HOME/nghttp2-1.39.2/Makefile ]; then
-          (cd $HOME && \
-          curl -L 
https://github.com/nghttp2/nghttp2/releases/download/v1.39.2/nghttp2-1.39.2.tar.gz
 |
-          tar xzf - && \
-          cd nghttp2-1.39.2 && \
-          CXX="g++-8" CC="gcc-8" CFLAGS="" LDFLAGS="" LIBS="" ./configure 
--disable-threads --enable-app && \
-          make)
-        fi
-      fi
-    - |
-      if [ $TRAVIS_OS_NAME = linux ]; then
-        (cd $HOME/wolfssl-4.0.0-stable && sudo make install)
-        (cd $HOME/mesalink-1.0.0 && sudo make install)
-        (cd $HOME/nghttp2-1.39.2 && sudo make install)
-      fi
-
+  - ./scripts/travis/before_script.sh || travis_terminate 1
 script:
-    - |
-        set -eo pipefail
-        if [ "$T" = "coverage" ]; then
-             ./configure --enable-debug --disable-shared 
--disable-threaded-resolver --enable-code-coverage --enable-werror 
--enable-alt-svc --with-libssh2
-             make
-             make TFLAGS=-n test-nonflaky
-             make "TFLAGS=-n -e" test-nonflaky
-             tests="1 200 300 500 700 800 900 1000 1100 1200 1302 1400 1502 
3000"
-             make "TFLAGS=-n -t $tests" test-nonflaky
-             coveralls --gcov /usr/bin/gcov-8 --gcov-options '\-lp' -i src -e 
lib -e tests -e docs -b $PWD/src
-             coveralls --gcov /usr/bin/gcov-8 --gcov-options '\-lp' -e src -i 
lib -e tests -e docs -b $PWD/lib
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "torture" ]; then
-             ./configure --enable-debug --disable-shared 
--disable-threaded-resolver --enable-code-coverage --enable-werror 
--enable-alt-svc --with-libssh2
-             make
-             make TFLAGS=-n test-nonflaky
-             make "TFLAGS=-n -e" test-nonflaky
-             tests="1 200 300 500 700 800 900 1000 1100 1200 1302 1400 1502 
3000"
-             make "TFLAGS=-n --shallow=40 -t $tests" test-nonflaky
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "debug" ]; then
-             ./configure --enable-debug --enable-werror $C
-             make && make examples
-             if [ -z $NOTESTS ]; then
-                if [ "$TRAVIS_ARCH" = "aarch64" ] ; then
-                    # TODO: find out why this test is failing on arm64
-                    make "TFLAGS=-n !323" test-nonflaky
-                else
-                    make TFLAGS=-n test-nonflaky
-                fi
-             fi
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "debug-wolfssl" ]; then
-             ./configure --enable-debug --enable-werror $C
-             make
-             make "TFLAGS=-n !313" test-nonflaky
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "debug-mesalink" ]; then
-             ./configure --enable-debug --enable-werror $C
-             make
-             make "TFLAGS=-n !313 !3001" test-nonflaky
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "novalgrind" ]; then
-             ./configure --enable-werror $C
-             make && make examples
-             make TFLAGS=-n test-nonflaky
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "normal" ]; then
-             if [ $TRAVIS_OS_NAME = linux ]; then
-               # Remove system curl to make sure we don't rely on it.
-               # Only done on Linux since we're not permitted to on mac.
-               sudo rm -f /usr/bin/curl
-             fi
-             ./configure --enable-warnings --enable-werror $C
-             make && make examples
-             if [ -z $NOTESTS ]; then
-                make test-nonflaky
-             fi
-             if [ -n $CHECKSRC ]; then
-                echo "enable COPYRIGHTYEAR" > ./docs/examples/.checksrc
-                echo "enable COPYRIGHTYEAR" > ./include/curl/.checksrc
-                make checksrc
-             fi
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "tidy" ]; then
-             ./configure --enable-warnings --enable-werror $C
-             make && make tidy
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "iconv" ]; then
-             source .travis-iconv-env.sh
-             ./configure --enable-debug --enable-werror $C
-             make && make examples
-             make test-nonflaky
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "cmake" ]; then
-             if [ $TRAVIS_OS_NAME = linux ]; then
-                cmake -H. -Bbuild -DCURL_WERROR=ON && cmake --build build
-             else
-                cmake -H. -Bbuild -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl 
-DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON && cmake --build build
-             fi
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "distcheck" ]; then
-            # find BOM markers and exit if we do
-            ! git grep `printf '\xef\xbb\xbf'`
-            ./configure
-            make
-            ./maketgz 99.98.97
-            # verify in-tree build - and install it
-            (tar xf curl-99.98.97.tar.gz && \
-             cd curl-99.98.97 && \
-             ./configure --prefix=$HOME/temp && \
-             make && \
-             make TFLAGS=1 test && \
-             make install)
-            # basic check of the installed files
-            bash scripts/installcheck.sh $HOME/temp
-            rm -rf curl-99.98.97
-            # verify out-of-tree build
-            (tar xf curl-99.98.97.tar.gz && \
-             touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc && \
-             mkdir build && \
-             cd build && \
-             ../curl-99.98.97/configure && \
-             make && \
-             make TFLAGS='-p 1 1139' test)
-            # verify cmake build
-            rm -rf curl-99.98.97
-            (tar xf curl-99.98.97.tar.gz && \
-             cd curl-99.98.97 && \
-             mkdir build && \
-             cd build && \
-             cmake .. && \
-             make)
-        fi
-    - |
-        set -eo pipefail
-        if [ "$T" = "fuzzer" ]; then
-          # Download the fuzzer to a temporary folder
-          ./tests/fuzz/download_fuzzer.sh /tmp/curl_fuzzer
-
-          export CURLSRC=$PWD
-
-          # Run the mainline fuzzer test
-          pushd /tmp/curl_fuzzer
-          ./mainline.sh ${CURLSRC}
-          popd
-        fi
-    - |
-        if [ "$T" = "scan-build" ]; then
-             scan-build ./configure --enable-debug --enable-werror $C
-             scan-build --status-bugs make && scan-build --status-bugs make 
examples
-        fi
+  - ./scripts/travis/script.sh || travis_terminate 1
 
 # whitelist branches to avoid testing feature branches twice (as branch and as 
pull request)
 branches:
diff --git a/COPYING b/COPYING
index 3528bd756..9d9e4af8d 100644
--- a/COPYING
+++ b/COPYING
@@ -1,6 +1,6 @@
 COPYRIGHT AND PERMISSION NOTICE
 
-Copyright (c) 1996 - 2019, Daniel Stenberg, <address@hidden>, and many
+Copyright (c) 1996 - 2020, Daniel Stenberg, <address@hidden>, and many
 contributors, see the THANKS file.
 
 All rights reserved.
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 73eb12c1d..7a1211271 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,10 +1,10 @@
 curl and libcurl 7.68.0
 
- Public curl releases:         187
+ Public curl releases:         188
  Command line options:         229
  curl_easy_setopt() options:   269
  Public functions in libcurl:  82
- Contributors:                 2056
+ Contributors:                 2088
 
 This release includes the following changes:
 
@@ -17,10 +17,13 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o CVE-2019-15601: file: on Windows, refuse paths that start with \\ [106]
  o Azure Pipelines: add several builds
  o CMake: add support for building with the NSS vtls backend [43]
  o CURL-DISABLE: initial docs for the CURL_DISABLE_* defines [19]
+ o CURLOPT_HEADERFUNCTION.3: Document that size is always 1 [100]
  o CURLOPT_QUOTE.3: fix typos [78]
+ o CURLOPT_READFUNCTION.3: fix the example [107]
  o CURLOPT_URL.3: "curl supports SMB version 1 (only)"
  o CURLOPT_VERBOSE.3: see also ERRORBUFFER
  o HISTORY: added cmake, HTTP/3 and parallel downloads with curl
@@ -30,6 +33,7 @@ This release includes the following bugfixes:
  o KNOWN_BUGS: LDAP on Windows doesn't work correctly [86]
  o KNOWN_BUGS: TLS session cache doesn't work with TFO [56]
  o OPENSOCKETFUNCTION.3: correct the purpose description [48]
+ o TrackMemory tests: always remove CR before LF [111]
  o altsvc: bump to h3-24 [6]
  o altsvc: make the save function ignore NULL filenames [67]
  o build: Disable Visual Studio warning "conditional expression is constant" 
[49]
@@ -46,29 +50,42 @@ This release includes the following bugfixes:
  o conncache: fix multi-thread use of shared connection cache [61]
  o copyrights: fix copyright year range [25]
  o create_conn: prefer multiplexing to using new connections [76]
+ o curl -w: handle a blank input file correctly [105]
  o curl.h: add two missing defines for "pre ISO C" compilers [75]
  o curl/parseconfig: fix mem-leak [81]
  o curl/parseconfig: use curl_free() to free memory allocated by libcurl [80]
+ o curl: cleanup multi handle on failure [103]
  o curl: fix --upload-file . hangs if delay in STDIN [35]
  o curl: fix -T globbing [16]
  o curl: improved cleanup in upload error path [69]
+ o curl: make a few char pointers point to const char instead [95]
+ o curl: properly free mimepost data [104]
  o curl: show better error message when no homedir is found [47]
+ o curl: show error for --http3 if libcurl lacks support [108]
  o curl_setup_once: consistently use WHILE_FALSE in macros [54]
  o define: remove HAVE_ENGINE_LOAD_BUILTIN_ENGINES, not used anymore [83]
  o docs: Change 'experiemental' to 'experimental' [30]
  o docs: TLS SRP doesn't work with TLS 1.3 [87]
  o docs: fix several typos [62]
+ o docs: mention CURL_MAX_INPUT_LENGTH restrictions [109]
  o doh: improved both encoding and decoding [11]
  o doh: make it behave when built without proxy support [68]
+ o examples/postinmemory.c: Call curl_global_cleanup always [101]
+ o examples/url2file.c: corrected erroneous comment [102]
  o examples: add multi-poll.c [14]
  o global_init: undo the "intialized" bump in case of failure [52]
  o hostip: suppress compiler warning [64]
  o http_ntlm: Remove duplicate NSS initialisation [55]
  o lib: Move lib/ssh.h -> lib/vssh/ssh.h [9]
+ o lib: fix compiler warnings with `CURL_DISABLE_VERBOSE_STRINGS` [93]
+ o lib: fix warnings found when porting to NuttX [99]
  o lib: remove ASSIGNWITHINCONDITION exceptions, use our code style [84]
+ o lib: remove erroneous +x file permission on some c files [99]
  o libssh2: add support for ECDSA and ed25519 knownhost keys [89]
+ o multi.h: remove INITIAL_MAX_CONCURRENT_STREAMS from public header [110]
  o multi: free sockhash on OOM [63]
  o multi_poll: avoid busy-loop when called without easy handles attached [15]
+ o ngtcp2: Support the latest update key callback type [92]
  o ngtcp2: fix thread-safety bug in error-handling [33]
  o ngtcp2: free used resources on disconnect [7]
  o ngtcp2: handle key updates as ngtcp2 master branch tells us [8]
@@ -107,6 +124,8 @@ This release includes the following bugfixes:
  o tests/unit1607: fix mem-leak in OOM [66]
  o tests/unit1609: fix mem-leak in OOM [66]
  o tests/unit1620: fix bad free in OOM [66]
+ o tests: Change NTLM tests to require SSL [96]
+ o tests: Fix bounce requests with truncated writes [94]
  o tests: fix build with `CURL_DISABLE_DOH` [64]
  o tests: fix permissions of ssh keys in WSL [58]
  o tests: make it possible to set executable extensions [58]
@@ -114,13 +133,14 @@ This release includes the following bugfixes:
  o tests: set LC_ALL=en_US.UTF-8 instead of blank in several tests [74]
  o tests: use DoH feature for DoH tests [64]
  o tests: use \r\n for log messages in WSL [58]
+ o tool_operate: fix mem leak when failed config parse [98]
+ o travis: Fix error detection [97]
  o travis: abandon coveralls, it is not reliable [57]
  o travis: build ngtcp2 with --enable-lib-only [32]
  o travis: export the CC/CXX variables when set [34]
  o vtls: make BearSSL possible to set with CURL_SSL_BACKEND [72]
  o winbuild: Define CARES_STATICLIB when WITH_CARES=static [59]
  o winbuild: Document CURL_STATICLIB requirement for static libcurl [88]
- o ngtcp2: Support the latest update key callback type [92]
 
 This release includes the following known bugs:
 
@@ -130,20 +150,23 @@ This release would not have looked like this without 
help, code, reports and
 advice from friends like these:
 
   3dyd on github, Anderson Sasaki, Andreas Falkenhahn, Andrew Ishchuk,
-  bdry on github, Bjoern Franke, bxac on github, Bylon2 on github,
-  Christian Schmitz, Christopher Reid, Christoph M. Becker, Cynthia Coan,
-  Dan Fandrich, Daniel Gustafsson, Daniel Stenberg, David Benjamin,
-  Gergely Nagy, Gisle Vanem, JanB on github, Javier Blazquez, Jeff Mears,
-  Jeffrey Walton, John Schroeder, Kamil Dudka, Kunal Ekawde, Leonardo Taccari,
-  Marcel Raad, Marc Hörsken, Maros Priputen, Massimiliano Fantuzzi,
-  Max Kellermann, Melissa Mears, Michael Forney, Michael Vittiglio,
-  Mohammad Hasbini, Niall O'Reilly, Paul Groke, Paul Hoffman,
-  Paulo Roberto Tomasi, Pavel Löbl, Pavel Pavlov, Peter Wu, Ram Krushna Mishra,
-  Ray Satiro, Richard Alcock, Richard Bowker, Santino Keupp, sayrer on github,
-  Shailesh Kapse, SLDiggie on github, Steve Holme, Tatsuhiro Tsujikawa,
+  bdry on github, Bjoern Franke, Brian Carpenter, bxac on github,
+  Bylon2 on github, Christian Schmitz, Christopher Head, Christopher Reid,
+  Christoph M. Becker, Cynthia Coan, Dan Fandrich, Daniel Gustafsson,
+  Daniel Stenberg, David Benjamin, Emil Engler, Fernando Muñoz, Frank Gevaerts,
+  Geeknik Labs, Gergely Nagy, Gisle Vanem, JanB on github, Javier Blazquez,
+  Jeff Mears, Jeffrey Walton, John Schroeder, Kamil Dudka,
+  kouzhudong on github, Kunal Ekawde, Leonardo Taccari, Marc Aldorasi,
+  Marcel Raad, marc-groundctl on github, Marc Hörsken, Maros Priputen,
+  Massimiliano Fantuzzi, Max Kellermann, Melissa Mears, Michael Forney,
+  Michael Vittiglio, Mohammad Hasbini, Niall O'Reilly, Paul Groke,
+  Paul Hoffman, Paul Joyce, Paulo Roberto Tomasi, Pavel Löbl, Pavel Pavlov,
+  Peter Wu, Ram Krushna Mishra, Ray Satiro, Richard Alcock, Richard Bowker,
+  Rickard Hallerbäck, Santino Keupp, sayrer on github, Shailesh Kapse,
+  Simon Warta, SLDiggie on github, Steve Holme, Tatsuhiro Tsujikawa,
   Tom van der Woerdt, Victor Magierski, Vlastimil Ovčáčík, Wyatt O'Day,
-  Xiaoyin Liu,
-  (57 contributors)
+  Xiang Xiao, Xiaoyin Liu,
+  (70 contributors)
 
         Thanks! (and sorry if I forgot to mention someone)
 
@@ -241,3 +264,22 @@ References to bug reports and discussions on issues:
  [90] = https://curl.haxx.se/bug/?i=4720
  [91] = https://curl.haxx.se/bug/?i=4715
  [92] = https://curl.haxx.se/bug/?i=4735
+ [93] = https://curl.haxx.se/bug/?i=4775
+ [94] = https://github.com/curl/curl/pull/4717#issuecomment-570240785
+ [95] = https://curl.haxx.se/bug/?i=4771
+ [96] = https://curl.haxx.se/bug/?i=4768
+ [97] = https://curl.haxx.se/bug/?i=3730
+ [98] = https://curl.haxx.se/bug/?i=4767
+ [99] = https://curl.haxx.se/bug/?i=4756
+ [100] = https://curl.haxx.se/bug/?i=4758
+ [101] = https://curl.haxx.se/bug/?i=4751
+ [102] = https://curl.haxx.se/bug/?i=4745
+ [103] = https://curl.haxx.se/bug/?i=4772
+ [104] = https://curl.haxx.se/bug/?i=4781
+ [105] = https://curl.haxx.se/bug/?i=4786
+ [106] = https://curl.haxx.se/docs/CVE-2019-15601.html
+ [107] = https://curl.haxx.se/bug/?i=4787
+ [108] = https://curl.haxx.se/bug/?i=4785
+ [109] = https://curl.haxx.se/bug/?i=4783
+ [110] = https://curl.haxx.se/bug/?i=4790
+ [111] = https://curl.haxx.se/bug/?i=4788
diff --git a/docs/RELEASE-PROCEDURE.md b/docs/RELEASE-PROCEDURE.md
index 70609fd70..d203458be 100644
--- a/docs/RELEASE-PROCEDURE.md
+++ b/docs/RELEASE-PROCEDURE.md
@@ -84,14 +84,14 @@ Coming dates
 Based on the description above, here are some planned release dates (at the
 time of this writing):
 
-- May 22, 2019
-- July 17, 2019
-- September 11, 2019
-- November 6, 2019
 - January 8, 2020 (moved)
 - February 27, 2020
 - April 22, 2020
 - June 17, 2020
+- August 12, 2020
+- October 7, 2020
+- December 2, 2020
+- January 27, 2021
 
 The above (and more) curl-related dates are published in
 [iCalendar 
format](https://calendar.google.com/calendar/ical/c9u5d64odop9js55oltfarjk6g%40group.calendar.google.com/public/basic.ics)
diff --git a/docs/THANKS b/docs/THANKS
index 884906ae2..af74c0bd6 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -7,6 +7,7 @@
 "Captain Basil"
 "Spoon Man"
 1ocalhost on github
+3dyd on github
 Aaro Koskinen
 Aaron Oneal
 Aaron Orenstein
@@ -96,11 +97,13 @@ Anders Bakken
 Anders Gustafsson
 Anders Havn
 Anders Roxell
+Anderson Sasaki
 Anderson Toshiyuki Sasaki
 Andi Jahja
 Andre Guibert de Bruet
 Andre Heinecke
 Andreas Damm
+Andreas Falkenhahn
 Andreas Farber
 Andreas Kostyrka
 Andreas Malzahn
@@ -126,6 +129,7 @@ Andrew Biggs
 Andrew Bushnell
 Andrew Francis
 Andrew Fuller
+Andrew Ishchuk
 Andrew Krieger
 Andrew Kurushin
 Andrew Lambert
@@ -221,6 +225,7 @@ Bill Middlecamp
 Bill Nagel
 Bill Pyne
 Bjarni Ingi Gislason
+Bjoern Franke
 Bjoern Sikora
 Bjorn Augustsson
 Bjorn Reese
@@ -318,6 +323,7 @@ Christopher Conroy
 Christopher Head
 Christopher Palow
 Christopher R. Palmer
+Christopher Reid
 Christopher Stone
 Chungtsun Li
 Ciprian Badescu
@@ -347,6 +353,7 @@ Craig de Stigter
 Cris Bailiff
 Cristian Rodríguez
 Curt Bogmine
+Cynthia Coan
 Cyril B
 Cyrill Osterwalder
 Cédric Connes
@@ -792,6 +799,7 @@ Jan Kunder
 Jan Schaumann
 Jan Schmidt
 Jan Van Boghout
+JanB on github
 Janne Johansson
 Jared Jennings
 Jared Lundell
@@ -826,6 +834,7 @@ Jeff Hodges
 Jeff Johnson
 Jeff King
 Jeff Lawson
+Jeff Mears
 Jeff Phillips
 Jeff Pohlmeyer
 Jeff Weber
@@ -901,6 +910,7 @@ John Marino
 John Marshall
 John McGowan
 John P. McCaskey
+John Schroeder
 John Starks
 John Suprock
 John V. Chow
@@ -1165,6 +1175,7 @@ Markus Koetter
 Markus Moeller
 Markus Oberhumer
 Markus Westerlind
+Maros Priputen
 Marquis de Muesli
 Martijn Koster
 Martin Ankerl
@@ -1186,6 +1197,7 @@ Martin Storsjö
 Martin Vejnár
 Marty Kuhrt
 Maruko
+Massimiliano Fantuzzi
 Massimiliano Ziccardi
 Massimo Callegari
 Mateusz Loskot
@@ -1215,6 +1227,7 @@ Mauro Iorio
 Mauro Rappa
 Max Dymond
 Max Katsev
+Max Kellermann
 Max Khon
 Max Savenkov
 Maxim Ivanov
@@ -1235,6 +1248,7 @@ Michael Cronenworth
 Michael Curtis
 Michael Day
 Michael Felt
+Michael Forney
 Michael Gmelin
 Michael Goffioul
 Michael Jahn
@@ -1254,6 +1268,7 @@ Michael Smith
 Michael Stapelberg
 Michael Steuer
 Michael Stillwell
+Michael Vittiglio
 Michael Wallner
 Michal Bonino
 Michal Marek
@@ -1293,6 +1308,7 @@ Miroslav Spousta
 Mitz Wark
 Mohamed Lrhazi
 Mohammad AlSaleh
+Mohammad Hasbini
 Mohun Biswas
 Mostyn Bramley-Moore
 Moti Avrahami
@@ -1401,6 +1417,7 @@ Paul Dreik
 Paul Groke
 Paul Harrington
 Paul Harris
+Paul Hoffman
 Paul Howarth
 Paul Joyce
 Paul Marks
@@ -1410,6 +1427,7 @@ Paul Nolan
 Paul Oliver
 Paul Querna
 Paul Saab
+Paulo Roberto Tomasi
 Pavel Cenek
 Pavel Gushchin
 Pavel Löbl
@@ -1504,6 +1522,7 @@ Rajkumar Mandal
 Ralf S. Engelschall
 Ralph Beckmann
 Ralph Mitchell
+Ram Krushna Mishra
 Ran Mozes
 Randall S. Becker
 Randy Armstrong
@@ -1541,6 +1560,7 @@ Richard Adams
 Richard Alcock
 Richard Archer
 Richard Atterer
+Richard Bowker
 Richard Bramante
 Richard Clayton
 Richard Cooper
@@ -1558,6 +1578,7 @@ Rick Deist
 Rick Jones
 Rick Richardson
 Rick Welykochy
+Rickard Hallerbäck
 Ricki Hirner
 Ricky Leverence
 Ricky-Tigg on github
@@ -1626,6 +1647,7 @@ Ryuichi KAWAMATA
 Rémy Léone
 S. Moonesamy
 SBKarr on github
+SLDiggie on github
 Salah-Eddin Shaban
 Salvador Dávila
 Salvatore Sorrentino
@@ -1641,6 +1663,7 @@ Samuel Thibault
 Sander Gates
 Sandor Feldi
 Santhana Todatry
+Santino Keupp
 Saqib Ali
 Sara Golemon
 Saran Neti
@@ -1677,6 +1700,7 @@ Seth Mos
 Sevan Janiyan
 Sh Diao
 Shachaf Ben-Kiki
+Shailesh Kapse
 Shankar Jadhavar
 Shao Shuchao
 Sharad Gupta
@@ -1883,6 +1907,7 @@ Vasy Okhin
 Venkat Akella
 Venkataramana Mokkapati
 Vicente Garcia
+Victor Magierski
 Victor Snezhko
 Vijay Panghal
 Vikram Saxena
@@ -1901,6 +1926,7 @@ Vlad Ureche
 Vladimir Grishchenko
 Vladimir Kotal
 Vladimir Lazarenko
+Vlastimil Ovčáčík
 Vojtech Janota
 Vojtech Minarik
 Vojtěch Král
@@ -1930,7 +1956,9 @@ Wu Yongzheng
 Wyatt O'Day
 Xavier Bouchoux
 XhstormR on github
+Xiang Xiao
 Xiangbin Li
+Xiaoyin Liu
 XmiliaH on github
 Yaakov Selkowitz
 Yang Tse
@@ -1971,9 +1999,11 @@ anshnd on github
 arainchik on github
 asavah on github
 baumanj on github
+bdry on github
 bobmitchell1956 on github
 bsammon on github
 buzo-ffm on github
+bxac on github
 cbartl on github
 cclauss on github
 clbr on github
@@ -2007,6 +2037,7 @@ jungle-boogie on github
 jveazey on github
 jzinn on github
 ka7 on github
+kouzhudong on github
 kreshano on github
 l00p3r on Hackerone
 lijian996 on github
@@ -2037,6 +2068,7 @@ patelvivekv1993 on github
 patnyb on github
 pendrek at hackerone
 pszemus on github
+sayrer on github
 silveja1 on github
 smuellerDD on github
 sstruchtrup on github
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
index 22014abc9..0cc66506e 100644
--- a/docs/examples/postinmemory.c
+++ b/docs/examples/postinmemory.c
@@ -104,10 +104,9 @@ int main(void)
 
     /* always cleanup */
     curl_easy_cleanup(curl);
-
-    /* we're done with libcurl, so clean it up */
-    curl_global_cleanup();
   }
+
   free(chunk.memory);
+  curl_global_cleanup();
   return 0;
 }
diff --git a/docs/examples/url2file.c b/docs/examples/url2file.c
index 2d9e1a134..f975db2a2 100644
--- a/docs/examples/url2file.c
+++ b/docs/examples/url2file.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
diff --git a/docs/libcurl/gnurl_easy_setopt.3 b/docs/libcurl/gnurl_easy_setopt.3
index 8e622fc17..a936efadb 100644
--- a/docs/libcurl/gnurl_easy_setopt.3
+++ b/docs/libcurl/gnurl_easy_setopt.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -623,6 +623,10 @@ TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
 error occurred as \fI<gnurl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
 man page for the full list with descriptions.
 
+Strings passed on to libcurl must be shorter than 8000000 bytes, otherwise
+\fIcurl_easy_setopt(3)\fP returns \fBCURLE_BAD_FUNCTION_ARGUMENT\fP (added in
+7.65.0).
+
 If you try to set an option that libcurl doesn't know about, perhaps because
 the library is too old to support it or the option was removed in a recent
 version, this function will return \fICURLE_UNKNOWN_OPTION\fP. If support for
diff --git a/docs/libcurl/gnurl_url_set.3 b/docs/libcurl/gnurl_url_set.3
index 5ef5cf34c..efee8cc5a 100644
--- a/docs/libcurl/gnurl_url_set.3
+++ b/docs/libcurl/gnurl_url_set.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -122,6 +122,10 @@ permits empty authority sections, similar to how file 
scheme is handled.
 Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
 fine.
 
+A URL string passed on to \fIcurl_url_set(3)\fP for the \fBCURLUPART_URL\fP
+part, must be shorter than 8000000 bytes otherwise it returns
+\fBCURLUE_MALFORMED_INPUT\fP (added in 7.65.0).
+
 If this function returns an error, no URL part is returned.
 .SH EXAMPLE
 .nf
diff --git a/docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3 
b/docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3
index be9cb99b6..9eb7a9873 100644
--- a/docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3
@@ -39,9 +39,9 @@ shown above.
 This function gets called by libcurl as soon as it has received header
 data. The header callback will be called once for each header and only
 complete header lines are passed on to the callback. Parsing headers is very
-easy using this. The size of the data pointed to by \fIbuffer\fP is \fIsize\fP
-multiplied with \fInitems\fP. Do not assume that the header line is zero
-terminated!
+easy using this. \fIbuffer\fP points to the delivered data, and the size of
+that data is \fInitems\fP; \fIsize\fP is always 1. Do not assume that the
+header line is zero terminated!
 
 The pointer named \fIuserdata\fP is the one you set with the
 \fICURLOPT_HEADERDATA(3)\fP option.
diff --git a/docs/libcurl/opts/GNURLOPT_READFUNCTION.3 
b/docs/libcurl/opts/GNURLOPT_READFUNCTION.3
index 3bd7fc2ce..e269b438c 100644
--- a/docs/libcurl/opts/GNURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/GNURLOPT_READFUNCTION.3
@@ -88,14 +88,14 @@ size_t read_callback(void *ptr, size_t size, size_t nmemb, 
void *userdata)
 
 void setup(char *uploadthis)
 {
-  FILE *file = fopen("rb", uploadthis);
+  FILE *file = fopen(uploadthis, "rb");
   CURLcode result;
 
   /* set callback to use */
   curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pass in suitable argument to callback */
-  curl_easy_setopt(curl, CURLOPT_READDATA, uploadthis);
+  curl_easy_setopt(curl, CURLOPT_READDATA, (void *)file);
 
   result = curl_easy_perform(curl);
 }
diff --git a/include/gnurl/multi.h b/include/gnurl/multi.h
index 3521d85bf..0fcf734d4 100644
--- a/include/gnurl/multi.h
+++ b/include/gnurl/multi.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -461,9 +461,6 @@ typedef int (*curl_push_callback)(CURL *parent,
                                   struct curl_pushheaders *headers,
                                   void *userp);
 
-/* value for MAXIMUM CONCURRENT STREAMS upper limit */
-#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)
-
 #ifdef __cplusplus
 } /* end of extern "C" */
 #endif
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
old mode 100755
new mode 100644
diff --git a/lib/connect.c b/lib/connect.c
index 3b88a5962..611d6d2f0 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -932,9 +932,11 @@ CURLcode Curl_is_connected(struct connectdata *conn,
       SET_SOCKERRNO(error);
       if(conn->tempaddr[i]) {
         CURLcode status;
+#ifndef CURL_DISABLE_VERBOSE_STRINGS
         char ipaddress[MAX_IPADR_LEN];
         char buffer[STRERROR_LEN];
         Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
+#endif
         infof(data, "connect to %s port %ld failed: %s\n",
               ipaddress, conn->port,
               Curl_strerror(error, buffer, sizeof(buffer)));
@@ -992,14 +994,12 @@ CURLcode Curl_is_connected(struct connectdata *conn,
 static void tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
 {
 #if defined(TCP_NODELAY)
-#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
-  struct Curl_easy *data = conn->data;
-#endif
   curl_socklen_t onoff = (curl_socklen_t) 1;
   int level = IPPROTO_TCP;
+#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  struct Curl_easy *data = conn->data;
   char buffer[STRERROR_LEN];
-
-#if defined(CURL_DISABLE_VERBOSE_STRINGS)
+#else
   (void) conn;
 #endif
 
diff --git a/lib/curl_endian.c b/lib/curl_endian.c
index b7563b3de..a774d136e 100644
--- a/lib/curl_endian.c
+++ b/lib/curl_endian.c
@@ -81,6 +81,7 @@ unsigned short Curl_read16_be(const unsigned char *buf)
                           ((unsigned short)buf[1]));
 }
 
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
 /*
  * write32_le()
  *
@@ -100,7 +101,6 @@ static void write32_le(const int value, unsigned char 
*buffer)
   buffer[3] = (char)((value & 0xFF000000) >> 24);
 }
 
-#if (CURL_SIZEOF_CURL_OFF_T > 4)
 /*
  * Curl_write64_le()
  *
diff --git a/lib/curl_setup_once.h b/lib/curl_setup_once.h
index 8db74e9b4..8890f3890 100644
--- a/lib/curl_setup_once.h
+++ b/lib/curl_setup_once.h
@@ -374,6 +374,7 @@ typedef int sig_atomic_t;
  * Macro used to include assertion code only in debug builds.
  */
 
+#undef DEBUGASSERT
 #if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H)
 #define DEBUGASSERT(x) assert(x)
 #else
diff --git a/lib/file.c b/lib/file.c
index 45b16de48..43e1ad001 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -136,7 +136,7 @@ static CURLcode file_connect(struct connectdata *conn, bool 
*done)
   struct Curl_easy *data = conn->data;
   char *real_path;
   struct FILEPROTO *file = data->req.protop;
-  int fd;
+  int fd = -1;
 #ifdef DOS_FILESYSTEM
   size_t i;
   char *actual_path;
@@ -181,7 +181,9 @@ static CURLcode file_connect(struct connectdata *conn, bool 
*done)
       return CURLE_URL_MALFORMAT;
     }
 
-  fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
+  if(strncmp("\\\\", actual_path, 2))
+    /* refuse to open path that starts with two backslashes */
+    fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
   file->path = actual_path;
 #else
   if(memchr(real_path, 0, real_path_len)) {
diff --git a/lib/http.c b/lib/http.c
index db79c7d3d..1c019e6ae 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -641,7 +641,7 @@ output_auth_headers(struct connectdata *conn,
 {
   const char *auth = NULL;
   CURLcode result = CURLE_OK;
-#if !defined(CURL_DISABLE_VERBOSE_STRINGS) || defined(USE_SPNEGO)
+#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
   struct Curl_easy *data = conn->data;
 #endif
 
diff --git a/lib/multi.c b/lib/multi.c
old mode 100755
new mode 100644
diff --git a/lib/multihandle.h b/lib/multihandle.h
index a26fb619a..0bf09e6bb 100644
--- a/lib/multihandle.h
+++ b/lib/multihandle.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -71,6 +71,10 @@ typedef enum {
 #define ENABLE_WAKEUP
 #endif
 
+
+/* value for MAXIMUM CONCURRENT STREAMS upper limit */
+#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)
+
 /* This is the struct known as CURLM on the outside */
 struct Curl_multi {
   /* First a simple identifier to easier detect if a user mix up
diff --git a/lib/socketpair.c b/lib/socketpair.c
index 1f0e2e4a4..1ec0d75a4 100644
--- a/lib/socketpair.c
+++ b/lib/socketpair.c
@@ -40,6 +40,9 @@
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h> /* IPPROTO_TCP */
 #endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
 #ifndef INADDR_LOOPBACK
 #define INADDR_LOOPBACK 0x7f000001
 #endif /* !INADDR_LOOPBACK */
diff --git a/lib/strerror.c b/lib/strerror.c
index 91b241e18..d917d7716 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2004 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 2004 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -449,7 +449,9 @@ curl_share_strerror(CURLSHcode error)
 static const char *
 get_winsock_error (int err, char *buf, size_t len)
 {
+#ifndef CURL_DISABLE_VERBOSE_STRINGS
   const char *p;
+#endif
 
   if(!len)
     return NULL;
@@ -457,6 +459,7 @@ get_winsock_error (int err, char *buf, size_t len)
   *buf = '\0';
 
 #ifdef CURL_DISABLE_VERBOSE_STRINGS
+  (void)err;
   return NULL;
 #else
   switch(err) {
diff --git a/lib/vtls/bearssl.c b/lib/vtls/bearssl.c
index 51694c48d..67f945831 100644
--- a/lib/vtls/bearssl.c
+++ b/lib/vtls/bearssl.c
@@ -52,6 +52,8 @@ struct ssl_backend_data {
   const char *protocols[2];
   /* SSL client context is active */
   bool active;
+  /* size of pending write, yet to be flushed */
+  size_t pending_write;
 };
 
 #define BACKEND connssl->backend
@@ -421,7 +423,8 @@ static CURLcode bearssl_connect_step1(struct connectdata 
*conn, int sockindex)
   return CURLE_OK;
 }
 
-static CURLcode bearssl_connect_step2(struct connectdata *conn, int sockindex)
+static CURLcode bearssl_run_until(struct connectdata *conn, int sockindex,
+                                  unsigned target)
 {
   struct Curl_easy *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -437,6 +440,13 @@ static CURLcode bearssl_connect_step2(struct connectdata 
*conn, int sockindex)
     if(state & BR_SSL_CLOSED) {
       err = br_ssl_engine_last_error(&BACKEND->ctx.eng);
       switch(err) {
+      case BR_ERR_OK:
+        /* TLS close notify */
+        if(connssl->state != ssl_connection_complete) {
+          failf(data, "SSL: connection closed during handshake");
+          return CURLE_SSL_CONNECT_ERROR;
+        }
+        return CURLE_OK;
       case BR_ERR_X509_EXPIRED:
         failf(data, "SSL: X.509 verification: "
               "certificate is expired or not yet valid");
@@ -455,39 +465,60 @@ static CURLcode bearssl_connect_step2(struct connectdata 
*conn, int sockindex)
         return CURLE_PEER_FAILED_VERIFICATION;
       return CURLE_SSL_CONNECT_ERROR;
     }
-    if(state & (BR_SSL_SENDAPP | BR_SSL_RECVAPP)) {
-      connssl->connecting_state = ssl_connect_3;
+    if(state & target)
       return CURLE_OK;
-    }
     if(state & BR_SSL_SENDREC) {
       buf = br_ssl_engine_sendrec_buf(&BACKEND->ctx.eng, &len);
       ret = swrite(sockfd, buf, len);
       if(ret == -1) {
         if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
-          connssl->connecting_state = ssl_connect_2_writing;
-          return CURLE_OK;
+          if(connssl->state != ssl_connection_complete)
+            connssl->connecting_state = ssl_connect_2_writing;
+          return CURLE_AGAIN;
         }
-        return CURLE_SEND_ERROR;
+        return CURLE_WRITE_ERROR;
       }
       br_ssl_engine_sendrec_ack(&BACKEND->ctx.eng, ret);
     }
     else if(state & BR_SSL_RECVREC) {
       buf = br_ssl_engine_recvrec_buf(&BACKEND->ctx.eng, &len);
       ret = sread(sockfd, buf, len);
+      if(ret == 0) {
+        failf(data, "SSL: EOF without close notify");
+        return CURLE_READ_ERROR;
+      }
       if(ret == -1) {
         if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
-          connssl->connecting_state = ssl_connect_2_reading;
-          return CURLE_OK;
+          if(connssl->state != ssl_connection_complete)
+            connssl->connecting_state = ssl_connect_2_reading;
+          return CURLE_AGAIN;
         }
         return CURLE_READ_ERROR;
       }
-      if(ret == 0)
-        return CURLE_SSL_CONNECT_ERROR;
       br_ssl_engine_recvrec_ack(&BACKEND->ctx.eng, ret);
     }
   }
 }
 
+static CURLcode bearssl_connect_step2(struct connectdata *conn, int sockindex)
+{
+  struct Curl_easy *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  CURLcode ret;
+
+  ret = bearssl_run_until(conn, sockindex, BR_SSL_SENDAPP | BR_SSL_RECVAPP);
+  if(ret == CURLE_AGAIN)
+    return CURLE_OK;
+  if(ret == CURLE_OK) {
+    if(br_ssl_engine_current_state(&BACKEND->ctx.eng) == BR_SSL_CLOSED) {
+      failf(data, "SSL: connection closed during handshake");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+    connssl->connecting_state = ssl_connect_3;
+  }
+  return ret;
+}
+
 static CURLcode bearssl_connect_step3(struct connectdata *conn, int sockindex)
 {
   struct Curl_easy *data = conn->data;
@@ -548,83 +579,52 @@ static CURLcode bearssl_connect_step3(struct connectdata 
*conn, int sockindex)
 static ssize_t bearssl_send(struct connectdata *conn, int sockindex,
                             const void *buf, size_t len, CURLcode *err)
 {
+  struct Curl_easy *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  unsigned state;
-  unsigned char *rec, *app;
-  size_t reclen, applen;
-  ssize_t ret;
+  unsigned char *app;
+  size_t applen;
 
-  applen = 0;
   for(;;) {
-    state = br_ssl_engine_current_state(&BACKEND->ctx.eng);
-    if(state & BR_SSL_SENDREC) {
-      rec = br_ssl_engine_sendrec_buf(&BACKEND->ctx.eng, &reclen);
-      ret = swrite(conn->sock[sockindex], rec, reclen);
-      if(ret == -1) {
-        if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK)
-          *err = CURLE_AGAIN;
-        else
-          *err = CURLE_SEND_ERROR;
-        return -1;
-      }
-      br_ssl_engine_sendrec_ack(&BACKEND->ctx.eng, ret);
-    }
-    else if(state & BR_SSL_SENDAPP && applen == 0) {
-      app = br_ssl_engine_sendapp_buf(&BACKEND->ctx.eng, &applen);
-      if(applen > len)
-        applen = len;
-      memcpy(app, buf, applen);
-      br_ssl_engine_sendapp_ack(&BACKEND->ctx.eng, applen);
-      br_ssl_engine_flush(&BACKEND->ctx.eng, 0);
-    }
-    else if(state & BR_SSL_CLOSED || applen == 0) {
+    *err = bearssl_run_until(conn, sockindex, BR_SSL_SENDAPP);
+    if (*err != CURLE_OK)
+      return -1;
+    app = br_ssl_engine_sendapp_buf(&BACKEND->ctx.eng, &applen);
+    if(!app) {
+      failf(data, "SSL: connection closed during write");
       *err = CURLE_SEND_ERROR;
       return -1;
     }
-    else
-      break;
+    if(BACKEND->pending_write) {
+      applen = BACKEND->pending_write;
+      BACKEND->pending_write = 0;
+      return applen;
+    }
+    if(applen > len)
+      applen = len;
+    memcpy(app, buf, applen);
+    br_ssl_engine_sendapp_ack(&BACKEND->ctx.eng, applen);
+    br_ssl_engine_flush(&BACKEND->ctx.eng, 0);
+    BACKEND->pending_write = applen;
   }
-
-  return applen;
 }
 
 static ssize_t bearssl_recv(struct connectdata *conn, int sockindex,
                             char *buf, size_t len, CURLcode *err)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  unsigned state;
-  unsigned char *rec, *app;
-  size_t reclen, applen;
-  ssize_t ret;
-
-  for(;;) {
-    state = br_ssl_engine_current_state(&BACKEND->ctx.eng);
-    if(state & BR_SSL_RECVREC) {
-      rec = br_ssl_engine_recvrec_buf(&BACKEND->ctx.eng, &reclen);
-      ret = sread(conn->sock[sockindex], rec, reclen);
-      if(ret == -1 && (SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK)) {
-        *err = CURLE_AGAIN;
-        return -1;
-      }
-      if(ret <= 0) {
-        *err = CURLE_RECV_ERROR;
-        return -1;
-      }
-      br_ssl_engine_recvrec_ack(&BACKEND->ctx.eng, ret);
-    }
-    else if(state & BR_SSL_RECVAPP) {
-      app = br_ssl_engine_recvapp_buf(&BACKEND->ctx.eng, &applen);
-      if(applen > len)
-        applen = len;
-      memcpy(buf, app, applen);
-      br_ssl_engine_recvapp_ack(&BACKEND->ctx.eng, applen);
-      break;
-    }
-    else {
-      *err = CURLE_RECV_ERROR;
-      return -1;
-    }
-  }
+  unsigned char *app;
+  size_t applen;
+
+  *err = bearssl_run_until(conn, sockindex, BR_SSL_RECVAPP);
+  if(*err != CURLE_OK)
+    return -1;
+  app = br_ssl_engine_recvapp_buf(&BACKEND->ctx.eng, &applen);
+  if(!app)
+    return 0;
+  if(applen > len)
+    applen = len;
+  memcpy(buf, app, applen);
+  br_ssl_engine_recvapp_ack(&BACKEND->ctx.eng, applen);
 
   return applen;
 }
@@ -792,19 +792,11 @@ static void *Curl_bearssl_get_internals(struct 
ssl_connect_data *connssl,
 static void Curl_bearssl_close(struct connectdata *conn, int sockindex)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  unsigned char *buf;
-  size_t len, i;
-  ssize_t ret;
+  size_t i;
 
   if(BACKEND->active) {
     br_ssl_engine_close(&BACKEND->ctx.eng);
-    while(br_ssl_engine_current_state(&BACKEND->ctx.eng) & BR_SSL_SENDREC) {
-      buf = br_ssl_engine_sendrec_buf(&BACKEND->ctx.eng, &len);
-      ret = swrite(conn->sock[sockindex], buf, len);
-      if(ret < 0)
-        break;
-      br_ssl_engine_sendrec_ack(&BACKEND->ctx.eng, ret);
-    }
+    (void)bearssl_run_until(conn, sockindex, BR_SSL_CLOSED);
   }
   for(i = 0; i < BACKEND->anchors_len; ++i)
     free(BACKEND->anchors[i].dn.data);
diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c
index 5ab093b38..dc58ed0d3 100644
--- a/lib/vtls/schannel.c
+++ b/lib/vtls/schannel.c
@@ -7,7 +7,7 @@
  *
  * Copyright (C) 2012 - 2016, Marc Hoersken, <address@hidden>
  * Copyright (C) 2012, Mark Salisbury, <address@hidden>
- * Copyright (C) 2012 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 2012 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1855,7 +1855,9 @@ schannel_recv(struct connectdata *conn, int sockindex,
       goto cleanup;
     }
     else {
+#ifndef CURL_DISABLE_VERBOSE_STRINGS
       char buffer[STRERROR_LEN];
+#endif
       *err = CURLE_RECV_ERROR;
       infof(data, "schannel: failed to read data from server: %s\n",
             Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index 3f32b358d..4e34de162 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -596,6 +596,12 @@
      d                 c                   91
      d  CURLE_HTTP2_STREAM...
      d                 c                   92
+     d  CURLE_RECURSIVE_API_CALL...
+     d                 c                   93
+     d  CURLE_AUTH_ERROR...
+     d                 c                   94
+     d  CURLE_HTTP3...
+     d                 c                   95
       *
       /if not defined(CURL_NO_OLDIES)
      d  CURLE_URL_MALFORMAT_USER...
diff --git a/scripts/travis/before_script.sh b/scripts/travis/before_script.sh
new file mode 100755
index 000000000..60b63ece3
--- /dev/null
+++ b/scripts/travis/before_script.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+set -eo pipefail
+
+./buildconf
+
+if [ "$NGTCP2" = yes ]; then
+  cd $HOME
+  git clone --depth 1 -b openssl-quic-draft-23 
https://github.com/tatsuhiro-t/openssl possl
+  cd possl
+  ./config enable-tls1_3 --prefix=$HOME/ngbuild
+  make
+  make install_sw
+
+  cd $HOME
+  git clone --depth 1 https://github.com/ngtcp2/nghttp3
+  cd nghttp3
+  autoreconf -i
+  ./configure --prefix=$HOME/ngbuild --enable-lib-only
+  make
+  make install
+
+  cd $HOME
+  git clone --depth 1 https://github.com/ngtcp2/ngtcp2
+  cd ngtcp2
+  autoreconf -i
+  ./configure PKG_CONFIG_PATH=$HOME/ngbuild/lib/pkgconfig 
LDFLAGS="-Wl,-rpath,$HOME/ngbuild/lib" --prefix=$HOME/ngbuild --enable-lib-only
+  make
+  make install
+fi
+
+if [ "$TRAVIS_OS_NAME" = linux -a "$BORINGSSL" ]; then
+  cd $HOME
+  git clone --depth=1 https://boringssl.googlesource.com/boringssl
+  cd boringssl
+  mkdir build
+  cd build
+  CXX="g++" CC="gcc" cmake -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=1 ..
+  make
+  cd ..
+  mkdir lib
+  cd lib
+  cp ../build/crypto/libcrypto.so .
+  cp ../build/ssl/libssl.so .
+  echo "BoringSSL lib dir: "`pwd`
+  cd ../build
+  make clean
+  rm -f CMakeCache.txt
+  CXX="g++" CC="gcc" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on ..
+  make
+  export LIBS=-lpthread
+fi
+
+if [ "$TRAVIS_OS_NAME" = linux -a "$QUICHE" ]; then
+  cd $HOME
+  git clone --depth=1 https://github.com/cloudflare/quiche.git
+  curl https://sh.rustup.rs -sSf | sh -s -- -y
+  source $HOME/.cargo/env
+  cd $HOME/quiche
+  QUICHE_BSSL_PATH=$HOME/boringssl cargo build -v --release --features 
pkg-config-meta
+fi
+
+# Install common libraries.
+# The library build directories are set to be cached by .travis.yml. If you are
+# changing a build directory name below (eg a version change) then you must
+# change it in .travis.yml `cache: directories:` as well.
+if [ $TRAVIS_OS_NAME = linux ]; then
+  if [ ! -e $HOME/wolfssl-4.0.0-stable/Makefile ]; then
+    cd $HOME
+    curl -LO https://github.com/wolfSSL/wolfssl/archive/v4.0.0-stable.tar.gz
+    tar -xzf v4.0.0-stable.tar.gz
+    cd wolfssl-4.0.0-stable
+    ./autogen.sh
+    ./configure --enable-tls13 --enable-all
+    touch wolfssl/wolfcrypt/fips.h
+    make
+  fi
+
+  cd $HOME/wolfssl-4.0.0-stable
+  sudo make install
+
+  if [ ! -e $HOME/mesalink-1.0.0/Makefile ]; then
+    cd $HOME
+    curl https://sh.rustup.rs -sSf | sh -s -- -y
+    source $HOME/.cargo/env
+    curl -LO https://github.com/mesalock-linux/mesalink/archive/v1.0.0.tar.gz
+    tar -xzf v1.0.0.tar.gz
+    cd mesalink-1.0.0
+    ./autogen.sh
+    ./configure --enable-tls13
+    make
+  fi
+
+  cd $HOME/mesalink-1.0.0
+  sudo make install
+
+  if [ ! -e $HOME/nghttp2-1.39.2/Makefile ]; then
+    cd $HOME
+    curl -LO 
https://github.com/nghttp2/nghttp2/releases/download/v1.39.2/nghttp2-1.39.2.tar.gz
+    tar -xzf nghttp2-1.39.2.tar.gz
+    cd nghttp2-1.39.2
+    CXX="g++-8" CC="gcc-8" CFLAGS="" LDFLAGS="" LIBS="" ./configure 
--disable-threads --enable-app
+    make
+  fi
+
+  cd $HOME/nghttp2-1.39.2
+  sudo make install
+fi
diff --git a/.travis-iconv-env.sh b/scripts/travis/iconv-env.sh
old mode 100644
new mode 100755
similarity index 100%
rename from .travis-iconv-env.sh
rename to scripts/travis/iconv-env.sh
diff --git a/scripts/travis/script.sh b/scripts/travis/script.sh
new file mode 100755
index 000000000..3f587640d
--- /dev/null
+++ b/scripts/travis/script.sh
@@ -0,0 +1,155 @@
+#!/bin/bash
+set -eo pipefail
+
+./buildconf
+
+if [ "$T" = "coverage" ]; then
+  ./configure --enable-debug --disable-shared --disable-threaded-resolver 
--enable-code-coverage --enable-werror --enable-alt-svc --with-libssh2
+  make
+  make TFLAGS=-n test-nonflaky
+  make "TFLAGS=-n -e" test-nonflaky
+  tests="1 200 300 500 700 800 900 1000 1100 1200 1302 1400 1502 3000"
+  make "TFLAGS=-n -t $tests" test-nonflaky
+  coveralls --gcov /usr/bin/gcov-8 --gcov-options '\-lp' -i src -e lib -e 
tests -e docs -b $PWD/src
+  coveralls --gcov /usr/bin/gcov-8 --gcov-options '\-lp' -e src -i lib -e 
tests -e docs -b $PWD/lib
+fi
+
+if [ "$T" = "torture" ]; then
+  ./configure --enable-debug --disable-shared --disable-threaded-resolver 
--enable-code-coverage --enable-werror --enable-alt-svc --with-libssh2
+  make
+  make TFLAGS=-n test-nonflaky
+  make "TFLAGS=-n -e" test-nonflaky
+  tests="1 200 300 500 700 800 900 1000 1100 1200 1302 1400 1502 3000"
+  make "TFLAGS=-n --shallow=40 -t $tests" test-nonflaky
+fi
+
+if [ "$T" = "debug" ]; then
+  ./configure --enable-debug --enable-werror $C
+  make
+  make examples
+  if [ -z $NOTESTS ]; then
+    if [ "$TRAVIS_ARCH" = "aarch64" ] ; then
+      # TODO: find out why this test is failing on arm64
+      make "TFLAGS=-n !323" test-nonflaky
+    else
+      make TFLAGS=-n test-nonflaky
+    fi
+  fi
+fi
+
+if [ "$T" = "debug-wolfssl" ]; then
+  ./configure --enable-debug --enable-werror $C
+  make
+  make "TFLAGS=-n !313" test-nonflaky
+fi
+
+if [ "$T" = "debug-mesalink" ]; then
+  ./configure --enable-debug --enable-werror $C
+  make
+  make "TFLAGS=-n !313 !3001" test-nonflaky
+fi
+
+if [ "$T" = "novalgrind" ]; then
+  ./configure --enable-werror $C
+  make
+  make examples
+  make TFLAGS=-n test-nonflaky
+fi
+
+if [ "$T" = "normal" ]; then
+  if [ $TRAVIS_OS_NAME = linux ]; then
+    # Remove system curl to make sure we don't rely on it.
+    # Only done on Linux since we're not permitted to on mac.
+    sudo rm -f /usr/bin/curl
+  fi
+  ./configure --enable-warnings --enable-werror $C
+  make
+  make examples
+  if [ -z $NOTESTS ]; then
+    make test-nonflaky
+  fi
+  if [ -n $CHECKSRC ]; then
+    echo "enable COPYRIGHTYEAR" > ./docs/examples/.checksrc
+    echo "enable COPYRIGHTYEAR" > ./include/curl/.checksrc
+    make checksrc
+  fi
+fi
+
+if [ "$T" = "tidy" ]; then
+  ./configure --enable-warnings --enable-werror $C
+  make
+  make tidy
+fi
+
+if [ "$T" = "iconv" ]; then
+  source scripts/travis/iconv-env.sh
+  ./configure --enable-debug --enable-werror $C
+  make
+  make examples
+  make test-nonflaky
+fi
+
+if [ "$T" = "cmake" ]; then
+  if [ $TRAVIS_OS_NAME = linux ]; then
+    cmake -H. -Bbuild -DCURL_WERROR=ON
+    cmake --build build
+  else
+    cmake -H. -Bbuild -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl 
-DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
+    cmake --build build
+  fi
+fi
+
+if [ "$T" = "distcheck" ]; then
+  # find BOM markers and exit if we do
+  ! git grep `printf '\xef\xbb\xbf'`
+  ./configure
+  make
+  ./maketgz 99.98.97
+  # verify in-tree build - and install it
+  tar xf curl-99.98.97.tar.gz
+  cd curl-99.98.97
+  ./configure --prefix=$HOME/temp
+  make
+  make TFLAGS=1 test
+  make install
+  # basic check of the installed files
+  cd ..
+  bash scripts/installcheck.sh $HOME/temp
+  rm -rf curl-99.98.97
+  # verify out-of-tree build
+  tar xf curl-99.98.97.tar.gz
+  touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc
+  mkdir build
+  cd build
+  ../curl-99.98.97/configure
+  make
+  make TFLAGS='-p 1 1139' test
+  # verify cmake build
+  cd ..
+  rm -rf curl-99.98.97
+  tar xf curl-99.98.97.tar.gz
+  cd curl-99.98.97
+  mkdir build
+  cd build
+  cmake ..
+  make
+  cd ../..
+fi
+
+if [ "$T" = "fuzzer" ]; then
+  # Download the fuzzer to a temporary folder
+  ./tests/fuzz/download_fuzzer.sh /tmp/curl_fuzzer
+
+  export CURLSRC=$PWD
+
+  # Run the mainline fuzzer test
+  pushd /tmp/curl_fuzzer
+  ./mainline.sh ${CURLSRC}
+  popd
+fi
+
+if [ "$T" = "scan-build" ]; then
+  scan-build ./configure --enable-debug --enable-werror $C
+  scan-build --status-bugs make
+  scan-build --status-bugs make examples
+fi
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index a7bcdafac..8df6e5e24 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1209,7 +1209,10 @@ ParameterError getparameter(const char *flag, /* f or 
-long-flag */
         break;
       case '4': /* --http3 */
         /* HTTP version 3 go over QUIC - at once */
-        config->httpversion = CURL_HTTP_VERSION_3;
+        if(curlinfo->features & CURL_VERSION_HTTP3)
+          config->httpversion = CURL_HTTP_VERSION_3;
+        else
+          return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
       case '9':
         /* Allow HTTP/0.9 responses! */
@@ -1985,8 +1988,7 @@ ParameterError getparameter(const char *flag, /* f or 
-long-flag */
       }
       {
         /* byte range requested */
-        char *tmp_range;
-        tmp_range = nextarg;
+        const char *tmp_range = nextarg;
         while(*tmp_range != '\0') {
           if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
             warnf(global, "Invalid character is found in given range. "
diff --git a/src/tool_operate.c b/src/tool_operate.c
index e35c781f9..08123687d 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -720,8 +720,10 @@ static CURLcode single_transfer(struct GlobalConfig 
*global,
       if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq))
         result = CURLE_FAILED_INIT;
     }
-    if(result)
+    if(result) {
+      single_transfer_cleanup(config);
       return result;
+    }
   }
   if(!state->urlnode) {
     /* first time caller, setup things */
@@ -1355,6 +1357,9 @@ static CURLcode single_transfer(struct GlobalConfig 
*global,
                     config->postfieldsize);
           break;
         case HTTPREQ_MIMEPOST:
+          /* free previous remainders */
+          curl_mime_free(config->mimepost);
+          config->mimepost = NULL;
           result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
           if(result)
             break;
@@ -2103,8 +2108,10 @@ static CURLcode parallel_transfers(struct GlobalConfig 
*global,
 
   result = add_parallel_transfers(global, multi, share,
                                   &more_transfers, &added_transfers);
-  if(result)
+  if(result) {
+    curl_multi_cleanup(multi);
     return result;
+  }
 
   while(!mcode && (still_running || more_transfers)) {
     mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
diff --git a/src/tool_paramhlp.c b/src/tool_paramhlp.c
index b7a8efbd2..67702ebe2 100644
--- a/src/tool_paramhlp.c
+++ b/src/tool_paramhlp.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -65,7 +65,7 @@ ParameterError file2string(char **bufp, FILE *file)
     size_t alloc_needed;
     char buffer[256];
     size_t stringlen = 0;
-    string = malloc(alloc);
+    string = calloc(1, alloc);
     if(!string)
       return PARAM_NO_MEM;
 
@@ -560,7 +560,7 @@ int ftpcccmethod(struct OperationConfig *config, const char 
*str)
   return CURLFTPSSL_CCC_PASSIVE;
 }
 
-long delegation(struct OperationConfig *config, char *str)
+long delegation(struct OperationConfig *config, const char *str)
 {
   if(curl_strequal("none", str))
     return CURLGSSAPI_DELEGATION_NONE;
diff --git a/src/tool_paramhlp.h b/src/tool_paramhlp.h
index f13a114fd..d925b8476 100644
--- a/src/tool_paramhlp.h
+++ b/src/tool_paramhlp.h
@@ -50,7 +50,7 @@ int ftpfilemethod(struct OperationConfig *config, const char 
*str);
 
 int ftpcccmethod(struct OperationConfig *config, const char *str);
 
-long delegation(struct OperationConfig *config, char *str);
+long delegation(struct OperationConfig *config, const char *str);
 
 ParameterError str2tls_max(long *val, const char *str);
 
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 7f8ef7d06..3e26bcdc7 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
+# Copyright (C) 1998 - 2020, Daniel Stenberg, <address@hidden>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -143,10 +143,10 @@ test1236 test1237 test1238 test1239 test1240 test1241 
test1242 test1243 \
 test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
 test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
 test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
-test1268 test1269 test1270 \
+test1268 test1269 test1270 test1271 \
 \
 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
-test1288 test1289 test1290 test1291 test1292 \
+test1288 test1289 test1290 test1291 test1292 test1293 \
 test1298 test1299 \
 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
 test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
diff --git a/tests/data/test1008 b/tests/data/test1008
index 9fca722c8..a1ef0dd7a 100644
--- a/tests/data/test1008
+++ b/tests/data/test1008
@@ -86,6 +86,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test1021 b/tests/data/test1021
index 689341d60..84d1e62a7 100644
--- a/tests/data/test1021
+++ b/tests/data/test1021
@@ -91,6 +91,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test1097 b/tests/data/test1097
index 7eb7b5f3d..70a89908d 100644
--- a/tests/data/test1097
+++ b/tests/data/test1097
@@ -45,6 +45,7 @@ https
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/data/test1100 b/tests/data/test1100
index d60a93a77..101b1e7ac 100644
--- a/tests/data/test1100
+++ b/tests/data/test1100
@@ -63,6 +63,7 @@ This is the final page !
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test1215 b/tests/data/test1215
index 8edfd9b4e..ed50da0b8 100644
--- a/tests/data/test1215
+++ b/tests/data/test1215
@@ -58,6 +58,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test512 b/tests/data/test1271
similarity index 60%
copy from tests/data/test512
copy to tests/data/test1271
index d259f40df..687a6a979 100644
--- a/tests/data/test512
+++ b/tests/data/test1271
@@ -3,19 +3,18 @@
 <keywords>
 HTTP
 HTTP GET
+--write-out
 </keywords>
 </info>
 
-#
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: yes
+HTTP/1.1 200 This is a weirdo text message swsclose
+Content-Length: 4
 Connection: close
 
-hello
+Moo
 </data>
 </reply>
 
@@ -24,27 +23,23 @@ hello
 <server>
 http
 </server>
-# tool is what to use instead of 'curl'
-<tool>
-lib512
-</tool>
-
  <name>
-simple curl_easy_duplicate() test
+--write-out from file with empty file
  </name>
  <command>
-http://%HOSTIP:%HTTPPORT/512
+http://%HOSTIP:%HTTPPORT/we/want/our/1271 -w @log/blank1271
 </command>
+<file name="log/blank1271">
+</file>
 </client>
 
-#
 # Verify data after the test has been "shot"
 <verify>
 <strip>
 ^User-Agent:.*
 </strip>
 <protocol>
-GET /512 HTTP/1.1
+GET /we/want/our/1271 HTTP/1.1
 Host: %HOSTIP:%HTTPPORT
 Accept: */*
 
diff --git a/tests/data/test293 b/tests/data/test1293
similarity index 54%
copy from tests/data/test293
copy to tests/data/test1293
index d75fc9a3c..11a28a326 100644
--- a/tests/data/test293
+++ b/tests/data/test1293
@@ -3,8 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
---max-filesize
-FAILURE
+-F
 </keywords>
 </info>
 
@@ -34,27 +33,35 @@ Funny-head: yesyes
 http
 </server>
  <name>
-HTTP GET with maximum filesize exceeded
+Multipart formpost to two URLs, the first failing
  </name>
  <command>
-http://%HOSTIP:%HTTPPORT/293 --max-filesize 2
+http://0 http://%HOSTIP:%HTTPPORT/1293 -F=
 </command>
 </client>
 
 #
 # Verify data after the test has been "shot"
 <verify>
-<errorcode>
-63
-</errorcode>
 <strip>
 ^User-Agent:.*
 </strip>
+<strippart>
+s/^--------------------------[a-z0-9]*/------------------------------/
+s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
+</strippart>
 <protocol>
-GET /293 HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
+POST /1293 HTTP/1.1
+Host: 127.0.0.1:8990
 Accept: */*
+Content-Length: 126
+Content-Type: multipart/form-data; boundary=----------------------------
 
+------------------------------
+Content-Disposition: form-data
+
+
+--------------------------------
 </protocol>
 </verify>
 </testcase>
diff --git a/tests/data/test1330 b/tests/data/test1330
index 1fb5a6687..a78dc30b8 100644
--- a/tests/data/test1330
+++ b/tests/data/test1330
@@ -45,6 +45,7 @@ s/ =.*//
 s/\(.*\)/()/
 s/:\d+/:/
 s:^(MEM )(.*/)(.*):$1$3:
+s/\r\n/\n/
 </stripfile>
 </verify>
 
diff --git a/tests/data/test150 b/tests/data/test150
index f28be0464..e9fde393b 100644
--- a/tests/data/test150
+++ b/tests/data/test150
@@ -57,6 +57,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test155 b/tests/data/test155
index 0a2bb0fa2..0cfd10eea 100644
--- a/tests/data/test155
+++ b/tests/data/test155
@@ -76,6 +76,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test159 b/tests/data/test159
index 5a062176e..a56986fba 100644
--- a/tests/data/test159
+++ b/tests/data/test159
@@ -43,6 +43,7 @@ This is not the real page either!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test162 b/tests/data/test162
index 099641a87..29791d9af 100644
--- a/tests/data/test162
+++ b/tests/data/test162
@@ -27,6 +27,7 @@ isn't because there's no Proxy-Authorization: NTLM header
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 proxy
 </features>
diff --git a/tests/data/test169 b/tests/data/test169
index 8013bcc17..209dd9d90 100644
--- a/tests/data/test169
+++ b/tests/data/test169
@@ -77,6 +77,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test170 b/tests/data/test170
index 49d595bbc..9b41ddd7f 100644
--- a/tests/data/test170
+++ b/tests/data/test170
@@ -19,6 +19,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 proxy
 </features>
diff --git a/tests/data/test176 b/tests/data/test176
index 73c53ca87..e18837af1 100644
--- a/tests/data/test176
+++ b/tests/data/test176
@@ -48,6 +48,7 @@ content for you
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2025 b/tests/data/test2025
index 6dfc70a7d..282c69850 100644
--- a/tests/data/test2025
+++ b/tests/data/test2025
@@ -195,6 +195,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2028 b/tests/data/test2028
index 2042eecf1..92a637161 100644
--- a/tests/data/test2028
+++ b/tests/data/test2028
@@ -231,6 +231,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2029 b/tests/data/test2029
index 82d80857b..59a793ebe 100644
--- a/tests/data/test2029
+++ b/tests/data/test2029
@@ -168,6 +168,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2030 b/tests/data/test2030
index 893f986f7..a158a907a 100644
--- a/tests/data/test2030
+++ b/tests/data/test2030
@@ -220,6 +220,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2031 b/tests/data/test2031
index 979962134..9acfeef72 100644
--- a/tests/data/test2031
+++ b/tests/data/test2031
@@ -234,6 +234,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2032 b/tests/data/test2032
index ec5771f81..8200b8de5 100644
--- a/tests/data/test2032
+++ b/tests/data/test2032
@@ -66,6 +66,7 @@ Data connection 2: 402
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test2033 b/tests/data/test2033
index a13c1d425..5293b66e8 100644
--- a/tests/data/test2033
+++ b/tests/data/test2033
@@ -67,6 +67,7 @@ Data connection 2: 402
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
 <server>
diff --git a/tests/data/test209 b/tests/data/test209
index aded6d2d2..67a7fc513 100644
--- a/tests/data/test209
+++ b/tests/data/test209
@@ -77,6 +77,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test213 b/tests/data/test213
index 82d82c483..e6d7cd55a 100644
--- a/tests/data/test213
+++ b/tests/data/test213
@@ -77,6 +77,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test239 b/tests/data/test239
index a6f1fd59b..b6f387933 100644
--- a/tests/data/test239
+++ b/tests/data/test239
@@ -52,6 +52,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test243 b/tests/data/test243
index f83218e14..f7b2386b5 100644
--- a/tests/data/test243
+++ b/tests/data/test243
@@ -73,6 +73,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test265 b/tests/data/test265
index ff7d5945e..a27633afc 100644
--- a/tests/data/test265
+++ b/tests/data/test265
@@ -78,6 +78,7 @@ http
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test267 b/tests/data/test267
index 06b662c91..a0c3d33c6 100644
--- a/tests/data/test267
+++ b/tests/data/test267
@@ -56,6 +56,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test547 b/tests/data/test547
index 781799b11..e4ec39893 100644
--- a/tests/data/test547
+++ b/tests/data/test547
@@ -76,6 +76,7 @@ lib547
 </tool>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test548 b/tests/data/test548
index fa98cd437..d636ab1b6 100644
--- a/tests/data/test548
+++ b/tests/data/test548
@@ -76,6 +76,7 @@ lib548
 </tool>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test555 b/tests/data/test555
index d4b946614..ed8117f8f 100644
--- a/tests/data/test555
+++ b/tests/data/test555
@@ -81,6 +81,7 @@ lib555
 </tool>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test558 b/tests/data/test558
index 44361862e..49ef1c70b 100644
--- a/tests/data/test558
+++ b/tests/data/test558
@@ -51,6 +51,7 @@ s/ =.*//
 s/\(.*\)/()/
 s/:\d+/:/
 s:^(MEM |FD )(.*/)(.*):$1$3:
+s/\r\n/\n/
 </stripfile>
 </verify>
 
diff --git a/tests/data/test590 b/tests/data/test590
index 6f6250763..5ddc823a5 100644
--- a/tests/data/test590
+++ b/tests/data/test590
@@ -74,6 +74,7 @@ lib590
 </tool>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test67 b/tests/data/test67
index 1c64a2f51..c0ccaf8f8 100644
--- a/tests/data/test67
+++ b/tests/data/test67
@@ -56,6 +56,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test68 b/tests/data/test68
index 91d16ade6..1eaff6e7d 100644
--- a/tests/data/test68
+++ b/tests/data/test68
@@ -55,6 +55,7 @@ Wrong password dude. Get it fixed and return.
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test69 b/tests/data/test69
index 7af662f6e..309f0394a 100644
--- a/tests/data/test69
+++ b/tests/data/test69
@@ -72,6 +72,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test81 b/tests/data/test81
index 4cc03975e..29e558d9c 100644
--- a/tests/data/test81
+++ b/tests/data/test81
@@ -55,6 +55,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 proxy
diff --git a/tests/data/test822 b/tests/data/test822
index 5fea05ba8..aa264edd6 100644
--- a/tests/data/test822
+++ b/tests/data/test822
@@ -35,6 +35,7 @@ imap
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test827 b/tests/data/test827
index d27112112..9cefb5005 100644
--- a/tests/data/test827
+++ b/tests/data/test827
@@ -36,6 +36,7 @@ imap
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test831 b/tests/data/test831
index fdcae29c1..eae10f048 100644
--- a/tests/data/test831
+++ b/tests/data/test831
@@ -28,6 +28,7 @@ imap
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/data/test834 b/tests/data/test834
index 35ab06aff..8ecc22322 100644
--- a/tests/data/test834
+++ b/tests/data/test834
@@ -39,6 +39,7 @@ imap
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/data/test868 b/tests/data/test868
index fc0589251..2fa2405ad 100644
--- a/tests/data/test868
+++ b/tests/data/test868
@@ -37,6 +37,7 @@ pop3
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test873 b/tests/data/test873
index 9c068dcb4..2cabf1f63 100644
--- a/tests/data/test873
+++ b/tests/data/test873
@@ -37,6 +37,7 @@ pop3
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test877 b/tests/data/test877
index c4775942f..114707aad 100644
--- a/tests/data/test877
+++ b/tests/data/test877
@@ -29,6 +29,7 @@ pop3
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/data/test880 b/tests/data/test880
index 738817cd3..e0609bbdc 100644
--- a/tests/data/test880
+++ b/tests/data/test880
@@ -41,6 +41,7 @@ pop3
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/data/test89 b/tests/data/test89
index 65b96dbca..fc620cb23 100644
--- a/tests/data/test89
+++ b/tests/data/test89
@@ -89,6 +89,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test90 b/tests/data/test90
index 1c8f13944..d40b5a571 100644
--- a/tests/data/test90
+++ b/tests/data/test90
@@ -127,6 +127,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test906 b/tests/data/test906
index c038f7fe1..6ec59c7b1 100644
--- a/tests/data/test906
+++ b/tests/data/test906
@@ -27,6 +27,7 @@ smtp
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test91 b/tests/data/test91
index d54065593..4942bfddf 100644
--- a/tests/data/test91
+++ b/tests/data/test91
@@ -73,6 +73,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test921 b/tests/data/test921
index 577102706..f9e56736d 100644
--- a/tests/data/test921
+++ b/tests/data/test921
@@ -27,6 +27,7 @@ smtp
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 debug
 </features>
diff --git a/tests/data/test933 b/tests/data/test933
index 08b4e9dd0..e091de395 100644
--- a/tests/data/test933
+++ b/tests/data/test933
@@ -28,6 +28,7 @@ smtp
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/data/test936 b/tests/data/test936
index 5fde3c967..b12349968 100644
--- a/tests/data/test936
+++ b/tests/data/test936
@@ -31,6 +31,7 @@ smtp
 </server>
 <features>
 NTLM
+SSL
 !SSPI
 </features>
  <name>
diff --git a/tests/server/sws.c b/tests/server/sws.c
index c1bbdf7e0..10982b63a 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -1242,6 +1242,8 @@ static int send_doc(curl_socket_t sock, struct 
httprequest *req)
     logmsg("Sending response failed. Only (%zu bytes) of (%zu bytes) "
            "were sent",
            responsesize-count, responsesize);
+    prevtestno = req->testno;
+    prevpartno = req->partno;
     free(ptr);
     free(cmd);
     return -1;

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]