gnunet-svn
[Top][All Lists]
Advanced

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

[gnurl] 282/282: Merge tag 'curl-7_69_1'


From: gnunet
Subject: [gnurl] 282/282: Merge tag 'curl-7_69_1'
Date: Wed, 01 Apr 2020 14:32:27 +0200

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

ng0 pushed a commit to branch master
in repository gnurl.

commit 10e1f0a795a8d2375eeb30b01c71363fdbcc5895
Merge: 697584161 b81e0b077
Author: Nikita Gillmann <address@hidden>
AuthorDate: Wed Apr 1 14:27:11 2020 +0200

    Merge tag 'curl-7_69_1'
    
    7.69.1

 .azure-pipelines.yml                               |  304 ++++-
 .cirrus.yml                                        |    8 +-
 .mailmap                                           |    5 +
 .travis.yml                                        |   40 +-
 CMake/CurlSymbolHiding.cmake                       |    8 +-
 CMake/FindNSS.cmake                                |    4 +-
 CMake/OtherTests.cmake                             |    4 +-
 CMake/Utilities.cmake                              |    5 +-
 CMakeLists.txt                                     |  114 +-
 README                                             |    2 +
 README.md                                          |    1 +
 RELEASE-NOTES                                      |  329 ++----
 acinclude.m4                                       |   10 +-
 appveyor.yml                                       |    2 +-
 configure.ac                                       |   60 +-
 docs/DEPRECATE.md                                  |   32 +-
 docs/GOVERNANCE.md                                 |   29 +-
 docs/HTTP-COOKIES.md                               |   21 +
 docs/HTTP3.md                                      |    8 +-
 docs/INSTALL.md                                    |    1 -
 docs/INTERNALS.md                                  |    3 +-
 docs/KNOWN_BUGS                                    |   54 +-
 docs/MANUAL.md                                     |    2 +-
 docs/RELEASE-PROCEDURE.md                          |   30 +-
 docs/ROADMAP.md                                    |    7 +
 docs/THANKS                                        |  269 +++--
 docs/TODO                                          |   25 +-
 docs/cmdline-opts/alt-svc.d                        |    2 +-
 docs/cmdline-opts/create-dirs.d                    |    2 +
 docs/cmdline-opts/data.d                           |   11 +-
 docs/cmdline-opts/form.d                           |    4 +-
 docs/cmdline-opts/location.d                       |   16 +-
 docs/cmdline-opts/mail-rcpt-allowfails.d           |   15 +
 docs/cmdline-opts/oauth2-bearer.d                  |    2 +-
 docs/libcurl/gnurl_easy_reset.3                    |    5 +-
 docs/libcurl/gnurl_easy_setopt.3                   |    2 +
 docs/libcurl/gnurl_escape.3                        |    2 +-
 docs/libcurl/gnurl_getenv.3                        |    8 +-
 docs/libcurl/gnurl_global_init.3                   |   10 +-
 docs/libcurl/gnurl_global_sslset.3                 |    4 +-
 docs/libcurl/gnurl_share_setopt.3                  |    2 +
 docs/libcurl/libgnurl-errors.3                     |    7 +-
 docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3  |   71 ++
 docs/libcurl/opts/GNURLINFO_COOKIELIST.3           |    6 +-
 docs/libcurl/opts/GNURLINFO_RETRY_AFTER.3          |    2 +-
 docs/libcurl/opts/GNURLINFO_TLS_SSL_PTR.3          |   14 +-
 docs/libcurl/opts/GNURLOPT_ALTSVC_CTRL.3           |    7 +-
 docs/libcurl/opts/GNURLOPT_CAPATH.3                |    7 +-
 docs/libcurl/opts/GNURLOPT_COOKIEFILE.3            |    6 +-
 docs/libcurl/opts/GNURLOPT_COOKIELIST.3            |    6 +-
 docs/libcurl/opts/GNURLOPT_FOLLOWLOCATION.3        |    4 +-
 docs/libcurl/opts/GNURLOPT_POSTFIELDS.3            |    4 +-
 docs/libcurl/opts/GNURLOPT_PROXY_SSL_OPTIONS.3     |   38 +-
 docs/libcurl/opts/GNURLOPT_REDIR_PROTOCOLS.3       |    7 +-
 docs/libcurl/opts/Makefile.inc                     |  701 ++++++------
 docs/libcurl/symbols-in-versions                   |   17 +-
 include/gnurl/curl.h                               |  682 ++++++------
 include/gnurl/curlver.h                            |   12 +-
 include/gnurl/multi.h                              |   48 +-
 lib/CMakeLists.txt                                 |    6 +
 lib/Makefile.inc                                   |   23 +-
 lib/Makefile.m32                                   |    4 +-
 lib/Makefile.netware                               |    3 +-
 lib/altsvc.c                                       |  254 +++--
 lib/altsvc.h                                       |    9 +-
 lib/asyn-ares.c                                    |   19 +-
 lib/asyn-thread.c                                  |   42 +-
 lib/checksrc.pl                                    |    2 +-
 lib/config-dos.h                                   |    3 +-
 lib/config-plan9.h                                 |    3 +-
 lib/config-symbian.h                               |    5 +-
 lib/config-tpf.h                                   |    6 +-
 lib/config-vxworks.h                               |    5 +-
 lib/config-win32.h                                 |    6 +-
 lib/conncache.c                                    |   14 +-
 lib/conncache.h                                    |    3 +-
 lib/connect.c                                      |   87 +-
 lib/cookie.c                                       |   82 +-
 lib/curl_config.h.cmake                            |    9 +-
 lib/curl_hmac.h                                    |    9 +-
 lib/curl_md4.h                                     |    5 +-
 lib/curl_md5.h                                     |    6 +-
 lib/curl_ntlm_core.c                               |   39 +-
 lib/curl_ntlm_core.h                               |   10 +-
 lib/curl_ntlm_wb.c                                 |  103 +-
 lib/curl_sasl.c                                    |   16 +-
 lib/curl_sha256.h                                  |    9 +-
 lib/doh.c                                          |    4 +-
 lib/easy.c                                         |  141 ++-
 lib/formdata.c                                     |   14 +-
 lib/ftp.c                                          |   52 +-
 lib/ftp.h                                          |    4 +-
 lib/getenv.c                                       |   47 +-
 lib/hmac.c                                         |   39 +-
 lib/hostip.c                                       |   82 +-
 lib/hostip.h                                       |   33 +-
 lib/hostip4.c                                      |  294 +++--
 lib/hostip6.c                                      |   26 +-
 lib/http.c                                         |   29 +-
 lib/http.h                                         |    4 +-
 lib/http2.c                                        |  115 +-
 lib/http2.h                                        |    4 +-
 lib/llist.c                                        |   53 +-
 lib/llist.h                                        |    5 +-
 lib/md4.c                                          |   60 +-
 lib/md5.c                                          |   69 +-
 lib/mime.c                                         |  231 +++-
 lib/mime.h                                         |    8 +-
 lib/mk-ca-bundle.pl                                |   62 +-
 lib/multi.c                                        |   43 +-
 lib/multihandle.h                                  |   13 +-
 lib/multiif.h                                      |    8 +-
 lib/{getenv.c => rename.c}                         |   52 +-
 lib/{curl_sha256.h => rename.h}                    |   15 +-
 lib/select.c                                       |  215 ++--
 lib/select.h                                       |   10 +-
 lib/sendf.c                                        |   19 +-
 lib/setopt.c                                       |   32 +-
 lib/sha256.c                                       |  267 ++++-
 lib/smtp.c                                         |  324 +++++-
 lib/smtp.h                                         |    7 +-
 lib/socks.c                                        | 1134 +++++++++++--------
 lib/socks.h                                        |   15 +-
 lib/socks_gssapi.c                                 |    6 +-
 lib/socks_sspi.c                                   |    5 +-
 lib/strcase.c                                      |    8 +-
 lib/strcase.h                                      |    3 +-
 lib/strerror.c                                     |    6 +
 lib/strerror.h                                     |    4 +-
 lib/system_win32.c                                 |    4 +-
 lib/timeval.c                                      |    3 +-
 lib/transfer.c                                     |    8 +-
 lib/url.c                                          |  111 +-
 lib/url.h                                          |    7 +-
 lib/urlapi.c                                       |   68 +-
 lib/urldata.h                                      |  100 +-
 lib/vauth/digest.c                                 |   74 +-
 lib/vauth/ntlm.c                                   |   13 +-
 lib/version.c                                      |  198 ++--
 lib/vquic/ngtcp2.c                                 |   36 +-
 lib/vquic/quiche.c                                 |    6 +-
 lib/vssh/libssh.c                                  |  121 +-
 lib/vssh/libssh2.c                                 |  142 ++-
 lib/vssh/ssh.h                                     |   22 +-
 lib/vssh/wolfssh.c                                 | 1156 ++++++++++++++++++++
 lib/{vtls/polarssl.h => vssh/wolfssh.h}            |   15 +-
 lib/vtls/gtls.c                                    |    6 +-
 lib/vtls/mbedtls.c                                 |   16 +-
 ...{polarssl_threadlock.c => mbedtls_threadlock.c} |   38 +-
 ...{polarssl_threadlock.h => mbedtls_threadlock.h} |   28 +-
 lib/vtls/openssl.c                                 |   32 +-
 lib/vtls/polarssl.c                                |  931 ----------------
 lib/vtls/schannel.c                                |   12 +-
 lib/vtls/schannel_verify.c                         |  152 ++-
 lib/vtls/sectransp.c                               |    4 +-
 lib/vtls/vtls.c                                    |   46 +-
 lib/vtls/vtls.h                                    |    4 +-
 lib/vtls/wolfssl.c                                 |   12 +-
 m4/curl-confopts.m4                                |    6 +-
 m4/curl-functions.m4                               |    4 +-
 packages/OS400/ccsidcurl.c                         |   16 -
 packages/OS400/chkstrings.c                        |   62 ++
 packages/OS400/curl.inc.in                         |    6 +-
 packages/OS400/make-lib.sh                         |   20 +
 packages/Symbian/group/libcurl.mmp                 |    2 +-
 packages/vms/compare_curl_source.com               |    2 +-
 packages/vms/curl_crtl_init.c                      |    2 +-
 packages/vms/generate_config_vms_h_curl.com        |    5 +-
 packages/vms/readme                                |    4 +-
 scripts/contributors.sh                            |   22 +-
 scripts/contrithanks.sh                            |   21 +-
 scripts/delta                                      |   18 +-
 scripts/singleuse.pl                               |   19 +-
 src/CMakeLists.txt                                 |    6 +
 src/tool_cb_hdr.c                                  |   32 +-
 src/tool_cb_prg.c                                  |   55 +-
 src/tool_cb_rea.c                                  |    5 +-
 src/tool_cb_see.c                                  |    6 +-
 src/tool_cb_see.h                                  |   11 +-
 src/tool_cb_wrt.c                                  |   15 +-
 src/tool_cb_wrt.h                                  |    5 +-
 src/tool_cfgable.h                                 |    3 +-
 src/tool_dirhie.c                                  |   21 +-
 src/tool_doswin.c                                  |   28 +-
 src/tool_doswin.h                                  |    3 +-
 src/tool_getparam.c                                |   11 +-
 src/tool_help.c                                    |    4 +-
 src/tool_homedir.c                                 |   57 +-
 src/tool_main.c                                    |   35 +-
 src/tool_metalink.c                                |   71 +-
 src/tool_operate.c                                 |   40 +-
 src/tool_operhlp.c                                 |    4 +-
 src/tool_progress.c                                |    5 +-
 src/tool_sdecls.h                                  |    3 +-
 src/tool_urlglob.c                                 |    4 +-
 src/tool_util.c                                    |   44 +-
 tests/.gitignore                                   |    1 +
 tests/FILEFORMAT                                   |   15 +-
 tests/Makefile.am                                  |    5 +-
 tests/appveyor.pm                                  |  114 ++
 tests/azure.pm                                     |  146 +++
 tests/badsymbols.pl                                |  132 +++
 tests/data/Makefile.inc                            |   26 +-
 tests/data/test1070                                |    4 +-
 tests/data/test1129                                |   10 +-
 tests/data/test1133                                |    1 -
 tests/data/{test1395 => test1167}                  |   14 +-
 tests/data/{test490 => test1176}                   |   42 +-
 tests/data/test1293                                |    2 +-
 tests/data/test1300                                |    4 -
 tests/data/test1301                                |    4 -
 tests/data/test1302                                |    4 -
 tests/data/test1303                                |    4 -
 tests/data/test1304                                |    4 -
 tests/data/test1305                                |    4 -
 tests/data/test1307                                |    4 -
 tests/data/test1308                                |    4 -
 tests/data/test1309                                |    4 -
 tests/data/test1323                                |    6 +-
 tests/data/test1330                                |    6 -
 tests/data/test1394                                |    4 -
 tests/data/test1395                                |    5 -
 tests/data/test1396                                |    3 -
 tests/data/test1397                                |    3 -
 tests/data/test1398                                |    3 -
 tests/data/test1399                                |    4 -
 tests/data/test1437                                |    2 +-
 tests/data/test1459                                |   46 +
 tests/data/test153                                 |    2 +-
 tests/data/test1538                                |    6 +-
 tests/data/test1600                                |    4 -
 tests/data/test1601                                |    4 -
 tests/data/test1602                                |    4 -
 tests/data/test1603                                |    4 -
 tests/data/test1604                                |    4 -
 tests/data/test1605                                |    4 -
 tests/data/test1606                                |    4 -
 tests/data/test1607                                |    4 -
 tests/data/test1608                                |    4 -
 tests/data/test1609                                |    4 -
 tests/data/{test1650 => test1610}                  |    9 +-
 tests/data/{test1650 => test1611}                  |    9 +-
 tests/data/{test1650 => test1612}                  |    9 +-
 tests/data/test1620                                |    4 -
 tests/data/test1621                                |    4 -
 tests/data/test1650                                |    4 -
 tests/data/test1651                                |    4 -
 tests/data/test1652                                |    3 -
 tests/data/test1653                                |    3 -
 tests/data/test1654                                |    3 -
 tests/data/test1655                                |    4 -
 tests/data/test1800                                |    2 +-
 tests/data/test1908                                |   71 ++
 tests/data/test2006                                |    4 +
 tests/data/test2007                                |    4 +
 tests/data/test2008                                |    4 +
 tests/data/test2009                                |    4 +
 tests/data/test2010                                |    4 +
 tests/data/test2033                                |    8 +-
 tests/data/test2058                                |    2 +-
 tests/data/test2059                                |    2 +-
 tests/data/test2060                                |    2 +-
 tests/data/test2061                                |    2 +-
 tests/data/test2062                                |    2 +-
 tests/data/test2063                                |    2 +-
 tests/data/test2064                                |    2 +-
 tests/data/test2065                                |    2 +-
 tests/data/test2066                                |    2 +-
 tests/data/test2067                                |    2 +-
 tests/data/test2068                                |    2 +-
 tests/data/test2069                                |    2 +-
 tests/data/test2078                                |    2 +-
 tests/data/test2100                                |  Bin 1639 -> 1642 bytes
 tests/data/test3002                                |   55 +
 tests/data/test3003                                |   55 +
 tests/data/test3004                                |   55 +
 tests/data/test3005                                |   55 +
 tests/data/test3006                                |   51 +
 tests/data/test3007                                |   47 +
 tests/data/test304                                 |    1 -
 tests/data/test357                                 |   97 ++
 tests/data/test39                                  |    1 -
 tests/data/test490                                 |    4 +-
 tests/data/test491                                 |    2 +-
 tests/data/test492                                 |    8 +-
 tests/data/test552                                 |  Bin 142985 -> 142941 
bytes
 tests/data/test558                                 |    2 -
 tests/data/test643                                 |   12 +-
 tests/data/test644                                 |    3 +-
 tests/data/test645                                 |   64 +-
 tests/data/test650                                 |   12 +-
 tests/data/test651                                 |    1 -
 tests/data/test654                                 |   18 +-
 tests/data/test664                                 |   44 +
 tests/data/test665                                 |   44 +
 tests/data/test666                                 |  293 +++++
 tests/data/{test654 => test667}                    |   44 +-
 tests/data/{test654 => test668}                    |   46 +-
 tests/data/{test1293 => test670}                   |   57 +-
 tests/data/{test1293 => test671}                   |   57 +-
 tests/data/{test1293 => test672}                   |   57 +-
 tests/data/{test1293 => test673}                   |   57 +-
 tests/data/{test923 => test894}                    |   23 +-
 tests/data/test923                                 |    3 -
 tests/data/test955                                 |   56 +
 tests/data/test956                                 |   57 +
 tests/data/test957                                 |   51 +
 tests/data/test958                                 |   51 +
 tests/data/test959                                 |   57 +
 tests/data/test960                                 |   58 +
 tests/data/test961                                 |   52 +
 tests/data/test962                                 |   63 ++
 tests/data/test963                                 |   63 ++
 tests/data/test964                                 |   49 +
 tests/data/test965                                 |   66 ++
 tests/data/test966                                 |   66 ++
 tests/data/test967                                 |   55 +
 tests/data/test968                                 |   52 +
 tests/data/test969                                 |   51 +
 tests/ftp.pm                                       |   38 +-
 tests/ftpserver.pl                                 |   62 +-
 tests/keywords.pl                                  |    4 +-
 tests/libtest/Makefile.inc                         |   36 +-
 tests/libtest/lib1515.c                            |    2 +-
 tests/libtest/lib1531.c                            |    2 +-
 tests/libtest/lib1560.c                            |   15 +-
 tests/libtest/lib1564.c                            |    4 +-
 src/tool_cb_see.h => tests/libtest/lib1908.c       |   52 +-
 tests/libtest/lib643.c                             |   19 +-
 tests/libtest/lib652.c                             |    5 +-
 tests/libtest/lib654.c                             |    8 +-
 tests/libtest/{lib652.c => lib666.c}               |   50 +-
 tests/libtest/{lib654.c => lib667.c}               |   77 +-
 tests/libtest/lib668.c                             |  122 +++
 tests/libtest/lib670.c                             |  259 +++++
 tests/libtest/mk-lib1521.pl                        |   47 +-
 tests/python_dependencies/impacket/smbserver.py    |    7 +-
 tests/rtspserver.pl                                |    6 +-
 tests/runtests.1                                   |   57 +-
 tests/runtests.pl                                  |  234 +++-
 tests/server/sws.c                                 |   32 +-
 tests/server/util.h                                |    6 +-
 tests/sshhelp.pm                                   |    3 +
 tests/sshserver.pl                                 |   28 +-
 tests/testcurl.pl                                  |    2 +-
 tests/tftpserver.pl                                |    6 +-
 tests/unit/Makefile.inc                            |   34 +-
 tests/unit/unit1300.c                              |   52 +-
 tests/unit/unit1601.c                              |   20 +-
 tests/unit/{unit1601.c => unit1610.c}              |   22 +-
 tests/unit/{unit1601.c => unit1611.c}              |   20 +-
 tests/unit/{unit1601.c => unit1612.c}              |   26 +-
 tests/unit/unit1651.c                              |    4 +-
 tests/unit/unit1654.c                              |    4 +-
 354 files changed, 10311 insertions(+), 5517 deletions(-)

diff --cc .mailmap
index 1fbbf1d89,14b7b73ad..626341a2c
--- a/.mailmap
+++ b/.mailmap
@@@ -58,3 -58,4 +58,8 @@@ Massimiliano Fantuzzi <superfantuz@gmai
  Niall O'Reilly <address@hidden>
  Mohammad Hasbini <address@hidden>
  Andrew Ishchuk <address@hidden>
+ Nicolas Guillier <address@hidden>
++Nikita Gillmann <address@hidden>
++Nikita Gillmann <address@hidden> ng0 <address@hidden>
++Nikita Gillmann <address@hidden> ng0 <address@hidden>
++Nikita Gillmann <address@hidden> Nils Gillmann <address@hidden>
diff --cc CMakeLists.txt
index 5419b525b,73b053b31..97483ca8e
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@@ -45,9 -46,11 +46,11 @@@ include(Macros
  include(CMakeDependentOption)
  include(CheckCCompilerFlag)
  
 -project(CURL C)
 +project(GNURL C)
  
- file(READ ${GNURL_SOURCE_DIR}/include/gnurl/curlver.h CURL_VERSION_H_CONTENTS)
+ message(WARNING "the curl cmake build system is poorly maintained. Be aware")
+ 
 -file(STRINGS ${CURL_SOURCE_DIR}/include/curl/curlver.h 
CURL_VERSION_H_CONTENTS REGEX "#define LIBCURL_VERSION( |_NUM )")
++file(STRINGS $GNURL_SOURCE_DIR}/include/gnurl/curlver.h 
CURL_VERSION_H_CONTENTS REGEX "#define LIBCURL_VERSION( |_NUM )")
  string(REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*"
    CURL_VERSION ${CURL_VERSION_H_CONTENTS})
  string(REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION})
@@@ -120,8 -135,7 +135,7 @@@ set(GNURL_LIBS ""
  if(ENABLE_ARES)
    set(USE_ARES 1)
    find_package(CARES REQUIRED)
 -  list(APPEND CURL_LIBS ${CARES_LIBRARY})
 +  list(APPEND GNURL_LIBS ${CARES_LIBRARY})
-   set(GNURL_LIBS ${GNURL_LIBS} ${CARES_LIBRARY})
  endif()
  
  include(CurlSymbolHiding)
@@@ -150,27 -157,38 +164,43 @@@ mark_as_advanced(CURL_DISABLE_TFTP
  option(CURL_DISABLE_HTTP "disables HTTP" OFF)
  mark_as_advanced(CURL_DISABLE_HTTP)
  
 -option(CURL_DISABLE_LDAPS "to disable LDAPS" OFF)
 +option(CURL_DISABLE_LDAPS "to disable LDAPS" ON)
  mark_as_advanced(CURL_DISABLE_LDAPS)
  
 -option(CURL_DISABLE_RTSP "to disable RTSP" OFF)
 +option(CURL_DISABLE_RTSP "to disable RTSP" ON)
  mark_as_advanced(CURL_DISABLE_RTSP)
 +
  option(CURL_DISABLE_PROXY "to disable proxy" OFF)
  mark_as_advanced(CURL_DISABLE_PROXY)
 -option(CURL_DISABLE_POP3 "to disable POP3" OFF)
 +
 +option(CURL_DISABLE_POP3 "to disable POP3" ON)
  mark_as_advanced(CURL_DISABLE_POP3)
 -option(CURL_DISABLE_IMAP "to disable IMAP" OFF)
 +
 +option(CURL_DISABLE_IMAP "to disable IMAP" ON)
  mark_as_advanced(CURL_DISABLE_IMAP)
 -option(CURL_DISABLE_SMTP "to disable SMTP" OFF)
 +
 +option(CURL_DISABLE_SMTP "to disable SMTP" ON)
  mark_as_advanced(CURL_DISABLE_SMTP)
 -option(CURL_DISABLE_GOPHER "to disable Gopher" OFF)
 +
 +option(CURL_DISABLE_GOPHER "to disable Gopher" ON)
  mark_as_advanced(CURL_DISABLE_GOPHER)
  
+ if(HTTP_ONLY)
+   set(CURL_DISABLE_FTP ON)
+   set(CURL_DISABLE_LDAP ON)
+   set(CURL_DISABLE_LDAPS ON)
+   set(CURL_DISABLE_TELNET ON)
+   set(CURL_DISABLE_DICT ON)
+   set(CURL_DISABLE_FILE ON)
+   set(CURL_DISABLE_TFTP ON)
+   set(CURL_DISABLE_RTSP ON)
+   set(CURL_DISABLE_POP3 ON)
+   set(CURL_DISABLE_IMAP ON)
+   set(CURL_DISABLE_SMB ON)
+   set(CURL_DISABLE_SMTP ON)
+   set(CURL_DISABLE_GOPHER ON)
+ endif()
+ 
  option(CURL_DISABLE_COOKIES "to disable cookies support" OFF)
  mark_as_advanced(CURL_DISABLE_COOKIES)
  
@@@ -889,49 -916,36 +923,36 @@@ check_symbol_exists(SIGALRM       "${GN
  if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
    set(HAVE_SIGNAL 1)
  endif()
 -check_symbol_exists(uname          "${CURL_INCLUDES}" HAVE_UNAME)
 -check_symbol_exists(strtoll        "${CURL_INCLUDES}" HAVE_STRTOLL)
 -check_symbol_exists(_strtoi64      "${CURL_INCLUDES}" HAVE__STRTOI64)
 -check_symbol_exists(strerror_r     "${CURL_INCLUDES}" HAVE_STRERROR_R)
 -check_symbol_exists(siginterrupt   "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
 -check_symbol_exists(perror         "${CURL_INCLUDES}" HAVE_PERROR)
 -check_symbol_exists(fork           "${CURL_INCLUDES}" HAVE_FORK)
 -check_symbol_exists(getaddrinfo    "${CURL_INCLUDES}" HAVE_GETADDRINFO)
 -check_symbol_exists(freeaddrinfo   "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
 -check_symbol_exists(freeifaddrs    "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
 -check_symbol_exists(pipe           "${CURL_INCLUDES}" HAVE_PIPE)
 -check_symbol_exists(ftruncate      "${CURL_INCLUDES}" HAVE_FTRUNCATE)
 -check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
 -check_symbol_exists(getpeername    "${CURL_INCLUDES}" HAVE_GETPEERNAME)
 -check_symbol_exists(getsockname    "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
 -check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
 -check_symbol_exists(getrlimit      "${CURL_INCLUDES}" HAVE_GETRLIMIT)
 -check_symbol_exists(setlocale      "${CURL_INCLUDES}" HAVE_SETLOCALE)
 -check_symbol_exists(setmode        "${CURL_INCLUDES}" HAVE_SETMODE)
 -check_symbol_exists(setrlimit      "${CURL_INCLUDES}" HAVE_SETRLIMIT)
 -check_symbol_exists(fcntl          "${CURL_INCLUDES}" HAVE_FCNTL)
 -check_symbol_exists(ioctl          "${CURL_INCLUDES}" HAVE_IOCTL)
 -check_symbol_exists(setsockopt     "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
 +check_symbol_exists(uname          "${GNURL_INCLUDES}" HAVE_UNAME)
 +check_symbol_exists(strtoll        "${GNURL_INCLUDES}" HAVE_STRTOLL)
 +check_symbol_exists(_strtoi64      "${GNURL_INCLUDES}" HAVE__STRTOI64)
 +check_symbol_exists(strerror_r     "${GNURL_INCLUDES}" HAVE_STRERROR_R)
 +check_symbol_exists(siginterrupt   "${GNURL_INCLUDES}" HAVE_SIGINTERRUPT)
 +check_symbol_exists(perror         "${GNURL_INCLUDES}" HAVE_PERROR)
 +check_symbol_exists(fork           "${GNURL_INCLUDES}" HAVE_FORK)
 +check_symbol_exists(getaddrinfo    "${GNURL_INCLUDES}" HAVE_GETADDRINFO)
 +check_symbol_exists(freeaddrinfo   "${GNURL_INCLUDES}" HAVE_FREEADDRINFO)
 +check_symbol_exists(freeifaddrs    "${GNURL_INCLUDES}" HAVE_FREEIFADDRS)
 +check_symbol_exists(pipe           "${GNURL_INCLUDES}" HAVE_PIPE)
 +check_symbol_exists(ftruncate      "${GNURL_INCLUDES}" HAVE_FTRUNCATE)
 +check_symbol_exists(getprotobyname "${GNURL_INCLUDES}" HAVE_GETPROTOBYNAME)
 +check_symbol_exists(getpeername    "${GNURL_INCLUDES}" HAVE_GETPEERNAME)
 +check_symbol_exists(getsockname    "${GNURL_INCLUDES}" HAVE_GETSOCKNAME)
 +check_symbol_exists(if_nametoindex "${GNURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
 +check_symbol_exists(getrlimit      "${GNURL_INCLUDES}" HAVE_GETRLIMIT)
 +check_symbol_exists(setlocale      "${GNURL_INCLUDES}" HAVE_SETLOCALE)
 +check_symbol_exists(setmode        "${GNURL_INCLUDES}" HAVE_SETMODE)
 +check_symbol_exists(setrlimit      "${GNURL_INCLUDES}" HAVE_SETRLIMIT)
 +check_symbol_exists(fcntl          "${GNURL_INCLUDES}" HAVE_FCNTL)
 +check_symbol_exists(ioctl          "${GNURL_INCLUDES}" HAVE_IOCTL)
 +check_symbol_exists(setsockopt     "${GNURL_INCLUDES}" HAVE_SETSOCKOPT)
  check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
- 
- # symbol exists in win32, but function does not.
- if(WIN32)
-   if(ENABLE_INET_PTON)
-     check_function_exists(inet_pton HAVE_INET_PTON)
-     # _WIN32_WINNT_VISTA (0x0600)
-     add_definitions(-D_WIN32_WINNT=0x0600)
-   else()
-     # _WIN32_WINNT_WINXP (0x0501)
-     add_definitions(-D_WIN32_WINNT=0x0501)
-   endif()
- else()
-   check_function_exists(inet_pton HAVE_INET_PTON)
- endif()
+ check_symbol_exists(inet_pton      "${CURL_INCLUDES}" HAVE_INET_PTON)
  
 -check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
 +check_symbol_exists(fsetxattr "${GNURL_INCLUDES}" HAVE_FSETXATTR)
  if(HAVE_FSETXATTR)
 -  foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6)
 -    curl_internal_test(${CURL_TEST})
 +  foreach(GNURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6)
 +    curl_internal_test(${GNURL_TEST})
    endforeach()
  endif()
  
@@@ -1217,11 -1257,9 +1263,16 @@@ _add_if("Kerberos"      NOT CURL_DISABL
                          (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
  # NTLM support requires crypto function adaptions from various SSL libs
  # TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
- if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR 
USE_SECTRANSP OR USE_MBEDTLS OR USE_NSS OR USE_GNUTLS))
-   _add_if("NTLM"        1)
-   # TODO missing option (autoconf: --enable-ntlm-wb)
-   _add_if("NTLM_WB"     NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
- endif()
++
++#if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR 
USE_SECTRANSP OR USE_MBEDTLS OR USE_NSS OR USE_GNUTLS))
++#  _add_if("NTLM"        1)
++#  # TODO missing option (autoconf: --enable-ntlm-wb)
++#  _add_if("NTLM_WB"     NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
++#endif()
++
+ _add_if("NTLM"        use_ntlm)
+ # TODO missing option (autoconf: --enable-ntlm-wb)
+ _add_if("NTLM_WB"     use_ntlm AND NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
  # TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
  _add_if("TLS-SRP"       USE_TLS_SRP)
  # TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h 
header
diff --cc docs/libcurl/gnurl_easy_reset.3
index 56f5bbea7,000000000..5bf6ddf9a
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_easy_reset.3
+++ b/docs/libcurl/gnurl_easy_reset.3
@@@ -1,43 -1,0 +1,44 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * Copyright (C) 1998 - 2014, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.TH gnurl_easy_reset 3 "31 July 2004" "libcurl 7.12.1" "libgnurl Manual"
 +.SH NAME
 +curl_easy_reset - reset all options of a libcurl session handle
 +.SH SYNOPSIS
 +.B #include <gnurl/curl.h>
 +
 +.BI "void curl_easy_reset(CURL *"handle ");"
 +
 +.SH DESCRIPTION
 +Re-initializes all options previously set on a specified CURL handle to the
 +default values. This puts back the handle to the same state as it was in when
 +it was just created with \fIcurl_easy_init(3)\fP.
 +
 +It does not change the following information kept in the handle: live
- connections, the Session ID cache, the DNS cache, the cookies and shares.
++connections, the Session ID cache, the DNS cache, the cookies, the shares or
++the alt-svc cache.
 +.SH AVAILABILITY
 +This function was added in libcurl 7.12.1
 +.SH RETURN VALUE
 +Nothing
 +.SH "SEE ALSO"
 +.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_easy_setopt "(3),"
 +.BR curl_easy_duphandle "(3)"
diff --cc docs/libcurl/gnurl_easy_setopt.3
index a936efadb,000000000..196899fab
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_easy_setopt.3
+++ b/docs/libcurl/gnurl_easy_setopt.3
@@@ -1,647 -1,0 +1,649 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH gnurl_easy_setopt 3 "25 Jun 2014" "libcurl 7.38.0" "libgnurl Manual"
 +.SH NAME
 +curl_easy_setopt \- set options for a curl easy handle
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
 +.SH DESCRIPTION
 +\fIcurl_easy_setopt(3)\fP is used to tell libcurl how to behave. By setting
 +the appropriate options, the application can change libcurl's behavior.  All
 +options are set with an \fIoption\fP followed by a \fIparameter\fP. That
 +parameter can be a \fBlong\fP, a \fBfunction pointer\fP, an \fBobject
 +pointer\fP or a \fBcurl_off_t\fP, depending on what the specific option
 +expects. Read this manual carefully as bad input values may cause libcurl to
 +behave badly!  You can only set one option in each function call. A typical
 +application uses many \fIcurl_easy_setopt(3)\fP calls in the setup phase.
 +
 +Options set with this function call are valid for all forthcoming transfers
 +performed using this \fIhandle\fP.  The options are not in any way reset
 +between transfers, so if you want subsequent transfers with different options,
 +you must change them between the transfers. You can optionally reset all
 +options back to internal default with \fIcurl_easy_reset(3)\fP.
 +
 +Strings passed to libcurl as 'char *' arguments, are copied by the library;
 +thus the string storage associated to the pointer argument may be overwritten
 +after \fIcurl_easy_setopt(3)\fP returns. The only exception to this rule is
 +really \fICURLOPT_POSTFIELDS(3)\fP, but the alternative that copies the string
 +\fICURLOPT_COPYPOSTFIELDS(3)\fP has some usage characteristics you need to
 +read up on.
 +
 +The order in which the options are set does not matter.
 +
 +Before version 7.17.0, strings were not copied. Instead the user was forced
 +keep them available until libcurl no longer needed them.
 +
 +The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
 +\fIcurl_easy_duphandle(3)\fP call.
 +.SH BEHAVIOR OPTIONS
 +.IP CURLOPT_VERBOSE
 +Display verbose information. See \fICURLOPT_VERBOSE(3)\fP
 +.IP CURLOPT_HEADER
 +Include the header in the body output. See \fICURLOPT_HEADER(3)\fP
 +.IP CURLOPT_NOPROGRESS
 +Shut off the progress meter. See \fICURLOPT_NOPROGRESS(3)\fP
 +.IP CURLOPT_NOSIGNAL
 +Do not install signal handlers. See \fICURLOPT_NOSIGNAL(3)\fP
 +.IP CURLOPT_WILDCARDMATCH
 +Transfer multiple files according to a file name pattern. See 
\fICURLOPT_WILDCARDMATCH(3)\fP
 +.SH CALLBACK OPTIONS
 +.IP CURLOPT_WRITEFUNCTION
 +Callback for writing data. See \fICURLOPT_WRITEFUNCTION(3)\fP
 +.IP CURLOPT_WRITEDATA
 +Data pointer to pass to the write callback. See \fICURLOPT_WRITEDATA(3)\fP
 +.IP CURLOPT_READFUNCTION
 +Callback for reading data. See \fICURLOPT_READFUNCTION(3)\fP
 +.IP CURLOPT_READDATA
 +Data pointer to pass to the read callback. See \fICURLOPT_READDATA(3)\fP
 +.IP CURLOPT_IOCTLFUNCTION
 +Callback for I/O operations. See \fICURLOPT_IOCTLFUNCTION(3)\fP
 +.IP CURLOPT_IOCTLDATA
 +Data pointer to pass to the I/O callback. See \fICURLOPT_IOCTLDATA(3)\fP
 +.IP CURLOPT_SEEKFUNCTION
 +Callback for seek operations. See \fICURLOPT_SEEKFUNCTION(3)\fP
 +.IP CURLOPT_SEEKDATA
 +Data pointer to pass to the seek callback. See \fICURLOPT_SEEKDATA(3)\fP
 +.IP CURLOPT_SOCKOPTFUNCTION
 +Callback for sockopt operations. See \fICURLOPT_SOCKOPTFUNCTION(3)\fP
 +.IP CURLOPT_SOCKOPTDATA
 +Data pointer to pass to the sockopt callback. See \fICURLOPT_SOCKOPTDATA(3)\fP
 +.IP CURLOPT_OPENSOCKETFUNCTION
 +Callback for socket creation. See \fICURLOPT_OPENSOCKETFUNCTION(3)\fP
 +.IP CURLOPT_OPENSOCKETDATA
 +Data pointer to pass to the open socket callback. See 
\fICURLOPT_OPENSOCKETDATA(3)\fP
 +.IP CURLOPT_CLOSESOCKETFUNCTION
 +Callback for closing socket. See \fICURLOPT_CLOSESOCKETFUNCTION(3)\fP
 +.IP CURLOPT_CLOSESOCKETDATA
 +Data pointer to pass to the close socket callback. See 
\fICURLOPT_CLOSESOCKETDATA(3)\fP
 +.IP CURLOPT_PROGRESSFUNCTION
 +OBSOLETE callback for progress meter. See \fICURLOPT_PROGRESSFUNCTION(3)\fP
 +.IP CURLOPT_PROGRESSDATA
 +Data pointer to pass to the progress meter callback. See 
\fICURLOPT_PROGRESSDATA(3)\fP
 +.IP CURLOPT_XFERINFOFUNCTION
 +Callback for progress meter. See \fICURLOPT_XFERINFOFUNCTION(3)\fP
 +.IP CURLOPT_XFERINFODATA
 +Data pointer to pass to the progress meter callback. See 
\fICURLOPT_XFERINFODATA(3)\fP
 +.IP CURLOPT_HEADERFUNCTION
 +Callback for writing received headers. See \fICURLOPT_HEADERFUNCTION(3)\fP
 +.IP CURLOPT_HEADERDATA
 +Data pointer to pass to the header callback. See \fICURLOPT_HEADERDATA(3)\fP
 +.IP CURLOPT_DEBUGFUNCTION
 +Callback for debug information. See \fICURLOPT_DEBUGFUNCTION(3)\fP
 +.IP CURLOPT_DEBUGDATA
 +Data pointer to pass to the debug callback. See \fICURLOPT_DEBUGDATA(3)\fP
 +.IP CURLOPT_SSL_CTX_FUNCTION
 +Callback for SSL context logic. See \fICURLOPT_SSL_CTX_FUNCTION(3)\fP
 +.IP CURLOPT_SSL_CTX_DATA
 +Data pointer to pass to the SSL context callback. See 
\fICURLOPT_SSL_CTX_DATA(3)\fP
 +.IP CURLOPT_CONV_TO_NETWORK_FUNCTION
 +Callback for code base conversion. See 
\fICURLOPT_CONV_TO_NETWORK_FUNCTION(3)\fP
 +.IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
 +Callback for code base conversion. See 
\fICURLOPT_CONV_FROM_NETWORK_FUNCTION(3)\fP
 +.IP CURLOPT_CONV_FROM_UTF8_FUNCTION
 +Callback for code base conversion. See 
\fICURLOPT_CONV_FROM_UTF8_FUNCTION(3)\fP
 +.IP CURLOPT_INTERLEAVEFUNCTION
 +Callback for RTSP interleaved data. See \fICURLOPT_INTERLEAVEFUNCTION(3)\fP
 +.IP CURLOPT_INTERLEAVEDATA
 +Data pointer to pass to the RTSP interleave callback. See 
\fICURLOPT_INTERLEAVEDATA(3)\fP
 +.IP CURLOPT_CHUNK_BGN_FUNCTION
 +Callback for wildcard download start of chunk. See 
\fICURLOPT_CHUNK_BGN_FUNCTION(3)\fP
 +.IP CURLOPT_CHUNK_END_FUNCTION
 +Callback for wildcard download end of chunk. See 
\fICURLOPT_CHUNK_END_FUNCTION(3)\fP
 +.IP CURLOPT_CHUNK_DATA
 +Data pointer to pass to the chunk callbacks. See \fICURLOPT_CHUNK_DATA(3)\fP
 +.IP CURLOPT_FNMATCH_FUNCTION
 +Callback for wildcard matching. See \fICURLOPT_FNMATCH_FUNCTION(3)\fP
 +.IP CURLOPT_FNMATCH_DATA
 +Data pointer to pass to the wildcard matching callback. See 
\fICURLOPT_FNMATCH_DATA(3)\fP
 +.IP CURLOPT_SUPPRESS_CONNECT_HEADERS
 +Suppress proxy CONNECT response headers from user callbacks. See 
\fICURLOPT_SUPPRESS_CONNECT_HEADERS(3)\fP
 +.IP CURLOPT_RESOLVER_START_FUNCTION
 +Callback to be called before a new resolve request is started. See 
\fICURLOPT_RESOLVER_START_FUNCTION(3)\fP
 +.IP CURLOPT_RESOLVER_START_DATA
 +Data pointer to pass to resolver start callback. See 
\fICURLOPT_RESOLVER_START_DATA(3)\fP
 +.SH ERROR OPTIONS
 +.IP CURLOPT_ERRORBUFFER
 +Error message buffer. See \fICURLOPT_ERRORBUFFER(3)\fP
 +.IP CURLOPT_STDERR
 +stderr replacement stream. See \fICURLOPT_STDERR(3)\fP
 +.IP CURLOPT_FAILONERROR
 +Fail on HTTP 4xx errors. \fICURLOPT_FAILONERROR(3)\fP
 +.IP CURLOPT_KEEP_SENDING_ON_ERROR
 +Keep sending on HTTP >= 300 errors. \fICURLOPT_KEEP_SENDING_ON_ERROR(3)\fP
 +.SH NETWORK OPTIONS
 +.IP CURLOPT_URL
 +URL to work on. See \fICURLOPT_URL(3)\fP
 +.IP CURLOPT_PATH_AS_IS
 +Disable squashing /../ and /./ sequences in the path. See 
\fICURLOPT_PATH_AS_IS(3)\fP
 +.IP CURLOPT_PROTOCOLS
 +Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
 +.IP CURLOPT_REDIR_PROTOCOLS
 +Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
 +.IP CURLOPT_DEFAULT_PROTOCOL
 +Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
 +.IP CURLOPT_PROXY
 +Proxy to use. See \fICURLOPT_PROXY(3)\fP
 +.IP CURLOPT_PRE_PROXY
 +Socks proxy to use. See \fICURLOPT_PRE_PROXY(3)\fP
 +.IP CURLOPT_PROXYPORT
 +Proxy port to use. See \fICURLOPT_PROXYPORT(3)\fP
 +.IP CURLOPT_PROXYTYPE
 +Proxy type. See \fICURLOPT_PROXYTYPE(3)\fP
 +.IP CURLOPT_NOPROXY
 +Filter out hosts from proxy use. \fICURLOPT_NOPROXY(3)\fP
 +.IP CURLOPT_HTTPPROXYTUNNEL
 +Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
 +.IP CURLOPT_CONNECT_TO
 +Connect to a specific host and port. See \fICURLOPT_CONNECT_TO(3)\fP
 +.IP CURLOPT_SOCKS5_AUTH
 +Socks5 authentication methods. See \fICURLOPT_SOCKS5_AUTH(3)\fP
 +.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
 +Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
 +.IP CURLOPT_SOCKS5_GSSAPI_NEC
 +Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
 +.IP CURLOPT_PROXY_SERVICE_NAME
 +Proxy authentication service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
 +.IP CURLOPT_HAPROXYPROTOCOL
 +Send an HAProxy PROXY protocol v1 header. See \fICURLOPT_HAPROXYPROTOCOL(3)\fP
 +.IP CURLOPT_SERVICE_NAME
 +Authentication service name. \fICURLOPT_SERVICE_NAME(3)\fP
 +.IP CURLOPT_INTERFACE
 +Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
 +.IP CURLOPT_LOCALPORT
 +Bind connection locally to this port. See \fICURLOPT_LOCALPORT(3)\fP
 +.IP CURLOPT_LOCALPORTRANGE
 +Bind connection locally to port range. See \fICURLOPT_LOCALPORTRANGE(3)\fP
 +.IP CURLOPT_DNS_CACHE_TIMEOUT
 +Timeout for DNS cache. See \fICURLOPT_DNS_CACHE_TIMEOUT(3)\fP
 +.IP CURLOPT_DNS_USE_GLOBAL_CACHE
 +OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
 +.IP CURLOPT_DOH_URL
 +Use this DOH server for name resolves. See \fICURLOPT_DOH_URL(3)\fP
 +.IP CURLOPT_BUFFERSIZE
 +Ask for alternate buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
 +.IP CURLOPT_PORT
 +Port number to connect to. See \fICURLOPT_PORT(3)\fP
 +.IP CURLOPT_TCP_FASTOPEN
 +Enable TFO, TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
 +.IP CURLOPT_TCP_NODELAY
 +Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
 +.IP CURLOPT_ADDRESS_SCOPE
 +IPv6 scope for local addresses. See \fICURLOPT_ADDRESS_SCOPE(3)\fP
 +.IP CURLOPT_TCP_KEEPALIVE
 +Enable TCP keep-alive. See \fICURLOPT_TCP_KEEPALIVE(3)\fP
 +.IP CURLOPT_TCP_KEEPIDLE
 +Idle time before sending keep-alive. See \fICURLOPT_TCP_KEEPIDLE(3)\fP
 +.IP CURLOPT_TCP_KEEPINTVL
 +Interval between keep-alive probes. See \fICURLOPT_TCP_KEEPINTVL(3)\fP
 +.IP CURLOPT_UNIX_SOCKET_PATH
 +Path to a Unix domain socket. See \fICURLOPT_UNIX_SOCKET_PATH(3)\fP
 +.IP CURLOPT_ABSTRACT_UNIX_SOCKET
 +Path to an abstract Unix domain socket. See 
\fICURLOPT_ABSTRACT_UNIX_SOCKET(3)\fP
 +.SH NAMES and PASSWORDS OPTIONS (Authentication)
 +.IP CURLOPT_NETRC
 +Enable .netrc parsing. See \fICURLOPT_NETRC(3)\fP
 +.IP CURLOPT_NETRC_FILE
 +\&.netrc file name. See \fICURLOPT_NETRC_FILE(3)\fP
 +.IP CURLOPT_USERPWD
 +User name and password. See \fICURLOPT_USERPWD(3)\fP
 +.IP CURLOPT_PROXYUSERPWD
 +Proxy user name and password. See \fICURLOPT_PROXYUSERPWD(3)\fP
 +.IP CURLOPT_USERNAME
 +User name. See \fICURLOPT_USERNAME(3)\fP
 +.IP CURLOPT_PASSWORD
 +Password. See \fICURLOPT_PASSWORD(3)\fP
 +.IP CURLOPT_LOGIN_OPTIONS
 +Login options. See \fICURLOPT_LOGIN_OPTIONS(3)\fP
 +.IP CURLOPT_PROXYUSERNAME
 +Proxy user name. See \fICURLOPT_PROXYUSERNAME(3)\fP
 +.IP CURLOPT_PROXYPASSWORD
 +Proxy password. See \fICURLOPT_PROXYPASSWORD(3)\fP
 +.IP CURLOPT_HTTPAUTH
 +HTTP server authentication methods. See \fICURLOPT_HTTPAUTH(3)\fP
 +.IP CURLOPT_TLSAUTH_USERNAME
 +TLS authentication user name. See \fICURLOPT_TLSAUTH_USERNAME(3)\fP
 +.IP CURLOPT_PROXY_TLSAUTH_USERNAME
 +Proxy TLS authentication user name. See 
\fICURLOPT_PROXY_TLSAUTH_USERNAME(3)\fP
 +.IP CURLOPT_TLSAUTH_PASSWORD
 +TLS authentication password. See \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
 +.IP CURLOPT_PROXY_TLSAUTH_PASSWORD
 +Proxy TLS authentication password. See \fICURLOPT_PROXY_TLSAUTH_PASSWORD(3)\fP
 +.IP CURLOPT_TLSAUTH_TYPE
 +TLS authentication methods. See \fICURLOPT_TLSAUTH_TYPE(3)\fP
 +.IP CURLOPT_PROXY_TLSAUTH_TYPE
 +Proxy TLS authentication methods. See \fICURLOPT_PROXY_TLSAUTH_TYPE(3)\fP
 +.IP CURLOPT_PROXYAUTH
 +HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
 +.IP CURLOPT_SASL_AUTHZID
 +SASL authorisation identity (identity to act as). See 
\fICURLOPT_SASL_AUTHZID(3)\fP
 +.IP CURLOPT_SASL_IR
 +Enable SASL initial response. See \fICURLOPT_SASL_IR(3)\fP
 +.IP CURLOPT_XOAUTH2_BEARER
 +OAuth2 bearer token. See \fICURLOPT_XOAUTH2_BEARER(3)\fP
 +.IP CURLOPT_DISALLOW_USERNAME_IN_URL
 +Don't allow username in URL. See \fICURLOPT_DISALLOW_USERNAME_IN_URL(3)\fP
 +.SH HTTP OPTIONS
 +.IP CURLOPT_AUTOREFERER
 +Automatically set Referer: header. See \fICURLOPT_AUTOREFERER(3)\fP
 +.IP CURLOPT_ACCEPT_ENCODING
 +Accept-Encoding and automatic decompressing data. See 
\fICURLOPT_ACCEPT_ENCODING(3)\fP
 +.IP CURLOPT_TRANSFER_ENCODING
 +Request Transfer-Encoding. See \fICURLOPT_TRANSFER_ENCODING(3)\fP
 +.IP CURLOPT_FOLLOWLOCATION
 +Follow HTTP redirects. See \fICURLOPT_FOLLOWLOCATION(3)\fP
 +.IP CURLOPT_UNRESTRICTED_AUTH
 +Do not restrict authentication to original host. 
\fICURLOPT_UNRESTRICTED_AUTH(3)\fP
 +.IP CURLOPT_MAXREDIRS
 +Maximum number of redirects to follow. See \fICURLOPT_MAXREDIRS(3)\fP
 +.IP CURLOPT_POSTREDIR
 +How to act on redirects after POST. See \fICURLOPT_POSTREDIR(3)\fP
 +.IP CURLOPT_PUT
 +Issue an HTTP PUT request. See \fICURLOPT_PUT(3)\fP
 +.IP CURLOPT_POST
 +Issue an HTTP POST request. See \fICURLOPT_POST(3)\fP
 +.IP CURLOPT_POSTFIELDS
 +Send a POST with this data. See \fICURLOPT_POSTFIELDS(3)\fP
 +.IP CURLOPT_POSTFIELDSIZE
 +The POST data is this big. See \fICURLOPT_POSTFIELDSIZE(3)\fP
 +.IP CURLOPT_POSTFIELDSIZE_LARGE
 +The POST data is this big. See \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP
 +.IP CURLOPT_COPYPOSTFIELDS
 +Send a POST with this data - and copy it. See \fICURLOPT_COPYPOSTFIELDS(3)\fP
 +.IP CURLOPT_HTTPPOST
 +Multipart formpost HTTP POST. See \fICURLOPT_HTTPPOST(3)\fP
 +.IP CURLOPT_REFERER
 +Referer: header. See \fICURLOPT_REFERER(3)\fP
 +.IP CURLOPT_USERAGENT
 +User-Agent: header. See \fICURLOPT_USERAGENT(3)\fP
 +.IP CURLOPT_HTTPHEADER
 +Custom HTTP headers. See \fICURLOPT_HTTPHEADER(3)\fP
 +.IP CURLOPT_HEADEROPT
 +Control custom headers. See \fICURLOPT_HEADEROPT(3)\fP
 +.IP CURLOPT_PROXYHEADER
 +Custom HTTP headers sent to proxy. See \fICURLOPT_PROXYHEADER(3)\fP
 +.IP CURLOPT_HTTP200ALIASES
 +Alternative versions of 200 OK. See \fICURLOPT_HTTP200ALIASES(3)\fP
 +.IP CURLOPT_COOKIE
 +Cookie(s) to send. See \fICURLOPT_COOKIE(3)\fP
 +.IP CURLOPT_COOKIEFILE
 +File to read cookies from. See \fICURLOPT_COOKIEFILE(3)\fP
 +.IP CURLOPT_COOKIEJAR
 +File to write cookies to. See \fICURLOPT_COOKIEJAR(3)\fP
 +.IP CURLOPT_COOKIESESSION
 +Start a new cookie session. See \fICURLOPT_COOKIESESSION(3)\fP
 +.IP CURLOPT_COOKIELIST
 +Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
 +.IP CURLOPT_ALTSVC
 +Specify the Alt-Svc: cache file name. See \fICURLOPT_ALTSVC(3)\fP
 +.IP CURLOPT_ALTSVC_CTRL
 +Enable and configure Alt-Svc: treatment. See \fICURLOPT_ALTSVC_CTRL(3)\fP
 +.IP CURLOPT_HTTPGET
 +Do an HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
 +.IP CURLOPT_REQUEST_TARGET
 +Set the request target. \fICURLOPT_REQUEST_TARGET(3)\fP
 +.IP CURLOPT_HTTP_VERSION
 +HTTP version to use. \fICURLOPT_HTTP_VERSION(3)\fP
 +.IP CURLOPT_HTTP09_ALLOWED
 +Allow HTTP/0.9 responses. \fICURLOPT_HTTP09_ALLOWED(3)\fP
 +.IP CURLOPT_IGNORE_CONTENT_LENGTH
 +Ignore Content-Length. See \fICURLOPT_IGNORE_CONTENT_LENGTH(3)\fP
 +.IP CURLOPT_HTTP_CONTENT_DECODING
 +Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
 +.IP CURLOPT_HTTP_TRANSFER_DECODING
 +Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP
 +.IP CURLOPT_EXPECT_100_TIMEOUT_MS
 +100-continue timeout. See \fICURLOPT_EXPECT_100_TIMEOUT_MS(3)\fP
 +.IP CURLOPT_TRAILERFUNCTION
 +Set callback for sending trailing headers. See
 +\fICURLOPT_TRAILERFUNCTION(3)\fP
 +.IP CURLOPT_TRAILERDATA
 +Custom pointer passed to the trailing headers callback. See
 +\fICURLOPT_TRAILERDATA(3)\fP
 +.IP CURLOPT_PIPEWAIT
 +Wait on connection to pipeline on it. See \fICURLOPT_PIPEWAIT(3)\fP
 +.IP CURLOPT_STREAM_DEPENDS
 +This HTTP/2 stream depends on another. See \fICURLOPT_STREAM_DEPENDS(3)\fP
 +.IP CURLOPT_STREAM_DEPENDS_E
 +This HTTP/2 stream depends on another exclusively. See
 +\fICURLOPT_STREAM_DEPENDS_E(3)\fP
 +.IP CURLOPT_STREAM_WEIGHT
 +Set this HTTP/2 stream's weight. See \fICURLOPT_STREAM_WEIGHT(3)\fP
 +.SH SMTP OPTIONS
 +.IP CURLOPT_MAIL_FROM
 +Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
 +.IP CURLOPT_MAIL_RCPT
 +Address of the recipients. See \fICURLOPT_MAIL_RCPT(3)\fP
 +.IP CURLOPT_MAIL_AUTH
 +Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
++.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
++Allow RCPT TO command to fail for some recipients. See 
\fICURLOPT_MAIL_RCPT_ALLLOWFAILS(3)\fP
 +.SH TFTP OPTIONS
 +.IP CURLOPT_TFTP_BLKSIZE
 +TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
 +.IP CURLOPT_TFTP_NO_OPTIONS
 +Do not send TFTP options requests. See \fICURLOPT_TFTP_NO_OPTIONS(3)\fP
 +.SH FTP OPTIONS
 +.IP CURLOPT_FTPPORT
 +Use active FTP. See \fICURLOPT_FTPPORT(3)\fP
 +.IP CURLOPT_QUOTE
 +Commands to run before transfer. See \fICURLOPT_QUOTE(3)\fP
 +.IP CURLOPT_POSTQUOTE
 +Commands to run after transfer. See \fICURLOPT_POSTQUOTE(3)\fP
 +.IP CURLOPT_PREQUOTE
 +Commands to run just before transfer. See \fICURLOPT_PREQUOTE(3)\fP
 +.IP CURLOPT_APPEND
 +Append to remote file. See \fICURLOPT_APPEND(3)\fP
 +.IP CURLOPT_FTP_USE_EPRT
 +Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
 +.IP CURLOPT_FTP_USE_EPSV
 +Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
 +.IP CURLOPT_FTP_USE_PRET
 +Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
 +.IP CURLOPT_FTP_CREATE_MISSING_DIRS
 +Create missing directories on the remote server. See 
\fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
 +.IP CURLOPT_FTP_RESPONSE_TIMEOUT
 +Timeout for FTP responses. See \fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP
 +.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
 +Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
 +.IP CURLOPT_FTP_SKIP_PASV_IP
 +Ignore the IP address in the PASV response. See 
\fICURLOPT_FTP_SKIP_PASV_IP(3)\fP
 +.IP CURLOPT_FTPSSLAUTH
 +Control how to do TLS. See \fICURLOPT_FTPSSLAUTH(3)\fP
 +.IP CURLOPT_FTP_SSL_CCC
 +Back to non-TLS again after authentication. See \fICURLOPT_FTP_SSL_CCC(3)\fP
 +.IP CURLOPT_FTP_ACCOUNT
 +Send ACCT command. See \fICURLOPT_FTP_ACCOUNT(3)\fP
 +.IP CURLOPT_FTP_FILEMETHOD
 +Specify how to reach files. See \fICURLOPT_FTP_FILEMETHOD(3)\fP
 +.SH RTSP OPTIONS
 +.IP CURLOPT_RTSP_REQUEST
 +RTSP request. See \fICURLOPT_RTSP_REQUEST(3)\fP
 +.IP CURLOPT_RTSP_SESSION_ID
 +RTSP session-id. See \fICURLOPT_RTSP_SESSION_ID(3)\fP
 +.IP CURLOPT_RTSP_STREAM_URI
 +RTSP stream URI. See \fICURLOPT_RTSP_STREAM_URI(3)\fP
 +.IP CURLOPT_RTSP_TRANSPORT
 +RTSP Transport: header. See \fICURLOPT_RTSP_TRANSPORT(3)\fP
 +.IP CURLOPT_RTSP_CLIENT_CSEQ
 +Client CSEQ number. See \fICURLOPT_RTSP_CLIENT_CSEQ(3)\fP
 +.IP CURLOPT_RTSP_SERVER_CSEQ
 +CSEQ number for RTSP Server->Client request. See 
\fICURLOPT_RTSP_SERVER_CSEQ(3)\fP
 +.SH PROTOCOL OPTIONS
 +.IP CURLOPT_TRANSFERTEXT
 +Use text transfer. See \fICURLOPT_TRANSFERTEXT(3)\fP
 +.IP CURLOPT_PROXY_TRANSFER_MODE
 +Add transfer mode to URL over proxy. See \fICURLOPT_PROXY_TRANSFER_MODE(3)\fP
 +.IP CURLOPT_CRLF
 +Convert newlines. See \fICURLOPT_CRLF(3)\fP
 +.IP CURLOPT_RANGE
 +Range requests. See \fICURLOPT_RANGE(3)\fP
 +.IP CURLOPT_RESUME_FROM
 +Resume a transfer. See \fICURLOPT_RESUME_FROM(3)\fP
 +.IP CURLOPT_RESUME_FROM_LARGE
 +Resume a transfer. See \fICURLOPT_RESUME_FROM_LARGE(3)\fP
 +.IP CURLOPT_CURLU
 +Set URL to work on with CURLU *. See \fICURLOPT_CURLU(3)\fP
 +.IP CURLOPT_CUSTOMREQUEST
 +Custom request/method. See \fICURLOPT_CUSTOMREQUEST(3)\fP
 +.IP CURLOPT_FILETIME
 +Request file modification date and time. See \fICURLOPT_FILETIME(3)\fP
 +.IP CURLOPT_DIRLISTONLY
 +List only. See \fICURLOPT_DIRLISTONLY(3)\fP
 +.IP CURLOPT_NOBODY
 +Do not get the body contents. See \fICURLOPT_NOBODY(3)\fP
 +.IP CURLOPT_INFILESIZE
 +Size of file to send. \fICURLOPT_INFILESIZE(3)\fP
 +.IP CURLOPT_INFILESIZE_LARGE
 +Size of file to send. \fICURLOPT_INFILESIZE_LARGE(3)\fP
 +.IP CURLOPT_UPLOAD
 +Upload data. See \fICURLOPT_UPLOAD(3)\fP
 +.IP CURLOPT_UPLOAD_BUFFERSIZE
 +Set upload buffer size. See \fICURLOPT_UPLOAD_BUFFERSIZE(3)\fP
 +.IP CURLOPT_MIMEPOST
 +Post/send MIME data. See \fICURLOPT_MIMEPOST(3)\fP
 +.IP CURLOPT_MAXFILESIZE
 +Maximum file size to get. See \fICURLOPT_MAXFILESIZE(3)\fP
 +.IP CURLOPT_MAXFILESIZE_LARGE
 +Maximum file size to get. See \fICURLOPT_MAXFILESIZE_LARGE(3)\fP
 +.IP CURLOPT_TIMECONDITION
 +Make a time conditional request. See \fICURLOPT_TIMECONDITION(3)\fP
 +.IP CURLOPT_TIMEVALUE
 +Time value for the time conditional request. See \fICURLOPT_TIMEVALUE(3)\fP
 +.IP CURLOPT_TIMEVALUE_LARGE
 +Time value for the time conditional request. See 
\fICURLOPT_TIMEVALUE_LARGE(3)\fP
 +.SH CONNECTION OPTIONS
 +.IP CURLOPT_TIMEOUT
 +Timeout for the entire request. See \fICURLOPT_TIMEOUT(3)\fP
 +.IP CURLOPT_TIMEOUT_MS
 +Millisecond timeout for the entire request. See \fICURLOPT_TIMEOUT_MS(3)\fP
 +.IP CURLOPT_LOW_SPEED_LIMIT
 +Low speed limit to abort transfer. See \fICURLOPT_LOW_SPEED_LIMIT(3)\fP
 +.IP CURLOPT_LOW_SPEED_TIME
 +Time to be below the speed to trigger low speed abort. See 
\fICURLOPT_LOW_SPEED_TIME(3)\fP
 +.IP CURLOPT_MAX_SEND_SPEED_LARGE
 +Cap the upload speed to this. See \fICURLOPT_MAX_SEND_SPEED_LARGE(3)\fP
 +.IP CURLOPT_MAX_RECV_SPEED_LARGE
 +Cap the download speed to this. See \fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP
 +.IP CURLOPT_MAXCONNECTS
 +Maximum number of connections in the connection pool. See 
\fICURLOPT_MAXCONNECTS(3)\fP
 +.IP CURLOPT_FRESH_CONNECT
 +Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP
 +.IP CURLOPT_FORBID_REUSE
 +Prevent subsequent connections from re-using this. See 
\fICURLOPT_FORBID_REUSE(3)\fP
 +.IP CURLOPT_MAXAGE_CONN
 +Limit the age of connections for reuse. See \fICURLOPT_MAXAGE_CONN(3)\fP
 +.IP CURLOPT_CONNECTTIMEOUT
 +Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP
 +.IP CURLOPT_CONNECTTIMEOUT_MS
 +Millisecond timeout for the connection phase. See 
\fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
 +.IP CURLOPT_IPRESOLVE
 +IP version to resolve to. See \fICURLOPT_IPRESOLVE(3)\fP
 +.IP CURLOPT_CONNECT_ONLY
 +Only connect, nothing else. See \fICURLOPT_CONNECT_ONLY(3)\fP
 +.IP CURLOPT_USE_SSL
 +Use TLS/SSL. See \fICURLOPT_USE_SSL(3)\fP
 +.IP CURLOPT_RESOLVE
 +Provide fixed/fake name resolves. See \fICURLOPT_RESOLVE(3)\fP
 +.IP CURLOPT_DNS_INTERFACE
 +Bind name resolves to this interface. See \fICURLOPT_DNS_INTERFACE(3)\fP
 +.IP CURLOPT_DNS_LOCAL_IP4
 +Bind name resolves to this IP4 address. See \fICURLOPT_DNS_LOCAL_IP4(3)\fP
 +.IP CURLOPT_DNS_LOCAL_IP6
 +Bind name resolves to this IP6 address. See \fICURLOPT_DNS_LOCAL_IP6(3)\fP
 +.IP CURLOPT_DNS_SERVERS
 +Preferred DNS servers. See \fICURLOPT_DNS_SERVERS(3)\fP
 +.IP CURLOPT_DNS_SHUFFLE_ADDRESSES
 +Shuffle addresses before use. See \fICURLOPT_DNS_SHUFFLE_ADDRESSES(3)\fP
 +.IP CURLOPT_ACCEPTTIMEOUT_MS
 +Timeout for waiting for the server's connect back to be accepted. See 
\fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP
 +.IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
 +Timeout for happy eyeballs. See \fICURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS(3)\fP
 +.IP CURLOPT_UPKEEP_INTERVAL_MS
 +Sets the interval at which connection upkeep are performed. See
 +\fICURLOPT_UPKEEP_INTERVAL_MS(3)\fP
 +.SH SSL and SECURITY OPTIONS
 +.IP CURLOPT_SSLCERT
 +Client cert. See \fICURLOPT_SSLCERT(3)\fP
 +.IP CURLOPT_PROXY_SSLCERT
 +Proxy client cert. See \fICURLOPT_PROXY_SSLCERT(3)\fP
 +.IP CURLOPT_SSLCERTTYPE
 +Client cert type.  See \fICURLOPT_SSLCERTTYPE(3)\fP
 +.IP CURLOPT_PROXY_SSLCERTTYPE
 +Proxy client cert type.  See \fICURLOPT_PROXY_SSLCERTTYPE(3)\fP
 +.IP CURLOPT_SSLKEY
 +Client key. See \fICURLOPT_SSLKEY(3)\fP
 +.IP CURLOPT_PROXY_SSLKEY
 +Proxy client key. See \fICURLOPT_PROXY_SSLKEY(3)\fP
 +.IP CURLOPT_SSLKEYTYPE
 +Client key type. See \fICURLOPT_SSLKEYTYPE(3)\fP
 +.IP CURLOPT_PROXY_SSLKEYTYPE
 +Proxy client key type. See \fICURLOPT_PROXY_SSLKEYTYPE(3)\fP
 +.IP CURLOPT_KEYPASSWD
 +Client key password. See \fICURLOPT_KEYPASSWD(3)\fP
 +.IP CURLOPT_PROXY_KEYPASSWD
 +Proxy client key password. See \fICURLOPT_PROXY_KEYPASSWD(3)\fP
 +.IP CURLOPT_SSL_ENABLE_ALPN
 +Enable use of ALPN. See \fICURLOPT_SSL_ENABLE_ALPN(3)\fP
 +.IP CURLOPT_SSL_ENABLE_NPN
 +Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
 +.IP CURLOPT_SSLENGINE
 +Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
 +.IP CURLOPT_SSLENGINE_DEFAULT
 +Default SSL engine. See \fICURLOPT_SSLENGINE_DEFAULT(3)\fP
 +.IP CURLOPT_SSL_FALSESTART
 +Enable TLS False Start. See \fICURLOPT_SSL_FALSESTART(3)\fP
 +.IP CURLOPT_SSLVERSION
 +SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
 +.IP CURLOPT_PROXY_SSLVERSION
 +Proxy SSL version to use. See \fICURLOPT_PROXY_SSLVERSION(3)\fP
 +.IP CURLOPT_SSL_VERIFYHOST
 +Verify the host name in the SSL certificate. See 
\fICURLOPT_SSL_VERIFYHOST(3)\fP
 +.IP CURLOPT_PROXY_SSL_VERIFYHOST
 +Verify the host name in the proxy SSL certificate. See 
\fICURLOPT_PROXY_SSL_VERIFYHOST(3)\fP
 +.IP CURLOPT_SSL_VERIFYPEER
 +Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP
 +.IP CURLOPT_PROXY_SSL_VERIFYPEER
 +Verify the proxy SSL certificate. See \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP
 +.IP CURLOPT_SSL_VERIFYSTATUS
 +Verify the SSL certificate's status. See \fICURLOPT_SSL_VERIFYSTATUS(3)\fP
 +.IP CURLOPT_CAINFO
 +CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
 +.IP CURLOPT_PROXY_CAINFO
 +Proxy CA cert bundle. See \fICURLOPT_PROXY_CAINFO(3)\fP
 +.IP CURLOPT_ISSUERCERT
 +Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
 +.IP CURLOPT_CAPATH
 +Path to CA cert bundle. See \fICURLOPT_CAPATH(3)\fP
 +.IP CURLOPT_PROXY_CAPATH
 +Path to proxy CA cert bundle. See \fICURLOPT_PROXY_CAPATH(3)\fP
 +.IP CURLOPT_CRLFILE
 +Certificate Revocation List. See \fICURLOPT_CRLFILE(3)\fP
 +.IP CURLOPT_PROXY_CRLFILE
 +Proxy Certificate Revocation List. See \fICURLOPT_PROXY_CRLFILE(3)\fP
 +.IP CURLOPT_CERTINFO
 +Extract certificate info. See \fICURLOPT_CERTINFO(3)\fP
 +.IP CURLOPT_PINNEDPUBLICKEY
 +Set pinned SSL public key . See \fICURLOPT_PINNEDPUBLICKEY(3)\fP
 +.IP CURLOPT_PROXY_PINNEDPUBLICKEY
 +Set the proxy's pinned SSL public key. See
 +\fICURLOPT_PROXY_PINNEDPUBLICKEY(3)\fP
 +.IP CURLOPT_RANDOM_FILE
 +Provide source for entropy random data. See \fICURLOPT_RANDOM_FILE(3)\fP
 +.IP CURLOPT_EGDSOCKET
 +Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
 +.IP CURLOPT_SSL_CIPHER_LIST
 +Ciphers to use. See \fICURLOPT_SSL_CIPHER_LIST(3)\fP
 +.IP CURLOPT_PROXY_SSL_CIPHER_LIST
 +Proxy ciphers to use. See \fICURLOPT_PROXY_SSL_CIPHER_LIST(3)\fP
 +.IP CURLOPT_TLS13_CIPHERS
 +TLS 1.3 cipher suites to use. See \fICURLOPT_TLS13_CIPHERS(3)\fP
 +.IP CURLOPT_PROXY_TLS13_CIPHERS
 +Proxy TLS 1.3 cipher suites to use. See \fICURLOPT_PROXY_TLS13_CIPHERS(3)\fP
 +.IP CURLOPT_SSL_SESSIONID_CACHE
 +Disable SSL session-id cache. See \fICURLOPT_SSL_SESSIONID_CACHE(3)\fP
 +.IP CURLOPT_SSL_OPTIONS
 +Control SSL behavior. See \fICURLOPT_SSL_OPTIONS(3)\fP
 +.IP CURLOPT_PROXY_SSL_OPTIONS
 +Control proxy SSL behavior. See \fICURLOPT_PROXY_SSL_OPTIONS(3)\fP
 +.IP CURLOPT_KRBLEVEL
 +Kerberos security level. See \fICURLOPT_KRBLEVEL(3)\fP
 +.IP CURLOPT_GSSAPI_DELEGATION
 +Disable GSS-API delegation. See \fICURLOPT_GSSAPI_DELEGATION(3)\fP
 +.SH SSH OPTIONS
 +.IP CURLOPT_SSH_AUTH_TYPES
 +SSH authentication types. See \fICURLOPT_SSH_AUTH_TYPES(3)\fP
 +.IP CURLOPT_SSH_COMPRESSION
 +Enable SSH compression. See \fICURLOPT_SSH_COMPRESSION(3)\fP
 +.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
 +MD5 of host's public key. See \fICURLOPT_SSH_HOST_PUBLIC_KEY_MD5(3)\fP
 +.IP CURLOPT_SSH_PUBLIC_KEYFILE
 +File name of public key. See \fICURLOPT_SSH_PUBLIC_KEYFILE(3)\fP
 +.IP CURLOPT_SSH_PRIVATE_KEYFILE
 +File name of private key. See \fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP
 +.IP CURLOPT_SSH_KNOWNHOSTS
 +File name with known hosts. See \fICURLOPT_SSH_KNOWNHOSTS(3)\fP
 +.IP CURLOPT_SSH_KEYFUNCTION
 +Callback for known hosts handling. See \fICURLOPT_SSH_KEYFUNCTION(3)\fP
 +.IP CURLOPT_SSH_KEYDATA
 +Custom pointer to pass to ssh key callback. See \fICURLOPT_SSH_KEYDATA(3)\fP
 +.SH OTHER OPTIONS
 +.IP CURLOPT_PRIVATE
 +Private pointer to store. See \fICURLOPT_PRIVATE(3)\fP
 +.IP CURLOPT_SHARE
 +Share object to use. See \fICURLOPT_SHARE(3)\fP
 +.IP CURLOPT_NEW_FILE_PERMS
 +Mode for creating new remote files. See \fICURLOPT_NEW_FILE_PERMS(3)\fP
 +.IP CURLOPT_NEW_DIRECTORY_PERMS
 +Mode for creating new remote directories. See 
\fICURLOPT_NEW_DIRECTORY_PERMS(3)\fP
 +.SH TELNET OPTIONS
 +.IP CURLOPT_TELNETOPTIONS
 +TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
 +.SH RETURN VALUE
 +\fICURLE_OK\fP (zero) means that the option was set properly, non-zero means 
an
 +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
 +the option was disabled at compile-time, it will return
 +\fICURLE_NOT_BUILT_IN\fP.
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  CURLcode res;
 +  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com";);
 +  res = curl_easy_perform(curl);
 +  curl_easy_cleanup(curl);
 +}
 +.fi
 +.SH "SEE ALSO"
 +.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
 +.BR curl_easy_getinfo "(3), " curl_multi_setopt "(3), "
diff --cc docs/libcurl/gnurl_escape.3
index 33f756eae,000000000..58c4e0c1a
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_escape.3
+++ b/docs/libcurl/gnurl_escape.3
@@@ -1,48 -1,0 +1,48 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * Copyright (C) 1998 - 2011, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.TH gnurl_escape 3 "6 March 2002" "libcurl 7.9" "libgnurl Manual"
 +.SH NAME
 +curl_escape - URL encodes the given string
 +.SH SYNOPSIS
 +.B #include <gnurl/curl.h>
 +.sp
 +.BI "char *curl_escape( const char *" url ", int "length " );"
 +.ad
 +.SH DESCRIPTION
 +Obsolete function. Use \fIcurl_easy_escape(3)\fP instead!
 +
 +This function will convert the given input string to an URL encoded string and
 +return that as a new allocated string. All input characters that are not a-z,
 +A-Z or 0-9 will be converted to their "URL escaped" version (%NN where NN is a
 +two-digit hexadecimal number).
 +
 +If the 'length' argument is set to 0, curl_escape() will use strlen() on the
 +input 'url' string to find out the size.
 +
- You must curl_free() the returned string when you're done with it.
++You must \fIcurl_free(3)\fP the returned string when you're done with it.
 +.SH AVAILABILITY
 +Since 7.15.4, \fIcurl_easy_escape(3)\fP should be used. This function will
 +be removed in a future release.
 +.SH RETURN VALUE
 +A pointer to a zero terminated string or NULL if it failed.
 +.SH "SEE ALSO"
 +.BR curl_unescape "(3), " curl_free "(3), " RFC 2396
diff --cc docs/libcurl/gnurl_getenv.3
index 7be52d1db,000000000..98d928582
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_getenv.3
+++ b/docs/libcurl/gnurl_getenv.3
@@@ -1,49 -1,0 +1,49 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * Copyright (C) 1998 - 2011, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.TH gnurl_getenv 3 "30 April 2004" "libcurl 7.12" "libgnurl Manual"
 +.SH NAME
 +curl_getenv - return value for environment name
 +.SH SYNOPSIS
 +.B #include <gnurl/curl.h>
 +.sp
 +.BI "char *curl_getenv(const char *" name ");"
 +.ad
 +.SH DESCRIPTION
 +curl_getenv() is a portable wrapper for the getenv() function, meant to
 +emulate its behaviour and provide an identical interface for all operating
 +systems libcurl builds on (including win32).
++
++You must \fIcurl_free(3)\fP the returned string when you're done with it.
 +.SH AVAILABILITY
 +This function will be removed from the public libcurl API in a near future. It
 +will instead be made "available" by source code access only, and then as
 +curlx_getenv().
 +.SH RETURN VALUE
- If successful, curl_getenv() returns a pointer to the value of the specified
- environment. The memory it refers to is malloc()ed so the application must
- free() this when the data is no longer needed. When \fIcurl_getenv(3)\fP fails
- to find the specified name, it returns a null pointer.
++A pointer to a zero terminated string or NULL if it failed to find the
++specified name.
 +.SH NOTE
 +Under unix operating systems, there isn't any point in returning an allocated
 +memory, although other systems won't work properly if this isn't done. The
 +unix implementation thus has to suffer slightly from the drawbacks of other
 +systems.
 +.SH "SEE ALSO"
 +.BR getenv "(3C), "
diff --cc docs/libcurl/gnurl_global_init.3
index 797c0d7ff,000000000..db84fad00
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_global_init.3
+++ b/docs/libcurl/gnurl_global_init.3
@@@ -1,101 -1,0 +1,103 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * Copyright (C) 1998 - 2017, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.TH gnurl_global_init 3 "11 May 2004" "libcurl 7.12" "libgnurl Manual"
 +.SH NAME
 +curl_global_init - Global libcurl initialisation
 +.SH SYNOPSIS
 +.B #include <gnurl/curl.h>
 +.sp
 +.BI "CURLcode curl_global_init(long " flags ");"
 +.ad
 +.SH DESCRIPTION
 +This function sets up the program environment that libcurl needs.  Think of it
 +as an extension of the library loader.
 +
 +This function must be called at least once within a program (a program is all
 +the code that shares a memory space) before the program calls any other
 +function in libcurl.  The environment it sets up is constant for the life of
 +the program and is the same for every program, so multiple calls have the same
 +effect as one call.
 +
 +The flags option is a bit pattern that tells libcurl exactly what features to
 +init, as described below. Set the desired bits by ORing the values together.
 +In normal operation, you must specify CURL_GLOBAL_ALL.  Don't use any other
 +value unless you are familiar with it and mean to control internal operations 
of
 +libcurl.
 +
 +\fBThis function is not thread safe.\fP You must not call it when any other
 +thread in the program (i.e. a thread sharing the same memory) is running.
 +This doesn't just mean no other thread that is using libcurl.  Because
 +\fIcurl_global_init(3)\fP calls functions of other libraries that are
 +similarly thread unsafe, it could conflict with any other thread that uses
 +these other libraries.
 +
 +If you are initializing libcurl from a Windows DLL you should not initialize 
it
 +from DllMain or a static initializer because Windows holds the loader lock
 +during that time and it could cause a deadlock.
 +
 +See the description in \fIlibcurl(3)\fP of global environment requirements for
 +details of how to use this function.
 +.SH FLAGS
 +.IP CURL_GLOBAL_ALL
 +Initialize everything possible. This sets all known bits except
 +\fBCURL_GLOBAL_ACK_EINTR\fP.
 +
 +.IP CURL_GLOBAL_SSL
 +(This flag's presence or absence serves no meaning since 7.57.0. The
 +description below is for older libcurl versions.)
 +
 +Initialize SSL.
 +
 +The implication here is that if this bit is not set, the initialization of the
 +SSL layer needs to be done by the application or at least outside of
 +libcurl. The exact procedure how to do SSL initialization depends on the TLS
 +backend libcurl uses.
 +
 +Doing TLS based transfers without having the TLS layer initialized may lead to
 +unexpected behaviors.
 +.IP CURL_GLOBAL_WIN32
 +Initialize the Win32 socket libraries.
 +
 +The implication here is that if this bit is not set, the initialization of
 +winsock has to be done by the application or you risk getting undefined
 +behaviors. This option exists for when the initialization is handled outside
 +of libcurl so there's no need for libcurl to do it again.
 +.IP CURL_GLOBAL_NOTHING
 +Initialise nothing extra. This sets no bit.
 +.IP CURL_GLOBAL_DEFAULT
 +A sensible default. It will init both SSL and Win32. Right now, this equals
 +the functionality of the \fBCURL_GLOBAL_ALL\fP mask.
 +.IP CURL_GLOBAL_ACK_EINTR
- When this flag is set, curl will acknowledge EINTR condition when connecting
- or when waiting for data.  Otherwise, curl waits until full timeout
- elapses. (Added in 7.30.0)
++This bit has no point since 7.69.0 but its behavior is instead the default.
++
++Before 7.69.0: when this flag is set, curl will acknowledge EINTR condition
++when connecting or when waiting for data.  Otherwise, curl waits until full
++timeout elapses. (Added in 7.30.0)
 +.SH RETURN VALUE
 +If this function returns non-zero, something went wrong and you cannot use the
 +other curl functions.
 +.SH "SEE ALSO"
 +.BR curl_global_init_mem "(3), "
 +.BR curl_global_cleanup "(3), "
 +.BR curl_global_sslset "(3), "
 +.BR curl_easy_init "(3) "
 +.BR libcurl "(3) "
diff --cc docs/libcurl/gnurl_global_sslset.3
index a631d1893,000000000..ee48a6abb
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_global_sslset.3
+++ b/docs/libcurl/gnurl_global_sslset.3
@@@ -1,102 -1,0 +1,102 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * Copyright (C) 1998 - 2018, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.TH gnurl_global_sslset 3 "15 July 2017" "libcurl 7.56" "libgnurl Manual"
 +.SH NAME
 +curl_global_sslset - Select SSL backend to use with libcurl
 +.SH SYNOPSIS
 +.B #include <gnurl/curl.h>
 +.nf
 +
 +typedef struct {
 +  curl_sslbackend id;
 +  const char *name;
 +} curl_ssl_backend;
 +
 +typedef enum {
 +  CURLSSLBACKEND_NONE = 0,
 +  CURLSSLBACKEND_OPENSSL = 1,
 +  CURLSSLBACKEND_GNUTLS = 2,
 +  CURLSSLBACKEND_NSS = 3,
 +  CURLSSLBACKEND_GSKIT = 5,
-   CURLSSLBACKEND_POLARSSL = 6,
++  CURLSSLBACKEND_POLARSSL = 6, /* deprecated */
 +  CURLSSLBACKEND_WOLFSSL = 7,
 +  CURLSSLBACKEND_SCHANNEL = 8,
 +  CURLSSLBACKEND_DARWINSSL = 9,
 +  CURLSSLBACKEND_AXTLS = 10, /* deprecated */
 +  CURLSSLBACKEND_MBEDTLS = 11,
 +  CURLSSLBACKEND_MESALINK = 12,
 +  CURLSSLBACKEND_BEARSSL = 13
 +} curl_sslbackend;
 +
 +.B "CURLsslset curl_global_sslset(curl_sslbackend " id,
 +.B "                              const char *" name,
 +.B "                              curl_ssl_backend ***" avail ");"
 +.fi
 +.SH DESCRIPTION
 +This function configures at runtime which SSL backend to use with
 +libcurl. This function can only be used to select an SSL backend once, and it
 +must be called \fBbefore\fP \fIcurl_global_init(3)\fP.
 +
 +The backend can be identified by the \fIid\fP
 +(e.g. \fBCURLSSLBACKEND_OPENSSL\fP). The backend can also be specified via the
 +\fIname\fP parameter for a case insensitive match (passing -1 as \fIid\fP). If
 +both \fIid\fP and \fIname\fP are specified, the \fIname\fP will be ignored.
 +
 +If neither \fIid\fP nor \fPname\fP are specified, the function will fail with
 +CURLSSLSET_UNKNOWN_BACKEND and set the \fIavail\fP pointer to the
 +NULL-terminated list of available backends. The available backends are those
 +that this particular build of libcurl supports.
 +
 +Since libcurl 7.60.0, the \fIavail\fP pointer will always be set to the list
 +of alternatives if non-NULL.
 +
 +Upon success, the function returns CURLSSLSET_OK.
 +
 +If the specified SSL backend is not available, the function returns
 +CURLSSLSET_UNKNOWN_BACKEND and sets the \fIavail\fP pointer to a
 +NULL-terminated list of available SSL backends. In this case, you may call the
 +function again to try to select a different backend.
 +
 +The SSL backend can be set only once. If it has already been set, a subsequent
 +attempt to change it will result in a \fBCURLSSLSET_TOO_LATE\fP.
 +
 +\fBThis function is not thread safe.\fP You must not call it when any other
 +thread in the program (i.e. a thread sharing the same memory) is running.
 +This doesn't just mean no other thread that is using libcurl.
 +
 +.SH AVAILABILITY
 +This function was added in libcurl 7.56.0. Before this version, there was no
 +support for choosing SSL backends at runtime.
 +.SH RETURN VALUE
 +If this function returns CURLSSLSET_OK, the backend was successfully selected.
 +
 +If the chosen backend is unknown (or support for the chosen backend has not
 +been compiled into libcurl), the function returns 
\fICURLSSLSET_UNKNOWN_BACKEND\fP.
 +
 +If the backend had been configured previously, or if \fIcurl_global_init(3)\fP
 +has already been called, the function returns \fICURLSSLSET_TOO_LATE\fP.
 +
 +If this libcurl was built completely without SSL support, with no backends at
 +all, this function returns \fICURLSSLSET_NO_BACKENDS\fP.
 +.SH "SEE ALSO"
 +.BR curl_global_init "(3), "
 +.BR libcurl "(3) "
diff --cc docs/libcurl/gnurl_share_setopt.3
index fd464b349,000000000..b58bef623
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_share_setopt.3
+++ b/docs/libcurl/gnurl_share_setopt.3
@@@ -1,112 -1,0 +1,114 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.TH gnurl_share_setopt 3 "8 Aug 2003" "libcurl 7.10.7" "libgnurl Manual"
 +.SH NAME
 +curl_share_setopt - Set options for a shared object
 +.SH SYNOPSIS
 +.B #include <gnurl/curl.h>
 +.sp
 +CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);
 +.ad
 +.SH DESCRIPTION
 +Set the \fIoption\fP to \fIparameter\fP for the given \fIshare\fP.
 +.SH OPTIONS
 +.IP CURLSHOPT_LOCKFUNC
 +The \fIparameter\fP must be a pointer to a function matching the following
 +prototype:
 +
 +void lock_function(CURL *handle, curl_lock_data data, curl_lock_access access,
 +void *userptr);
 +
 +The \fIdata\fP argument tells what kind of data libcurl wants to lock. Make
 +sure that the callback uses a different lock for each kind of data.
 +
 +\fIaccess\fP defines what access type libcurl wants, shared or single.
 +
 +\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDATA\fP.
 +.IP CURLSHOPT_UNLOCKFUNC
 +The \fIparameter\fP must be a pointer to a function matching the following
 +prototype:
 +
 +void unlock_function(CURL *handle, curl_lock_data data, void *userptr);
 +
 +\fIdata\fP defines what data libcurl wants to unlock, and you must make sure
 +that only one lock is given at any time for each kind of data.
 +
 +\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDATA\fP.
 +.IP CURLSHOPT_SHARE
 +The \fIparameter\fP specifies a type of data that should be shared. This may
 +be set to one of the values described below.
 +.RS
 +.IP CURL_LOCK_DATA_COOKIE
 +Cookie data will be shared across the easy handles using this shared object.
++Note that this does not activate an easy handle's cookie handling. You can do
++that separately by using \fICURLOPT_COOKIEFILE(3)\fP for example.
 +.IP CURL_LOCK_DATA_DNS
 +Cached DNS hosts will be shared across the easy handles using this shared
 +object. Note that when you use the multi interface, all easy handles added to
 +the same multi handle will share DNS cache by default without using this
 +option.
 +.IP CURL_LOCK_DATA_SSL_SESSION
 +SSL session IDs will be shared across the easy handles using this shared
 +object. This will reduce the time spent in the SSL handshake when reconnecting
 +to the same server. Note SSL session IDs are reused within the same easy 
handle
 +by default. Note this symbol was added in 7.10.3 but was not implemented until
 +7.23.0.
 +.IP CURL_LOCK_DATA_CONNECT
 +Put the connection cache in the share object and make all easy handles using
 +this share object share the connection cache. Using this, you can for example
 +do multi-threaded libcurl use with one handle in each thread, and yet have a
 +shared pool of unused connections and this way get way better connection
 +re-use than if you use one separate pool in each thread.
 +
 +Connections that are used for HTTP/1.1 Pipelining or HTTP/2 multiplexing only
 +get additional transfers added to them if the existing connection is held by
 +the same multi or easy handle. libcurl does not support doing HTTP/2 streams
 +in different threads using a shared connection.
 +
 +Support for \fBCURL_LOCK_DATA_CONNECT\fP was added in 7.57.0, but the symbol
 +existed before this.
 +
 +Note that when you use the multi interface, all easy handles added to the same
 +multi handle will share connection cache by default without using this option.
 +.IP CURL_LOCK_DATA_PSL
 +The Public Suffix List stored in the share object is made available to all
 +easy handle bound to the later. Since the Public Suffix List is periodically
 +refreshed, this avoids updates in too many different contexts.
 +
 +\fBCURL_LOCK_DATA_PSL\fP exists since 7.61.0.
 +
 +Note that when you use the multi interface, all easy handles added to the same
 +multi handle will share PSL cache by default without using this option.
 +.RE
 +.IP CURLSHOPT_UNSHARE
 +This option does the opposite of \fICURLSHOPT_SHARE\fP. It specifies that
 +the specified \fIparameter\fP will no longer be shared. Valid values are
 +the same as those for \fICURLSHOPT_SHARE\fP.
 +.IP CURLSHOPT_USERDATA
 +The \fIparameter\fP allows you to specify a pointer to data that will be 
passed
 +to the lock_function and unlock_function each time it is called.
 +.SH RETURN VALUE
 +CURLSHE_OK (zero) means that the option was set properly, non-zero means an
 +error occurred as \fI<gnurl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
 +man page for the full list with descriptions.
 +.SH "SEE ALSO"
 +.BR curl_share_cleanup "(3), " curl_share_init "(3)"
diff --cc docs/libcurl/opts/GNURLINFO_COOKIELIST.3
index 280ac0c9f,000000000..2335f71db
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_COOKIELIST.3
+++ b/docs/libcurl/opts/GNURLINFO_COOKIELIST.3
@@@ -1,77 -1,0 +1,77 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * Copyright (C) 1998 - 2018, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLINFO_COOKIELIST 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo 
options"
 +.SH NAME
 +CURLINFO_COOKIELIST \- get all known cookies
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
 +                           struct curl_slist **cookies);
 +.SH DESCRIPTION
 +Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
 +cookies curl knows (expired ones, too). Don't forget to call
 +\fIcurl_slist_free_all(3)\fP on the list after it has been used.  If there are
 +no cookies (cookies for the handle have not been enabled or simply none have
 +been received) 'struct curl_slist *' will be set to point to NULL.
 +
 +Since 7.43.0 cookies that were imported in the Set-Cookie format without a
 +domain name are not exported by this option.
 +.SH PROTOCOLS
 +HTTP(S)
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com";);
 +
-   /* enable the cookie engine with a non-existing file */
-   curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "-");
++  /* enable the cookie engine */
++  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
 +
 +  res = curl_easy_perform(curl);
 +
 +  if(!res) {
 +    /* extract all known cookies */
 +    struct curl_slist *cookies = NULL;
 +    res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
 +    if(!res && cookies) {
 +      /* a linked list of cookies in cookie file format */
 +      struct curl_slist *each = cookies;
 +      while(each) {
-         printf("%s", each->data);
++        printf("%s\\n", each->data);
 +        each = each->next;
 +      }
 +      /* we must free these cookies when we're done */
 +      curl_slist_free_all(cookies);
 +    }
 +  }
 +  curl_easy_cleanup(curl);
 +}
 +.fi
 +.SH AVAILABILITY
 +Added in 7.14.1
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
 +.BR CURLOPT_COOKIELIST "(3), "
diff --cc docs/libcurl/opts/GNURLINFO_RETRY_AFTER.3
index e752567c3,000000000..52d926cd3
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_RETRY_AFTER.3
+++ b/docs/libcurl/opts/GNURLINFO_RETRY_AFTER.3
@@@ -1,63 -1,0 +1,63 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLINFO_RETRY_AFTER 3 "6 Aug 2019" "libcurl 7.66.0" "curl_easy_getinfo 
options"
 +.SH NAME
 +CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t 
*retry);
 +.SH DESCRIPTION
 +Pass a pointer to a curl_off_t variable to receive the number of seconds the
 +HTTP server suggesets the client should wait until the next request is
 +issued. The information from the "Retry-After:" header.
 +
 +While the HTTP header might contain a fixed date string, the
- \fICURLINFO_RETRY_AFTER(3)\fP will alwaus return number of seconds to wait -
++\fICURLINFO_RETRY_AFTER(3)\fP will always return number of seconds to wait -
 +or zero if there was no header or the header couldn't be parsed.
 +.SH DEFAULT
 +Returns zero delay if there was no header.
 +.SH PROTOCOLS
 +HTTP(S)
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  CURLcode res;
 +  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com";);
 +  res = curl_easy_perform(curl);
 +  if(res == CURLE_OK) {
 +    curl_off_t wait = 0;
 +    curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &wait);
 +    if(wait)
 +      printf("Wait for %" CURL_FORMAT_CURL_OFF_T " seconds\\n", wait);
 +  }
 +  curl_easy_cleanup(curl);
 +}
 +.fi
 +.SH AVAILABILITY
 +Added in curl 7.66.0
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR CURLOPT_STDERR "(3), " CURLOPT_HEADERFUNCTION "(3), "
diff --cc docs/libcurl/opts/GNURLINFO_TLS_SSL_PTR.3
index 0f06b9af6,000000000..820268c4e
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_TLS_SSL_PTR.3
+++ b/docs/libcurl/opts/GNURLINFO_TLS_SSL_PTR.3
@@@ -1,170 -1,0 +1,168 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLINFO_TLS_SSL_PTR 3 "23 Feb 2016" "libcurl 7.48.0" "curl_easy_getinfo 
options"
 +.SH NAME
 +CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
 +.SH SYNOPSIS
 +.nf
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
 +                           struct curl_tlssessioninfo **session);
 +
 +/* if you need compatibility with libcurl < 7.48.0 use
 +   CURLINFO_TLS_SESSION instead: */
 +
 +CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
 +                           struct curl_tlssessioninfo **session);
 +.SH DESCRIPTION
 +Pass a pointer to a 'struct curl_tlssessioninfo *'.  The pointer will be
 +initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an
 +enum indicating the SSL library used for the handshake and a pointer to the
 +respective internal TLS session structure of this underlying SSL library.
 +
 +This option may be useful for example to extract certificate information in a
 +format convenient for further processing, such as manual validation. Refer to
 +the \fBLIMITATIONS\fP section.
 +
 +.nf
 +struct curl_tlssessioninfo {
 +  curl_sslbackend backend;
 +  void *internals;
 +};
 +.fi
 +
 +The \fIbackend\fP struct member is one of the defines in the CURLSSLBACKEND_*
 +series: CURLSSLBACKEND_NONE (when built without TLS support),
- CURLSSLBACKEND_WOLFSSL, CURLSSLBACKEND_DARWINSSL,
- CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_MBEDTLS,
- CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_POLARSSL,
- CURLSSLBACKEND_SCHANNEL or CURLSSLBACKEND_MESALINK. (Note that the OpenSSL
- forks are all reported as just OpenSSL here.)
++CURLSSLBACKEND_WOLFSSL, CURLSSLBACKEND_DARWINSSL, CURLSSLBACKEND_GNUTLS,
++CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_MBEDTLS, CURLSSLBACKEND_NSS,
++CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_SCHANNEL or
++CURLSSLBACKEND_MESALINK. (Note that the OpenSSL forks are all reported as just
++OpenSSL here.)
 +
 +The \fIinternals\fP struct member will point to a TLS library specific pointer
 +for the active ("in use") SSL connection, with the following underlying types:
 +.RS
 +.IP GnuTLS
 +gnutls_session_t
 +.IP gskit
 +gsk_handle
 +.IP NSS
 +PRFileDesc *
 +.IP OpenSSL
 +CURLINFO_TLS_SESSION: SSL_CTX *
 +
 +CURLINFO_TLS_SSL_PTR: SSL *
 +.RE
 +Since 7.48.0 the \fIinternals\fP member can point to these other SSL backends
 +as well:
 +.RS
 +.IP mbedTLS
 +mbedtls_ssl_context *
- .IP PolarSSL
- ssl_context *
 +.IP "Secure Channel"
 +CtxtHandle *
 +.IP "Secure Transport"
 +SSLContext *
 +.IP "wolfSSL"
 +SSL *
 +.IP "MesaLink"
 +SSL *
 +.RE
 +
 +If the \fIinternals\fP pointer is NULL then either the SSL backend is not
 +supported, an SSL session has not yet been established or the connection is no
 +longer associated with the easy handle (eg curl_easy_perform has returned).
 +.SH LIMITATIONS
 +This option has some limitations that could make it unsafe when it comes to
 +the manual verification of certificates.
 +
 +This option only retrieves the first in-use SSL session pointer for your easy
 +handle, however your easy handle may have more than one in-use SSL session if
 +using FTP over SSL. That is because the FTP protocol has a control channel and
 +a data channel and one or both may be over SSL. Currently there is no way to
 +retrieve a second in-use SSL session associated with an easy handle.
 +
 +This option has not been thoroughly tested with plaintext protocols that can
 +be upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with
 +\fICURLOPT_USE_SSL(3)\fP. Though you will be able to retrieve the SSL pointer,
 +it's possible that before you can do that data (including auth) may have
 +already been sent over a connection after it was upgraded.
 +
 +Renegotiation. If unsafe renegotiation or renegotiation in a way that the
 +certificate is allowed to change is allowed by your SSL library this may occur
 +and the certificate may change, and data may continue to be sent or received
 +after renegotiation but before you are able to get the (possibly) changed SSL
 +pointer, with the (possibly) changed certificate information.
 +
 +If you are using OpenSSL or wolfSSL then \fICURLOPT_SSL_CTX_FUNCTION(3)\fP can
 +be used to set a certificate verification callback in the CTX. That is safer
 +than using this option to poll for certificate changes and doesn't suffer from
 +any of the problems above. There is currently no way in libcurl to set a
 +verification callback for the other SSL backends.
 +
 +How are you using this option? Are you affected by any of these limitations?
 +Please let us know by making a comment at
 +https://github.com/curl/curl/issues/685
 +.SH PROTOCOLS
 +All TLS-based
 +.SH EXAMPLE
 +.nf
 +#include <gnurl/curl.h>
 +#include <openssl/ssl.h>
 +
 +CURL *curl;
 +static size_t wf(void *ptr, size_t size, size_t nmemb, void *stream)
 +{
 +  const struct curl_tlssessioninfo *info = NULL;
 +  CURLcode res = curl_easy_getinfo(curl, CURLINFO_TLS_SSL_PTR, &info);
 +  if(info && !res) {
 +    if(CURLSSLBACKEND_OPENSSL == info->backend) {
 +       printf("OpenSSL ver. %s\\n", SSL_get_version((SSL*)info->internals));
 +    }
 +  }
 +  return size * nmemb;
 +}
 +
 +int main(int argc, char** argv)
 +{
 +  CURLcode res;
 +  curl = curl_easy_init();
 +  if(curl) {
 +    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com";);
 +    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wf);
 +    res = curl_easy_perform(curl);
 +    curl_easy_cleanup(curl);
 +  }
 +  return res;
 +}
 +.fi
 +.SH AVAILABILITY
 +Added in 7.48.0.
 +
 +This option supersedes \fICURLINFO_TLS_SESSION(3)\fP which was added in 
7.34.0.
 +This option is exactly the same as that option except in the case of OpenSSL.
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
 +.BR CURLINFO_TLS_SESSION "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_ALTSVC_CTRL.3
index fa8e88967,000000000..287da646e
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_ALTSVC_CTRL.3
+++ b/docs/libcurl/opts/GNURLOPT_ALTSVC_CTRL.3
@@@ -1,89 -1,0 +1,92 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_ALTSVC_CTRL 3 "5 Feb 2019" "libcurl 7.64.1" "curl_easy_setopt 
options"
 +.SH NAME
 +CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
 +.SH SYNOPSIS
 +.nf
 +#include <gnurl/curl.h>
 +
 +#define CURLALTSVC_IMMEDIATELY  (1<<0)
 +#define CURLALTSVC_READONLYFILE (1<<2)
 +#define CURLALTSVC_H1           (1<<3)
 +#define CURLALTSVC_H2           (1<<4)
 +#define CURLALTSVC_H3           (1<<5)
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC_CTRL, long bitmask);
 +.fi
 +.SH EXPERIMENTAL
 +Warning: this feature is early code and is marked as experimental. It can only
 +be enabled by explicitly telling configure with \fB--enable-alt-svc\fP. You 
are
 +advised to not ship this in production before the experimental label is
 +removed.
 +.SH DESCRIPTION
 +Populate the long \fIbitmask\fP with the correct set of features to instruct
 +libcurl how to handle Alt-Svc for the transfers using this handle.
 +
 +libcurl will only accept Alt-Svc headers over a secure transport, meaning
 +HTTPS. It will also only complete a request to an alternative origin if that
 +origin is properly hosted over HTTPS. These requirements are there to make
 +sure both the source and the destination are legitimate.
 +
 +Setting any bit will enable the alt-svc engine.
 +.IP "CURLALTSVC_IMMEDIATELY"
 +If an Alt-Svc: header is received, this instructs libcurl to switch to one of
 +those alternatives asap rather than to save it and use for the next
 +request. (Not currently supported).
 +.IP "CURLALTSVC_READONLYFILE"
 +Do not write the alt-svc cache back to the file specified with
 +\fICURLOPT_ALTSVC(3)\fP even if it gets updated. By default a file specified
 +with that option will be read and written to as deemed necessary.
 +.IP "CURLALTSVC_H1"
 +Accept alternative services offered over HTTP/1.1.
 +.IP "CURLALTSVC_H2"
 +Accept alternative services offered over HTTP/2. This will only be used if
 +libcurl was also built to actually support HTTP/2, otherwise this bit will be
 +ignored.
 +.IP "CURLALTSVC_H3"
 +Accept alternative services offered over HTTP/3. This will only be used if
 +libcurl was also built to actually support HTTP/3, otherwise this bit will be
 +ignored.
 +.SH DEFAULT
- 0. No Alt-Svc treatment.
++Alt-Svc handling is disabled by default. If \fICURLOPT_ALTSVC(3)\fP is set,
++\fICURLOPT_ALTSVC_CTRL(3)\fP has a default value corresponding to
++CURLALTSVC_H1 | CURLALTSVC_H2 | CURLALTSVC_H3 - the HTTP/2 and HTTP/3 bits are
++only set if libcurl was built with support for those versions.
 +.SH PROTOCOLS
 +HTTPS
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, CURLALTSVC_H1);
 +  curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt");
 +  curl_easy_perform(curl);
 +}
 +.fi
 +.SH AVAILABILITY
 +Added in 7.64.1
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR CURLOPT_ALTSVC "(3), " CURLOPT_CONNECT_TO "(3), " CURLOPT_RESOLVE "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_CAPATH.3
index e5175ede0,000000000..8436e2746
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/GNURLOPT_CAPATH.3
@@@ -1,70 -1,0 +1,69 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * Copyright (C) 1998 - 2017, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_CAPATH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt 
options"
 +.SH NAME
 +CURLOPT_CAPATH \- specify directory holding CA certificates
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
 +.SH DESCRIPTION
 +Pass a char * to a zero terminated string naming a directory holding multiple
 +CA certificates to verify the peer with. If libcurl is built against OpenSSL,
 +the certificate directory must be prepared using the openssl c_rehash utility.
 +This makes sense only when used in combination with the
 +\fICURLOPT_SSL_VERIFYPEER(3)\fP option.
 +
 +The \fICURLOPT_CAPATH(3)\fP function apparently does not work in Windows due
 +to some limitation in openssl.
 +
 +The application does not have to keep the string around after setting this
 +option.
 +.SH DEFAULT
 +NULL
 +.SH PROTOCOLS
 +All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/";);
 +  curl_easy_setopt(curl, CURLOPT_CAPATH, "/etc/cert-dir");
 +  ret = curl_easy_perform(curl);
 +  curl_easy_cleanup(curl);
 +}
 +.fi
 +.SH AVAILABILITY
- This option is supported by the OpenSSL, GnuTLS, PolarSSL and mbedTLS
- (since 7.56.0) backends. The NSS backend provides the option only for
- backward compatibility.
++This option is supported by the OpenSSL, GnuTLS and mbedTLS (since 7.56.0)
++backends. The NSS backend provides the option only for backward compatibility.
 +.SH RETURN VALUE
 +CURLE_OK if supported; or an error such as:
 +
 +CURLE_NOT_BUILT_IN - Not supported by the SSL backend
 +
 +CURLE_UNKNOWN_OPTION
 +
 +CURLE_OUT_OF_MEMORY
 +.SH "SEE ALSO"
 +.BR CURLOPT_CAINFO "(3), "
 +.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_COOKIEFILE.3
index e379aaed1,000000000..71e0d2c5f
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/GNURLOPT_COOKIEFILE.3
@@@ -1,83 -1,0 +1,87 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * Copyright (C) 1998 - 2018, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_COOKIEFILE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt 
options"
 +.SH NAME
 +CURLOPT_COOKIEFILE \- file name to read cookies from
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
 +.SH DESCRIPTION
 +Pass a pointer to a zero terminated string as parameter. It should point to
 +the file name of your file holding cookie data to read. The cookie data can be
 +in either the old Netscape / Mozilla cookie data format or just regular HTTP
 +headers (Set-Cookie style) dumped to a file.
 +
 +It also enables the cookie engine, making libcurl parse and send cookies on
 +subsequent requests with this handle.
 +
 +Given an empty or non-existing file or by passing the empty string ("") to
 +this option, you can enable the cookie engine without reading any initial
 +cookies. If you tell libcurl the file name is "-" (just a single minus sign),
 +libcurl will instead read from stdin.
 +
 +This option only \fBreads\fP cookies. To make libcurl write cookies to file,
 +see \fICURLOPT_COOKIEJAR(3)\fP.
 +
 +Exercise caution if you are using this option and multiple transfers may 
occur.
 +If you use the Set-Cookie format and don't specify a domain then the cookie is
 +sent for any domain (even after redirects are followed) and cannot be modified
 +by a server-set cookie. If a server sets a cookie of the same name then both
 +will be sent on a future transfer to that server, likely not what you 
intended.
 +To address these issues set a domain in Set-Cookie (doing that will include
 +sub-domains) or use the Netscape format.
 +
 +If you use this option multiple times, you just add more files to read.
 +Subsequent files will add more cookies.
 +
 +The application does not have to keep the string around after setting this
 +option.
 +.SH DEFAULT
 +NULL
 +.SH PROTOCOLS
 +HTTP
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/foo.bin";);
 +
 +  /* get cookies from an existing file */
 +  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookies.txt");
 +
 +  ret = curl_easy_perform(curl);
 +
 +  curl_easy_cleanup(curl);
 +}
 +.fi
++.SH "Cookie file format"
++The cookie file format and general cookie concepts in curl are described in
++the HTTP-COOKIES.md file, also hosted online here:
++https://curl.haxx.se/docs/http-cookies.html
 +.SH AVAILABILITY
 +As long as HTTP is supported
 +.SH RETURN VALUE
 +Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR CURLOPT_COOKIE "(3), " CURLOPT_COOKIEJAR "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_COOKIELIST.3
index c5a66f5d1,000000000..fe0c19380
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/GNURLOPT_COOKIELIST.3
@@@ -1,120 -1,0 +1,124 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * Copyright (C) 1998 - 2016, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_COOKIELIST 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt 
options"
 +.SH NAME
 +CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
 +.SH SYNOPSIS
 +.nf
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
 +                          char *cookie);
 +.SH DESCRIPTION
 +Pass a char * to a \fIcookie\fP string.
 +
 +Such a cookie can be either a single line in Netscape / Mozilla format or just
 +regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
 +cookie engine. This adds that single cookie to the internal cookie store.
 +
 +Exercise caution if you are using this option and multiple transfers may 
occur.
 +If you use the Set-Cookie format and don't specify a domain then the cookie is
 +sent for any domain (even after redirects are followed) and cannot be modified
 +by a server-set cookie. If a server sets a cookie of the same name (or maybe
 +you've imported one) then both will be sent on a future transfer to that
 +server, likely not what you intended. To address these issues set a domain in
 +Set-Cookie (doing that will include sub-domains) or use the Netscape format as
 +shown in EXAMPLE.
 +
 +Additionally, there are commands available that perform actions if you pass in
 +these exact strings:
 +.IP ALL
 +erases all cookies held in memory
 +
 +.IP SESS
 +erases all session cookies held in memory
 +
 +.IP FLUSH
 +writes all known cookies to the file specified by \fICURLOPT_COOKIEJAR(3)\fP
 +
 +.IP RELOAD
 +loads all cookies from the files specified by \fICURLOPT_COOKIEFILE(3)\fP
 +
 +.SH DEFAULT
 +NULL
 +.SH PROTOCOLS
 +HTTP
 +.SH EXAMPLE
 +.nf
 +/* This example shows an inline import of a cookie in Netscape format.
 +You can set the cookie as HttpOnly to prevent XSS attacks by prepending
 +#HttpOnly_ to the hostname. That may be useful if the cookie will later
 +be imported by a browser.
 +*/
 +
 +#define SEP  "\\t"  /* Tab separates the fields */
 +
 +char *my_cookie =
 +  "example.com"    /* Hostname */
 +  SEP "FALSE"      /* Include subdomains */
 +  SEP "/"          /* Path */
 +  SEP "FALSE"      /* Secure */
 +  SEP "0"          /* Expiry in epoch time format. 0 == Session */
 +  SEP "foo"        /* Name */
 +  SEP "bar";       /* Value */
 +
 +/* my_cookie is imported immediately via CURLOPT_COOKIELIST.
 +*/
 +curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie);
 +
 +/* The list of cookies in cookies.txt will not be imported until right
 +before a transfer is performed. Cookies in the list that have the same
 +hostname, path and name as in my_cookie are skipped. That is because
 +libcurl has already imported my_cookie and it's considered a "live"
 +cookie. A live cookie won't be replaced by one read from a file.
 +*/
 +curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt");  /* import */
 +
 +/* Cookies are exported after curl_easy_cleanup is called. The server
 +may have added, deleted or modified cookies by then. The cookies that
 +were skipped on import are not exported.
 +*/
 +curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");  /* export */
 +
 +curl_easy_perform(curl);  /* cookies imported from cookies.txt */
 +
 +curl_easy_cleanup(curl);  /* cookies exported to cookies.txt */
 +.fi
++.SH "Cookie file format"
++The cookie file format and general cookie concepts in curl are described in
++the HTTP-COOKIES.md file, also hosted online here:
++https://curl.haxx.se/docs/http-cookies.html
 +.SH AVAILABILITY
 +ALL was added in 7.14.1
 +
 +SESS was added in 7.15.4
 +
 +FLUSH was added in 7.17.1
 +
 +RELOAD was added in 7.39.0
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
 +CURLE_OUT_OF_MEMORY if there was insufficient heap space.
 +.SH "SEE ALSO"
 +.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), " CURLOPT_COOKIE "(3), 
"
 +.BR CURLINFO_COOKIELIST "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_FOLLOWLOCATION.3
index bb64da48c,000000000..bc7d76ae5
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/GNURLOPT_FOLLOWLOCATION.3
@@@ -1,81 -1,0 +1,81 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_FOLLOWLOCATION 3 "17 Jun 2014" "libcurl 7.37.0" 
"curl_easy_setopt options"
 +.SH NAME
 +CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
 +.SH DESCRIPTION
 +A long parameter set to 1 tells the library to follow any Location: header
 +that the server sends as part of an HTTP header in a 3xx response. The
 +Location: header can specify a relative or an absolute URL to follow.
 +
 +libcurl will issue another request for the new URL and follow new Location:
 +headers all the way until no more such headers are returned.
 +\fICURLOPT_MAXREDIRS(3)\fP can be used to limit the number of redirects
 +libcurl will follow.
 +
 +libcurl limits what protocols it automatically follows to. The accepted
 +protocols are set with \fICURLOPT_REDIR_PROTOCOLS(3)\fP. By default libcurl
 +will allow HTTP, HTTPS, FTP and FTPS on redirect (7.65.2). Older versions of
 +libcurl allowed all protocols on redirect except those disabled for security
 +reasons: Since 7.19.4 FILE and SCP are disabled, and since 7.40.0 SMB and SMBS
 +are also disabled.
 +
 +When following a Location:, the 3xx response code that redirected it also
 +dictates which request method it will use in the subsequent request: For 301,
- 302 and 303 responses libcurl will switch method to GET unless
++302 and 303 responses libcurl will switch method from POST to GET unless
 +\fICURLOPT_POSTREDIR(3)\fP instructs libcurl otherwise. All other 3xx codes
 +will make libcurl send the same method again.
 +
 +For users who think the existing location following is too naive, too simple
 +or just lacks features, it is very easy to instead implement your own redirect
 +follow logic with the use of \fIcurl_easy_getinfo(3)\fP's
 +\fICURLINFO_REDIRECT_URL(3)\fP option instead of using
 +\fICURLOPT_FOLLOWLOCATION(3)\fP.
 +.SH DEFAULT
 +0, disabled
 +.SH PROTOCOLS
 +HTTP(S)
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com";);
 +
 +  /* example.com is redirected, so we tell libcurl to follow redirection */
 +  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
 +
 +  curl_easy_perform(curl);
 +}
 +.fi
 +.SH AVAILABILITY
 +Along with HTTP
 +.SH RETURN VALUE
 +Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_PROTOCOLS "(3), "
 +.BR CURLOPT_POSTREDIR "(3), "
 +.BR CURLINFO_REDIRECT_URL "(3), " CURLINFO_REDIRECT_COUNT "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_POSTFIELDS.3
index a4ed8e5f2,000000000..80b746320
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/GNURLOPT_POSTFIELDS.3
@@@ -1,88 -1,0 +1,88 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * Copyright (C) 1998 - 2018, 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_POSTFIELDS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt 
options"
 +.SH NAME
 +CURLOPT_POSTFIELDS \- specify data to POST to server
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
 +.SH DESCRIPTION
 +Pass a char * as parameter, pointing to the full data to send in an HTTP POST
 +operation. You must make sure that the data is formatted the way you want the
 +server to receive it. libcurl will not convert or encode it for you in any
 +way. For example, the web server may assume that this data is url-encoded.
 +
 +The data pointed to is NOT copied by the library: as a consequence, it must be
 +preserved by the calling application until the associated transfer finishes.
 +This behaviour can be changed (so libcurl does copy the data) by setting the
 +\fICURLOPT_COPYPOSTFIELDS(3)\fP option.
 +
 +This POST is a normal application/x-www-form-urlencoded kind (and libcurl will
 +set that Content-Type by default when this option is used), which is commonly
 +used by HTML forms. Change Content-Type with \fICURLOPT_HTTPHEADER(3)\fP.
 +
 +You can use \fIcurl_easy_escape(3)\fP to url-encode your data, if necessary. 
It
 +returns a pointer to an encoded string that can be passed as \fIpostdata\fP.
 +
 +Using \fICURLOPT_POSTFIELDS(3)\fP implies setting \fICURLOPT_POST(3)\fP to 1.
 +
 +If \fICURLOPT_POSTFIELDS(3)\fP is explicitly set to NULL then libcurl will get
 +the POST data from the read callback. If you want to send a zero-byte POST set
 +\fICURLOPT_POSTFIELDS(3)\fP to an empty string, or set \fICURLOPT_POST(3)\fP 
to
 +1 and \fICURLOPT_POSTFIELDSIZE(3)\fP to 0.
 +
 +Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header,
 +and libcurl will add that header automatically if the POST is either known to
- be larger than 1024 bytes or if the expected size is unknown. You can disable
- this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
++be larger than 1MB or if the expected size is unknown. You can disable this
++header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
 +
 +To make multipart/formdata posts (aka RFC2388-posts), check out the
 +\fICURLOPT_HTTPPOST(3)\fP option combined with \fIcurl_formadd(3)\fP.
 +.SH DEFAULT
 +NULL
 +.SH PROTOCOLS
 +HTTP
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  const char *data = "data to send";
 +
 +  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com";);
 +
 +  /* size of the POST data */
 +  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
 +
 +  /* pass in a pointer to the data - libcurl will not copy */
 +  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
 +
 +  curl_easy_perform(curl);
 +}
 +.fi
 +.SH AVAILABILITY
 +Always
 +.SH RETURN VALUE
 +Returns CURLE_OK
 +.SH "SEE ALSO"
 +.BR CURLOPT_POSTFIELDSIZE "(3), " CURLOPT_READFUNCTION "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_PROXY_SSL_OPTIONS.3
index 7478e52f3,000000000..9b6e3b09e
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_PROXY_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/GNURLOPT_PROXY_SSL_OPTIONS.3
@@@ -1,69 -1,0 +1,75 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
 +.\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_PROXY_SSL_OPTIONS 3 "16 Nov 2016" "libcurl 7.52.0" 
"curl_easy_setopt options"
 +.SH NAME
 +CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long 
bitmask);
 +.SH DESCRIPTION
- Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
- 
- \fICURLSSLOPT_ALLOW_BEAST\fP tells libcurl to not attempt to use any
- workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this
- option isn't used or this bit is set to 0, the SSL layer libcurl uses may use
- a work-around for this flaw although it might cause interoperability problems
- with some (older) SSL implementations. WARNING: avoiding this work-around
- lessens the security, and by setting this option to 1 you ask for exactly
- that.  This option is only supported for DarwinSSL, NSS and OpenSSL.
- 
- \fICURLSSLOPT_NO_REVOKE\fP tells libcurl to disable certificate revocation
- checks for those SSL backends where such behavior is present. This option is
- only supported for Schannel (the native Windows SSL library), with an
- exception in the case of Windows' Untrusted Publishers blacklist which it
- seems can't be bypassed.
++Pass a long with a bitmask to tell libcurl about specific SSL
++behaviors. Available bits:
++.IP CURLSSLOPT_ALLOW_BEAST
++Tells libcurl to not attempt to use any workarounds for a security flaw in the
++SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is set to 0,
++the SSL layer libcurl uses may use a work-around for this flaw although it
++might cause interoperability problems with some (older) SSL
++implementations. WARNING: avoiding this work-around lessens the security, and
++by setting this option to 1 you ask for exactly that.  This option is only
++supported for DarwinSSL, NSS and OpenSSL.
++.IP CURLSSLOPT_NO_REVOKE
++Tells libcurl to disable certificate revocation checks for those SSL backends
++where such behavior is present. This option is only supported for Schannel
++(the native Windows SSL library), with an exception in the case of Windows'
++Untrusted Publishers blacklist which it seems can't be bypassed. (Added in
++7.44.0)
++.IP CURLSSLOPT_NO_PARTIALCHAIN
++Tells libcurl to not accept "partial" certificate chains, which it otherwise
++does by default. This option is only supported for OpenSSL and will fail the
++certificate verification if the chain ends with an intermediate certificate
++and not with a root cert. (Added in 7.68.0)
 +.SH DEFAULT
 +0
 +.SH PROTOCOLS
- All
++All TLS-based protocols
 +.SH AVAILABLE
 +Added in 7.52.0
 +.SH EXAMPLE
 +.nf
 +CURL *curl = curl_easy_init();
 +if(curl) {
 +  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/";);
 +  curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy";);
 +  /* weaken TLS only for use with silly proxies */
 +  curl_easy_setopt(curl, CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST |
 +                   CURLSSLOPT_NO_REVOKE);
 +  ret = curl_easy_perform(curl);
 +  curl_easy_cleanup(curl);
 +}
 +.fi
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR CURLOPT_PROXY_SSLVERSION "(3), " CURLOPT_PROXY_SSL_CIPHER_LIST "(3), "
 +.BR CURLOPT_SSLVERSION "(3), " CURLOPT_SSL_CIPHER_LIST "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_REDIR_PROTOCOLS.3
index b1b4fdda0,000000000..3a9f07475
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/GNURLOPT_REDIR_PROTOCOLS.3
@@@ -1,101 -1,0 +1,104 @@@
 +.\" **************************************************************************
 +.\" *                                  _   _ ____  _
 +.\" *  Project                     ___| | | |  _ \| |
 +.\" *                             / __| | | | |_) | |
 +.\" *                            | (__| |_| |  _ <| |___
 +.\" *                             \___|\___/|_| \_\_____|
 +.\" *
- .\" * 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
 +.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 +.\" *
 +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 +.\" * copies of the Software, and permit persons to whom the Software is
 +.\" * furnished to do so, under the terms of the COPYING file.
 +.\" *
 +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
ANY
 +.\" * KIND, either express or implied.
 +.\" *
 +.\" **************************************************************************
 +.\"
 +.TH GNURLOPT_REDIR_PROTOCOLS 3 "19 Jun 2014" "libcurl 7.37.0" 
"curl_easy_setopt options"
 +.SH NAME
 +CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
 +.SH SYNOPSIS
 +#include <gnurl/curl.h>
 +
 +CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long 
bitmask);
 +.SH DESCRIPTION
 +Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
 +limits what protocols libcurl may use in a transfer that it follows to in a
 +redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
 +limit specific transfers to only be allowed to use a subset of protocols in
 +redirections.
 +
 +Protocols denied by \fICURLOPT_PROTOCOLS(3)\fP are not overridden by this
 +option.
 +
 +By default libcurl will allow HTTP, HTTPS, FTP and FTPS on redirect (7.65.2).
 +Older versions of libcurl allowed all protocols on redirect except several
 +disabled for security reasons: Since 7.19.4 FILE and SCP are disabled, and
 +since 7.40.0 SMB and SMBS are also disabled. \fICURLPROTO_ALL\fP enables all
 +protocols on redirect, including those disabled for security.
 +
 +These are the available protocol defines:
 +.nf
 +CURLPROTO_DICT
 +CURLPROTO_FILE
 +CURLPROTO_FTP
 +CURLPROTO_FTPS
 +CURLPROTO_GOPHER
 +CURLPROTO_HTTP
 +CURLPROTO_HTTPS
 +CURLPROTO_IMAP
 +CURLPROTO_IMAPS
 +CURLPROTO_LDAP
 +CURLPROTO_LDAPS
 +CURLPROTO_POP3
 +CURLPROTO_POP3S
 +CURLPROTO_RTMP
 +CURLPROTO_RTMPE
 +CURLPROTO_RTMPS
 +CURLPROTO_RTMPT
 +CURLPROTO_RTMPTE
 +CURLPROTO_RTMPTS
 +CURLPROTO_RTSP
 +CURLPROTO_SCP
 +CURLPROTO_SFTP
 +CURLPROTO_SMB
 +CURLPROTO_SMBS
 +CURLPROTO_SMTP
 +CURLPROTO_SMTPS
 +CURLPROTO_TELNET
 +CURLPROTO_TFTP
 +.fi
 +.SH DEFAULT
- All protocols except for FILE, SCP and since 7.40.0 SMB and SMBS.
++HTTP, HTTPS, FTP and FTPS (Since 7.65.2).
++
++Older versions defaulted to all protocols except FILE, SCP and since 7.40.0
++SMB and SMBS.
 +.SH PROTOCOLS
 +All
 +.SH EXAMPLE
 +.nf
 +curl = curl_easy_init();
 +if(curl) {
 +  /* pass in the URL from an external source */
 +  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
 +
 +  /* only allow redirects to HTTP and HTTPS URLs */
 +  curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
 +                   CURLPROTO_HTTP | CURLPROTO_HTTPS);
 +
 +  /* Perform the request */
 +  curl_easy_perform(curl);
 +}
 +.fi
 +.SH AVAILABILITY
 +Added in 7.19.4, before then it would follow all protocols.
 +.SH RETURN VALUE
 +Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 +.SH "SEE ALSO"
 +.BR CURLOPT_PROTOCOLS "(3), "
diff --cc include/gnurl/multi.h
index 0fcf734d4,000000000..04b2cf7f3
mode 100644,000000..100644
--- a/include/gnurl/multi.h
+++ b/include/gnurl/multi.h
@@@ -1,468 -1,0 +1,456 @@@
 +#ifndef CURLINC_MULTI_H
 +#define CURLINC_MULTI_H
 +/***************************************************************************
 + *                                  _   _ ____  _
 + *  Project                     ___| | | |  _ \| |
 + *                             / __| | | | |_) | |
 + *                            | (__| |_| |  _ <| |___
 + *                             \___|\___/|_| \_\_____|
 + *
 + * 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
 + * are also available at https://curl.haxx.se/docs/copyright.html.
 + *
 + * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 + * copies of the Software, and permit persons to whom the Software is
 + * furnished to do so, under the terms of the COPYING file.
 + *
 + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 + * KIND, either express or implied.
 + *
 + ***************************************************************************/
 +/*
 +  This is an "external" header file. Don't give away any internals here!
 +
 +  GOALS
 +
 +  o Enable a "pull" interface. The application that uses libcurl decides where
 +    and when to ask libcurl to get/send data.
 +
 +  o Enable multiple simultaneous transfers in the same thread without making 
it
 +    complicated for the application.
 +
 +  o Enable the application to select() on its own file descriptors and curl's
 +    file descriptors simultaneous easily.
 +
 +*/
 +
 +/*
 + * This header file should not really need to include "curl.h" since curl.h
 + * itself includes this file and we expect user applications to do #include
 + * <gnurl/curl.h> without the need for especially including multi.h.
 + *
 + * For some reason we added this include here at one point, and rather than to
 + * break existing (wrongly written) libcurl applications, we leave it as-is
 + * but with this warning attached.
 + */
 +#include "curl.h"
 +
 +#ifdef  __cplusplus
 +extern "C" {
 +#endif
 +
 +#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
 +typedef struct Curl_multi CURLM;
 +#else
 +typedef void CURLM;
 +#endif
 +
 +typedef enum {
 +  CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
 +                                    curl_multi_socket*() soon */
 +  CURLM_OK,
 +  CURLM_BAD_HANDLE,      /* the passed-in handle is not a valid CURLM handle 
*/
 +  CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
 +  CURLM_OUT_OF_MEMORY,   /* if you ever get this, you're in deep sh*t */
 +  CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */
 +  CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */
 +  CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
 +  CURLM_ADDED_ALREADY,   /* an easy handle already added to a multi handle was
 +                            attempted to get added - again */
 +  CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
 +                               callback */
-   CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
++  CURLM_WAKEUP_FAILURE,  /* wakeup is unavailable or failed */
++  CURLM_BAD_FUNCTION_ARGUMENT,  /* function called with a bad parameter */
 +  CURLM_LAST
 +} CURLMcode;
 +
 +/* just to make code nicer when using curl_multi_socket() you can now check
 +   for CURLM_CALL_MULTI_SOCKET too in the same style it works for
 +   curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
 +#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
 +
 +/* bitmask bits for CURLMOPT_PIPELINING */
 +#define CURLPIPE_NOTHING   0L
 +#define CURLPIPE_HTTP1     1L
 +#define CURLPIPE_MULTIPLEX 2L
 +
 +typedef enum {
 +  CURLMSG_NONE, /* first, not used */
 +  CURLMSG_DONE, /* This easy handle has completed. 'result' contains
 +                   the CURLcode of the transfer */
 +  CURLMSG_LAST /* last, not used */
 +} CURLMSG;
 +
 +struct CURLMsg {
 +  CURLMSG msg;       /* what this message means */
 +  CURL *easy_handle; /* the handle it concerns */
 +  union {
 +    void *whatever;    /* message-specific data */
 +    CURLcode result;   /* return code for transfer */
 +  } data;
 +};
 +typedef struct CURLMsg CURLMsg;
 +
 +/* Based on poll(2) structure and values.
 + * We don't use pollfd and POLL* constants explicitly
 + * to cover platforms without poll(). */
 +#define CURL_WAIT_POLLIN    0x0001
 +#define CURL_WAIT_POLLPRI   0x0002
 +#define CURL_WAIT_POLLOUT   0x0004
 +
 +struct curl_waitfd {
 +  curl_socket_t fd;
 +  short events;
 +  short revents; /* not supported yet */
 +};
 +
 +/*
 + * Name:    curl_multi_init()
 + *
 + * Desc:    inititalize multi-style curl usage
 + *
 + * Returns: a new CURLM handle to use in all 'curl_multi' functions.
 + */
 +CURL_EXTERN CURLM *curl_multi_init(void);
 +
 +/*
 + * Name:    curl_multi_add_handle()
 + *
 + * Desc:    add a standard curl handle to the multi stack
 + *
 + * Returns: CURLMcode type, general multi error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
 +                                            CURL *curl_handle);
 +
 + /*
 +  * Name:    curl_multi_remove_handle()
 +  *
 +  * Desc:    removes a curl handle from the multi stack again
 +  *
 +  * Returns: CURLMcode type, general multi error code.
 +  */
 +CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
 +                                               CURL *curl_handle);
 +
 + /*
 +  * Name:    curl_multi_fdset()
 +  *
 +  * Desc:    Ask curl for its fd_set sets. The app can use these to select() 
or
 +  *          poll() on. We want curl_multi_perform() called as soon as one of
 +  *          them are ready.
 +  *
 +  * Returns: CURLMcode type, general multi error code.
 +  */
 +CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
 +                                       fd_set *read_fd_set,
 +                                       fd_set *write_fd_set,
 +                                       fd_set *exc_fd_set,
 +                                       int *max_fd);
 +
 +/*
 + * Name:     curl_multi_wait()
 + *
 + * Desc:     Poll on all fds within a CURLM set as well as any
 + *           additional fds passed to the function.
 + *
 + * Returns:  CURLMcode type, general multi error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
 +                                      struct curl_waitfd extra_fds[],
 +                                      unsigned int extra_nfds,
 +                                      int timeout_ms,
 +                                      int *ret);
 +
 +/*
 + * Name:     curl_multi_poll()
 + *
 + * Desc:     Poll on all fds within a CURLM set as well as any
 + *           additional fds passed to the function.
 + *
 + * Returns:  CURLMcode type, general multi error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
 +                                      struct curl_waitfd extra_fds[],
 +                                      unsigned int extra_nfds,
 +                                      int timeout_ms,
 +                                      int *ret);
 +
 +/*
 + * Name:     curl_multi_wakeup()
 + *
 + * Desc:     wakes up a sleeping curl_multi_poll call.
 + *
 + * Returns:  CURLMcode type, general multi error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);
 +
 + /*
 +  * Name:    curl_multi_perform()
 +  *
 +  * Desc:    When the app thinks there's data available for curl it calls this
 +  *          function to read/write whatever there is right now. This returns
 +  *          as soon as the reads and writes are done. This function does not
 +  *          require that there actually is data available for reading or that
 +  *          data can be written, it can be called just in case. It returns
 +  *          the number of handles that still transfer data in the second
 +  *          argument's integer-pointer.
 +  *
 +  * Returns: CURLMcode type, general multi error code. *NOTE* that this only
 +  *          returns errors etc regarding the whole multi stack. There might
 +  *          still have occurred problems on individual transfers even when
 +  *          this returns OK.
 +  */
 +CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
 +                                         int *running_handles);
 +
 + /*
 +  * Name:    curl_multi_cleanup()
 +  *
 +  * Desc:    Cleans up and removes a whole multi stack. It does not free or
 +  *          touch any individual easy handles in any way. We need to define
 +  *          in what state those handles will be if this function is called
 +  *          in the middle of a transfer.
 +  *
 +  * Returns: CURLMcode type, general multi error code.
 +  */
 +CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
 +
 +/*
 + * Name:    curl_multi_info_read()
 + *
 + * Desc:    Ask the multi handle if there's any messages/informationals from
 + *          the individual transfers. Messages include informationals such as
 + *          error code from the transfer or just the fact that a transfer is
 + *          completed. More details on these should be written down as well.
 + *
 + *          Repeated calls to this function will return a new struct each
 + *          time, until a special "end of msgs" struct is returned as a signal
 + *          that there is no more to get at this point.
 + *
 + *          The data the returned pointer points to will not survive calling
 + *          curl_multi_cleanup().
 + *
 + *          The 'CURLMsg' struct is meant to be very simple and only contain
 + *          very basic information. If more involved information is wanted,
 + *          we will provide the particular "transfer handle" in that struct
 + *          and that should/could/would be used in subsequent
 + *          curl_easy_getinfo() calls (or similar). The point being that we
 + *          must never expose complex structs to applications, as then we'll
 + *          undoubtably get backwards compatibility problems in the future.
 + *
 + * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
 + *          of structs. It also writes the number of messages left in the
 + *          queue (after this read) in the integer the second argument points
 + *          to.
 + */
 +CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
 +                                          int *msgs_in_queue);
 +
 +/*
 + * Name:    curl_multi_strerror()
 + *
 + * Desc:    The curl_multi_strerror function may be used to turn a CURLMcode
 + *          value into the equivalent human readable error string.  This is
 + *          useful for printing meaningful error messages.
 + *
 + * Returns: A pointer to a zero-terminated error message.
 + */
 +CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
 +
 +/*
 + * Name:    curl_multi_socket() and
 + *          curl_multi_socket_all()
 + *
 + * Desc:    An alternative version of curl_multi_perform() that allows the
 + *          application to pass in one of the file descriptors that have been
 + *          detected to have "action" on them and let libcurl perform.
 + *          See man page for details.
 + */
 +#define CURL_POLL_NONE   0
 +#define CURL_POLL_IN     1
 +#define CURL_POLL_OUT    2
 +#define CURL_POLL_INOUT  3
 +#define CURL_POLL_REMOVE 4
 +
 +#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
 +
 +#define CURL_CSELECT_IN   0x01
 +#define CURL_CSELECT_OUT  0x02
 +#define CURL_CSELECT_ERR  0x04
 +
 +typedef int (*curl_socket_callback)(CURL *easy,      /* easy handle */
 +                                    curl_socket_t s, /* socket */
 +                                    int what,        /* see above */
 +                                    void *userp,     /* private callback
 +                                                        pointer */
 +                                    void *socketp);  /* private socket
 +                                                        pointer */
 +/*
 + * Name:    curl_multi_timer_callback
 + *
 + * Desc:    Called by libcurl whenever the library detects a change in the
 + *          maximum number of milliseconds the app is allowed to wait before
 + *          curl_multi_socket() or curl_multi_perform() must be called
 + *          (to allow libcurl's timed events to take place).
 + *
 + * Returns: The callback should return zero.
 + */
 +typedef int (*curl_multi_timer_callback)(CURLM *multi,    /* multi handle */
 +                                         long timeout_ms, /* see above */
 +                                         void *userp);    /* private callback
 +                                                             pointer */
 +
 +CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
 +                                        int *running_handles);
 +
 +CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
 +                                               curl_socket_t s,
 +                                               int ev_bitmask,
 +                                               int *running_handles);
 +
 +CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
 +                                            int *running_handles);
 +
 +#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
 +/* This macro below was added in 7.16.3 to push users who recompile to use
 +   the new curl_multi_socket_action() instead of the old curl_multi_socket()
 +*/
 +#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
 +#endif
 +
 +/*
 + * Name:    curl_multi_timeout()
 + *
 + * Desc:    Returns the maximum number of milliseconds the app is allowed to
 + *          wait before curl_multi_socket() or curl_multi_perform() must be
 + *          called (to allow libcurl's timed events to take place).
 + *
 + * Returns: CURLM error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
 +                                         long *milliseconds);
 +
- #undef CINIT /* re-using the same name as in curl.h */
- 
- #ifdef CURL_ISOCPP
- #define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num
- #else
- /* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
- #define LONG          CURLOPTTYPE_LONG
- #define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT
- #define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
- #define OFF_T         CURLOPTTYPE_OFF_T
- #define CINIT(name,type,number) CURLMOPT_/**/name = type + number
- #endif
- 
 +typedef enum {
 +  /* This is the socket callback function pointer */
-   CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),
++  CURLOPT(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1),
 +
 +  /* This is the argument passed to the socket callback */
-   CINIT(SOCKETDATA, OBJECTPOINT, 2),
++  CURLOPT(CURLMOPT_SOCKETDATA, CURLOPTTYPE_OBJECTPOINT, 2),
 +
 +    /* set to 1 to enable pipelining for this multi handle */
-   CINIT(PIPELINING, LONG, 3),
++  CURLOPT(CURLMOPT_PIPELINING, CURLOPTTYPE_LONG, 3),
 +
 +   /* This is the timer callback function pointer */
-   CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),
++  CURLOPT(CURLMOPT_TIMERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 4),
 +
 +  /* This is the argument passed to the timer callback */
-   CINIT(TIMERDATA, OBJECTPOINT, 5),
++  CURLOPT(CURLMOPT_TIMERDATA, CURLOPTTYPE_OBJECTPOINT, 5),
 +
 +  /* maximum number of entries in the connection cache */
-   CINIT(MAXCONNECTS, LONG, 6),
++  CURLOPT(CURLMOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 6),
 +
 +  /* maximum number of (pipelining) connections to one host */
-   CINIT(MAX_HOST_CONNECTIONS, LONG, 7),
++  CURLOPT(CURLMOPT_MAX_HOST_CONNECTIONS, CURLOPTTYPE_LONG, 7),
 +
 +  /* maximum number of requests in a pipeline */
-   CINIT(MAX_PIPELINE_LENGTH, LONG, 8),
++  CURLOPT(CURLMOPT_MAX_PIPELINE_LENGTH, CURLOPTTYPE_LONG, 8),
 +
 +  /* a connection with a content-length longer than this
 +     will not be considered for pipelining */
-   CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9),
++  CURLOPT(CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 9),
 +
 +  /* a connection with a chunk length longer than this
 +     will not be considered for pipelining */
-   CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10),
++  CURLOPT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 10),
 +
 +  /* a list of site names(+port) that are blacklisted from
 +     pipelining */
-   CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11),
++  CURLOPT(CURLMOPT_PIPELINING_SITE_BL, CURLOPTTYPE_OBJECTPOINT, 11),
 +
 +  /* a list of server types that are blacklisted from
 +     pipelining */
-   CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12),
++  CURLOPT(CURLMOPT_PIPELINING_SERVER_BL, CURLOPTTYPE_OBJECTPOINT, 12),
 +
 +  /* maximum number of open connections in total */
-   CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
++  CURLOPT(CURLMOPT_MAX_TOTAL_CONNECTIONS, CURLOPTTYPE_LONG, 13),
 +
 +   /* This is the server push callback function pointer */
-   CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
++  CURLOPT(CURLMOPT_PUSHFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 14),
 +
 +  /* This is the argument passed to the server push callback */
-   CINIT(PUSHDATA, OBJECTPOINT, 15),
++  CURLOPT(CURLMOPT_PUSHDATA, CURLOPTTYPE_OBJECTPOINT, 15),
 +
 +  /* maximum number of concurrent streams to support on a connection */
-   CINIT(MAX_CONCURRENT_STREAMS, LONG, 16),
++  CURLOPT(CURLMOPT_MAX_CONCURRENT_STREAMS, CURLOPTTYPE_LONG, 16),
 +
 +  CURLMOPT_LASTENTRY /* the last unused */
 +} CURLMoption;
 +
 +
 +/*
 + * Name:    curl_multi_setopt()
 + *
 + * Desc:    Sets options for the multi handle.
 + *
 + * Returns: CURLM error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
 +                                        CURLMoption option, ...);
 +
 +
 +/*
 + * Name:    curl_multi_assign()
 + *
 + * Desc:    This function sets an association in the multi handle between the
 + *          given socket and a private pointer of the application. This is
 + *          (only) useful for curl_multi_socket uses.
 + *
 + * Returns: CURLM error code.
 + */
 +CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
 +                                        curl_socket_t sockfd, void *sockp);
 +
 +
 +/*
 + * Name: curl_push_callback
 + *
 + * Desc: This callback gets called when a new stream is being pushed by the
 + *       server. It approves or denies the new stream.
 + *
 + * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
 + */
 +#define CURL_PUSH_OK   0
 +#define CURL_PUSH_DENY 1
 +
 +struct curl_pushheaders;  /* forward declaration only */
 +
 +CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
 +                                        size_t num);
 +CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
 +                                         const char *name);
 +
 +typedef int (*curl_push_callback)(CURL *parent,
 +                                  CURL *easy,
 +                                  size_t num_headers,
 +                                  struct curl_pushheaders *headers,
 +                                  void *userp);
 +
 +#ifdef __cplusplus
 +} /* end of extern "C" */
 +#endif
 +
 +#endif
diff --cc scripts/delta
index 63cc1522b,4b8a08915..28642aab0
--- a/scripts/delta
+++ b/scripts/delta
@@@ -53,8 -57,8 +57,8 @@@ $bcontribs = `git show $start:docs/THAN
  $contribs = $acontribs - $bcontribs;
  
  # number of setops:
- $asetopts=`grep "^  CINIT" include/gnurl/curl.h  | grep -cv OBSOLETE`;
- $bsetopts=`git show $start:include/gnurl/curl.h | grep "^  CINIT" | grep -cv 
OBSOLETE`;
 -$asetopts=`grep '^  CURLOPT(' include/curl/curl.h  | grep -cv OBSOLETE`;
 -$bsetopts=`git show $start:include/curl/curl.h | grep '^  CURLOPT(' | grep 
-cv OBSOLETE`;
++$asetopts=`grep '^  CURLOPT(' include/gnurl/curl.h  | grep -cv OBSOLETE`;
++$bsetopts=`git show $start:include/gnurl/curl.h | grep '^  CURLOPT(' | grep 
-cv OBSOLETE`;
  $nsetopts = $asetopts - $bsetopts;
  
  # Number of command line options:
diff --cc src/CMakeLists.txt
index 35fcfbb80,054541e40..838e3b78a
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@@ -43,23 -43,29 +43,29 @@@ endif(
  # CURL_FILES comes from Makefile.inc
  add_executable(
    ${EXE_NAME}
 -  ${CURL_FILES}
 +  ${GNURL_FILES}
    )
  
+ if(CURL_HAS_LTO)
+   set_target_properties(${EXE_NAME} PROPERTIES
+     INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
+     INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE)
+ endif()
+ 
 -source_group("curlX source files" FILES ${CURLX_CFILES})
 -source_group("curl source files" FILES ${CURL_CFILES})
 -source_group("curl header files" FILES ${CURL_HFILES})
 +source_group("curlX source files" FILES ${GNURLX_CFILES})
 +source_group("curl source files" FILES ${GNURL_CFILES})
 +source_group("curl header files" FILES ${GNURL_HFILES})
  
  include_directories(
 -  ${CURL_SOURCE_DIR}/lib        # To be able to reach "curl_setup_once.h"
 -  ${CURL_BINARY_DIR}/lib        # To be able to reach "curl_config.h"
 -  ${CURL_BINARY_DIR}/include    # To be able to reach "curl/curl.h"
 +  ${GNURL_SOURCE_DIR}/lib        # To be able to reach "curl_setup_once.h"
 +  ${GNURL_BINARY_DIR}/lib        # To be able to reach "curl_config.h"
 +  ${GNURL_BINARY_DIR}/include    # To be able to reach "gnurl/curl.h"
    # This is needed as tool_hugehelp.c is generated in the binary dir
 -  ${CURL_SOURCE_DIR}/src        # To be able to reach "tool_hugehelp.h"
 +  ${GNURL_SOURCE_DIR}/src        # To be able to reach "tool_hugehelp.h"
    )
  
 -#Build curl executable
 -target_link_libraries(${EXE_NAME} libcurl ${CURL_LIBS})
 +#Build gnurl executable
 +target_link_libraries(${EXE_NAME} libgnurl ${GNURL_LIBS})
  
  
################################################################################
  
diff --cc tests/Makefile.am
index 5d877d7ec,95ee872b5..16cb9ae1b
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@@ -24,25 -26,20 +24,26 @@@ MANDISTPAGES = runtests.1.dist testcurl
  
  # the path to the impacket python lib used for SMB tests
  IMP = python_dependencies/impacket
 -SMBDEPS = $(IMP)/__init__.py $(IMP)/nmb.py $(IMP)/nt_errors.py          \
 - $(IMP)/ntlm.py $(IMP)/smb.py $(IMP)/smb3.py $(IMP)/smb3structs.py      \
 - $(IMP)/smbserver.py $(IMP)/spnego.py $(IMP)/structure.py               \
 - $(IMP)/uuid.py $(IMP)/version.py smbserver.py curl_test_data.py
 -
 -EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           
\
 - getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl           
\
 - valgrind.pm ftp.pm sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 runtests.1 
\
 - serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl      
\
 - CMakeLists.txt mem-include-scan.pl valgrind.supp extern-scan.pl              
\
 - manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  
\
 - negtelnetserver.py $(SMBDEPS) objnames-test08.sh objnames-test10.sh          
\
 - objnames.inc disable-scan.pl manpage-syntax.pl error-codes.pl badsymbols.pl  
\
 - azure.pm appveyor.pm
 +
 +SMB_1 = $(IMP)/__init__.py $(IMP)/nmb.py $(IMP)/nt_errors.py
 +SMB_2 = $(IMP)/ntlm.py $(IMP)/smb.py $(IMP)/smb3.py $(IMP)/smb3structs.py
 +SMB_3 = $(IMP)/smbserver.py $(IMP)/spnego.py $(IMP)/structure.py
 +SMB_4 = $(IMP)/uuid.py $(IMP)/version.py smbserver.py.in curl_test_data.py.in
 +SMBDEPS = $(SMB_1) $(SMB_2) $(SMB_3) $(SMB_4)
 +
 +ED_1 = ftpserver.pl httpserver.pl secureserver.pl runtests.pl
 +ED_2 = getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl
 +ED_3 = valgrind.pm ftp.pm sshserver.pl sshhelp.pm pathhelp.pm testcurl.1 
runtests.1
 +ED_4 = serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl
 +ED_5 = mem-include-scan.pl valgrind.supp extern-scan.pl
 +ED_6 = manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py.in
 +ED_7 = negtelnetserver.py.in $(SMBDEPS) objnames-test08.sh objnames-test10.sh
 +ED_8 = objnames.inc disable-scan.pl error-codes.pl CMakeLists.txt
++ED_9 = badsymbols.pl azure.pm appveyor.pm
 +
- EXTRA_DIST = $(ED_1) $(ED_2) $(ED_3) $(ED_4) $(ED_5) $(ED_6) $(ED_7) $(ED_8)
++EXTRA_DIST = $(ED_1) $(ED_2) $(ED_3) $(ED_4) $(ED_5) $(ED_6) $(ED_7) $(ED_8) 
$(ED_9)
 +
 +check_SCRIPTS = smbserver.py curl_test_data.py negtelnetserver.py 
dictserver.py
  
  DISTCLEANFILES = configurehelp.pm
  
diff --cc tests/data/Makefile.inc
index 3e26bcdc7,3d8565c36..651f21643
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@@ -128,11 -129,12 +129,12 @@@ test1104 test1105 test1106 test1107 tes
  test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
  test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
  test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
 -test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
 +test1136 test1137 test1138                   test1141 test1142 test1143 \
  test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
  test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
- test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
- test1170 test1171 test1172 test1173 test1174 test1175 \
+ test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 \
+ \
+ test1170 test1171 test1172 test1173 test1174 test1175 test1176 \
  \
  test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
  test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
diff --cc tests/runtests.pl
index e5c10858c,ec5462be5..47c3931af
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@@ -149,8 -154,10 +154,10 @@@ my $SMBPORT;             # SMB server p
  my $SMBSPORT;            # SMBS server port
  my $NEGTELNETPORT;       # TELNET server port with negotiation
  
+ my $SSHSRVMD5;           # MD5 of ssh server public key
+ 
  my $srcdir = $ENV{'srcdir'} || '.';
 -my $CURL="../src/curl".exe_ext('TOOL'); # what curl executable to run on the 
tests
 +my $CURL="../src/gnurl".exe_ext('TOOL'); # what curl executable to run on the 
tests
  my $VCURL=$CURL;   # what curl binary to use to verify the servers with
                     # VCURL is handy to set to the system one when the one you
                     # just built hangs or crashes and thus prevent verification
@@@ -163,10 -170,10 +170,10 @@@ my $UNITDIR="./unit"
  my $SERVERIN="$LOGDIR/server.input"; # what curl sent the server
  my $SERVER2IN="$LOGDIR/server2.input"; # what curl sent the second server
  my $PROXYIN="$LOGDIR/proxy.input"; # what curl sent the proxy
- my $CURLLOG="$LOGDIR/curl.log"; # all command lines run
+ my $CURLLOG="commands.log"; # all command lines run
  my $FTPDCMD="$LOGDIR/ftpserver.cmd"; # copy ftp server instructions here
  my $SERVERLOGS_LOCK="$LOGDIR/serverlogs.lock"; # server logs advisor read lock
 -my $CURLCONFIG="../curl-config"; # curl-config from current build
 +my $CURLCONFIG="../gnurl-config"; # curl-config from current build
  
  # Normally, all test cases should be run, but at times it is handy to
  # simply run a particular one:

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



reply via email to

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