[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnurl] 116/116: Merge tag 'curl-7_57_0'
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnurl] 116/116: Merge tag 'curl-7_57_0' |
Date: |
Tue, 05 Dec 2017 14:52:26 +0100 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to branch master
in repository gnurl.
commit 054e207acc8623ec793c8e7a0e7d01f5aa1423b8
Merge: 131de33cb 62c07b574
Author: ng0 <address@hidden>
AuthorDate: Sun Dec 3 19:49:13 2017 +0000
Merge tag 'curl-7_57_0'
curl 7.57.0
.travis.yml | 25 +
CMake/curl-config.cmake | 59 +
CMakeLists.txt | 29 +-
Makefile.am | 12 +-
README.md | 1 +
RELEASE-NOTES | 238 +-
appveyor.yml | 7 +-
configure.ac | 95 +
docs/BUGS | 8 +-
docs/HELP-US.md | 2 +-
docs/INTERNALS.md | 70 +-
docs/Makefile.am | 3 +
docs/RESOURCES | 2 +
docs/ROADMAP.md | 94 +-
docs/THANKS | 23 +
docs/TODO | 36 +-
docs/cmdline-opts/form.d | 5 +
docs/cmdline-opts/interface.d | 4 +
docs/cmdline-opts/resolve.d | 2 +
docs/examples/Makefile.inc | 3 +-
docs/examples/curlx.c | 3 +-
docs/examples/rtsp.c | 3 +
docs/examples/shared-connection-cache.c | 85 +
docs/libcurl/gnurl_global_init.3 | 3 +
docs/libcurl/gnurl_mime_filedata.3 | 4 +-
docs/libcurl/gnurl_multi_fdset.3 | 9 +-
docs/libcurl/gnurl_share_setopt.3 | 9 +-
docs/libcurl/gnurl_version_info.3 | 8 +
docs/libcurl/libgnurl-share.3 | 9 +-
docs/libcurl/libgnurl-tutorial.3 | 2 +-
docs/libcurl/opts/GNURLINFO_HTTPAUTH_AVAIL.3 | 3 +-
docs/libcurl/opts/GNURLINFO_PROXYAUTH_AVAIL.3 | 3 +-
docs/libcurl/opts/GNURLOPT_RESOLVE.3 | 4 +-
docs/libcurl/symbols-in-versions | 2 +
include/gnurl/curl.h | 12 +-
lib/CMakeLists.txt | 19 +-
lib/Makefile.inc | 6 +-
lib/Makefile.m32 | 20 +-
lib/asyn-ares.c | 24 +-
lib/asyn-thread.c | 3 +-
lib/conncache.c | 141 +-
lib/conncache.h | 10 +-
lib/connect.c | 125 +-
lib/connect.h | 7 +-
lib/content_encoding.c | 735 +++++-
lib/content_encoding.h | 45 +-
lib/cookie.c | 2 +-
lib/curl_config.h.cmake | 3 +
lib/curl_fnmatch.c | 20 +-
lib/curl_ntlm_core.c | 25 +-
lib/curl_setup.h | 5 +-
lib/{vauth/digest.h => curl_sha256.h} | 25 +-
lib/curlx.h | 12 +-
lib/easy.c | 87 +-
lib/file.c | 4 +-
lib/ftp.c | 23 +-
lib/ftplistparser.c | 175 +-
lib/hostasyn.c | 10 +-
lib/hostip.c | 17 +-
lib/hostip4.c | 9 +-
lib/hostip6.c | 10 +-
lib/hostsyn.c | 10 +-
lib/http.c | 69 +-
lib/http2.c | 9 +-
lib/http_chunks.c | 42 +-
lib/http_proxy.c | 2 +-
lib/imap.c | 22 +-
lib/llist.c | 6 +-
lib/memdebug.c | 23 +-
lib/memdebug.h | 13 +-
lib/mime.c | 2 -
lib/multi.c | 112 +-
lib/multihandle.h | 4 -
lib/pingpong.c | 12 +-
lib/pingpong.h | 4 +-
lib/progress.c | 28 +-
lib/rand.c | 2 +-
lib/select.c | 12 +-
lib/sendf.c | 6 +-
lib/setopt.c | 2554 ++++++++++++++++++++
lib/{vauth/digest.h => setopt.h} | 26 +-
lib/sha256.c | 262 +++
lib/share.c | 6 +-
lib/share.h | 5 +-
lib/smb.c | 2 +-
lib/smtp.c | 2 +-
lib/socks.c | 4 +-
lib/speedcheck.c | 2 +-
lib/ssh.c | 8 +-
lib/telnet.c | 8 +-
lib/tftp.c | 4 +-
lib/timeval.c | 98 +-
lib/timeval.h | 27 +-
lib/transfer.c | 64 +-
lib/url.c | 3069 +++----------------------
lib/url.h | 12 +-
lib/urldata.h | 48 +-
lib/vauth/digest.c | 194 +-
lib/vauth/digest.h | 6 +-
lib/vauth/ntlm.c | 3 +-
lib/version.c | 48 +-
lib/vtls/openssl.c | 22 +-
packages/Symbian/group/libcurl.mmp | 2 +-
src/CMakeLists.txt | 15 +-
src/Makefile.m32 | 20 +-
src/mkhelp.pl | 2 -
src/tool_cfgable.h | 1 +
src/tool_formparse.c | 71 +-
src/tool_getparam.c | 20 +-
src/tool_help.c | 1 +
src/tool_metalink.c | 27 +-
src/tool_urlglob.c | 8 +-
tests/data/Makefile.inc | 19 +-
tests/data/test1034 | 25 +-
tests/data/test1035 | 21 +-
tests/data/test1133 | 14 +-
tests/data/test1162 | 52 +
tests/data/test1163 | 52 +
tests/data/test1263 | 37 +
tests/data/test1264 | 36 +
tests/data/test1290 | 48 +
tests/data/test1291 | 51 +
tests/data/test1324 | 56 +
tests/data/test1554 | 77 +
tests/data/test2058 | 107 +
tests/data/test2059 | 107 +
tests/data/test2060 | 107 +
tests/data/test2061 | 84 +
tests/data/test2062 | 84 +
tests/data/test2063 | 84 +
tests/data/test2064 | 84 +
tests/data/test2065 | 84 +
tests/data/test2066 | 84 +
tests/data/test2067 | 89 +
tests/data/test2068 | 89 +
tests/data/test2069 | 89 +
tests/data/test2070 | 41 +
tests/data/test2071 | 41 +
tests/data/test2072 | 38 +
tests/data/test220 | 5 +-
tests/data/test221 | 5 +-
tests/data/test222 | 5 +-
tests/data/test223 | 5 +-
tests/data/test224 | 5 +-
tests/data/{test222 => test230} | 64 +-
tests/data/{test222 => test314} | 61 +-
tests/data/test315 | 91 +
tests/libtest/Makefile.inc | 7 +-
tests/libtest/lib1554.c | 81 +
tests/libtest/lib501.c | 5 +-
tests/libtest/lib556.c | 4 +-
tests/libtest/lib650.c | 57 +-
tests/runtests.pl | 16 +-
tests/server/Makefile.inc | 2 -
tests/server/util.c | 111 +-
tests/server/util.h | 3 +-
tests/unit/unit1323.c | 2 +-
tests/unit/unit1399.c | 2 +-
158 files changed, 7538 insertions(+), 4151 deletions(-)
diff --cc docs/libcurl/gnurl_global_init.3
index 2d32e6474,000000000..6ff5b774b
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_global_init.3
+++ b/docs/libcurl/gnurl_global_init.3
@@@ -1,98 -1,0 +1,101 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, 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 curl_global_init 3 "11 May 2004" "libcurl 7.12" "libcurl 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 absense 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 initializtion 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)
+.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_multi_fdset.3
index a2a7b28b0,000000000..a098ed0e6
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_multi_fdset.3
+++ b/docs/libcurl/gnurl_multi_fdset.3
@@@ -1,83 -1,0 +1,84 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2017, 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 curl_multi_fdset 3 "2 Jan 2006" "libcurl 7.16.0" "libcurl Manual"
+.SH NAME
+curl_multi_fdset - extracts file descriptor information from a multi handle
+.SH SYNOPSIS
+.nf
+#include <gnurl/curl.h>
+
+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);
+.ad
+.SH DESCRIPTION
+This function extracts file descriptor information from a given multi_handle.
+libcurl returns its fd_set sets. The application can use these to select() on,
+but be sure to FD_ZERO them before calling this function as
+\fIcurl_multi_fdset(3)\fP only adds its own descriptors, it doesn't zero or
+otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should
+be called as soon as one of them is ready to be read from or written to.
+
+If the \fIread_fd_set\fP argument is not a null pointer, it points to an
+object of type fd_set that on returns specifies the file descriptors to be
+checked for being ready to read.
+
+If the \fIwrite_fd_set\fP argument is not a null pointer, it points to an
+object of type fd_set that on return specifies the file descriptors to be
+checked for being ready to write.
+
+If the \fIexc_fd_set\fP argument is not a null pointer, it points to an object
+of type fd_set that on return specifies the file descriptors to be checked for
+error conditions pending.
+
+If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
+this function returns. Otherwise it will contain the highest descriptor number
+libcurl set. When libcurl returns -1 in \fImax_fd\fP, it is because libcurl
+currently does something that isn't possible for your application to monitor
+with a socket and unfortunately you can then not know exactly when the current
+action is completed using select(). You then need to wait a while before you
- proceed and call \fIcurl_multi_perform(3)\fP anyway. How long to wait? We
- suggest 100 milliseconds at least, but you may want to test it out in your own
- particular conditions to find a suitable value.
++proceed and call \fIcurl_multi_perform(3)\fP anyway. How long to wait? Unless
++\fIcurl_multi_timeout(3)\fP gives you a lower number, we suggest 100
++milliseconds or so, but you may want to test it out in your own particular
++conditions to find a suitable value.
+
+When doing select(), you should use \fIcurl_multi_timeout(3)\fP to figure out
+how long to wait for action. Call \fIcurl_multi_perform(3)\fP even if no
+activity has been seen on the fd_sets after the timeout expires as otherwise
+internal retries and timeouts may not work as you'd think and want.
+
+If one of the sockets used by libcurl happens to be larger than what can be
+set in an fd_set, which on POSIX systems means that the file descriptor is
+larger than FD_SETSIZE, then libcurl will try to not set it. Setting a too
+large file descriptor in an fd_set implies an out of bounds write which can
+cause crashes, or worse. The effect of NOT storing it will possibly save you
+from the crash, but will make your program NOT wait for sockets it should wait
+for...
+.SH RETURN VALUE
+CURLMcode type, general libcurl multi interface error code. See
+\fIlibcurl-errors(3)\fP
+.SH "SEE ALSO"
+.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
+.BR curl_multi_wait "(3), "
+.BR curl_multi_timeout "(3), " curl_multi_perform "(3), " select "(2) "
diff --cc docs/libcurl/gnurl_share_setopt.3
index 9e06b9d38,000000000..57fb7d9e5
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_share_setopt.3
+++ b/docs/libcurl/gnurl_share_setopt.3
@@@ -1,86 -1,0 +1,93 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2017, 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 curl_share_setopt 3 "8 Aug 2003" "libcurl 7.10.7" "libcurl 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);
+
+\fIdata\fP defines what data libcurl wants to lock, and you must make sure
that
+only one lock is given at any time 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.
+.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 this having to
+be used!
+.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. Support for this was
++added in 7.57.0, but the symbol existed long before this.
+.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<curl/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/gnurl_version_info.3
index 35d7f4522,000000000..18d3bd2f5
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_version_info.3
+++ b/docs/libcurl/gnurl_version_info.3
@@@ -1,180 -1,0 +1,188 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, 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 curl_version_info 3 "2 Nov 2014" "libcurl 7.40.0" "libcurl Manual"
+.SH NAME
+curl_version_info - returns run-time libcurl version info
+.SH SYNOPSIS
+.B #include <gnurl/curl.h>
+.sp
+.BI "curl_version_info_data *curl_version_info( CURLversion "type ");"
+.ad
+.SH DESCRIPTION
+Returns a pointer to a filled in static struct with information about various
+features in the running version of libcurl. \fItype\fP should be set to the
+version of this functionality by the time you write your program. This way,
+libcurl will always return a proper struct that your program understands,
+while programs in the future might get a different
+struct. \fBCURLVERSION_NOW\fP will be the most recent one for the library you
+have installed:
+
+ data = curl_version_info(CURLVERSION_NOW);
+
+Applications should use this information to judge if things are possible to do
+or not, instead of using compile-time checks, as dynamic/DLL libraries can be
+changed independent of applications.
+
+The curl_version_info_data struct looks like this
+
+.nf
+typedef struct {
+ CURLversion age; /* see description below */
+
+ /* when 'age' is 0 or higher, the members below also exist: */
+ const char *version; /* human readable string */
+ unsigned int version_num; /* numeric representation */
+ const char *host; /* human readable string */
+ int features; /* bitmask, see below */
+ char *ssl_version; /* human readable string */
+ long ssl_version_num; /* not used, always zero */
+ const char *libz_version; /* human readable string */
+ const char * const *protocols; /* protocols */
+
+ /* when 'age' is 1 or higher, the members below also exist: */
+ const char *ares; /* human readable string */
+ int ares_num; /* number */
+
+ /* when 'age' is 2 or higher, the member below also exists: */
+ const char *libidn; /* human readable string */
+
+ /* when 'age' is 3 or higher (7.16.1 or later), the members below also
+ exist */
+ int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */
+
+ const char *libssh_version; /* human readable string */
+
++ /* when 'age' is 4 or higher (7.57.0 or later), the members below also
++ exist */
++ unsigned int brotli_ver_num; /* Numeric Brotli version
++ (MAJOR << 24) | (MINOR << 12) | PATCH */
++ const char *brotli_version; /* human readable string. */
++
+} curl_version_info_data;
+.fi
+
+\fIage\fP describes what the age of this struct is. The number depends on how
+new the libcurl you're using is. You are however guaranteed to get a struct
+that you have a matching struct for in the header, as you tell libcurl your
+"age" with the input argument.
+
+\fIversion\fP is just an ascii string for the libcurl version.
+
+\fIversion_num\fP is a 24 bit number created like this: <8 bits major number>
+| <8 bits minor number> | <8 bits patch number>. Version 7.9.8 is therefore
+returned as 0x070908.
+
+\fIhost\fP is an ascii string showing what host information that this libcurl
+was built for. As discovered by a configure script or set by the build
+environment.
+
+\fIfeatures\fP can have none, one or more bits set, and the currently defined
+bits are:
+.RS
+.IP CURL_VERSION_IPV6
+supports IPv6
+.IP CURL_VERSION_KERBEROS4
+supports Kerberos V4 (when using FTP)
+.IP CURL_VERSION_KERBEROS5
+supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5
proxy
+(Added in 7.40.0)
+.IP CURL_VERSION_SSL
+supports SSL (HTTPS/FTPS) (Added in 7.10)
+.IP CURL_VERSION_LIBZ
+supports HTTP deflate using libz (Added in 7.10)
+.IP CURL_VERSION_NTLM
+supports HTTP NTLM (added in 7.10.6)
+.IP CURL_VERSION_GSSNEGOTIATE
+supports HTTP GSS-Negotiate (added in 7.10.6)
+.IP CURL_VERSION_DEBUG
+libcurl was built with debug capabilities (added in 7.10.6)
+.IP CURL_VERSION_CURLDEBUG
+libcurl was built with memory tracking debug capabilities. This is mainly of
+interest for libcurl hackers. (added in 7.19.6)
+.IP CURL_VERSION_ASYNCHDNS
+libcurl was built with support for asynchronous name lookups, which allows
+more exact timeouts (even on Windows) and less blocking when using the multi
+interface. (added in 7.10.7)
+.IP CURL_VERSION_SPNEGO
+libcurl was built with support for SPNEGO authentication (Simple and Protected
+GSS-API Negotiation Mechanism, defined in RFC 2478.) (added in 7.10.8)
+.IP CURL_VERSION_LARGEFILE
+libcurl was built with support for large files. (Added in 7.11.1)
+.IP CURL_VERSION_IDN
+libcurl was built with support for IDNA, domain names with international
+letters. (Added in 7.12.0)
+.IP CURL_VERSION_SSPI
+libcurl was built with support for SSPI. This is only available on Windows and
+makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and
+Digest authentication. It also allows libcurl to use the current user
+credentials without the app having to pass them on. (Added in 7.13.2)
+.IP CURL_VERSION_GSSAPI
+libcurl was built with support for GSS-API. This makes libcurl use provided
+functions for Kerberos and SPNEGO authentication. It also allows libcurl
+to use the current user credentials without the app having to pass them on.
+(Added in 7.38.0)
+.IP CURL_VERSION_CONV
+libcurl was built with support for character conversions, as provided by the
+CURLOPT_CONV_* callbacks. (Added in 7.15.4)
+.IP CURL_VERSION_TLSAUTH_SRP
+libcurl was built with support for TLS-SRP. (Added in 7.21.4)
+.IP CURL_VERSION_NTLM_WB
+libcurl was built with support for NTLM delegation to a winbind helper.
+(Added in 7.22.0)
+.IP CURL_VERSION_HTTP2
+libcurl was built with support for HTTP2.
+(Added in 7.33.0)
+.IP CURL_VERSION_UNIX_SOCKETS
+libcurl was built with support for Unix domain sockets.
+(Added in 7.40.0)
+.IP CURL_VERSION_PSL
+libcurl was built with support for Mozilla's Public Suffix List. This makes
+libcurl ignore cookies with a domain that's on the list.
+(Added in 7.47.0)
+.IP CURL_VERSION_HTTPS_PROXY
+libcurl was built with support for HTTPS-proxy.
+(Added in 7.52.0)
+.IP CURL_VERSION_MULTI_SSL
+libcurl was built with multiple SSL backends. For details, see
+\fIcurl_global_sslset(3)\fP.
+(Added in 7.56.0)
++.IP CURL_VERSION_BROTLI
++supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0)
+.RE
+\fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl
+has no SSL support, this is NULL.
+
+\fIssl_version_num\fP is always 0.
+
+\fIlibz_version\fP is an ASCII string (there is no numerical version). If
+libcurl has no libz support, this is NULL.
+
+\fIprotocols\fP is a pointer to an array of char * pointers, containing the
+names protocols that libcurl supports (using lowercase letters). The protocol
+names are the same as would be used in URLs. The array is terminated by a NULL
+entry.
+.SH RETURN VALUE
+A pointer to a curl_version_info_data struct.
+.SH "SEE ALSO"
+\fIcurl_version(3)\fP
+
diff --cc docs/libcurl/opts/GNURLINFO_HTTPAUTH_AVAIL.3
index 4937086ae,000000000..235abd03e
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_HTTPAUTH_AVAIL.3
+++ b/docs/libcurl/opts/GNURLINFO_HTTPAUTH_AVAIL.3
@@@ -1,69 -1,0 +1,70 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, 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 CURLINFO_HTTPAUTH_AVAIL 3 "12 Sep 2015" "libcurl 7.44.0"
"curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long
*authp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive a bitmask indicating the authentication
+method(s) available according to the previous response. The meaning of the
+bits is explained in the \fICURLOPT_HTTPAUTH(3)\fP option for
+\fIcurl_easy_setopt(3)\fP.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ res = curl_easy_perform(curl);
+
+ if(!res) {
+ /* extract the available authentication types */
+ long auth;
+ res = curl_easy_getinfo(curl, CURLINFO_HTTPAUTH_AVAIL, &auth);
+ if(!res) {
+ if(!auth)
+ printf("No auth available, perhaps no 401?\\n");
+ else {
+ printf("%s%s%s%s\\n",
+ auth & CURLAUTH_BASIC ? "Basic ":"",
+ auth & CURLAUTH_DIGEST ? "Digest ":"",
+ auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"",
+ auth % CURLAUTH_NTLM ? "NTLM ":"");
+ }
+ }
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
- Added in 7.10.8
++Added RFC2617 in 7.10.8
++Added RFC7616 in 7.57.0
+.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), "
diff --cc docs/libcurl/opts/GNURLINFO_PROXYAUTH_AVAIL.3
index ab404449c,000000000..429a8a25c
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_PROXYAUTH_AVAIL.3
+++ b/docs/libcurl/opts/GNURLINFO_PROXYAUTH_AVAIL.3
@@@ -1,70 -1,0 +1,71 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, 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 CURLINFO_PROXYAUTH_AVAIL 3 "12 Sep 2015" "libcurl 7.44.0"
"curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long
*authp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive a bitmask indicating the authentication
+method(s) available according to the previous response. The meaning of the
+bits is explained in the \fICURLOPT_PROXYAUTH(3)\fP option for
+\fIcurl_easy_setopt(3)\fP.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+ curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80");
+
+ res = curl_easy_perform(curl);
+
+ if(!res) {
+ /* extract the available proxy authentication types */
+ long auth;
+ res = curl_easy_getinfo(curl, CURLINFO_PROXYAUTH_AVAIL, &auth);
+ if(!res) {
+ if(!auth)
+ printf("No proxy auth available, perhaps no 407?\\n");
+ else {
+ printf("%s%s%s%s\\n",
+ auth & CURLAUTH_BASIC ? "Basic ":"",
+ auth & CURLAUTH_DIGEST ? "Digest ":"",
+ auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"",
+ auth % CURLAUTH_NTLM ? "NTLM ":"");
+ }
+ }
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
- Added in 7.10.8
++Added RFC2617 in 7.10.8
++Added RFC7616 in 7.57.0
+.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), "
diff --cc docs/libcurl/opts/GNURLOPT_RESOLVE.3
index 13fe1ea12,000000000..e321f000f
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/GNURLOPT_RESOLVE.3
@@@ -1,86 -1,0 +1,88 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2017, 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 CURLOPT_RESOLVE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt
options"
+.SH NAME
+CURLOPT_RESOLVE \- provide custom host name to IP address resolves
+.SH SYNOPSIS
+.nf
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
+ struct curl_slist *hosts);
+.SH DESCRIPTION
+Pass a pointer to a linked list of strings with host name resolve information
+to use for requests with this handle. The linked list should be a fully valid
+list of \fBstruct curl_slist\fP structs properly filled in. Use
+\fIcurl_slist_append(3)\fP to create the list and \fIcurl_slist_free_all(3)\fP
+to clean up an entire list.
+
+Each single name resolve string should be written using the format
+HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, PORT is
+the port number of the service where libcurl wants to connect to the HOST and
+ADDRESS is the numerical IP address. If libcurl is built to support IPv6,
+ADDRESS can of course be either IPv4 or IPv6 style addressing.
+
+This option effectively pre-populates the DNS cache with entries for the
+host+port pair so redirects and everything that operations against the
+HOST+PORT will instead use your provided ADDRESS. Addresses set with
+\fICURLOPT_RESOLVE(3)\fP will not time-out from the DNS cache like ordinary
+entries.
+
+The provided ADDRESS set by this option will be used even if
+\fICURLOPT_IPRESOLVE(3)\fP is set to make libcurl use another IP version.
+
+Remove names from the DNS cache again, to stop providing these fake resolves,
+by including a string in the linked list that uses the format
+\&"-HOST:PORT". The host name must be prefixed with a dash, and the host name
+and port number must exactly match what was already added previously.
++
++Support for providing the ADDRESS within [brackets] was added in 7.57.0.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl;
+struct curl_slist *host = NULL;
+host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+
+curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_perform(curl);
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+}
+
+curl_slist_free_all(host);
+.fi
+.SH AVAILABILITY
+Added in 7.21.3. Removal support added in 7.42.0.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_IPRESOLVE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "
CURLOPT_CONNECT_TO "(3), "
diff --cc lib/content_encoding.c
index b1a540f03,3d061375c..65e9ba2ec
--- a/lib/content_encoding.c
+++ b/lib/content_encoding.c
@@@ -22,13 -22,27 +22,27 @@@
#include "curl_setup.h"
- #ifdef HAVE_LIBZ
-
#include "urldata.h"
-#include <curl/curl.h>
+#include <gnurl/curl.h>
+ #include <stddef.h>
+
+ #ifdef HAVE_ZLIB_H
+ #include <zlib.h>
+ #ifdef __SYMBIAN32__
+ /* zlib pollutes the namespace with this definition */
+ #undef WIN32
+ #endif
+ #endif
+
+ #ifdef HAVE_BROTLI
+ #include <brotli/decode.h>
+ #endif
+
#include "sendf.h"
+ #include "http.h"
#include "content_encoding.h"
#include "strdup.h"
+ #include "strcase.h"
#include "curl_memory.h"
#include "memdebug.h"
diff --cc lib/sendf.c
index 799f0ce13,a1cb8e478..939bb7dea
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@@ -22,7 -22,11 +22,11 @@@
#include "curl_setup.h"
+ #ifdef HAVE_LINUX_TCP_H
+ #include <linux/tcp.h>
+ #endif
+
-#include <curl/curl.h>
+#include <gnurl/curl.h>
#include "urldata.h"
#include "sendf.h"
diff --cc lib/share.h
index 59a4a14f0,4b13406d9..c0d0a5189
--- a/lib/share.h
+++ b/lib/share.h
@@@ -23,9 -23,10 +23,10 @@@
***************************************************************************/
#include "curl_setup.h"
-#include <curl/curl.h>
+#include <gnurl/curl.h>
#include "cookie.h"
#include "urldata.h"
+ #include "conncache.h"
/* SalfordC says "A structure member may not be volatile". Hence:
*/
diff --cc lib/urldata.h
index fc9549608,edd1fd9ac..f008dd44e
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@@ -88,15 -88,7 +88,7 @@@
#include "timeval.h"
- #ifdef HAVE_ZLIB_H
- #include <zlib.h> /* for content-encoding */
- #ifdef __SYMBIAN32__
- /* zlib pollutes the namespace with this definition */
- #undef WIN32
- #endif
- #endif
-
-#include <curl/curl.h>
+#include <gnurl/curl.h>
#include "http_chunks.h" /* for the structs and enum stuff */
#include "hostip.h"
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnurl] 84/116: macOS: Fix missing connectx function with Xcode version older than 9.0, (continued)
- [GNUnet-SVN] [gnurl] 84/116: macOS: Fix missing connectx function with Xcode version older than 9.0, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 105/116: test: add test for bad UNC/SMB path in file: URL, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 93/116: http2: fix "Value stored to 'end' is never read" scan-build error, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 94/116: Curl_open: fix OOM return error correctly, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 113/116: openssl: fix boringssl build again, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 110/116: global_init: ignore CURL_GLOBAL_SSL's absense, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 114/116: THANKS: added contributors from 7.57.0 release, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 88/116: ntlm: remove unnecessary NULL-check to please scan-build, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 112/116: curl_ntlm_core.c: use the limits.h's SIZE_T_MAX if provided, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 107/116: url: fix alignment of ssl_backend_data struct, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 116/116: Merge tag 'curl-7_57_0',
gnunet <=
- [GNUnet-SVN] [gnurl] 111/116: libcurl-share.3: the connection cache is shareable now, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 102/116: metalink: fix memory-leak and NULL pointer dereference, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 109/116: ntlm: avoid integer overflow for malloc size, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 115/116: RELEASE-NOTES: curl 7.57.0, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 104/116: test: add tests to ensure basic file: URLs, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 100/116: make: fix "make distclean", gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 90/116: mime: fix "Value stored to 'sz' is never read" scan-build error, gnunet, 2017/12/05
- [GNUnet-SVN] [gnurl] 74/116: setopt: split out curl_easy_setopt() to its own file, gnunet, 2017/12/05