diff --git a/libraries/curl/.gitattributes b/libraries/curl/.gitattributes index a7b3f6a28..429f8cde0 100644 --- a/libraries/curl/.gitattributes +++ b/libraries/curl/.gitattributes @@ -3,3 +3,5 @@ buildconf eol=lf configure.ac eol=lf *.m4 eol=lf *.in eol=lf +*.am eol=lf +*.sh eol=lf diff --git a/libraries/curl/.gitignore b/libraries/curl/.gitignore index 83e750860..e567b38c4 100644 --- a/libraries/curl/.gitignore +++ b/libraries/curl/.gitignore @@ -1,51 +1,58 @@ -.deps -.libs -*.lib -*.pdb +*.asc *.dll *.exe -*.obj -*.asc -.*.swp -Debug -Release *.exp +*.la +*.lib +*.lo +*.o +*.obj +*.pdb +*.pyc +*~ +.*.sw? +.cproject +.deps +.dirstamp +.libs +.project +.settings +/.vs +/build/ +/builds/ +__pycache__ +CHANGES.dist +Debug +INSTALL Makefile Makefile.in +Release +TAGS aclocal.m4 +aclocal.m4.bak autom4te.cache +compile config.cache config.guess config.log config.status config.sub configure +curl-*.tar.bz2 +curl-*.tar.gz +curl-*.tar.xz +curl-*.zip +curl-config depcomp +install-sh +libcurl.pc libtool ltmain.sh -compile -curl-config -libcurl.pc missing -curl-*.tar.gz -curl-*.tar.bz2 -curl-*.tar.lzma -curl-*.zip -INSTALL -install-sh -*.o -*.lo -*.la mkinstalldirs tags -TAGS -*~ -aclocal.m4.bak -CHANGES.dist -.project -.cproject -.settings -.dirstamp test-driver -/build/ -/builds/ +scripts/_curl +curl_fuzzer +curl_fuzzer_seed_corpus.zip +libstandaloneengine.a diff --git a/libraries/curl/.travis.yml b/libraries/curl/.travis.yml index b97655f73..8db95272f 100644 --- a/libraries/curl/.travis.yml +++ b/libraries/curl/.travis.yml @@ -1,13 +1,201 @@ language: c +sudo: required +addons: + apt: + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.7 + packages: + - cmake + - gcc-4.8 + - lcov + - clang-3.7 + - valgrind + - libev-dev + - libc-ares-dev + - g++-4.8 + - libstdc++-4.8-dev + - stunnel4 + - libidn2-0-dev + - libssh2-1-dev + - krb5-user + +matrix: + include: + - os: linux + compiler: gcc + dist: trusty + env: T=normal C=--with-gssapi + - os: linux + compiler: gcc + dist: trusty + env: T=normal C="--disable-http --disable-smtp --disable-imap" + - os: linux + compiler: gcc + dist: trusty + env: T=normal C=--enable-ares + - os: linux + compiler: gcc + dist: trusty + env: T=normal BROTLI=yes + - os: linux + compiler: clang + dist: trusty + env: T=debug + - os: osx + compiler: gcc + env: T=debug + - os: osx + compiler: gcc + env: T=debug C=--enable-ares + - os: osx + compiler: gcc + env: T=debug C="--with-ssl=/usr/local/opt/openssl --with-libmetalink" + - os: osx + compiler: gcc + env: T=debug C="--with-ssl=/usr/local/opt/libressl --with-libmetalink" + - os: osx + compiler: clang + env: T=debug C="--without-ssl --with-darwinssl --with-libmetalink" + - os: osx + compiler: clang + env: T=normal + - os: linux + compiler: gcc + dist: trusty + env: T=cmake + - os: linux + compiler: clang + dist: trusty + env: T=cmake + - os: linux + compiler: gcc + dist: precise + env: T=coverage + - os: linux + compiler: gcc + dist: trusty + env: T=distcheck + - os: linux + compiler: clang + dist: trusty + env: T=fuzzer + +install: + - pip install --user cpp-coveralls + - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update > /dev/null; fi + - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew reinstall libtool > /dev/null; fi + - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install rtmpdump libssh2 c-ares libmetalink libressl nghttp2 libmetalink; fi + - if [ $TRAVIS_OS_NAME = linux ]; then + curl -L https://github.com/nghttp2/nghttp2/releases/download/v1.24.0/nghttp2-1.24.0.tar.gz | + tar xzf - && + (cd nghttp2-1.24.0 && CXX="g++-4.8" ./configure --prefix=/usr --disable-threads --enable-app && make && sudo make install); + fi before_script: - - ./buildconf + - ./buildconf + - | + # No brotli package available for Trusty. Download & compile from source. + # Cannot be done in the install script because cmake is needed. + if [ "$TRAVIS_OS_NAME" = linux -a "$BROTLI" ]; then + curl -L https://github.com/google/brotli/archive/v1.0.1.tar.gz | + tar xzf - && + ( + cd brotli-1.0.1 && + cmake . -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib && + make && + sudo make install + ) + fi -script: ./configure --enable-debug && make && make test-full +script: + - | + # Uncomment this when `coverage` runs on Trusty. + # set -eo pipefail + if [ "$T" = "coverage" ]; then + export CC="gcc-4.8" + ./configure --enable-debug --disable-shared --enable-code-coverage + make + make TFLAGS=-n test-nonflaky + tests="1 2 3 4 5 6 7 8 9 10 200 201 202 300 301 302 500 501 502 503 504 506 507 508 509 510 511 512 513 514 515 516 517 518 519 600 601 800 801 802 803 900 901 902 903 1000 1001 1002 1004 1302 1303 1304 1305 1306 1308 1400 1401 1402 1404 1450 1451 1452 1502 1507 1508 1600 1602 1603 1605" + make "TFLAGS=-n -e $tests" test-nonflaky + make "TFLAGS=-n -t $tests" test-nonflaky + coveralls --gcov /usr/bin/gcov-4.8 --gcov-options '\-lp' -i src -e lib -e tests -e docs -b $PWD/src + coveralls --gcov /usr/bin/gcov-4.8 --gcov-options '\-lp' -e src -i lib -e tests -e docs -b $PWD/lib + fi + - | + set -eo pipefail + if [ "$T" = "debug" ]; then + ./configure --enable-debug --enable-werror $C + make && make examples + make TFLAGS=-n test-nonflaky + fi + - | + set -eo pipefail + if [ "$T" = "normal" ]; then + ./configure --enable-warnings --enable-werror $C + make && make examples + make test-nonflaky + fi + - | + set -eo pipefail + if [ "$T" = "cmake" ]; then + mkdir build + cd build + cmake .. + make + fi + - | + set -eo pipefail + if [ "$T" = "distcheck" ]; then + ./configure + make + ./maketgz 99.98.97 + # verify in-tree build - and install it + (tar xf curl-99.98.97.tar.gz && \ + cd curl-99.98.97 && \ + ./configure --prefix=$HOME/temp && \ + make && \ + make TFLAGS=1 test && \ + make install) + # basic check of the installed files + bash scripts/installcheck.sh $HOME/temp + rm -rf curl-99.98.97 + # verify out-of-tree build + (tar xf curl-99.98.97.tar.gz && \ + mkdir build && \ + cd build && \ + ../curl-99.98.97/configure && \ + make && \ + make TFLAGS=1 test) + # verify cmake build + rm -rf curl-99.98.97 + (tar xf curl-99.98.97.tar.gz && \ + cd curl-99.98.97 && \ + mkdir build && \ + cd build && \ + cmake .. && \ + make) + fi + - | + set -eo pipefail + if [ "$T" = "fuzzer" ]; then + # Download the fuzzer to a temporary folder + ./tests/fuzz/download_fuzzer.sh /tmp/curl_fuzzer -compiler: - - clang - - gcc + export CURLSRC=$PWD + + # Run the mainline fuzzer test + pushd /tmp/curl_fuzzer + ./mainline.sh ${CURLSRC} + popd + fi + +# whitelist branches to avoid testing feature branches twice (as branch and as pull request) +branches: + only: + - master notifications: email: false diff --git a/libraries/curl/CHANGES b/libraries/curl/CHANGES index a6305b5ef..4d13ef696 100644 --- a/libraries/curl/CHANGES +++ b/libraries/curl/CHANGES @@ -1,6852 +1,7 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| +See https://curl.haxx.se/changes.html for the edited and human readable online +version of what has changed over the years in different curl releases. - Changelog +Generate a CHANGES file like the one present in every release like this: -Version 7.56.0 (4 Oct 2017) - -Daniel Stenberg (4 Oct 2017) -- RELEASE-NOTES: curl 7.56.0 - -- THANKS: added new 7.56.0 contributors - -Jay Satiro (4 Oct 2017) -- build-openssl.bat: Warn OpenSSL 1.1.0 not yet supported - - Ref: https://github.com/curl/curl/issues/1002 - -Michael Kaufmann (3 Oct 2017) -- idn: fix source code comment - -- vtls: compare and clone ssl configs properly - - Compare these settings in Curl_ssl_config_matches(): - - verifystatus (CURLOPT_SSL_VERIFYSTATUS) - - random_file (CURLOPT_RANDOM_FILE) - - egdsocket (CURLOPT_EGDSOCKET) - - Also copy the setting "verifystatus" in Curl_clone_primary_ssl_config(), - and copy the setting "sessionid" unconditionally. - - This means that reusing connections that are secured with a client - certificate is now possible, and the statement "TLS session resumption - is disabled when a client certificate is used" in the old advisory at - https://curl.haxx.se/docs/adv_20170419.html is obsolete. - - Reviewed-by: Daniel Stenberg - - Closes #1917 - -- proxy: read the "no_proxy" variable only if necessary - - Reviewed-by: Daniel Stenberg - - Closes #1919 - -Patrick Monnerat (3 Oct 2017) -- libcurl-tutorial: add casts in example to avoid compilation warnings. - -Daniel Stenberg (3 Oct 2017) -- examples: bring back curl_formadd-using examples - - ... now with a -formadd suffix. While the new mime API is introduced in - 7.56.0 we must acknowledge that lots of users can't upgrade their curl - versions immediately. - -- test1153: verify quoted double-qoutes in PWD response - -- FTP: zero terminate the entry path even on bad input - - ... a single double quote could leave the entry path buffer without a zero - terminating byte. CVE-2017-1000254 - - Test 1152 added to verify. - - Reported-by: Max Dymond - Bug: https://curl.haxx.se/docs/adv_20171004.html - -Jay Satiro (2 Oct 2017) -- [Sergei Nikulov brought this change] - - cmake: disable tests and man generation if perl/nroff not found - - Fixes https://github.com/curl/curl/issues/1500 - Reported-by: Jay Satiro - - Fixes https://github.com/curl/curl/pull/1662 - Assisted-by: Tom Seddon - Assisted-by: dpull@users.noreply.github.com - Assisted-by: elelel@users.noreply.github.com - - Closes https://github.com/curl/curl/pull/1924 - -Patrick Monnerat (2 Oct 2017) -- libcurl-tutorial: fix two typos. - -- TODO: remove deprecated form API items. - -- libcurl-tutorial: describe MIME API and deprecate form API. - - Include a guide to form/mime API conversion. - -Daniel Stenberg (30 Sep 2017) -- cookie: fix memory leak if path was set twice in header - - ... this will let the second occurance override the first. - - Added test 1161 to verify. - - Reported-by: Max Dymond - Fixes #1932 - Closes #1933 - -Dan Fandrich (30 Sep 2017) -- test650: Use variable replacement to set the host address and port - - Otherwise, the test fails when the -b test option is used to set a - different test port range. - -- Set and use more necessary options when some protocols are disabled - - When curl and libcurl are built with some protocols disabled, they stop - setting and receiving some options that don't make sense with those - protocols. In particular, when HTTP is disabled many options aren't set - that are used only by HTTP. However, some options that appear to be - HTTP-only are actually used by other protocols as well (some despite - having HTTP in the name) and should be set, but weren't. This change now - causes some of these options to be set and used for more (or for all) - protocols. In particular, this fixes tests 646 through 649 in an - HTTP-disabled build, which use the MIME API in the mail protocols. - -Daniel Stenberg (29 Sep 2017) -- test1160: verifies cookie leak for large cookies - - The fix done in 20ea22ff735 - -- cookie: fix memory leak on oversized rejection - - Regression brought by 2bc230de63b - - Detected by OSS-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3513 - Assisted-by: Max Dymond - - Closes #1930 - -- [Anders Bakken brought this change] - - connect: fix race condition with happy eyeballs timeout - - The timer should be started after conn->connecttime is set. Otherwise - the timer could expire without this condition being true: - - /* should we try another protocol family? */ - if(i == 0 && conn->tempaddr[1] == NULL && - curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) { - - Ref: #1928 - -Michael Kaufmann (28 Sep 2017) -- docs: link CURLOPT_CONNECTTIMEOUT and CURLOPT_CONNECTTIMEOUT_MS - - Closes #1922 - -- docs: clarify the use of environment variables for proxy - - Closes #1921 - -- http: add custom empty headers to repeated requests - - Closes #1920 - -- reuse_conn: don't copy flags that are known to be equal - - A connection can only be reused if the flags "conn_to_host" and - "conn_to_port" match. Therefore it is not necessary to copy these flags - in reuse_conn(). - - Closes #1918 - -Daniel Stenberg (27 Sep 2017) -- curl.h: include on cygwin too - - When building with -std=c++14 on cygwin, this header won't be - automatically included as it otherwise is. - - The include decision should ideally be reversed and be - avoided where that header file doesn't exist. - - Reported-by: Ian Fette - Fixes #1925 - -- RELEASE-NOTES: synced with d8ab5dc50 - -Michael Kaufmann (24 Sep 2017) -- tests: adjust .gitignore for new tests - -Jay Satiro (23 Sep 2017) -- ntlm: move NTLM_NEEDS_NSS_INIT define into core NTLM header - - .. and include the core NTLM header in all NTLM-related source files. - - Follow up to 6f86022. Since then http_ntlm checks NTLM_NEEDS_NSS_INIT - but did not include vtls.h where it was defined. - - Closes https://github.com/curl/curl/pull/1911 - -Daniel Stenberg (23 Sep 2017) -- file_range: avoid integer overflow when figuring out byte range - - When trying to bump the value with one and the value is already at max, - it causes an integer overflow. - - Closes #1908 - Detected by oss-fuzz: - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3465 - - Assisted-by: Max Dymond - -Michael Kaufmann (23 Sep 2017) -- tests: fix a compiler warning in test 643 - -Jay Satiro (23 Sep 2017) -- symbols-in-versions: fix CURLSSLSET_NO_BACKENDS entry - - - Use spaces instead of tabs as the delimiter. - - Follow up to 7c52b12 which added the entry. The entry had used tabs but - the symbol-scan parser doesn't recognize tabs and would fail the symbol. - -Viktor Szakats (22 Sep 2017) -- metalink: fix NSS issue in MultiSSL builds - - In MultiSSL mode (i.e. when more than one SSL backend is compiled - in), we cannot use the compile time flag `USE_NSS` as indicator that - the NSS backend is in use. As far as Metalink is concerned, the SSL - backend is only used for MD5, SHA-1 and SHA-256 calculations, - therefore one of the available SSL backends is selected at compile - time, in a strict order of preference. - - Let's introduce a new `HAVE_NSS_CONTEXT` constant that can be used - to determine whether the SSL backend used for Metalink is the NSS - backend, and use that to guard the code that wants to de-initialize - the NSS-specific data structure. - - Ref: https://github.com/curl/curl/pull/1848 - -- ntlm: use strict order for SSL backend #if branches - - With the recently introduced MultiSSL support multiple SSL backends - can be compiled into cURL That means that now the order of the SSL - - One option would be to use the same SSL backend as was configured - via `curl_global_sslset()`, however, NTLMv2 support would appear - to be available only with some SSL backends. For example, when - eb88d778e (ntlm: Use Windows Crypt API, 2014-12-02) introduced - support for NTLMv1 using Windows' Crypt API, it specifically did - *not* introduce NTLMv2 support using Crypt API at the same time. - - So let's select one specific SSL backend for NTLM support when - compiled with multiple SSL backends, using a priority order such - that we support NTLMv2 even if only one compiled-in SSL backend can - be used for that. - - Ref: https://github.com/curl/curl/pull/1848 - -Daniel Stenberg (22 Sep 2017) -- symbols-in-versions: add CURLSSLSET_NO_BACKENDS - - ...fixup from b8e0fe19ec - -- imap: quote atoms properly when escaping characters - - Updates test 800 to verify - - Fixes #1902 - Closes #1903 - -- tests: make the imap server not verify user+password - - ... as the test cases themselves do that and it makes it easier to add - crazy test cases. - - Test 800 updated to use user name + password that need quoting. - - Test 856 updated to trigger an auth fail differently. - - Ref: #1902 - -- vtls: provide curl_global_sslset() even in non-SSL builds - - ... it just returns error: - - Bug: https://github.com/curl/curl/commit/1328f69d53f2f2e937696ea954c480412b018451#commitcomment-24470367 - Reported-by: Marcel Raad - - Closes #1906 - -Patrick Monnerat (22 Sep 2017) -- form/mime: field names are not allowed to contain zero-valued bytes. - - Also suppress length argument of curl_mime_name() (names are always - zero-terminated). - -Daniel Stenberg (21 Sep 2017) -- [Dirk Feytons brought this change] - - openssl: only verify RSA private key if supported - - In some cases the RSA key does not support verifying it because it's - located on a smart card, an engine wants to hide it, ... - Check the flags on the key before trying to verify it. - OpenSSL does the same thing internally; see ssl/ssl_rsa.c - - Closes #1904 - -Marcel Raad (21 Sep 2017) -- examples/post-callback: use long for CURLOPT_POSTFIELDSIZE - - Otherwise, typecheck-gcc.h warns on MinGW-w64. - -Patrick Monnerat (20 Sep 2017) -- mime: rephrase the multipart output state machine (#1898) ... - - ... in hope coverity will like it much. - -- mime: fix an explicit null dereference (#1899) - -Daniel Stenberg (20 Sep 2017) -- curl: check fseek() return code and bail on error - - Detected by coverity. CID 1418137. - -- smtp: fix memory leak in OOM - - Regression since ce0881edee - - Coverity CID 1418139 and CID 1418136 found it, but it was also seen in - torture testing. - -- RELEASE-NOTES: synced with 5fe85587c - -- [Pavel P brought this change] - - cookies: use lock when using CURLINFO_COOKIELIST - - Closes #1896 - -- [Max Dymond brought this change] - - ossfuzz: changes before merging the generated corpora - - Before merging in the oss-fuzz corpora from Google, there are some changes - to the fuzzer. - - Add a read corpus script, to display corpus files nicely. - - Change the behaviour of the fuzzer so that TLV parse failures all now - go down the same execution paths, which should reduce the size of the - corpora. - - Make unknown TLVs a failure to parse, which should decrease the size - of the corpora as well. - - Closes #1881 - -- mime:escape_string minor clarification change - - ... as it also removes a warning with old gcc versions. - - Bug: https://curl.haxx.se/mail/lib-2017-09/0049.html - Reported-by: Ben Greear - -- [Max Dymond brought this change] - - ossfuzz: don't write out to stdout - - Don't make the fuzzer write out to stdout - instead write some of the - contents to a memory block so we exercise the data output code but - quietly. - - Closes #1885 - -- cookies: reject oversized cookies - - ... instead of truncating them. - - There's no fixed limit for acceptable cookie names in RFC 6265, but the - entire cookie is said to be less than 4096 bytes (section 6.1). This is - also what browsers seem to implement. - - We now allow max 5000 bytes cookie header. Max 4095 bytes length per - cookie name and value. Name + value together may not exceed 4096 bytes. - - Added test 1151 to verify - - Bug: https://curl.haxx.se/mail/lib-2017-09/0062.html - Reported-by: Kevin Smith - - Closes #1894 - -- travis: on mac, don't install openssl or libidn - - - openssl is already installed and causes warnings when trying to - install again - - - libidn isn't used these days, and homebrew doesn't seem to have a - libidn2 package to replace with easily - - Closes #1895 - -- curl: make str2udouble not return values on error - - ... previously it would store a return value even when it returned - error, which could make the value get used anyway! - - Reported-by: Brian Carpenter - Closes #1893 - -Jay Satiro (18 Sep 2017) -- socks: fix incorrect port number in SOCKS4 error message - - Prior to this change it appears the SOCKS5 port parsing was erroneously - used for the SOCKS4 error message, and as a result an incorrect port - would be shown in the error message. - - Bug: https://github.com/curl/curl/issues/1892 - Reported-by: Jackarain@users.noreply.github.com - -- [Marc Aldorasi brought this change] - - schannel: Support partial send for when data is too large - - Schannel can only encrypt a certain amount of data at once. Instead of - failing when too much data is to be sent at once, send as much data as - we can and let the caller send the remaining data by calling send again. - - Bug: https://curl.haxx.se/mail/lib-2014-07/0033.html - - Closes https://github.com/curl/curl/pull/1890 - -- [David Benjamin brought this change] - - openssl: add missing includes - - lib/vtls/openssl.c uses OpenSSL APIs from BUF_MEM and BIO APIs. Include - their headers directly rather than relying on other OpenSSL headers - including things. - - Closes https://github.com/curl/curl/pull/1891 - -Daniel Stenberg (15 Sep 2017) -- conversions: fix several compiler warnings - -- server/getpart: provide dummy function to build conversion enabled - -- non-ascii: use iconv() with 'char **' argument - - Bug: https://curl.haxx.se/mail/lib-2017-09/0031.html - -- escape.c: error: pointer targets differ in signedness - -- docs: clarify the CURLOPT_INTERLEAVE* options behavior - -- [Max Dymond brought this change] - - rtsp: Segfault in rtsp.c when using WRITEDATA - - If the INTERLEAVEFUNCTION is defined, then use that plus the - INTERLEAVEDATA information when writing RTP. Otherwise, use - WRITEFUNCTION and WRITEDATA. - - Fixes #1880 - Closes #1884 - -Marcel Raad (15 Sep 2017) -- [Isaac Boukris brought this change] - - tests: enable gssapi in travis-ci linux build - - Closes https://github.com/curl/curl/pull/1687 - -- [Isaac Boukris brought this change] - - tests: add initial gssapi test using stub implementation - - The stub implementation is pre-loaded using LD_PRELOAD - and emulates common gssapi uses (only builds if curl is - initially built with gssapi support). - - The initial tests are currently disabled for debug builds - as LD_PRELOAD is not used then. - - Ref: https://github.com/curl/curl/pull/1687 - -Daniel Stenberg (15 Sep 2017) -- test1150: verify same host fetch using different ports over proxy - - Closes #1889 - -- URL: on connection re-use, still pick the new remote port - - ... as when a proxy connection is being re-used, it can still get a - different remote port. - - Fixes #1887 - Reported-by: Oli Kingshott - -- RELEASE-NOTES: synced with 87501e57f - -- code style: remove wrong uses of multiple spaces - - Closes #1878 - -- checksrc: detect and warn for multiple spaces - -- code style: use space after semicolon - -- checksrc: verify space after semicolons - -- code style: use spaces around pluses - -- checksrc: detect and warn for lack of spaces next to plus signs - -- code style: use spaces around equals signs - -- checksrc: verify spaces around equals signs - - ... as the code style mandates. - -- Curl_checkheaders: make it available for IMAP and SMTP too - - ... not only HTTP uses this now. - - Closes #1875 - -- travis: add build without HTTP/SMTP/IMAP - -Jay Satiro (10 Sep 2017) -- mbedtls: enable CA path processing - - CA path processing was implemented when mbedtls.c was added to libcurl - in fe7590f, but it was never enabled. - - Bug: https://github.com/curl/curl/issues/1877 - Reported-by: SBKarr@users.noreply.github.com - -Daniel Stenberg (8 Sep 2017) -- rtsp: do not call fwrite() with NULL pointer FILE * - - If the default write callback is used and no destination has been set, a - NULL pointer would be passed to fwrite()'s 4th argument. - - OSS-fuzz bug https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3327 - (not publicly open yet) - - Detected by OSS-fuzz - Closes #1874 - -- configure: use -Wno-varargs on clang 3.9[.X] debug builds - - ... to avoid a clang bug - -- [Max Dymond brought this change] - - ossfuzz: add some more handled CURL options - - Add support for HEADER, COOKIE, RANGE, CUSTOMREQUEST, MAIL_RECIPIENT, - MAIL_FROM and uploading data. - -- configure: check for C++ compiler after C, to make it non-fatal - - The tests for object file/executable file extensions are presumably only - done for the first of these macros in the configure file. - - Bug: https://github.com/curl/curl/pull/1851#issuecomment-327597515 - Reported-by: Marcel Raad - Closes #1873 - -Patrick Monnerat (7 Sep 2017) -- form API: add new test 650. - - Now that the form API is deprecated and not used anymore in curl tool, - a lot of its features left untested. Test 650 attempts to check all these - features not tested elsewhere. - -Jay Satiro (7 Sep 2017) -- configure: fix curl_off_t check's include order - - - Prepend srcdir include path instead of append. - - Prior to this change it was possible that during the check for the size - of curl_off_t the include path of a user's already installed curl could - come before the include path of the to-be-built curl, resulting in the - system.h of the former being incorrectly included for that check. - - Closes https://github.com/curl/curl/pull/1870 - -Daniel Stenberg (7 Sep 2017) -- [Jakub Zakrzewski brought this change] - - KNOWN_BUGS: Remove CMake symbol hiding issue - - It has already been fixed in 6140dfc - -- http-proxy: when not doing CONNECT, that phase is done immediately - - `conn->connect_state` is NULL when doing a regular non-CONNECT request - over the proxy and should therefor be considered complete at once. - - Fixes #1853 - Closes #1862 - Reported-by: Lawrence Wagerfield - -- [Johannes Schindelin brought this change] - - OpenSSL: fix yet another mistake while encapsulating SSL backend data - - Another mistake in my manual fixups of the largely mechanical - search-and-replace ("connssl->" -> "BACKEND->"), just like the previous - commit concerning HTTPS proxies (and hence not caught during my - earlier testing). - - Fixes #1855 - Closes #1871 - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - OpenSSL: fix erroneous SSL backend encapsulation - - In d65e6cc4f (vtls: prepare the SSL backends for encapsulated private - data, 2017-06-21), this developer prepared for a separation of the - private data of the SSL backends from the general connection data. - - This conversion was partially automated (search-and-replace) and - partially manual (e.g. proxy_ssl's backend data). - - Sadly, there was a crucial error in the manual part, where the wrong - handle was used: rather than connecting ssl[sockindex]' BIO to the - proxy_ssl[sockindex]', we reconnected proxy_ssl[sockindex]. The reason - was an incorrect location to paste "BACKEND->"... d'oh. - - Reported by Jay Satiro in https://github.com/curl/curl/issues/1855. - - Signed-off-by: Johannes Schindelin - -- [Jay Satiro brought this change] - - vtls: fix memory corruption - - Ever since 70f1db321 (vtls: encapsulate SSL backend-specific data, - 2017-07-28), the code handling HTTPS proxies was broken because the - pointer to the SSL backend data was not swapped between - conn->ssl[sockindex] and conn->proxy_ssl[sockindex] as intended, but - instead set to NULL (causing segmentation faults). - - [jes: provided the commit message, tested and verified the patch] - - Signed-off-by: Johannes Schindelin - -- vtls: switch to CURL_SHA256_DIGEST_LENGTH define - - ... instead of the prefix-less version since WolfSSL 3.12 now uses an - enum with that name that causes build failures for us. - - Fixes #1865 - Closes #1867 - Reported-by: Gisle Vanem - -- travis: add c-ares enabled builds linux + osx - - Closes #1868 - -- HISTORY: added some recent items - -Jay Satiro (6 Sep 2017) -- SSL: fix unused parameter warnings - -Patrick Monnerat (6 Sep 2017) -- mime: drop internal FILE * support. - - - The part kind MIMEKIND_FILE and associated code are suppressed. - - Seek data origin offset not used anymore: suppressed. - - MIMEKIND_NAMEDFILE renamed MIMEKIND_FILE; associated fields/functions - renamed accordingly. - - Curl_getformdata() processes stdin via a callback. - -Daniel Stenberg (6 Sep 2017) -- configure: remove --enable-soname-bump and SONAME_BUMP - - Back in 2008, (and commit 3f3d6ebe665f3) we changed the logic in how we - determine the native type for `curl_off_t`. To really make sure we - didn't break ABI without bumping SONAME, we introduced logic that - attempted to detect that it would use a different size and thus not be - compatible. We also provided a manual switch that allowed users to tell - configure to bump SONAME by force. - - Today, we know of no one who ever got a SONAME bump auto-detected and we - don't know of anyone who's using the manual bump feature. The auto- - detection is also no longer working since we introduced defining - curl_off_t in system.h (7.55.0). - - Finally, this bumping logic is not present in the cmake build. - - Closes #1861 - -Jay Satiro (6 Sep 2017) -- [Gisle Vanem brought this change] - - vtls: select ssl backend case-insensitive (follow-up) - - - Do a case-insensitive comparison of CURL_SSL_BACKEND env as well. - - - Change Curl_strcasecompare calls to strcasecompare - (maps to the former but shorter). - - Follow-up to c290b8f. - - Bug: https://github.com/curl/curl/commit/c290b8f#commitcomment-24094313 - - Co-authored-by: Jay Satiro - -- openssl: Integrate Peter Wu's SSLKEYLOGFILE implementation - - This is an adaptation of 2 of Peter Wu's SSLKEYLOGFILE implementations. - - The first one, written for old OpenSSL versions: - https://git.lekensteyn.nl/peter/wireshark-notes/tree/src/sslkeylog.c - - The second one, written for BoringSSL and new OpenSSL versions: - https://github.com/curl/curl/pull/1346 - - Note the first one is GPL licensed but the author gave permission to - waive that license for libcurl. - - As of right now this feature is disabled by default, and does not have - a configure option to enable it. To enable this feature define - ENABLE_SSLKEYLOGFILE when building libcurl and set environment - variable SSLKEYLOGFILE to a pathname that will receive the keys. - - And in Wireshark change your preferences to point to that key file: - Edit > Preferences > Protocols > SSL > Master-Secret - - Co-authored-by: Peter Wu - - Ref: https://github.com/curl/curl/pull/1030 - Ref: https://github.com/curl/curl/pull/1346 - - Closes https://github.com/curl/curl/pull/1866 - -Patrick Monnerat (5 Sep 2017) -- mime: fix a trivial warning. - -- mime: replace 'struct Curl_mimepart' by 'curl_mimepart' in encoder code. - - mime_state is now a typedef. - -- mime: implement encoders. - - curl_mime_encoder() is operational and documented. - curl tool -F option is extended with ";encoder=". - curl tool --libcurl option generates calls to curl_mime_encoder(). - New encoder tests 648 & 649. - Test 1404 extended with an encoder specification. - -- runtests.pl: support attribute "nonewline" in part verify/upload. - -- [Daniel Stenberg brought this change] - - fixup data/test1135 - -- [Daniel Stenberg brought this change] - - mime: unified to use the typedef'd mime structs everywhere - - ... and slightly edited to follow our code style better. - -- [Daniel Stenberg brought this change] - - curl.h: use lower case curl_mime* as for all public symbols - -- [Daniel Stenberg brought this change] - - docs/curl_mime_*.3: use correct variable types in examples - -Kamil Dudka (5 Sep 2017) -- openssl: use OpenSSL's default ciphers by default - - Up2date versions of OpenSSL maintain the default reasonably secure - without breaking compatibility, so it is better not to override the - default by curl. Suggested at https://bugzilla.redhat.com/1483972 - - Closes #1846 - -Viktor Szakats (5 Sep 2017) -- examples/mime: minor example code fixes - -Daniel Stenberg (5 Sep 2017) -- docs/curl_mime_*.3: added examples - -- configure: add MultiSSL to FEATURES when enabled - - ...for curl-config and its corresponding test 1014 - -- http-proxy: treat all 2xx as CONNECT success - - Added test 1904 to verify. - - Reported-by: Lawrence Wagerfield - Fixes #1859 - Closes #1860 - -- MAIL-ETIQUETTE: added "1.9 Your emails are public" - -- curl.h: fix "unused checksrc ignore", remove dangling reference - - ... to a README file that doesn't exist anymore - -Viktor Szakats (4 Sep 2017) -- docs: Update to secure URL versions - -- mime: use CURL_ZERO_TERMINATED in examples - - and some minor whitespace fixes - -Daniel Stenberg (4 Sep 2017) -- schannel: return CURLE_SSL_CACERT on failed verification - - ... not *CACERT_BADFILE as it isn't really because of a bad file. - - Bug: https://curl.haxx.se/mail/lib-2017-09/0002.html - Closes #1858 - -- test1135: fixed after bd8070085f9 - -- examples/post-callback: stop returning one byte at a time - - ... since people copy and paste code from this example and thus they get - an inefficient POST operation without a good reason and sometimes - without understanding why. - - Instead this now returns as much data as possible. - -- RELEASE-NOTES: fixed the function counter script - -- curl.h: make the curl_strequal() protos use the same style - - ... as the other functions. Makes it easier to machine-parse! - -- docs: curl_mime_*.3 man page formatting edits - -- RELEASE-NOTES: synced with 1ab9e9b50 - -Patrick Monnerat (4 Sep 2017) -- lib: bump version info (soname). Adapt and reenable test 1135. - -Daniel Stenberg (3 Sep 2017) -- headers: move the global_sslset() proto from multi.h to curl.h - - As it was added to multi.h simply to not break test 1135, which now has - been disabled due to the mime API addition anyway and su we can now move - the sslset stuff to where the other curl_global_* prototypes are. - -Patrick Monnerat (3 Sep 2017) -- mime: fix signed/unsigned conversions. - - Use and generate CURL_ZERO_TERMINATED in curl tool and tests. - -Jay Satiro (3 Sep 2017) -- tool_formparse: fix some trivial warnings - -Patrick Monnerat (3 Sep 2017) -- mime: use size_t instead of ssize_t in public API interface. - - To support telling a string is nul-terminated, symbol CURL_ZERO_TERMINATED - has been introduced. - - Documentation updated accordingly. - - symbols in versions updated. Added form API symbols deprecation info. - -- mime: remove support "-" stdin pseudo-file name in curl_mime_filedata(). - - This feature is badly supported in Windows: as a replacement, a caller has - to use curl_mime_data_cb() with fread, fseek and possibly fclose - callbacks to process opened files. - - The cli tool and documentation are updated accordingly. - - The feature is however kept internally for form API compatibility, with - the known caveats it always had. - - As a side effect, stdin size is not determined by the cli tool even if - possible and this results in a chunked transfer encoding. Test 173 is - updated accordingly. - -- mime: fix some implicit curl_off_t --> size_t conversion warnings. - -- mime: tests and examples. - - Additional mime-specific tests. - Existing tests updated to reflect small differences (Expect: 100-continue, - data size change due to empty lines, etc). - Option -F headers= keyword added to tests. - test1135 disabled until the entry point order change is resolved. - New example smtp-mime. - Examples postit2 and multi-post converted from form API to mime API. - -- mime: use in curl cli tool instead of form API. - - Extended -F option syntax to support multipart mail messages. - -F keyword headers= added to include custom headers in parts. - Documentation upgraded. - -- mime: new MIME API. - - Available in HTTP, SMTP and IMAP. - Deprecates the FORM API. - See CURLOPT_MIMEPOST. - Lib code and associated documentation. - -- test564: Add a warning comment about shell profile output. - - Shell profile output makes the SSH server failing and this problem reason - is not easy to find when no hint is given. - -- checksrc: disable SPACEBEFOREPAREN for case statement. - - The case keyword may be followed by a constant expression and thus should - allow it to start with an open parenthesis. - -- runtests.pl: allow tags in client section. - - This enables tests to create more than one file on the client side. - -- runtests.pl: Apply strippart to upload too. - - This will allow substitution of boundaries in mail messages. - -- Curl_base64_encode: always call with a real data handle. - - Some calls in different modules were setting the data handle to NULL, causing - segmentation faults when using builds that enable character code conversions. - -- non-ascii: allow conversion functions to be called with a NULL data handle. - -- http: fix a memory leakage in checkrtspprefix(). - -Daniel Stenberg (2 Sep 2017) -- [Max Dymond brought this change] - - ossfuzz: Move to C++ for curl_fuzzer. - - Automake gets confused if you want to use C++ static libraries with C - code - basically we need to involve the clang++ linker. The easiest way - of achieving this is to rename the C code as C++ code. This gets us a - bit further along the path and ought to be compatible with Google's - version of clang. - -- curl_global_sslset: select backend by name case insensitively - - Closes #1849 - -- [Max Dymond brought this change] - - ossfuzz: additional seed corpora - - Create simple seed corpora for: - - FTP - - telnet - - dict - - tftp - - imap - - pop3 - - based off the tests of the same number. - - Closes #1842 - -- [Max Dymond brought this change] - - ossfuzz: moving towards the ideal integration - - - Start with the basic code from the ossfuzz project. - - Rewrite fuzz corpora to be binary files full of Type-Length-Value - data, and write a glue layer in the fuzzing function to convert - corpora into CURL options. - - Have supporting functions to generate corpora from existing tests - - Integrate with Makefile.am - -- strcase: corrected comment header for Curl_strcasecompare() - -- unit1301: fix error message on first test - -- curl_global_sslset.3: show the struct and enum too - - ... so that users can actually write code based on the man page alone, - not having to read the header file. - -Jay Satiro (31 Aug 2017) -- darwinssl: handle long strings in TLS certs (follow-up) - - - Fix handling certificate subjects that are already UTF-8 encoded. - - Follow-up to b3b75d1 from two days ago. Since then a copy would be - skipped if the subject was already UTF-8, possibly resulting in a NULL - deref later on. - - Ref: https://github.com/curl/curl/issues/1823 - Ref: https://github.com/curl/curl/pull/1831 - - Closes https://github.com/curl/curl/pull/1836 - -Daniel Stenberg (31 Aug 2017) -- cyassl: call it the "WolfSSL" backend - - ... instead of cyassl, as this is the current name for it. - - Closes #1844 - -- polarssl: fix multissl breakage - - Reported-by: Dan Fandrich - Bug: https://curl.haxx.se/mail/lib-2017-08/0121.html - Closes #1843 - -- configure: remove the leading comma from the backends list - - ... when darwinssl is used. - - Reported-by: Viktor Szakats - Bug: https://github.com/curl/curl/commit/b0989cd3abaff4f9a0717b4875022fa79e33b481#commitcomment-23943493 - - Closes #1845 - -Kamil Dudka (30 Aug 2017) -- examples/sslbackend.c: fix failure of 'make checksrc' - - ./sslbackend.c:58:3: warning: else after closing brace on same line (BRACEELSE) - } else if(isdigit(*name)) { - ^ - ./sslbackend.c:62:3: warning: else after closing brace on same line (BRACEELSE) - } else - ^ - -Viktor Szakats (30 Aug 2017) -- makefile.m32: add multissl support - - Closes https://github.com/curl/curl/pull/1840 - -Daniel Stenberg (30 Aug 2017) -- curl.h: CURLSSLBACKEND_WOLFSSL used wrong value - - The CURLSSLBACKEND_WOLFSSL is supposed to be an alias for - CURLSSLBACKEND_CYASSL, but used an erronous value. To reduce the risk - for a similar mistake, define the backend aliases to use the enum values - instead. - - Reported-by: Gisle Vanem - Bug: https://curl.haxx.se/mail/lib-2017-08/0120.html - -- curl_global_sslset.3: clarify - - it is a one time *set*, not necessarily a one time use... it can be - called again if the first call failed or just listed the alternatives. - - clarify that the available backends are the ones this build supports - - plus add some formatting - - Reported-by: Rich Gray - Bug: https://curl.haxx.se/mail/lib-2017-08/0119.html - -- curl/multi.h: remove duplicated closing c++ brace - - Regression since 1328f69d53f2f2e93 - - Fixes #1841 - Reported-by: Andrei Karas - -- RELEASE-NOTES: synced with 8c33c963a - -- HELP-US.md: spelling - -- HELP-US.md: "How to get started helping out in the curl project" - - Closes #1837 - -Dan Fandrich (29 Aug 2017) -- asyn-thread: Fixed cleanup after OOM - - destroy_async_data() assumes that if the flag "done" is not set yet, the - thread itself will clean up once the request is complete. But if an - error (generally OOM) occurs before the thread even has a chance to - start, it will never get a chance to clean up and memory will be leaked. - By clearing "done" only just before starting the thread, the correct - cleanup sequence will happen in all cases. - -Daniel Stenberg (28 Aug 2017) -- curl_global_init.3: mention curl_global_sslset(3) - -Dan Fandrich (28 Aug 2017) -- unit1606: Fixed shadowed variable warning - -- asyn-thread: Improved cleanup after OOM situations - -- asyn-thread: Set errno to the proper value ENOMEM in OOM situation - - This used to be set in some configurations to EAI_MEMORY which is not a - valid value for errno and caused Curl_strerror to fail an assertion. - -Daniel Stenberg (28 Aug 2017) -- [Johannes Schindelin brought this change] - - configure: Handle "MultiSSL" specially When versioning symbols - - There is a mode in which libcurl is compiled with versioned symbols, - depending on the active SSL backend. - - When multiple SSL backends are active, it does not make sense to favor - one over the others, so let's not: introduce a new prefix for the case - where multiple SSL backends are compiled into cURL. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - configure: allow setting the default SSL backend - - Previously, we used as default SSL backend whatever was first in the - `available_backends` array. - - However, some users may want to override that default without patching - the source code. - - Now they can: with the --with-default-ssl-backend= option of - the ./configure script. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: use Curl_ssl_multi pseudo backend only when needed - - When only one SSL backend is configured, it is totally unnecessary to - let multissl_init() configure the backend at runtime, we can select the - correct backend at build time already. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - version: if built with more than one SSL backend, report all of them - - To discern the active one from the inactive ones, put the latter into - parentheses. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - version: add the CURL_VERSION_MULTI_SSL feature flag - - This new feature flag reports When cURL was built with multiple SSL - backends. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - metalink: allow compiling with multiple SSL backends - - Previously, the code assumed that at most one of the SSL backends would - be compiled in, emulating OpenSSL's functions if the configured backend - was not OpenSSL itself. - - However, now we allow building with multiple SSL backends and choosing - one at runtime. Therefore, metalink needs to be adjusted to handle this - scenario, too. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - docs/examples: demonstrate how to select SSL backends - - The newly-introduced curl_global_sslset() function deserves to be - show-cased. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - Add a man page for curl_global_sslset() - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: introduce curl_global_sslset() - - Let's add a compile time safe API to select an SSL backend. This - function needs to be called *before* curl_global_init(), and can be - called only once. - - Side note: we do not explicitly test that it is called before - curl_global_init(), but we do verify that it is not called multiple times - (even implicitly). - - If SSL is used before the function was called, it will use whatever the - CURL_SSL_BACKEND environment variable says (or default to the first - available SSL backend), and if a subsequent call to - curl_global_sslset() disagrees with the previous choice, it will fail - with CURLSSLSET_TOO_LATE. - - The function also accepts an "avail" parameter to point to a (read-only) - NULL-terminated list of available backends. This comes in real handy if - an application wants to let the user choose between whatever SSL backends - the currently available libcurl has to offer: simply call - - curl_global_sslset(-1, NULL, &avail); - - which will return CURLSSLSET_UNKNOWN_BACKEND and populate the avail - variable to point to the relevant information to present to the user. - - Just like with the HTTP/2 push functions, we have to add the function - declaration of curl_global_sslset() function to the header file - *multi.h* because VMS and OS/400 require a stable order of functions - declared in include/curl/*.h (where the header files are sorted - alphabetically). This looks a bit funny, but it cannot be helped. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: refactor out essential information about the SSL backends - - There is information about the compiled-in SSL backends that is really - no concern of any code other than the SSL backend itself, such as which - function (if any) implements SHA-256 summing. - - And there is information that is really interesting to the user, such as - the name, or the curl_sslbackend value. - - Let's factor out the latter into a publicly visible struct. This - information will be used in the upcoming API to set the SSL backend - globally. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: allow selecting which SSL backend to use at runtime - - When building software for the masses, it is sometimes not possible to - decide for all users which SSL backend is appropriate. - - Git for Windows, for example, uses cURL to perform clones, fetches and - pushes via HTTPS, and some users strongly prefer OpenSSL, while other - users really need to use Secure Channel because it offers - enterprise-ready tools to manage credentials via Windows' Credential - Store. - - The current Git for Windows versions use the ugly work-around of - building libcurl once with OpenSSL support and once with Secure Channel - support, and switching out the binaries in the installer depending on - the user's choice. - - Needless to say, this is a super ugly workaround that actually only - works in some cases: Git for Windows also comes in a portable form, and - in a form intended for third-party applications requiring Git - functionality, in which cases this "swap out libcurl-4.dll" simply is - not an option. - - Therefore, the Git for Windows project has a vested interest in teaching - cURL to make the SSL backend a *runtime* option. - - This patch makes that possible. - - By running ./configure with multiple --with- options, cURL will - be built with multiple backends. - - For the moment, the backend can be configured using the environment - variable CURL_SSL_BACKEND (valid values are e.g. "openssl" and - "schannel"). - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: fold the backend ID into the Curl_ssl structure - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - curl_ntlm_core: don't complain but #include OpenSSL header if needed - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: encapsulate SSL backend-specific data - - So far, all of the SSL backends' private data has been declared as - part of the ssl_connect_data struct, in one big #if .. #elif .. #endif - block. - - This can only work as long as the SSL backend is a compile-time option, - something we want to change in the next commits. - - Therefore, let's encapsulate the exact data needed by each SSL backend - into a private struct, and let's avoid bleeding any SSL backend-specific - information into urldata.h. This is also necessary to allow multiple SSL - backends to be compiled in at the same time, as e.g. OpenSSL's and - CyaSSL's headers cannot be included in the same .c file. - - To avoid too many malloc() calls, we simply append the private structs - to the connectdata struct in allocate_conn(). - - This requires us to take extra care of alignment issues: struct fields - often need to be aligned on certain boundaries e.g. 32-bit values need to - be stored at addresses that divide evenly by 4 (= 32 bit / 8 - bit-per-byte). - - We do that by assuming that no SSL backend's private data contains any - fields that need to be aligned on boundaries larger than `long long` - (typically 64-bit) would need. Under this assumption, we simply add a - dummy field of type `long long` to the `struct connectdata` struct. This - field will never be accessed but acts as a placeholder for the four - instances of ssl_backend_data instead. the size of each ssl_backend_data - struct is stored in the SSL backend-specific metadata, to allow - allocate_conn() to know how much extra space to allocate, and how to - initialize the ssl[sockindex]->backend and proxy_ssl[sockindex]->backend - pointers. - - This would appear to be a little complicated at first, but is really - necessary to encapsulate the private data of each SSL backend correctly. - And we need to encapsulate thusly if we ever want to allow selecting - CyaSSL and OpenSSL at runtime, as their headers cannot be included within - the same .c file (there are just too many conflicting definitions and - declarations for that). - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: prepare the SSL backends for encapsulated private data - - At the moment, cURL's SSL backend needs to be configured at build time. - As such, it is totally okay for them to hard-code their backend-specific - data in the ssl_connect_data struct. - - In preparation for making the SSL backend a runtime option, let's make - the access of said private data a bit more abstract so that it can be - adjusted later in an easy manner. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - urldata.h: move SSPI-specific #include to correct location - - In 86b889485 (sasl_gssapi: Added GSS-API based Kerberos V5 variables, - 2014-12-03), an SSPI-specific field was added to the kerberos5data - struct without moving the #include "curl_sspi.h" later in the same file. - - This broke the build when SSPI was enabled, unless Secure Channel was - used as SSL backend, because it just so happens that Secure Channel also - requires "curl_sspi.h" to be #included. - - In f4739f639 (urldata: include curl_sspi.h when Windows SSPI is enabled, - 2017-02-21), this bug was fixed incorrectly: Instead of moving the - appropriate conditional #include, the Secure Channel-conditional part - was now also SSPI-conditional. - - Fix this problem by moving the correct #include instead. - - This is also required for an upcoming patch that moves all the Secure - Channel-specific stuff out of urldata.h and encapsulates it properly in - vtls/schannel.c instead. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - urldata.h: remove support for obsolete PolarSSL version - - Since 5017d5ada (polarssl: now require 1.3.0+, 2014-03-17), we require - a newer PolarSSL version. No need to keep code trying to support any - older version. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - getinfo: access SSL internals via Curl_ssl - - In the ongoing endeavor to abstract out all SSL backend-specific - functionality, this is the next step: Instead of hard-coding how the - different SSL backends access their internal data in getinfo.c, let's - implement backend-specific functions to do that task. - - This will also allow for switching SSL backends as a runtime option. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: move SSL backends' private constants out of their header files - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - axtls: use Curl_none_* versions of init() and cleanup() - - There are convenient no-op versions of the init/cleanup functions now, - no need to define private ones for axTLS. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: remove obsolete declarations of SSL backend functionality - - These functions are all available via the Curl_ssl struct now, no need - to declare them separately anymore. - - As the global declarations are removed, the corresponding function - definitions are marked as file-local. The only two exceptions here are - Curl_mbedtls_shutdown() and Curl_polarssl_shutdown(): only the - declarations were removed, there are no function definitions to mark - file-local. - - Please note that Curl_nss_force_init() is *still* declared globally, as - the only SSL backend-specific function, because it was introduced - specifically for the use case where cURL was compiled with - `--without-ssl --with-nss`. For details, see f3b77e561 (http_ntlm: add - support for NSS, 2010-06-27). - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - schannel: reorder functions topologically - - The _shutdown() function calls the _session_free() function; While this - is not a problem now (because schannel.h declares both functions), a - patch looming in the immediate future with make all of these functions - file-local. - - So let's just move the _session_free() function's definition before it - is called. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - axtls: reorder functions topologically - - The connect_finish() function (like many other functions after it) calls - the Curl_axtls_close() function; While this is not a problem now - (because axtls.h declares the latter function), a patch looming in the - immediate future with make all of these functions file-local. - - So let's just move the Curl_axtls_close() function's definition before - it is called. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: move the SUPPORT_HTTPS_PROXY flag into the Curl_ssl struct - - That will allow us to choose the SSL backend at runtime. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: convert the have_curlssl_* constants to runtime flags - - The entire idea of introducing the Curl_ssl struct to describe SSL - backends is to prepare for choosing the SSL backend at runtime. - - To that end, convert all the #ifdef have_curlssl_* style conditionals - to use bit flags instead. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: move sha256sum into the Curl_ssl struct - - The SHA-256 checksumming is also an SSL backend-specific function. - Let's include it in the struct declaring the functionality of SSL - backends. - - In contrast to MD5, there is no fall-back code. To indicate this, the - respective entries are NULL for those backends that offer no support for - SHA-256 checksumming. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: move md5sum into the Curl_ssl struct - - The MD5 summing is also an SSL backend-specific function. So let's - include it, offering the previous fall-back code as a separate function - now: Curl_none_md5sum(). To allow for that, the signature had to be - changed so that an error could be returned from the implementation - (Curl_none_md5sum() can run out of memory). - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: use the Curl_ssl struct to access all SSL backends' functionality - - This is the first step to unify the SSL backend handling. Now all the - SSL backend-specific functionality is accessed via a global instance of - the Curl_ssl struct. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: declare Curl_ssl structs for every SSL backend - - The idea of introducing the Curl_ssl struct was to unify how the SSL - backends are declared and called. To this end, we now provide an - instance of the Curl_ssl struct for each and every SSL backend. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: introduce a new struct for SSL backends - - This new struct is similar in nature to Curl_handler: it will define the - functions and capabilities of all the SSL backends (where Curl_handler - defines the functions and capabilities of protocol handlers). - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: make sure every _sha256sum()'s first arg is const - - This patch makes the signature of the _sha256sum() functions consistent - among the SSL backends, in preparation for unifying the way all SSL - backends are accessed. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: make sure all _data_pending() functions return bool - - This patch makes the signature of the _data_pending() functions - consistent among the SSL backends, in preparation for unifying the way - all SSL backends are accessed. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: make sure all _cleanup() functions return void - - This patch makes the signature of the _cleanup() functions consistent - among the SSL backends, in preparation for unifying the way all SSL - backends are accessed. - - Signed-off-by: Johannes Schindelin - -- [Johannes Schindelin brought this change] - - vtls: use consistent signature for _random() implementations - - This will make the upcoming multissl backend much easier to implement. - - Signed-off-by: Johannes Schindelin - -- strtooff: fix build for systems with long long but no strtoll option - - Closes #1829 - - Reported-by: Dan Fandrich - Bug: https://github.com/curl/curl/pull/1758#issuecomment-324861615 - -- darwinssl: handle long strings in TLS certs - - ... as the previous fixed length 128 bytes buffer was sometimes too - small. - - Fixes #1823 - Closes #1831 - - Reported-by: Benjamin Sergeant - Assisted-by: Bill Pyne, Ray Satiro, Nick Zitzmann - -- system.h: include sys/poll.h for AIX - - ... to get the event/revent defines that might be used for the poll - struct. - - Reported-by: Michael Smith - Fixes #1828 - Closes #1833 - -Dan Fandrich (26 Aug 2017) -- tests: Make sure libtests & unittests call curl_global_cleanup() - - These were missed in commit c468c27b. - -Jay Satiro (26 Aug 2017) -- [theantigod brought this change] - - winbuild: fix embedded manifest option - - Embedded manifest option didn't work due to incorrect path. - - Fixes https://github.com/curl/curl/issues/1832 - -Daniel Stenberg (25 Aug 2017) -- fuzz/Makefile.am: remove curlbuild.h leftovers - -- examples/threaded-ssl: mention that this is for openssl before 1.1 - -- imap: use defined names for response codes - - When working on this code I found the previous setup a bit weird while - using proper defines increases readability. - - Closes #1824 - -- CURLOPT_USERPWD.3: see also CURLOPT_PROXYUSERPWD - -- imap: support PREAUTH - - It is a defined possible greeting at server startup that means the - connection is already authenticated. See - https://tools.ietf.org/html/rfc3501#section-7.1.4 - - Test 846 added to verify. - - Fixes #1818 - Closes #1820 - -Jay Satiro (23 Aug 2017) -- config-tpf: define SIZEOF_LONG - - Recent changes that replaced CURL_SIZEOF_LONG in the source with - SIZEOF_LONG broke builds that use the premade configuration files and - don't have SIZEOF_LONG defined. - - Bug: https://github.com/curl/curl/issues/1816 - -Dan Fandrich (23 Aug 2017) -- test1453: Fixed - -Daniel Stenberg (22 Aug 2017) -- [Gisle Vanem brought this change] - - config-dos: add missing defines, SIZEOF_* and two others - - Bug: #1816 - -- curl: shorten and clean up CA cert verification error message - - The previous message was just too long for ordinary people and it was - encouraging users to use `--insecure` a little too easy. - - Based-on-work-by: Frank Denis - - Closes #1810 - Closes #1817 - -- request-target.d: mention added in 7.55.0 - -Marcel Raad (22 Aug 2017) -- tool_main: turn off MinGW CRT's globbing - - By default, the MinGW CRT globs command-line arguments. This prevents - getting a single asterisk into an argument as test 1299 does. Turn off - globbing by setting the global variable _CRT_glob to 0 for MinGW. - - Fixes https://github.com/curl/curl/issues/1751 - Closes https://github.com/curl/curl/pull/1813 - -Viktor Szakats (22 Aug 2017) -- makefile.m32: add support for libidn2 - - libidn was replaced with libidn2 last year in configure. - Caveat: libidn2 may depend on a list of further libs. - These can be manually specified via CURL_LDFLAG_EXTRAS. - - Closes https://github.com/curl/curl/pull/1815 - -Jay Satiro (22 Aug 2017) -- [Viktor Szakats brought this change] - - config-win32: define SIZEOF_LONG - - Recent changes that replaced CURL_SIZEOF_LONG in the source with - SIZEOF_LONG broke builds that use the premade configuration files and - don't have SIZEOF_LONG defined. - - Closes https://github.com/curl/curl/pull/1814 - -Daniel Stenberg (20 Aug 2017) -- cmake: enable picky compiler options with clang and gcc - - closes #1799 - -- curl/system.h: fix build for hppa - - Reported-by: John David Anglin - Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872502#10 - -- [Even Rouault brought this change] - - tftp: fix memory leak on too long filename - - Fixes - - $ valgrind --leak-check=full ~/install-curl-git/bin/curl tftp://localhost/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz - - ==9752== Memcheck, a memory error detector - ==9752== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. - ==9752== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info - ==9752== Command: /home/even/install-curl-git/bin/curl tftp://localhost/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz - ==9752== - curl: (71) TFTP file name too long - - ==9752== - ==9752== HEAP SUMMARY: - ==9752== 505 bytes in 1 blocks are definitely lost in loss record 11 of 11 - ==9752== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - ==9752== by 0x4E61CED: Curl_urldecode (in /home/even/install-curl-git/lib/libcurl.so.4.4.0) - ==9752== by 0x4E75868: tftp_state_machine (in /home/even/install-curl-git/lib/libcurl.so.4.4.0) - ==9752== by 0x4E761B6: tftp_do (in /home/even/install-curl-git/lib/libcurl.so.4.4.0) - ==9752== by 0x4E711B6: multi_runsingle (in /home/even/install-curl-git/lib/libcurl.so.4.4.0) - ==9752== by 0x4E71D00: curl_multi_perform (in /home/even/install-curl-git/lib/libcurl.so.4.4.0) - ==9752== by 0x4E6950D: curl_easy_perform (in /home/even/install-curl-git/lib/libcurl.so.4.4.0) - ==9752== by 0x40E0B7: operate_do (in /home/even/install-curl-git/bin/curl) - ==9752== by 0x40E849: operate (in /home/even/install-curl-git/bin/curl) - ==9752== by 0x402693: main (in /home/even/install-curl-git/bin/curl) - - Fixes https://oss-fuzz.com/v2/testcase-detail/5232311106797568 - Credit to OSS Fuzz - - Closes #1808 - -Dan Fandrich (19 Aug 2017) -- runtests: fixed case insensitive matching of keywords - - Commit 5c2aac71 didn't work in the case of mixed-case keywords given on - the command-line. - -- tests: Make sure libtests call curl_global_cleanup() - - This ensures that global data allocations are freed so Valgrind stays - happy. This was a problem with at least PolarSSL and mbedTLS. - -Daniel Stenberg (18 Aug 2017) -- RELEASE-NOTES: synced with 8baead425 - -- scripts/contri*sh: use "git log --use-mailmap" - -- mailmap: de-duplify some git authors - -- http2_recv: return error better on fatal h2 errors - - Ref #1012 - Figured-out-by: Tatsuhiro Tsujikawa - -- KNOWN_BUGS: HTTP test server 'connection-monitor' problems - - Closes #868 - -- curl/system.h: check for __ppc__ as well - - ... regression since issue #1774 (commit 10b3df10596a) since obviously - some older gcc doesn't know __powerpc__ while some newer doesn't know - __ppc__ ... - - Fixes #1797 - Closes #1798 - Reported-by: Ryan Schmidt - -- [Jan Alexander Steffens (heftig) brought this change] - - http: Don't wait on CONNECT when there is no proxy - - Since curl 7.55.0, NetworkManager almost always failed its connectivity - check by timeout. I bisected this to 5113ad04 (http-proxy: do the HTTP - CONNECT process entirely non-blocking). - - This patch replaces !Curl_connect_complete with Curl_connect_ongoing, - which returns false if the CONNECT state was left uninitialized and lets - the connection continue. - - Closes #1803 - Fixes #1804 - - Also-fixed-by: Gergely Nagy - -- [Johannes Schindelin brought this change] - - metalink: adjust source code style - - Signed-off-by: Johannes Schindelin - -- CURL_SIZEOF_LONG: removed, use only SIZEOF_LONG - -- lib557: no longer use CURL_SIZEOF_* defines - -- config-win32: define SIZEOF_CURL_OFF_T - -- cmake: sizeof curl_off_t, remove unused detections - -- system.h: remove all CURL_SIZEOF_* defines - - ... as they're not used externally and internally we check for the sizes - already in configure etc. - - Closes #1767 - -- ftp: fix CWD when doing multicwd then nocwd on same connection - - Fixes #1782 - Closes #1787 - Reported-by: Peter Lamare - -- CURLOPT_SSH_COMPRESSION.3: enable with 1L - - (leaves other values reserved for the future) - -- compressed-ssh.d: "Added: 7.56.0" - -- curl/system.h: checksrc compliance - -Jay Satiro (17 Aug 2017) -- [Viktor Szakats brought this change] - - ssh: add the ability to enable compression (for SCP/SFTP) - - The required low-level logic was already available as part of - `libssh2` (via `LIBSSH2_FLAG_COMPRESS` `libssh2_session_flag()`[1] - option.) - - This patch adds the new `libcurl` option `CURLOPT_SSH_COMPRESSION` - (boolean) and the new `curl` command-line option `--compressed-ssh` - to request this `libssh2` feature. To have compression enabled, it - is required that the SSH server supports a (zlib) compatible - compression method and that `libssh2` was built with `zlib` support - enabled. - - [1] https://www.libssh2.org/libssh2_session_flag.html - - Ref: https://github.com/curl/curl/issues/1732 - Closes https://github.com/curl/curl/pull/1735 - -- examples/ftpuploadresume: checksrc compliance - -- [Maksim Stsepanenka brought this change] - - http_proxy: fix build error for CURL_DOES_CONVERSIONS - - Closes https://github.com/curl/curl/pull/1793 - -GitHub (16 Aug 2017) -- [Nick Zitzmann brought this change] - - configure: check for __builtin_available() availability (#1788) - - This change does two things: - 1. It un-breaks the build in Xcode 9.0. (Xcode 9.0 is currently - failing trying to compile connectx() in lib/connect.c.) - 2. It finally weak-links the connectx() function, and falls back on - connect() when run on older operating systems. - -Daniel Stenberg (16 Aug 2017) -- travis: add metalink to some osx builds - - Closes #1790 - -- [Max Dymond brought this change] - - coverage: Use two coveralls commands to get lib/vtls results - - closes #1747 - -- darwinssi: fix error: variable length array used - -- m4/curl-compilers.m4: use proper quotes around string, not backticks - - ... when setting clang version to assume 3.7 - - Caused a lot of "integer expression expected" warnings by configure. - -- [Benbuck Nason brought this change] - - cmake: remove dead code for DISABLED_THREADSAFE - - Closes #1786 - -Jay Satiro (15 Aug 2017) -- [Jakub Zakrzewski brought this change] - - curl-confopts.m4: fix --disable-threaded-resolver - - Closes https://github.com/curl/curl/issues/1784 - -Daniel Stenberg (15 Aug 2017) -- [Ryan Winograd brought this change] - - progress: Track total times following redirects - - Update the progress timers `t_nslookup`, `t_connect`, `t_appconnect`, - `t_pretransfer`, and `t_starttransfer` to track the total times for - these activities when a redirect is followed. Previously, only the times - for the most recent request would be tracked. - - Related changes: - - - Rename `Curl_pgrsResetTimesSizes` to `Curl_pgrsResetTransferSizes` - now that the function only resets transfer sizes and no longer - modifies any of the progress timers. - - - Add a bool to the `Progress` struct that is used to prevent - double-counting `t_starttransfer` times. - - Added test case 1399. - - Fixes #522 and Known Bug 1.8 - Closes #1602 - Reported-by: joshhe on github - -- [Benbuck Nason brought this change] - - cmake: remove dead code for CURL_DISABLE_RTMP - - Closes #1785 - -Kamil Dudka (15 Aug 2017) -- zsh.pl: produce a working completion script again - - Commit curl-7_54_0-118-g8b2f22e changed the output format of curl --help - to use and instead of FILE and DIR, which caused zsh.pl to - produce a broken completion script: - - % curl -- - _curl:10: no such file or directory: seconds - - Closes #1779 - -Daniel Stenberg (15 Aug 2017) -- curlver: toward 7.56.0? - -- RELEASE-NOTES: synced with 91c46dc44 - -- test1449: FTP download range with an too large size - -- strtoofft: reduce integer overflow risks globally - - ... make sure we bail out on overflows. - - Reported-by: Brian Carpenter - Closes #1758 - -- travis: build the examples too - - to make sure they keep building warning-free - - Closes #1777 - -- runtests: match keywords case insensitively - -- examples/ftpuploadresume.c: use portable code - - ... converted from the MS specific _snscanf() - -Version 7.55.1 (13 Aug 2017) - -Daniel Stenberg (13 Aug 2017) -- RELEASE-NOTES/THANKS: curl 7.55.1 release time - -- gitignore: ignore .xz now instead of .lzma - -- [Sergei Nikulov brought this change] - - cmake: Threads detection update. ref: #1702 - - Closes #1719 - -- ipv6_scope: support unique local addresses - - Fixes #1764 - Closes #1773 - Reported-by: James Slaughter - -- [Alex Potapenko brought this change] - - curl/system.h: GCC doesn't define __ppc__ on PowerPC, uses __powerpc__ - - Closes #1774 - -- test1448: verify redirect to IDN using URL - - Closes #1772 - -- [Salah-Eddin Shaban brought this change] - - redirect: skip URL encoding for host names - - This fixes redirects to IDN URLs - - Fixes #1441 - Closes #1762 - Reported by: David Lord - -- test2032: mark as flaky (again) - -- travis: test cmake build on tarball too - - Could've prevented #1755 - -- [Simon Warta brought this change] - - cmake: allow user to override CMAKE_DEBUG_POSTFIX - - Closes #1763 - -- connect-to.d: better language - -- connect-to.d: clarified - -- bagder/Curl_tvdiff_us: fix the math - - Regression since adef394ac5 (released in 7.55.0) - - Reported-by: Han Qiao - Fixes #1769 - Closes #1771 - -- curl/system.h: add Oracle Solaris Studio - - Fixes #1752 - -- [Alessandro Ghedini brought this change] - - docs: fix typo funtion -> function - - Closes #1770 - -Alessandro Ghedini (12 Aug 2017) -- docs: fix grammar in CURL_SSLVERSION_MAX_DEFAULT description - -- docs: fix typo stuct -> struct - -Dan Fandrich (12 Aug 2017) -- test1447: require a curl with http support - -Daniel Stenberg (11 Aug 2017) -- [Thomas Petazzoni brought this change] - - curl/system.h: support more architectures - - The long list of architectures in include/curl/system.h is annoying to - maintain, and needs to be extended for each and every architecture to - support. - - Instead, let's rely on the __SIZEOF_LONG__ define of the gcc compiler - (we are in the GNUC condition anyway), which tells us if long is 4 - bytes or 8 bytes. - - This fixes the build of libcurl 7.55.0 on architectures such as - OpenRISC or ARC. - - Closes #1766 - - Signed-off-by: Thomas Petazzoni - -- test2033: this went flaky again - - Suspicion: when we enabled the threaded resolver by default. - -- test1447: verifies the parse proxy fix in 6e0e152ce5c - -- [Even Rouault brought this change] - - parse_proxy(): fix memory leak in case of invalid proxy server name - - Fixes the below leak: - - $ valgrind --leak-check=full ~/install-curl-git/bin/curl --proxy "http://a:b@/x" http://127.0.0.1 - curl: (5) Couldn't resolve proxy name - ==5048== - ==5048== HEAP SUMMARY: - ==5048== in use at exit: 532 bytes in 12 blocks - ==5048== total heap usage: 5,288 allocs, 5,276 frees, 445,271 bytes allocated - ==5048== - ==5048== 2 bytes in 1 blocks are definitely lost in loss record 1 of 12 - ==5048== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - ==5048== by 0x4E6CB79: parse_login_details (url.c:5614) - ==5048== by 0x4E6BA82: parse_proxy (url.c:5091) - ==5048== by 0x4E6C46D: create_conn_helper_init_proxy (url.c:5346) - ==5048== by 0x4E6EA18: create_conn (url.c:6498) - ==5048== by 0x4E6F9B4: Curl_connect (url.c:6967) - ==5048== by 0x4E86D05: multi_runsingle (multi.c:1436) - ==5048== by 0x4E88432: curl_multi_perform (multi.c:2160) - ==5048== by 0x4E7C515: easy_transfer (easy.c:708) - ==5048== by 0x4E7C74A: easy_perform (easy.c:794) - ==5048== by 0x4E7C7B1: curl_easy_perform (easy.c:813) - ==5048== by 0x414025: operate_do (tool_operate.c:1563) - ==5048== - ==5048== 2 bytes in 1 blocks are definitely lost in loss record 2 of 12 - ==5048== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - ==5048== by 0x4E6CBB6: parse_login_details (url.c:5621) - ==5048== by 0x4E6BA82: parse_proxy (url.c:5091) - ==5048== by 0x4E6C46D: create_conn_helper_init_proxy (url.c:5346) - ==5048== by 0x4E6EA18: create_conn (url.c:6498) - ==5048== by 0x4E6F9B4: Curl_connect (url.c:6967) - ==5048== by 0x4E86D05: multi_runsingle (multi.c:1436) - ==5048== by 0x4E88432: curl_multi_perform (multi.c:2160) - ==5048== by 0x4E7C515: easy_transfer (easy.c:708) - ==5048== by 0x4E7C74A: easy_perform (easy.c:794) - ==5048== by 0x4E7C7B1: curl_easy_perform (easy.c:813) - ==5048== by 0x414025: operate_do (tool_operate.c:1563) - - Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2984 - Credit to OSS Fuzz for discovery - - Closes #1761 - -- RELEASE-NOTES: synced with 37f2195a9 - -- curlver: bump to 7.55.1 - -- openssl: fix "error: this statement may fall through" - - A gcc7 warning. - -- [David Benjamin brought this change] - - openssl: remove CONST_ASN1_BIT_STRING. - - Just making the pointer as const works for the pre-1.1.0 path too. - - Closes #1759 - -- maketgz: remove old *.dist files before making the tarball - - To avoid "old crap" unintentionally getting shipped. - - Bug: https://curl.haxx.se/mail/lib-2017-08/0050.html - Reported-by: Christian Weisgerber - -Jay Satiro (10 Aug 2017) -- mkhelp.pl: allow executing this script directly - - - Enable execute permission (chmod +x) - - - Change interpreter to /usr/bin/env perl - - Ref: https://github.com/curl/curl/issues/1743 - -Daniel Stenberg (10 Aug 2017) -- configure: use the threaded resolver backend by default if possible - - Closes #1647 - -- cmake: move cmake_uninstall.cmake to CMake/ - - Closes #1756 - -- metalink: fix error: ‘*’ in boolean context, suggest ‘&&’ instead - -- dist: fix the cmake build by shipping cmake_uninstall.cmake.in too - - Fixes #1755 - -- travis: verify "make install" - - Help-by: Jay Satiro - Closes #1753 - -Marcel Raad (10 Aug 2017) -- build: check out *.sln files with Windows line endings - - Visual Studio doesn't like LF line endings in solution files and always - converts them to CRLF when doing changes to the solution. Notably, this - affects the solutions in the release archive. - - Closes https://github.com/curl/curl/pull/1746 - -- gitignore: ignore top-level .vs folder - - This folder is generated when using the CMake build system from within - Visual Studio. - - Closes https://github.com/curl/curl/pull/1746 - -Jay Satiro (10 Aug 2017) -- digest_sspi: Don't reuse context if the user/passwd has changed - - Bug: https://github.com/curl/curl/issues/1685 - Reported-by: paulharris@users.noreply.github.com - - Assisted-by: Isaac Boukris - - Closes https://github.com/curl/curl/pull/1742 - -Daniel Stenberg (9 Aug 2017) -- [Adam Sampson brought this change] - - dist: Add dictserver.py/negtelnetserver.py to EXTRA_DIST - - These weren't included in the 7.55.0 release, but are required in order - to run the full test suite. - - Closes #1744 - -- [Adam Sampson brought this change] - - curl: do bounds check using a double comparison - - The fix for this in 8661a0aacc01492e0436275ff36a21734f2541bb wasn't - complete: if the parsed number in num is larger than will fit in a long, - the conversion is undefined behaviour (causing test1427 to fail for me - on IA32 with GCC 7.1, although it passes on AMD64 and ARMv7). Getting - rid of the cast means the comparison will be done using doubles. - - It might make more sense for the max argument to also be a double... - - Fixes #1750 - Closes #1749 - -- make install: add 8 missing man pages to the installation - -- build: fix 'make install' with configure, install docs/libcurl/* too - - Broken since d24838d4da9faa - - Reported-by: Bernard Spil - -Version 7.55.0 (9 Aug 2017) - -Daniel Stenberg (9 Aug 2017) -- RELEASE-NOTES: curl 7.55.0 - -- THANKS: 20 new contributors in 7.55.0 - -- [Viktor Szakats brought this change] - - docs/comments: Update to secure URL versions - - Closes #1741 - -- configure: fix recv/send/select detection on Android - - ... since they now provide several functions as - __attribute__((overloadable)), the argument detection logic need - updates. - - Patched-by: destman at github - - Fixes #1738 - Closes #1739 - -Marcel Raad (8 Aug 2017) -- ax_code_coverage.m4: update to latest version - - This updates the script to aad5ad5fedb306b39f901a899b7bd305b66c418d - from August 01, 2017. Notably, this removes the lconv version whitelist. - - Closes https://github.com/curl/curl/pull/1716 - -Daniel Stenberg (7 Aug 2017) -- test1427: verify command line parser integer overflow detection - -- curl: detect and bail out early on parameter integer overflows - - Make the number parser aware of the maximum limit curl accepts for a - value and return an error immediately if larger, instead of running an - integer overflow later. - - Fixes #1730 - Closes #1736 - -- glob: do not continue parsing after a strtoul() overflow range - - Added test 1289 to verify. - - CVE-2017-1000101 - - Bug: https://curl.haxx.se/docs/adv_20170809A.html - Reported-by: Brian Carpenter - -- tftp: reject file name lengths that don't fit - - ... and thereby avoid telling send() to send off more bytes than the - size of the buffer! - - CVE-2017-1000100 - - Bug: https://curl.haxx.se/docs/adv_20170809B.html - Reported-by: Even Rouault - - Credit to OSS-Fuzz for the discovery - -- [Even Rouault brought this change] - - file: output the correct buffer to the user - - Regression brought by 7c312f84ea930d8 (April 2017) - - CVE-2017-1000099 - - Bug: https://curl.haxx.se/docs/adv_20170809C.html - - Credit to OSS-Fuzz for the discovery - -- easy_events: make event data static - - First: this function is only used in debug-builds and not in - release/real builds. It is used to drive tests using the event-based - API. - - A pointer to the local struct is passed to CURLMOPT_TIMERDATA, but the - CURLMOPT_TIMERFUNCTION calback can in fact be called even after this - funtion returns, namely when curl_multi_remove_handle() is called. - - Reported-by: Brian Carpenter - -- getparameter: avoid returning uninitialized 'usedarg' - - Fixes #1728 - -Marcel Raad (5 Aug 2017) -- [Isaac Boukris brought this change] - - gssapi: fix memory leak of output token in multi round context - - When multiple rounds are needed to establish a security context - (usually ntlm), we overwrite old token with a new one without free. - Found by proposed gss tests using stub a gss implementation (by - valgrind error), though I have confirmed the leak with a real - gssapi implementation as well. - - Closes https://github.com/curl/curl/pull/1733 - -- darwinssl: fix compiler warning - - clang complains: - vtls/darwinssl.c:40:8: error: extra tokens at end of #endif directive - [-Werror,-Wextra-tokens] - - This breaks the darwinssl build on Travis. Fix it by making this token - a comment. - - Closes https://github.com/curl/curl/pull/1734 - -- CMake: fix CURL_WERROR for MSVC - - When using CURL_WERROR in MSVC builds, the debug flags were overridden - by the release flags and /WX got added twice in debug mode. - - Closes https://github.com/curl/curl/pull/1715 - -Daniel Stenberg (4 Aug 2017) -- RELEASE-NOTES: synced with 561e9217c - -- test1010: verify that #1718 is fixed - - ... by doing two transfers in nocwd mode and check that there's no - superfluous CWD command. - -- FTP: skip unnecessary CWD when in nocwd mode - - ... when reusing a connection. If it didn't do any CWD previously. - - Fixes #1718 - -Marcel Raad (4 Aug 2017) -- travis: explicitly specify dist - - This makes the builds more reproducible as travis is currently rolling - out trusty as default dist [1]. Specifically, this avoids coverage - check failures when trusty is used as seen in [2] until we figure out - what's wrong. - - [1] https://blog.travis-ci.com/2017-07-11-trusty-as-default-linux-is-coming - [2] https://github.com/curl/curl/pull/1692 - - Closes https://github.com/curl/curl/pull/1725 - -Daniel Stenberg (4 Aug 2017) -- travis: BUILD_TYPE => T - - (to make the full line appear nicer on travis web UI) - -- travis: add osx build with darwinssl - - Closes #1706 - -- darwin: silence compiler warnings - - With a clang pragma and three type fixes - - Fixes #1722 - -- BUILD.WINDOWS: mention buildconf.bat for builds off git - -- darwinssl: fix curlssl_sha256sum() compiler warnings on first argument - -- test130: verify comments in .netrc - -- [Gisle Vanem brought this change] - - netrc: skip lines starting with '#' - - Bug: https://curl.haxx.se/mail/lib-2017-08/0008.html - -Marcel Raad (3 Aug 2017) -- CMake: set MSVC warning level to 4 - - The MSVC warning level defaults to 3 in CMake. Change it to 4, which is - consistent with the Visual Studio and NMake builds. Disable level 4 - warning C4127 for the library and additionally C4306 for the test - servers to get a clean CURL_WERROR build as that warning is raised in - some macros in older Visual Studio versions. - - Ref: https://github.com/curl/curl/pull/1667#issuecomment-314082794 - Closes https://github.com/curl/curl/pull/1711 - -Daniel Stenberg (2 Aug 2017) -- CURLOPT_NETRC.3: fix typo in 7e48aa386156f9c2 - - Reported-by: Viktor Szakats - -- CURLOPT_NETRC.3: mention the file name on windows - - ... and CURLOPT_NETRC_FILE(3). - -- travis: build osx with libressl too - -- travis: build osx with openssl too - -- tests/server/util: fix curltime mistake from 4dee50b9c80f9 - -Marcel Raad (1 Aug 2017) -- curl_threads: fix MSVC compiler warning - - Use LongToHandle to convert from long to HANDLE in the Win32 - implementation. - This should fix the following warning when compiling with - MSVC 11 (2012) in 64-bit mode: - lib\curl_threads.c(113): warning C4306: - 'type cast' : conversion from 'long' to 'HANDLE' of greater size - - Closes https://github.com/curl/curl/pull/1717 - -Daniel Stenberg (1 Aug 2017) -- BUGS: improved phrasing about security bugs - - Reported-by: Max Dymond - -- BUGS: clarify how to report security related bugs - -- [Brad Spencer brought this change] - - multi: fix request timer management - - There are some bugs in how timers are managed for a single easy handle - that causes the wrong "next timeout" value to be reported to the - application when a new minimum needs to be recomputed and that new - minimum should be an existing timer that isn't currently set for the - easy handle. When the application drives a set of easy handles via the - `curl_multi_socket_action()` API (for example), it gets told to wait the - wrong amount of time before the next call, which causes requests to - linger for a long time (or, it is my guess, possibly forever). - - Bug: https://curl.haxx.se/mail/lib-2017-07/0033.html - -Jay Satiro (1 Aug 2017) -- curl_setup: Define CURL_NO_OLDIES for building libcurl - - .. to catch accidental use of deprecated error codes. - - Ref: https://github.com/curl/curl/issues/1688#issuecomment-316764237 - -Daniel Stenberg (1 Aug 2017) -- [Jeremy Tan brought this change] - - configure: fix the check for IdnToUnicode - - Fixes #1669 - Closes #1713 - -- http: fix response code parser to avoid integer overflow - - test 1429 and 1433 were updated to work with the stricter HTTP status line - parser. - - Closes #1714 - Reported-by: Brian Carpenter - -Jay Satiro (31 Jul 2017) -- [Dwarakanath Yadavalli brought this change] - - libcurl: Stop using error codes defined under CURL_NO_OLDIES - - Fixes https://github.com/curl/curl/issues/1688 - Closes https://github.com/curl/curl/pull/1712 - -- include.d: clarify --include is only for response headers - - Follow-up to 171f8de and de6de94. - - Bug: https://github.com/curl/curl/commit/de6de94#commitcomment-23370851 - Reported-by: Daniel Stenberg - -Daniel Stenberg (30 Jul 2017) -- [jasjuang brought this change] - - cmake: support make uninstall - - Closes #1674 - -- RELEASE-NOTES: synced with 001701c47 - -Marcel Raad (29 Jul 2017) -- AppVeyor: now really use CURL_WERROR - - It was misspelled as CURL_ERROR in commit - 2d86e8d1286e0fbe3d811e2e87fa0b5e53722db4. - - Closes https://github.com/curl/curl/pull/1686 - -Jay Satiro (29 Jul 2017) -- tool_help: clarify --include is only for response headers - - Follow-up to 171f8de. - - Ref: https://github.com/curl/curl/issues/1704 - -- splay: fix signed/unsigned mismatch warning - - Follow-up to 4dee50b. - - Ref: https://github.com/curl/curl/pull/1693 - -Daniel Stenberg (28 Jul 2017) -- include.d: clarify that it concerns the response headers - - Reported-by: olesteban at github - Fixes #1704 - -- [Johannes Schindelin brought this change] - - curl_rtmp: fix a compiler warning - - The headers of librtmp declare the socket as `int`, and on Windows, that - disagrees with curl_socket_t. - - Bug: #1652 - - Signed-off-by: Johannes Schindelin - -- test1323: verify curlx_tvdiff - -- timeval: struct curltime is a struct timeval replacement - - ... to make all libcurl internals able to use the same data types for - the struct members. The timeval struct differs subtly on several - platforms so it makes it cumbersome to use everywhere. - - Ref: #1652 - Closes #1693 - -- darwinssl: fix variable type mistake (regression) - - ... which made --tlsv1.2 not work because it would blank the max tls - version variable. - - Reported-by: Nick Miyake - Bug: #1703 - -- multi: mention integer overflow risk if using > 500 million sockets - - Reported-by: ovidiu-benea@users.noreply.github.com - - Closes #1675 - Closes #1683 - -- checksrc: escape open brace in regex - - ... to silence warning. - -Kamil Dudka (20 Jul 2017) -- nss: fix a possible use-after-free in SelectClientCert() - - ... causing a SIGSEGV in showit() in case the handle used to initiate - the connection has already been freed. - - This commit fixes a bug introduced in curl-7_19_5-204-g5f0cae803. - - Reported-by: Rob Sanders - Bug: https://bugzilla.redhat.com/1436158 - -- nss: unify the coding style of nss_send() and nss_recv() - - No changes in behavior intended by this commit. - -Marcel Raad (18 Jul 2017) -- tests/server/resolve.c: fix deprecation warning - - MSVC warns that gethostbyname is deprecated. Always use getaddrinfo - instead to fix this when IPv6 is enabled, also for IPv4 resolves. This - is also consistent with what libcurl does. - - Closes https://github.com/curl/curl/pull/1682 - -Jay Satiro (17 Jul 2017) -- darwinssl: fix pinnedpubkey build error - - - s/SessionHandle/Curl_easy/ - - Bug: https://github.com/curl/curl/commit/eb16305#commitcomment-23035670 - Reported-by: Gisle Vanem - -Marcel Raad (16 Jul 2017) -- rtspd: fix GCC warning after MSVC warning fix - - Older GCC warns: - /tests/server/rtspd.c:1194:10: warning: missing braces around - initializer [-Wmissing-braces] - - Fix this by using memset instead of an initializer. - -- libtest: fix MSVC warning C4706 - - With warning level 4, MSVC warns about assignments within conditional - expressions. Change the while loop to a do-while loop to fix this. This - change is also consistent with CODE_STYLE.md. - -- sockfilt: suppress conversion warning with explicit cast - - MSVC warns when implicitly casting -1 to unsigned long. - -- rtspd: fix MSVC level 4 warning - - warning C4701: potentially uninitialized local variable 'req' used - -- winbuild: re-enable warning C4127 for curl tool - - Disabled in cda19a345f6970e22fe8b7a808aeb8f086a21eac. It only needs to - be disabled for libcurl. - -- winbuild: build with warning level 4 - - This is consistent with 7bc64561a2e63ca93e4b0b31d350773ba80955c2, which - changed the warning level from 3 to 4 for the Visual Studio project - files. But disable the level 4 warning C4127 "conditional expression is - constant", as that one is issued by older versions of the Windows SDK - as well as curl itself under some circumstances. - - Closes https://github.com/curl/curl/pull/1667 - -Jay Satiro (12 Jul 2017) -- [Max Dymond brought this change] - - travis: install libidn2 - - Install libidn2 to increase test coverage (IDN tests) - - Closes https://github.com/curl/curl/pull/1673 - -Marcel Raad (12 Jul 2017) -- travis: enable warnings also in release mode - - ... to get warnings also on Linux/GCC and OSX/clang. - - Closes https://github.com/curl/curl/pull/1666 - -Daniel Stenberg (12 Jul 2017) -- [Max Dymond brought this change] - - travis: install libssh2 - - Install libssh2 to increase test coverage (SFTP, SCP) - -Marcel Raad (12 Jul 2017) -- system.h: include winsock2.h before windows.h - - ... to avoid compiler warnings if the user doesn't want - WIN32_LEAN_AND_MEAN. - -- build: remove WIN32_LEAN_AND_MEAN from individual build systems - - It's defined for all build systems in curl_setup.h since commit - beb08481d01a07a8b10938b1078a5e298b1c2912. This caused macro - redefinition warnings in the configure builds. - - Closes https://github.com/curl/curl/pull/1677 - -Jay Satiro (11 Jul 2017) -- ISSUE_TEMPLATE: Add a comment not to file security issues on github - -Marcel Raad (11 Jul 2017) -- curl_setup: always define WIN32_LEAN_AND_MEAN on Windows - - Make sure to always define WIN32_LEAN_AND_MEAN before including any - Windows headers to avoid pulling in unnecessary headers. This avoids - unnecessary macro clashes and compiler warnings. - - Ref: https://github.com/curl/curl/issues/1562 - Closes https://github.com/curl/curl/pull/1672 - -Jay Satiro (11 Jul 2017) -- strerror: Preserve Windows error code in some functions - - This is a follow-up to af02162 which removed (SET_)ERRNO macros. That - commit was an earlier draft that I committed by mistake, which was then - remedied by a5834e5 and e909de6, and now this commit. With this commit - there is now no difference between the current code and the changes that - were approved in the final draft. - - Thanks-to: Max Dymond, Marcel Raad, Daniel Stenberg, Gisle Vanem - Ref: https://github.com/curl/curl/pull/1589 - -Marcel Raad (10 Jul 2017) -- [Max Dymond brought this change] - - tests: Fix up issues with errno in test files - - Closes https://github.com/curl/curl/pull/1671 - -Daniel Stenberg (10 Jul 2017) -- errno: fix non-windows builds after af0216251b94e7 - -- [Ryan Winograd brought this change] - - make: fix docs build on OpenBSD - - Ref: #1591 - -Marcel Raad (10 Jul 2017) -- ldap: fix MinGW compiler warning - - ldap_bind_s is marked as deprecated in w32api's winldap.h shipping with - the latest original MinGW, resulting in compiler warnings since commit - f0fe66f13c93d3d0af45d9fb1231c9164e0f9dc8. Fix this for the non-SSPI - case by using ldap_simple_bind_s again instead of ldap_bind_s with - LDAP_AUTH_SIMPLE. - - Closes https://github.com/curl/curl/pull/1664 - -- curl-compilers.m4: disable warning spam with Cygwin's clang - - When building with Cygwin or MinGW, libtool uses a wrapper executable - instead of a wrapper script [1], which is written in C and throws - missing-variable-declarations warnings. Don't enable these warnings on - Cygwin and MinGW in order to avoid warnings for every executable built, - which spams the test suite output when using Cygwin's clang. - - [1] https://www.gnu.org/software/libtool/manual/html_node/Wrapper-executables.html - - Closes https://github.com/curl/curl/pull/1665 - -Jay Satiro (10 Jul 2017) -- curl_setup_once: Remove ERRNO/SET_ERRNO macros - - Prior to this change (SET_)ERRNO mapped to GetLastError/SetLastError - for Win32 and regular errno otherwise. - - I reviewed the code and found no justifiable reason for conflating errno - on WIN32 with GetLastError/SetLastError. All Win32 CRTs support errno, - and any Win32 multithreaded CRT supports thread-local errno. - - Fixes https://github.com/curl/curl/issues/895 - Closes https://github.com/curl/curl/pull/1589 - -- tool_getparam: fix potentially uninitialized err - -Marcel Raad (9 Jul 2017) -- smb: rename variable to fix shadowing warning - - GCC 4.6.3 on travis complains: - smb.c: In function ‘get_posix_time’: - smb.c:725:13: error: declaration of ‘time’ shadows a global declaration - [-Werror=shadow] - - Fix this by renaming the variable. - -- tool_cb_wrt: fix variable shadowing warning - - GCC 4.4 complains: - tool_cb_wrt.c:81: error: declaration of ‘isatty’ shadows a global - declaration - /usr/include/unistd.h:782: error: shadowed declaration is here - - Fix this by renaming the variable. - - Closes https://github.com/curl/curl/pull/1661 - -Daniel Stenberg (8 Jul 2017) -- RELEASE-NOTES: synced with be2c999b8 - -- travis: install stunnel - -- valgrind.supp: supress OpenSSL false positive seen on travis - -- travis: detect and use valgrind for normal builds - - Closes #1653 - -- travis: add SMB, DICT, TELNET torture to coverage test - -- [Paul Harris brought this change] - - cmake: offer CMAKE_DEBUG_POSTFIX when building with MSVC - - Removes BUILD_RELEASE_DEBUG_DIRS since it wasn't used anywhere. - - Closes #1649 - -- CURLOPT_POSTFIELDS.3: explain the 100-continue magic better - -- [Max Dymond brought this change] - - test1452: add telnet negotiation - - Add a basic telnet server for negotiating some telnet options before - echoing back any data that's sent to it. - - Closes #1645 - -- travis: do more tests in the coverage run - - I added a selection of torture and event tests that run "fast enough" - -- curl_easy_escape.3: mention the (lack of) encoding - - Fixes #1612 - Reported-by: Jeroen Ooms - -- [Gisle Vanem brought this change] - - memdebug: don't setbuf() if the file open failed - - Bug: https://github.com/curl/curl/issues/828#issuecomment-313475151 - -- appveyor: enable CURL_WERROR on all builds - -- cmake: add CURL_WERROR for enabling "warning as errors" - -- [Hannes Magnusson brought this change] - - cmake: remove spurious "-l" from linker flags - - Fixes #1552 - -- test506: skip if threaded-resolver - -- runtests: support "threaded-resolver" as a feature - - ... to let tests require it or skip if present - -- asyn-thread.c: fix unused variable warnings on macOS - -- http: s/TINY_INITIAL_POST_SIZE/EXPECT_100_THRESHOLD - - Make the name reflect its use better, and add a short comment describing - what it's for. - -- cmake: if inet_pton is used, bump _WIN32_WINNT - - ... and make sure inet_pton is always checked for when *not* using Windows, - which is a regression from 4fc6ebe18. - - Idea-by: Sergei Nikulov - -- select.h: avoid macro redefinition harder - - ... by checking the POLLIN define, as the header file checks don't work - on Windows. - -- inet_pton: fix include on windows to get prototype - - inet_pton() exists on Windows and gets used by our cmake builds. Make - sure the correct header file is included to avoid compiler warnings. - - Closes #1639 - -- TODO: 1.10 auto-detect proxy - - Closes #1572 - -- TODO: HTTP proxy CONNECT is non-blocking now - -- cmake: fix send/recv argument scanner for windows - - ... by simply trying the Windows argument types first. - - Fixes #1640 - -- RELEASE-NOTES: synced with 596cfb6c0 - -- [Gisle Vanem brought this change] - - smb: add support for CURLOPT_FILETIME - - Bug: https://curl.haxx.se/mail/lib-2017-07/0005.html - - Closes #1643 - -- travis: install nghttp2 on linux builds - - Closes #1642 - -- [Gisle Vanem brought this change] - - smb: fix build for djgpp/MSDOS - - bug: https://curl.haxx.se/mail/lib-2017-07/0005.html - -- configure: try ldap/lber in reversed order first - - When scanning for which LDAP libraries to use, try the -lldap -llber - combination before the reversed order since it has a greater chance of - working when linking with libcurl statically. - - Fixes #1619 - Closes #1634 - Reported-by: David E. NarvĂĄez - -- configure: remove checks for 5 functions never used - - fork, getprotobyname, inet_addr, perror, uname - - closes #1638 - -- dist: add SMB python deps into the tarball - -- [Max Dymond brought this change] - - test1451: add SMB support to the testbed - - Add test 1451 which does some very basic SMB testing using the impacket - SMB server. - - Closes #1630 - -- [Max Dymond brought this change] - - test: add impacket for SMB testing - - Import impacket 0.9.15 for use in SMB testing. This was generated by - doing "pip2.7 install -t . impacket" - - Unnecessary files for current testing were deleted. - -- travis.yml: use --enable-werror on debug builds - - ... to better detect and fault on compiler warnings/errors - - Closes #1637 - -- tool_sleep: typecast to avoid macos compiler warning - - tool_sleep.c:54:24: error: implicit conversion loses integer precision: - 'long' to '__darwin_suseconds_t' (aka 'int') - [-Werror,-Wshorten-64-to-32] - -- [Martin Kepplinger brought this change] - - timeval.c: Use long long constant type for timeval assignment - - On a 64 bit host, sparse says: - - timeval.c:148:15: warning: constant 0x7fffffffffffffff is so big it is long - timeval.c:149:12: warning: constant 0x7fffffffffffffff is so big it is long - - so let's use long long constant types in order to prevent undesired overflow - failures. - - Bug: https://curl.haxx.se/mail/lib-2017-07/0003.html - - Closes #1636 - - Signed-off-by: Martin Kepplinger - -- url: make the original string get used on subsequent transfers - - ... since CURLOPT_URL should follow the same rules as other options: - they remain set until changed or cleared. - - Added test 1551 to verify. - - Fixes #1631 - Closes #1632 - Reported-by: Pavel Rochnyak - -- [Johannes Schindelin brought this change] - - gtls: fix build when sizeof(long) < sizeof(void *) - - - Change gnutls pointer/int macros to pointer/curl_socket_t. - Prior to this change they used long type as well. - - The size of the `long` data type can be shorter than that of pointer - types. This is the case most notably on Windows. - - If C99 were acceptable, we could simply use `intptr_t` here. But we - want to retain C89 compatibility. - - Simply use the trick of performing pointer arithmetic with the NULL - pointer: to convert an integer `i` to a pointer, simply take the - address of the `i`th element of a hypothetical character array - starting at address NULL. To convert back, simply cast the pointer - difference. - - Thanks to Jay Satiro for the initial modification to use curl_socket_t - instead of int/long. - - Closes #1617 - - Signed-off-by: Johannes Schindelin - -- [Ryan Winograd brought this change] - - unit1399: fix integer overflow - - Bug: #1616 - Closes #1633 - -- [Per Malmberg brought this change] - - cmake: Added compatibility options for older Windows versions - - CURL_STATIC_CRT and ENABLE_INET_PTON - - Closes #1621 - -- unit1399: add logging to time comparison - - ... to enable tracking down why autobuilds fail on this - - Bug: #1616 - -- make: build the docs subdir only from within src - - ... and don't build at all in include - - Prompted-by-work-by: Simon Warta - Ref: #1590 - Closes #1591 - -- [Max Dymond brought this change] - - test1450: fix up DICT server in torture mode - - As per https://github.com/curl/curl/pull/1615, the DICT server is a - little spammy in torture mode due to the sockets being torn down - unexpectedly. Fix this by adding some error handling to the handling - function. - - Closes #1629 - -- [Max Dymond brought this change] - - test1450: add simple testing for DICT - - Add a new server which provides a DICT interface. This is intended to - begin coverage testing for lib/dict.c - - Closes #1615 - -- [Dan Fandrich brought this change] - - test1521: fix out-of-tree builds, broken with 467da3af - - The test.h file is no longer in the same directory as the source file, - so that directory needs to be added to the include path. - - Fixes #1627 - Closes #1628 - -- [Max Dymond brought this change] - - http2: handle PING frames - - Add a connection check function to HTTP2 based off RTSP. This causes - PINGs to be handled the next time the connection is reused. - - Closes #1521 - -- [Max Dymond brought this change] - - handler: refactor connection checking - - Add a new type of callback to Curl_handler which performs checks on - the connection. Alter RTSP so that it uses this callback to do its - own check on connection health. - -- [dmitrykos brought this change] - - openssl: improve fallback seed of PRNG with a time based hash - - Fixes #1620 - -- [Ryan Winograd brought this change] - - progress: prevent resetting t_starttransfer - - Prevent `Curl_pgrsTime` from modifying `t_starttransfer` when invoked - with `TIMER_STARTTRANSFER` more than once during a single request. - - When a redirect occurs, this is considered a new request and - `t_starttransfer` can be updated to reflect the `t_starttransfer` time - of the redirect request. - - Closes #1616 - - Bug: https://github.com/curl/curl/pull/1602#issuecomment-310267370 - -- curl_strequal.3: fix typo in SYNOPSIS - - Reported-by: Jesse Chisholm - - Fixes #1623 - -- RELEASE-NOTES: synced with ce2c3ebda - -Kamil Dudka (28 Jun 2017) -- curl --socks5-{basic,gssapi}: control socks5 auth - - Closes https://github.com/curl/curl/pull/1454 - -- CURLOPT_SOCKS5_AUTH: allowed methods for SOCKS5 proxy auth - - If libcurl was built with GSS-API support, it unconditionally advertised - GSS-API authentication while connecting to a SOCKS5 proxy. This caused - problems in environments with improperly configured Kerberos: a stock - libcurl failed to connect, despite libcurl built without GSS-API - connected fine using username and password. - - This commit introduces the CURLOPT_SOCKS5_AUTH option to control the - allowed methods for SOCKS5 authentication at run time. - - Note that a new option was preferred over reusing CURLOPT_PROXYAUTH - for compatibility reasons because the set of authentication methods - allowed by default was different for HTTP and SOCKS5 proxies. - - Bug: https://curl.haxx.se/mail/lib-2017-01/0005.html - Closes https://github.com/curl/curl/pull/1454 - -- socks: deduplicate the code for auth request - -- socks: use proxy_user instead of proxy_name - - ... to make it obvious what the data is used for - -Daniel Stenberg (27 Jun 2017) -- libtest/make: generate lib1521.c - - ... instead of having the generated code checked in. This saves space in - the tarball but primarily automatically adapts to newly added options. - - Closes #1614 - -Jay Satiro (26 Jun 2017) -- tool_getparam: fix memory leak on test 1147 OOM (torture tests) - - Bug: https://github.com/curl/curl/pull/1486#issuecomment-310926872 - Reported-by: Dan Fandrich - -Dan Fandrich (25 Jun 2017) -- test1537: fixed memory leak on OOM - -Marcel Raad (25 Jun 2017) -- test1521: fix compiler warnings - - The integer literal 3123123123 doesn't fit into a 32-bit signed - integer, so GCC with 32-bit long warns in C90 mode: - this decimal constant is unsigned only in ISO C90 [enabled by default] - Fix this by using ULONG_MAX, which should fit in any curl_off_t and has - the correct suffix to not issue any warnings. - Also adds the missing CURLOPT_REQUEST_TARGET from commit - 9b167fd090f596eac828817d48c247eeae53407f. - - Closes https://github.com/curl/curl/pull/1611 - -Daniel Stenberg (24 Jun 2017) -- curl/system.h: add check for XTENSA for 32bit gcc - - Reported-by: Neil Kolban - Fixes: 1598 - -- [Henrik S. Gaßmann brought this change] - - winbuild: fix boringssl build - - Compile with `WIN32_LEAN_AND_MEAN` which prevents `windows.h` from - including too much clutter including `wincrypt.h` which in turn contains - some preprocessor macros that clash with boringssl symbols. - - Detect boringssl by checking the existance of `is_boringssl.h` and set - the corresponding `HAVE_BORINGSSL` for compilation which is used in - `ldap.c` to undefine the evil macros. - - Closes #1610 - -- progress: progress.timespent needs to be us - - follow-up to 64ed44a815e4e to fix test 500 failures - -Marcel Raad (24 Jun 2017) -- curl-compilers.m4: fix unknown-warning-option on Apple clang - - Since 5598b0bd63f690c151074494ce47ef872f004ab4, clang -v is used to - detect the clang version. The version number was expected to come after - the word "version". For Apple clang, this doesn't work as it has its - own versioning scheme. - The version number is now first searched after the string - "based on LLVM". This works for Apple clang before version 7, and also - for e.g. Ubuntu's clang up to version 3.7. If it's not found and the - version string contains "Apple LLVM version", clang version 3.7 is - assumed, which is the version that comes with Xcode 7. Otherwise, the - version number is still expected after the word "version", which works - for very old Apple clang versions. - - Ref: https://trac.macports.org/wiki/XcodeVersionInfo - Fixes https://github.com/curl/curl/issues/1606 - Closes https://github.com/curl/curl/pull/1607 - -Daniel Stenberg (24 Jun 2017) -- progress: fix "time spent", broke in adef394ac - -- CURLINFO_REDIRECT_URL.3: mention the CURLOPT_MAXREDIRS case - - ... supported since 7.54.1 - -- maketgz: switch to -6e for xz - - To reduce the memory requirement for decompress, and still do almost as - good compression as with -9e. - - Pointed-out-by: Dan Fandrich - -- libtest/Makefile: remove unused lib1541 variables - -- CONTRIBUTE.md: mention the out-of-tree build test too - -- maketgz: switch to xz instead of lzma - - The compressed output size seems to be a tad bit smaller, but generally - xz seems more preferred these days and is used directly by for example - gentoo instead of bz2. - - "Users of LZMA Utils should move to XZ Utils" => - https://tukaani.org/lzma/ - - Closes #1604 - -- --request-target: instead of --strip-path-slash - - ... and CURLOPT_REQUEST_TARGET instead of CURLOPT_STRIP_PATH_SLASH. - - This option instead provides the full "alternative" target to use in the - request, instead of extracting the path from the URL. - - Test 1298 and 1299 updated accordingly. - - Idea-by: Evert Pot - Suggestion: https://daniel.haxx.se/blog/2017/06/19/options-with-curl/comment-page-1/#comment-18373 - - Closes #1593 - -Marcel Raad (21 Jun 2017) -- lib1521: fix missing-variable-declarations clang warnings - - Declare TU-local variables static. - -- travis: enable typecheck-gcc warnings - - - switch debug and release configurations so that we get an optimized - build with GCC 4.3+ as required by typecheck-gcc - - enable warnings-as-errors for release builds - (which have warnings disabled) - - Closes https://github.com/curl/curl/pull/1595 - -- typecheck-gcc: add support for CURLINFO_OFF_T - - typecheck-gcc expected curl_socket_t instead of curl_off_t arguments - for CURLINFO_OFF_T. Detected by test1521, unfortunately only when run - locally. - - Closes https://github.com/curl/curl/pull/1592 - -Daniel Stenberg (21 Jun 2017) -- [Simon Warta brought this change] - - ci: whitelist branches to avoid testing feature branches twice - -- [Gisle Vanem brought this change] - - lib: fix the djgpp build - - Bug: https://github.com/curl/curl/commit/73a2fcea0b4adea6ba342cd7ed1149782c214ae3#commitcomment-22655993 - -Marcel Raad (20 Jun 2017) -- if2ip: fix compiler warning in ISO C90 mode - - remote_scope_id is only used when both HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID - and ENABLE_IPV6 are defined instead of only one of them. - -Daniel Stenberg (20 Jun 2017) -- travis: do the distcheck test build out-of-tree as well - -- http: add --strip-path-slash and CURLOPT_STRIP_PATH_SLASH - - ... to enable sending "OPTIONS *" which wasn't possible previously. - - This option currently only works for HTTP. - - Added test cases 1298 + 1299 to verify - - Fixes #1280 - Closes #1462 - -- test1521: test getinfo's OFF_T types too - - Closes #1588 - -- lib1521: add curl_easy_getinfo calls to the test set - - Also added return value checks to make sure no unexpected return codes - are used. - -- [Simon Warta brought this change] - - automake: use $(MKHELP) variable instead if constant mkhelp.pl - - this improves symmetry with the rule above - -- [Simon Warta brought this change] - - mkhelp.pl: fix script name in usage text - -- RELEASE-NOTES: synced with 3b80d3ca4 - -- getinfo: return sizes as curl_off_t - - This change introduces new alternatives for the existing six - curl_easy_getinfo() options that return sizes or speeds as doubles. The - new versions are named like the old ones but with an appended '_T': - - CURLINFO_CONTENT_LENGTH_DOWNLOAD_T - CURLINFO_CONTENT_LENGTH_UPLOAD_T - CURLINFO_SIZE_DOWNLOAD_T - CURLINFO_SIZE_UPLOAD_T - CURLINFO_SPEED_DOWNLOAD_T - CURLINFO_SPEED_UPLOAD_T - - Closes #1511 - -- PIPELINING_SERVER_BL: cleanup the internal list use - - The list was freed incorrectly since the llist refactor of - cbae73e1dd959. Added test 1550 to verify that it works and avoid future - regressions. - - Reported-by: Pascal Terjan - - Fixes #1584 - Closes #1585 - -- http2: fix OOM crash - - torture mode with test 1021 found it - -- CURLOPT_PREQUOTE.3: spellfix man page reference - -Marcel Raad (18 Jun 2017) -- http_proxy: fix build with http and proxy - - After deff7de0eb0e22d2d142b96b9cc84cd8db5d2a48, the build without - CURL_DISABLE_PROXY and CURL_DISABLE_HTTP was failing because of missing - includes. - -- http_proxy: fix compiler warning - - With CURL_DISABLE_PROXY or CURL_DISABLE_HTTP, GCC complained about a - missing prototype for Curl_connect_free. - -Daniel Stenberg (18 Jun 2017) -- TODO: update the TOC too - -- TODO: implement support for CURLOPT_PREQUOTE with SFTP - - ... also updated the CURLOPT_PREQUOTE.3 man page to mention the correct - protocol support. - - Closes #1514 - -- tool_wrte_cb: remove check for config == NULL - - ... as it really cannot have reached this far with config being NULL, - thus this is unnecesary and misleading. - - Bug: https://news.ycombinator.com/item?id=14577585 and - https://daniel.haxx.se/blog/2017/06/17/curl-doesnt-spew-binary-anymore/comment-page-1/#comment-18356 - - Forwarded-to-us-by: Jakub Wilk - -- curl: prevent binary output spewed to terminal - - ... unless "--output -" is used. Binary detection is done by simply - checking for a binary zero in early data. - - Added test 1425 1426 to verify. - - Closes #1512 - -Marcel Raad (16 Jun 2017) -- Makefile.m32: enable -W for MinGW32 build - - The configure-based build also has this in addition to -Wall. - - Closes https://github.com/curl/curl/pull/1578 - -- curl-compilers.m4: enable comma clang warning - - It usually warns when using commas instead of semicolons or other - operators by accident. - - Closes https://github.com/curl/curl/pull/1578 - -- curl-compilers.m4: enable missing-variable-declarations clang warning - - It usually warns when forgetting to declare TU-local variables static. - - Closes https://github.com/curl/curl/pull/1578 - -- curl-compilers.m4: enable double-promotion warning - - Enable -Wdouble-promotion for both GCC and clang. It warns on implicit - promotion from float to double. - - Closes https://github.com/curl/curl/pull/1578 - -- curl-compilers.m4: enable vla warning for clang - - Previously, that warning was only implicitly active in C90 mode. - Enable it unconditionally as already done for GCC. - - Closes https://github.com/curl/curl/pull/1578 - -Daniel Stenberg (16 Jun 2017) -- http-proxy: fix chunked-encoded CONNECT responses - - Regression since 5113ad0424. - - ... and remove 'flaky' from test 1061 again - - Closes #1579 - -- http-proxy: deal with EAGAIN - - ... the previous code would reset the header length wrongly (since - 5113ad0424). This makes test 1060 reliable again. - - Also: make sws send even smaller chunks of data to increase the - likeliness of this happening. - -- libtest/libntlmconnect: fix compiler warnings from f94fcdb - -- [Jay Satiro brought this change] - - HTTPS-Proxy: don't offer h2 for https proxy connections - - Bug: https://github.com/curl/curl/issues/1254 - - Closes #1546 - -- tests: stabilize test 2032 and 2033 - - Both these tests run the same underlying test code: libntlmconnect.c - - this test code made some assumptions about socket ordering when it used - curl_easy_fdset() and when we changed timing or got accidental changes - in libcurl the tests would fail. - - The tests verify that the different transfers keep using the same - connections, which I now instead made sure by adding the number of bytes - each transfer gets and then verifies that they always get the same - amount as when these tests worked. - - Closes #1576 - -- test1148: verify the -# progressbar - - Closes #1569 - -- test1061: mark as flaky - - Fails intermittently on travis builds since a few days. Likely due to - 5113ad0424. - -Jay Satiro (16 Jun 2017) -- url: refactor the check for Windows drive letter in path - - - Move the logic to detect a Windows drive letter prefix - (eg c: in c:foo) into a function-like macro. - - Closes https://github.com/curl/curl/pull/1571 - -- mk-ca-bundle.pl: Check curl's exit code after certdata download - - - No longer allow partial downloads of certdata. - - Prior to this change partial downloads were (erroneously?) allowed since - only the server code was checked to be 200. - - Bug: https://github.com/curl/curl/pull/1577 - Reported-by: Matteo B. - -Daniel Stenberg (16 Jun 2017) -- dist: add the fuzz dir to the tarball - -- configure: disable nghttp2 too if HTTP has been disabled - -- http-proxy: fix build with --disable-proxy or --disable-http - - Reported-by: Dan Fandrich - -- fuzz/README: document how to build - - Fixes #1476 - -- [Frederik B brought this change] - - fuzz: corpora file structure, initial commit - -- [Frederik B brought this change] - - fuzz: bring oss-fuzz initial code converted to C89 - -- http-proxy: only attempt FTP over HTTP proxy - - ... all other non-HTTP protocol schemes are now defaulting to "tunnel - trough" mode if a HTTP proxy is specified. In reality there are no HTTP - proxies out there that allow those other schemes. - - Assisted-by: Ray Satiro, Michael Kaufmann - - Closes #1505 - -- TODO: the generated include file is gone - - ... since commit 73a2fcea0b - -- curl_setup.h: error out on CURL_WANTS_CA_BUNDLE_ENV use - - ... to make it really apparent if there's any user using this on purpose. - - Suggested-by: Jay Satiro - - Closes #1542 - -- lib/curl_setup.h: remove CURL_WANTS_CA_BUNDLE_ENV - - When this define was set, libcurl would check the environment variable - named CURL_CA_BUNDLE at run-time and use that CA cert bundle. This - feature was only defined by the watcom and m32 makefiles and caused - inconsistent behaviours among libcurls built on different platforms. - - The curl tool does already feature its own similar logic and the library - does not really need it, and it isn't documented libcurl behavior. So - this change removes it. - - Ref: #1538 - -- test1147: verify -H on a file - -- curl: allow --header and --proxy-header read from file - - So many headers can be provided as @filename. - - Suggested-by: Timothe Litt - - Closes #1486 - -- RELEASE-NOTES: synced with 2ad80eec5 - -- curl/curlver.h: start working on 7.55.0 - -- http-proxy: do the HTTP CONNECT process entirely non-blocking - - Mentioned as a problem since 2007 (8f87c15bdac63) and of course it - existed even before that. - - Closes #1547 - -- progress: let "current speed" be UL + DL speeds combined - - Bug #1556 - Reported-by: Paul Harris - Closes #1559 - -Marcel Raad (14 Jun 2017) -- system.h: fix MinGW build - - CURLSYS_PULL_WS2TCPIP_H got renamed to CURL_PULL_WS2TCPIP_H in commit - 73a2fcea0b4adea6ba342cd7ed1149782c214ae3. - -Daniel Stenberg (14 Jun 2017) -- timers: store internal time stamps as time_t instead of doubles - - This gives us accurate precision and it allows us to avoid storing "no - time" for systems with too low timer resolution as we then bump the time - up to 1 microsecond. Should fix test 573 on windows. - - Remove the now unused curlx_tvdiff_secs() function. - - Maintains the external getinfo() API with using doubles. - - Fixes #1531 - -- dist: make the hugehelp.c not get regenerated unnecessarily - - The maketgz script now makes sure the generated hugehelp.c file in the - tarball is newer than the generated curl.1 man page, so that it doesn't - have to get unnecessarily rebuilt first thing in a typical build. It - thus also removes the need for perl to build off a plain release - tarball. - - Fixes #1565 - -- includes: remove curl/curlbuild.h and curl/curlrules.h - - Rely entirely on curl/system.h now. - - Introduced in Aug 2008 with commit 14240e9e109f. Now gone. - - Fixes #1456 - -Version 7.54.1 (14 Jun 2017) - -Daniel Stenberg (14 Jun 2017) -- release: 7.54.1 - -Dan Fandrich (13 Jun 2017) -- mk-lib1521.pl: updated to match the test changes in 916ec30a - -Daniel Stenberg (13 Jun 2017) -- [Stuart Henderson brought this change] - - libressl: OCSP and intermediate certs workaround no longer needed - - lib/vtls/openssl.c has a workaround for a bug with OCSP responses signed - by intermediate certs, this was fixed in LibreSSL in - https://github.com/libressl-portable/openbsd/commit/912c64f68f7ac4f225b7d1fdc8fbd43168912ba0 - - Bug: https://curl.haxx.se/mail/lib-2017-06/0038.html - -- url: fix buffer overwrite with file protocol (CVE-2017-9502) - - Bug: https://github.com/curl/curl/issues/1540 - Advisory: https://curl.haxx.se/docs/adv_20170614.html - - Assisted-by: Ray Satiro - Reported-by: Marcel Raad - -- urlglob: fix division by zero - - The multiply() function that is used to avoid integer overflows, was - itself reason for a possible division by zero error when passed a - specially formatted glob. - - Reported-by: GwanYeong Kim - -- configure: update the copyright year in the output - -- [ygrek brought this change] - - BINDINGS: update SP-Forth and OCaml urls - -Michael Kaufmann (11 Jun 2017) -- FindWin32CACert: Use a temporary buffer on the stack - - Don't malloc() the temporary buffer, and use the correct type: - SearchPath() works with TCHAR, but SearchPathA() works with char. - Set the buffer size to MAX_PATH, because the terminating null byte - is already included in MAX_PATH. - - Reviewed-by: Daniel Stenberg - Reviewed-by: Marcel Raad - - Closes #1548 - -Dan Fandrich (11 Jun 2017) -- test1521: fixed OOM handling - -Daniel Stenberg (9 Jun 2017) -- RELEASE-PROCEDURE: updated future release dates - -- [Paul Harris brought this change] - - gitignore: ignore all vim swap files - - Closes #1561 - -- lib1521: fix compiler warnings on the use of bad 'long' values - - Reported-by: Marcel Raad - Bug: https://github.com/curl/curl/commit/cccac4fb2b20d6ed87da7978408c3ecacc464fe4#commitcomment-22453387 - -- setopt: check CURLOPT_ADDRESS_SCOPE option range - - ... and return error instead of triggering an assert() when being way - out of range. - -Jay Satiro (8 Jun 2017) -- [TheAssassin brought this change] - - cmake: Fix inconsistency regarding mbed TLS include directory - - Previously, one had to set MBEDTLS_INCLUDE_DIR to make CMake find the - headers, but the system complained that mbed TLS wasn't found due to - MBEDTLS_INCLUDE_DIRS (note the trailing s) was not set. This commit - attempts to fix that. - - Closes https://github.com/curl/curl/pull/1541 - -Daniel Stenberg (8 Jun 2017) -- [Ryuichi KAWAMATA brought this change] - - examples/multi-uv.c: fix deprecated symbol - - Closes #1557 - -- asyn-ares: s/Curl_expire_latest/Curl_expire - -- expire: remove Curl_expire_latest() - - With the introduction of expire IDs and the fact that existing timers - can be removed now and thus never expire, the concept with adding a - "latest" timer is not working anymore as it risks to not expire at all. - - So, to be certain the timers actually are in line and will expire, the - plain Curl_expire() needs to be used. The _latest() function was added - as a sort of shortcut in the past that's quite simply not necessary - anymore. - - Follow-up to 31b39c40cf90 - - Reported-by: Paul Harris - - Closes #1555 - -- [Chris Carlmar brought this change] - - configure: fix link with librtmp when specifying path - - Bug: https://curl.haxx.se/mail/lib-2017-06/0017.html - -- file: make speedcheck use current time for checks - - ... as it would previously just get the "now" timestamp before the - transfer starts and then not update it again. - - Closes #1550 - -- metalink: remove unused printf() argument - -- travis: let some builds *not* use --enable-debug - - typecheck-gcc and other things require optimized builds - - Closes #1544 - -- README.md: show the coverall coverage on github - -- lib1521: fix compiler warnings - -- test1521: make the code < 80 columns wide - -- test1121: use stricter types to work with typcheck-gcc - -- typecheck-gcc: allow CURLOPT_STDERR to be NULL too - -- test1521: test *all* curl_easy_setopt options - - mk-lib1521.pl generates a test program (lib1521.c) that calls - curl_easy_setopt() for every known option with a few typical values to - make sure they work (ignoring the return codes). - - Some small changes were necessary to avoid asserts and NULL accesses - when doing this. - - The perl script needs to be manually rerun when we add new options. - - Closes #1543 - -Dan Fandrich (5 Jun 2017) -- test1538: added "verbose logs" keyword - - These error messages are not displayed with --disable-verbose - -Daniel Stenberg (5 Jun 2017) -- test1262: verify ftp download with -z for "if older than this" - -Marcel Raad (5 Jun 2017) -- curl_ntlm_core: use Curl_raw_toupper instead of toupper - - This was the only remaining use of toupper in the entire source code. - - Suggested-by: Daniel Stenberg - -Daniel Stenberg (4 Jun 2017) -- RELEASE-NOTES: synced with 65ba92650 - -Marcel Raad (4 Jun 2017) -- curl_ntlm_core: pass unsigned char to toupper - - Otherwise, clang on Cygwin64 warns: - curl_ntlm_core.c:525:35: error: array subscript is of type 'char' - [-Werror,-Wchar-subscripts] - dest[2 * i] = (unsigned char)(toupper(src[i])); - ^~~~~~~~~~~~~~~ - /usr/include/ctype.h:152:25: note: expanded from macro 'toupper' - (void) __CTYPE_PTR[__x]; (toupper) (__x);}) - ^~~~ - -Jay Satiro (3 Jun 2017) -- [Mahmoud Samir Fayed brought this change] - - BINDINGS: add Ring binding - - Closes https://github.com/curl/curl/pull/1539 - -Daniel Stenberg (4 Jun 2017) -- CONTRIBUTE.md: mention tests done on pull requests - -- travis: add coverage, distcheck and cmake builds - - Closes #1534 - -Marcel Raad (3 Jun 2017) -- libtest: fix int-in-bool-context warnings - - GCC 7 complained: - ‘*’ in boolean context, suggest ‘&&’ instead [-Wint-in-bool-context] - -- libtest: fix implicit-fallthrough warnings with GCC 7 - -- x509asn1: fix implicit-fallthrough warning with GCC 7 - -- curl_sasl: fix unused-variable warning - - This fixes the following warning with CURL_DISABLE_CRYPTO_AUTH, - as seen in the autobuilds: - - curl_sasl.c:417:9: warning: unused variable 'serverdata' - [-Wunused-variable] - -Daniel Stenberg (3 Jun 2017) -- updatemanpages.pl: error out on too old git version - -Marcel Raad (3 Jun 2017) -- cyassl: define build macros before including ssl.h - - cyassl/ssl.h needs the macros from cyassl/options.h, so define them - before including cyassl/ssl.h the first time, which happens in - urldata.h. - This broke the build on Ubuntu Xenial, which comes with WolfSSL 3.4.8 - and therefore redefines the symbols from cyassl/options.h instead of - including the header. - - Closes https://github.com/curl/curl/pull/1536 - -Daniel Stenberg (3 Jun 2017) -- tool_util: remove unused tvdiff_secs and remove tool_ prefix - - Closes #1532 - -- dedotdot: fixed output for ".." and "." only input - - Found when updating test 1395, which I did to increase test coverage of - this source file... - - Closes #1535 - -Marcel Raad (2 Jun 2017) -- mbedtls: make TU-local variable static - - mbedtls_x509_crt_profile_fr is only used locally. - This fixes a missing-variable-declarations warning with clang. - -- MD(4|5): silence cast-align clang warning - - Unaligned access is on purpose here and the warning is harmless on - affected architectures. GCC knows that, while clang warns on all - architectures. - -Daniel Stenberg (2 Jun 2017) -- test1538: fix typo - -- test1538: verify the libcurl strerror API calls - -- curl_endian: remove unused functions - - Closes #1529 - -- test1537: dedicated tests of the URL (un)escape API calls - - Closes #1530 - -- coverage: run event tests too - - ... the torture ones are commented out only because they are slooooow. - -- build: provide easy code coverage measuring - - Closes #1528 - -- typecheck-gcc.h: check CURLINFO_CERTINFO - - ... and update the certinfo.c example accordingly. - - Fixes https://github.com/curl/curl/issues/846 - -- typecheck-gcc.h: check CURLINFO_TLS_SSL_PTR and CURLINFO_TLS_SESSION - - ... so that they get the required "struct curl_tlssessioninfo **" - arguments. - -- typecheck-gcc.h: separate getinfo slist checks from other pointers - - Fixes #1524 - -Marcel Raad (1 Jun 2017) -- curl-compilers.m4: escape square brackets in regex - - Otherwise, they are removed in the final configure file. - Also changed sed to "$SED" like in most other calls in this file. - -- curl-compilers.m4: fix compiler_num for clang - - "clang -dumpversion" always returns "4.2.1", the GCC version that clang - was initially compatible to. Use "clang -v" instead, which returns the - actual clang version. - - Fixes https://github.com/curl/curl/issues/1522 - Closes https://github.com/curl/curl/pull/1523 - -Daniel Stenberg (31 May 2017) -- examples/externalsocket.c: s/closesocket/closecb - - ... since closesocket is a function in WinSock. - - Reported-by: Marcel Raad - Bug: https://github.com/curl/curl/commit/55fcb8485914700132fd1854c9509b66c955efbe#co - mmitcomment-22347818 - -Marcel Raad (31 May 2017) -- lib583: fix compiler warning - - Use CURLMcode for variable 'res' and cast to int where necessary - instead of the other way around. Other tests do the same. - - This fixes the following clang warning: - lib583.c:68:15: warning: cast from function call of type 'CURLMcode' to - non-matching type 'int' [-Wbad-function-cast] - -Daniel Stenberg (31 May 2017) -- CURLOPT_SSH_KEY*.3: typos - - Reported-by: Gisle Vanem - -- CURLOPT_STREAM_DEPENDS.3: typo - -- CURLOPT_FNMATCH_FUNCTION.3: also modified example to avoid fcpp issues - -- CURLOPT_FNMATCH_DATA.3: modified example to avoid fcpp issues - -- opts: more than 100 more examples for man pages... - -- libtest/lib574.c: use correct callback proto - -- examples/sampleconv.c: indent changes, made callbacks static - -- example/externalsocket.c: make it use CLOSESOCKETFUNCTION too - -Marcel Raad (31 May 2017) -- curl-compilers.m4: enable -Wshift-sign-overflow for clang - - clang 2.9+ supports -Wshift-sign-overflow, which warns about undefined - behavior on signed left shifts when shifting by too many places. - - Ref: https://github.com/curl/curl/issues/1516 - Closes https://github.com/curl/curl/pull/1517 - -Daniel Stenberg (31 May 2017) -- CURLOPT_PROXY.3: fix test 1140 breakage - -Jay Satiro (31 May 2017) -- build-wolfssl: Sync config with wolfSSL 3.11 - - wolfSSL configure script relevant changes from 3.10 to 3.11: - - - Async threading support added; disabled by default without async - crypto, which continues to be disabled by default. - - wolfSSL configure script relevant changes from 3.11 to 3.11.1 (beta): - - - TLS 1.3 beta support added; disabled by default. - - For experimenting I put in a comment block the defines needed to enable - TLS 1.3 support (ie the equivalent of --enable-tls13). - -Daniel Stenberg (30 May 2017) -- opts: more examples added to man pages - -- docs: clarify NO_PROXY further - - Fixes #1208 - -- CURLOPT_PROXY.3: describe the environment variables more - -- transfer: init the infilesize from the postfields... - - ... with a strlen() if no size was set, and do this in the pretransfer - function so that the info is set early. Otherwise, the default strlen() - done on the POSTFIELDS data never sets state.infilesize. - - Reported-by: Vincas Razma - Bug: #1294 - -Jay Satiro (29 May 2017) -- test557: fix ubsan runtime error due to int left shift - - - Test curl_msnprintf negative int width arg using INT_MIN instead of - 1 << 31 which is undefined behavior. - - Closes https://github.com/curl/curl/issues/1516 - -- mbedtls: fix variable shadow warning - - vtls/mbedtls.c:804:69: warning: declaration of 'entropy' shadows a global declaration [-Wshadow] - CURLcode Curl_mbedtls_random(struct Curl_easy *data, unsigned char *entropy, - ^~~~~~~ - -Daniel Stenberg (29 May 2017) -- RELEASE-NOTES: synced with 3aaac8c2f - -Dan Fandrich (28 May 2017) -- tests: removed some redundant empty sections - -- runtests.pl: removed feature - - This hasn't been used in over a decade. can still be used to - run commands before the main test. - -Daniel Stenberg (27 May 2017) -- opts: more examples added in option man pages - -Dan Fandrich (27 May 2017) -- runtests.pl: removed unused arguments to valgrindparse - -Daniel Stenberg (25 May 2017) -- TODO: 6.4 is done, send telnet data in chunks - -- [Phil Crump brought this change] - - docs/CURLOPT_SSLVERSION.3: Correct define name in example - - Closes #1509 - -- ssh: fix 'left' may be used uninitialized - - follow-up to f31760e63b4e - - Reported-by: Michael Kaufmann - Bug: https://github.com/curl/curl/pull/1495#issuecomment-303982793 - -Michael Kaufmann (24 May 2017) -- time: fix type conversions and compiler warnings - - Fix bugs and compiler warnings on systems with 32-bit long and - 64-bit time_t. - - Reviewed-by: Daniel Stenberg - - Closes #1499 - -Marcel Raad (24 May 2017) -- examples: fix Wimplicit-fallthrough warnings - - This is contained in -Wextra with GCC 7. - -Daniel Stenberg (24 May 2017) -- [Anatol Belski brought this change] - - winbuild: fix the nghttp2 build - - Closes #1321 - -GitHub (24 May 2017) -- [Sergei Nikulov brought this change] - - LDAP: documentation update per #878 changes (#1506) - -Daniel Stenberg (23 May 2017) -- redirect: store the "would redirect to" URL when max redirs is reached - - Test 1261 added to verify. - - Reported-by: Lloyd Fournier - - Fixes #1489 - Closes #1497 - -GitHub (24 May 2017) -- [Sergei Nikulov brought this change] - - LDAP: fixed checksrc issue - -- [Sergei Nikulov brought this change] - - LDAP: using ldap_bind_s on Windows with methods (#878) - - * LDAP: using ldap_bind_s on Windows with methods(BASIC/DIGEST/NTLM/AUTONEG) - - * ldap: updated per build options handling - - * ldap: fixed logic for auth selection - -Daniel Stenberg (23 May 2017) -- [Akhil Kedia brought this change] - - cmake: fix build on Ubuntu 14.04 - - Fixed a syntax error with setting cache variables (The type and - docstring were missing), resulting in build errors. Quoted the - CURL_CA_PATH and CURL_CA_BUNDLE otherwise the path was written without - quotes in C code, resulting in build errors. - - Closes #1503 - - Signed-off-by: Akhil - -- url: fix declaration of 'pipe' shadows a global declaration - - follow-up to 4cdb1be8246c - -Kamil Dudka (22 May 2017) -- memdebug: fix compilation failure - - .... caused by a typo in the last commit (fixing issue #1504): - - memdebug.c: In function ‘curl_fclose’: - memdebug.c:444:3: error: implicit declaration of function - ‘DEBUGDEBUGASSERT’ [-Werror=implicit-function-declaration] - -Daniel Stenberg (22 May 2017) -- assert: avoid, use DEBUGASSERT instead! - - ... as it does extra checks to actually work. - - Reported-by: jonrumsey at github - Fixes #1504 - -- [Simon Warta brought this change] - - cmake: remove unused variables: GNUTLS_ENABLED, NSS_ENABLED - -- [Simon Warta brought this change] - - cmake: remove CURL_CA_BUNDLE from cmake TODO - -- [Simon Warta brought this change] - - cmake: auto detection of CURL_CA_BUNDLE/CURL_CA_PATH - - Closes #1461 - -- [Simon Warta brought this change] - - cmake: add CURL_CA_BUNDLE/CURL_CA_FALLBACK/CURL_CA_PATH options - -- [Simon Warta brought this change] - - cmake: Add CURL_CA_FALLBACK to curl_config.h.cmake - - This is for symmetry with the autoconf generated curl_config.h.in - -- RELEASE-NOTES: synced with 052a14e3c - -Michael Kaufmann (20 May 2017) -- tests: stabilize test 1034 - - Pass the invalid domain name on stdin. On some systems, the test - framework cannot pass invalid UTF-8 sequences on the command line. - - Closes #1488 - -Daniel Stenberg (20 May 2017) -- ssh: ignore timeouts during disconnect - - ... as otherwise it risks not cleaning up the libssh2 handle properly - which leads to memory leak! - - Assisted-by: Joel Depooter - - Closes #1495 - Closes #1479 - - Bug: https://curl.haxx.se/mail/lib-2017-04/0024.html - -- ghiper.c/hiperfifo.c: add comment about missing timer functionality - - It takes someone to read up on the APIs of these libraries to figure out - how to do this correctly. - - Reported-by: Michael Kaufmann - - Closes #1253 - -- asiohiper.cpp / evhiperfifo.c: deal with negative timerfunction input - - That means delete the timer. - - Reported-by: Michael Kaufmann - Ref: #1253 - -- cmdline-opts/write-out.d: s/-L/--location - - Since the man page generator wants the long option name version to - generate the proper output. - -- [Bernhard M. Wiedemann brought this change] - - mkhelp.pl: do not add current time into curl binary - - ... as part of hugehelpgz rodata to make build reproducible. - - See https://reproducible-builds.org/ for why this is good - - Closes #1490 - -- oauth2-bearer.d: mention the argument - -Nick Zitzmann (16 May 2017) -- darwinssl: Fix exception when processing a client-side certificate file - if no error was raised by the API but the SecIdentityRef was null - - Fixes #1450 - -Daniel Stenberg (16 May 2017) -- curl_sasl: fix build error with CURL_DISABLE_CRYPTO_AUTH + USE_NTLM - - Reported-by: wyattoday at github - Fixes #1487 - -- docs/cmdline-opts/config.d: edit for language - -- RELEASE-NOTES: synced with eb16305e6 - -- [moparisthebest brought this change] - - SecureTransport/DarwinSSL: Implement public key pinning - - Closes #1400 - -- man pages: fix example syntax errors - - follow-up to 5ddad099b42b50 - -- docs/libcurl/opts: added more examples in man pages - -- CURLOPT_HTTPPROXYTUNNEL: clarify, add example - -- curl: show the libcurl release date in --version output - - ... and support and additional "security patched" date for those who - enhance older versions that way. Pass on the define CURL_PATCHSTAMP with - a date for that. - - Building with non-release headers shows the date as [unreleased]. - - Also: this changes the date format generated in the curlver.h file to be - "YYYY-MM-DD" (no name of the day or month, no time, no time zone) to - make it easier on the eye and easier to parse. Example (new) date - string: 2017-05-09 - - Suggested-by: Brian Childs - - Closes #1474 - -Dan Fandrich (13 May 2017) -- url.c: add a compile-time check that CURL_MAX_WRITE_SIZE is large enough - - Some code (e.g. Curl_fillreadbuffer) assumes that this buffer is not - exceedingly tiny and will break if it is. This same check is already - done at run time in the CURLOPT_BUFFERSIZE option. - -- lib510: don't write past the end of the buffer if it's too small - -- tests: added missing keywords "chunked Transfer-Encoding" - -Daniel Stenberg (13 May 2017) -- THANKS: add a few missing names - - ... I found them in the commit logs from the early years - -Dan Fandrich (13 May 2017) -- tests: made a couple of prechecks consistent with others - - Also removed a TODO suggesting caching the precheck results. Tests - showed this would save about 0.1 sec on the total test run time on a - relatively modern system, an unnoticeable gain at the cost of longer and - more complicated code. There would also be a danger that a cached test - result would be inappropriately returned, such as when other test - dependencies (like environment variables) are different or when the - precheck causes side effects (like filesystem changes). - -Daniel Stenberg (12 May 2017) -- FAQ: add 7.4 to toc - - ... and delete trailing whitespace - - Fixes #1484 - -- multi: remove leftover debug infof() calls from e9fd794a6 - -- pipeline: fix mistakenly trying to pipeline POSTs - - The function IsPipeliningPossible() would return TRUE if either - pipelining OR HTTP/2 were possible on a connection, which would lead to - it returning TRUE even for POSTs on HTTP/1 connections. - - It now returns a bitmask so that the caller can differentiate which kind - the connection allows. - - Fixes #1481 - Closes #1483 - Reported-by: stootill at github - -Jay Satiro (12 May 2017) -- [Ron Eldor brought this change] - - mbedtls: Support server renegotiation request - - Tested with servers: IIS 7.5; OpenSSL 1.0.2. - - Closes https://github.com/curl/curl/pull/1475 - -Marcel Raad (11 May 2017) -- cookie_interface: fix -Wcomma warning - - clang 5.0 complains: - possible misuse of comma operator here [-Wcomma] - -- formdata: fix -Wcomma warning - - clang 5.0 complains: - possible misuse of comma operator here [-Wcomma] - - Change the comma to a semicolon to fix that. - -Daniel Stenberg (10 May 2017) -- multi: use a fixed array of timers instead of malloc - - ... since the total amount is low this is faster, easier and reduces - memory overhead. - - Also, Curl_expire_done() can now mark an expire timeout as done so that - it never times out. - - Closes #1472 - -- multi: assign IDs to all timers and make each timer singleton - - A) reduces the timeout lists drastically - - B) prevents a lot of superfluous loops for timers that expires "in vain" - when it has actually already been extended to fire later on - -- [Richard Hsu brought this change] - - tests: remove superfluous test 1399 - - @MarcelRaad noted that `test1399` causes infinite loop on MinGW. - Looking into this, seems like it is related to how Windows handles - CRLF. See https://github.com/curl/curl/commit/9e093f by @mback2k. - Removing `test1399` as it's identical to `test1326` then with such a - fix. - - Test 1399 was broughy by commit 862b02f8947039e - - Closes #1478 - -Dan Fandrich (9 May 2017) -- tests: make test file names more unique - - Include the test number in the names of files written out by tests to - reduce the chance of accidental duplication and to make it more clear - which test is associated with which file. - -- tests: removed redundant --trace-ascii arguments - - This is already added by the test suite; it's not clear why all these - tests had it, unless it's cargo-culting. - -Marcel Raad (9 May 2017) -- tool: fix remaining -Wcast-qual warnings - - Avoid casting away low-level const. - -Daniel Stenberg (9 May 2017) -- formboundary: convert assert into run-time check - - ... to really make sure the boundary fits in the target buffer. - - Fixes unused parameter 'buflen' warning. - - Reported-by: Michael Kaufmann - Bug: https://github.com/curl/curl/pull/1468#issuecomment-300078754 - -Dan Fandrich (9 May 2017) -- tests: list the primary server first in the server section - -Daniel Stenberg (8 May 2017) -- curl: generate the --help output - - ... using the docs/cmdline-opts/gen.pl script, so that we get all the - command line option documentation from the same source. - - The generation of the list has to be done manually and pasted into the - source code. - - Closes #1465 - -- tests: updated for modified fake random - -- [Jay Satiro brought this change] - - rand: treat fake entropy the same regardless of endianness - - When the random seed is purposely made predictable for testing purposes - by using the CURL_ENTROPY environment variable, process that data in an - endian agnostic way so the the initial random seed is the same - regardless of endianness. - - - Change Curl_rand to write to a char array instead of int array. - - - Add Curl_rand_hex to write random hex characters to a buffer. - - Fixes #1315 - Closes #1468 - - Co-authored-by: Daniel Stenberg - Reported-by: Michael Kaufmann - -Dan Fandrich (8 May 2017) -- tests: give each stunnel.conf file a unique name - - Otherwise, subsequent uses of stunnel overwrite the configuration file - of previous invocations so they can no longer be inspected. - -Marcel Raad (8 May 2017) -- tool_msgs: remove wrong cast - - Commit 481e0de00a9003b9c5220b120e3fc302d9b0932d changed the variable - type from int to size_t, so don't cast the result of strlen to int - anymore. - -- tftpd: fix signed/unsigned mismatch warnings - - alarm's argument is unsigned. - -- libtest: fix MinGW-w64 warnings - - long is 32 bits while size_t is 64 bits on MinGW-w64, so - typecheck-gcc.h complains when using size_t for a long option. - Also, curl_socket_t is unsigned long long rather than int. - -Daniel Stenberg (8 May 2017) -- curl.1: depend the build on the Makefile.inc too - - ... to also make it update when we remove files, like we did for - --environment in commit a8e388dd1095. - -- RELEASE-NOTES: synced with e3f84efc32d6b01a - -- runtests: fix "use of undefined value" warning in -R handling - -Marcel Raad (8 May 2017) -- test537: use correct variable type - - Avoids narrowing conversion warnings because rlim_t is usually - unsigned long. - - Closes https://github.com/curl/curl/pull/1469 - -- sendrecv: fix MinGW-w64 warning - - The first argument to select is an int, while curl_socket_t is - unsigned long long when using WinSock. It's ignored anyway [1]. - - [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms740141.aspx - -- tool_parsecfg: fix -Wcast-qual warning - - Don't convert string literal to char * before assigning it to - const char *. - -- asyn-thread: fix unused macro warnings - - Don't do anything in this file if CURLRES_THREADED is not defined. - -- tftp: silence bad-function-cast warning - - The cases this warns about are handled elsewhere, so just use an - intermediate variable to silence the warning. - -Daniel Stenberg (7 May 2017) -- [canavan at github brought this change] - - buildconf: fix hang on IRIX - - Apparently, /usr/bin/m4 ignores the --version parameter and waits for - input from stdin. - - Fixes #1471 - -- opts: fix bad example formatting \n => \\n - - ...to render properly nroff. - -- opts: examples added to 8 more libcurl option man pages - -- curl: remove tool_writeenv.[ch] - - ... and USE_ENVIRONMENT and --environment. It was once added for RISC OS - support and its platform specific behavior has been annoying ever - since. Added in commit c3c8bbd3b2688da8e, mostly unchanged since - then. Most probably not actually used for years. - - Closes #1463 - -Dan Fandrich (6 May 2017) -- runtests.pl: simplify the datacheck read section - - Also, document that numbered datacheck sections are possible. - -Marcel Raad (5 May 2017) -- tests: fix -Wcast-qual warnings - - Avoid casting string literals to non-const char *. - -Daniel Stenberg (5 May 2017) -- docs/opts: 24 more man pages now have examples - -- docs/opts: 23 more man pages now have examples - -- tests/server: run checksrc by default in debug-builds - -- curl_slist_append.3: clarify a NULL input creates a new list - -Marcel Raad (5 May 2017) -- unit1305: fix compiler warning - - calloc and ai_addrlen expect different (usually unsigned) types. - -Daniel Stenberg (5 May 2017) -- runtests: use -R for random order - - Suggested-by: Dan Fandrich - -- runtests: add -o to run test cases in scrambled order - - ... instead of numerical order. - - Closes #1466 - -Dan Fandrich (4 May 2017) -- sockfilt.c: shortened too long line - -Marcel Raad (4 May 2017) -- tests/server: make string literals const - - assign string literals to const char * instead of char * in order to - avoid a lot of these warnings: - cast from 'const char *' to 'char *' drops const qualifier - [-Wcast-qual] - -Dan Fandrich (4 May 2017) -- schannel: return a more specific error code for SEC_E_UNTRUSTED_ROOT - -- test557: set a known good numeric locale - - Windows does not allow setting the locale with environment variables (as - the test attempted to do), so the test failed when run with a user - locale that has a comma as radixchar. Changed the test to call - setlocale() explicitly to ensure that a known working locale is set even - on Windows. - -Daniel Stenberg (4 May 2017) -- curl: fix warning "comma at end of enumerator list" - -- test559: verify use of minimum CURLOPT_BUFFERSIZE - -Marcel Raad (4 May 2017) -- curl_setup_once: use SEND_QUAL_ARG2 for swrite - - SEND_QUAL_ARG2 had to be set, but was never used. Use it in swrite to - avoid warnings about casting away low-level const. - - Closes https://github.com/curl/curl/pull/1464 - -Daniel Stenberg (4 May 2017) -- CURLINFO_REDIRECT_URL.3: add example - -- CURLINFO_EFFECTIVE_URL.3: add example - -Marcel Raad (3 May 2017) -- lib: fix compiler warnings - - Fix the following warnings when building the tests by using the correct - types: - cast from 'const char *' to 'void *' drops const qualifier - [-Wcast-qual] - implicit conversion changes signedness [-Wsign-conversion] - -- typecheck-gcc: add support for CURLINFO_SOCKET - - Closes https://github.com/curl/curl/pull/1452 - -- typecheck-gcc: add missing string options - - Closes https://github.com/curl/curl/pull/1452 - -Daniel Stenberg (3 May 2017) -- abstract-unix-socket.d: shorten the help text to fit within 79 cols - -- RELEASE-NOTES: synced with 862b02f89 - -- [Richard Hsu brought this change] - - Telnet: Write full buffer instead of byte-by-byte - - Previous TODO wanting to write in chunks. We should support writing more - at once since some TELNET servers may respond immediately upon first - byte written such as WHOIS servers. - - Closes #1389 - -- curl: non-boolean command line args reject --no- prefixes - - ... and instead properly respond with an error message to the user - instead of silently ignoring. - - Fixes #1453 - Closes #1458 - -Marcel Raad (2 May 2017) -- testpart: remove _MPRINTF_REPLACE - - Support for _MPRINTF_REPLACE in mprintf.h was removed in - 55452ebdff47f98bf3cc383f1dfc3623fcaefefd, replaced with curl_printf.h. - -Dan Fandrich (2 May 2017) -- gtls: fixed a lingering BUFSIZE reference - -Daniel Stenberg (2 May 2017) -- ssh: fix compiler warning from e40e9d7f0de - -- url: let CURLOPT_BUFFERSIZE realloc to smaller sizes too - - Closes #1449 - -- BUFSIZE: rename to READBUFFER_*, make separate MASTERBUF_SIZE - -- openssl: use local stack for temp storage - -- sendf: remove use of BUFSIZE from debug data conversions - - The buffer can have other sizes. - -- buffer: use data->set.buffer_size instead of BUFSIZE - - ... to properly use the dynamically set buffer size! - -- krb5: use private buffer for temp string, not receive buffer - -- upload: UPLOAD_BUFSIZE is now for the upload buffer - -- unit1606: do not print/access buffer - - It was a wrong assumption that it could do that! - -- http-proxy: use a dedicated CONNECT response buffer - - To make it suitably independent of the receive buffer and its flexible - size. - -- transfer: fix minor buffer_size mistake - -- failf: use private buffer, don't clobber receive buffer - -- pingpong: use the set buffer size - -- http2: use the correct set buffer size - -- http: don't clobber the receive buffer for timecond - -- buffer_size: make sure it always has the correct size - - Removes the need for CURL_BUFSIZE - -- file: use private buffer for C-L output - - ... instead of clobbering the download buffer. - -- CURLOPT_BUFFERSIZE: 1024 bytes is now the minimum size - - The buffer is needed to receive FTP, HTTP CONNECT responses etc so - already at this size things risk breaking and smaller is certainly not - wise. - -- ftp: use private buffer for temp storage, not receive buffer - -- http: use private user:password output buffer - - Don't clobber the receive buffer. - -Marcel Raad (1 May 2017) -- anyauthput: remove unused code - - The definition of TRUE was introduced in - 4a728747e6f8845e500910e397dfc99aaf4a7984 and is not used anymore since - e664cd5826d43930fcc5b5dbaedbec94af33184b. - The usage of intptr_t was removed in - 32e38b8f42477cf5ce3c3fef2fcc9db82f7fb7be. - -Jay Satiro (1 May 2017) -- tool: Fix missing prototype warnings for CURL_DOES_CONVERSIONS - - - Include tool_convert.h where needed. - - Bug: https://github.com/curl/curl/issues/1460 - Reported-by: Gisle Vanem - -- curl_setup: Ensure no more than one IDN lib is enabled - - Prior to this change it was possible for libcurl to be built with both - Windows' native IDN lib (normaliz) and libidn2 enabled. It appears that - doesn't offer any benefit --and could cause a bug-- since libcurl's IDN - handling is written to use either one but not both. - - Bug: https://github.com/curl/curl/issues/1441#issuecomment-297689856 - Reported-by: Gisle Vanem - -Marcel Raad (1 May 2017) -- getpart: use correct variable type - - This fixes the following clang warning: - getpart.c:201:17: warning: cast from function call of type 'CURLcode' - to non-matching type 'int' [-Wbad-function-cast] - -- tests: declare TU-local variables static - - This fixes missing-variable-declarations warnings when building with - clang. - -- tool_cb_prg: fix double-promotion warning - - clang complains: - tool_cb_prg.c:86:22: error: implicit conversion increases - floating-point precision: 'float' to 'double' - [-Werror,-Wdouble-promotion] - - Fix this by using a double instead of a float constant. - -Dan Fandrich (1 May 2017) -- examples: fixed too long line and too long string warnings - -Marcel Raad (30 Apr 2017) -- examples: declare TU-local variables static - - This fixes missing-variable-declarations warnings when building with - clang. - -- http2: declare TU-local variables static - - This fixes the following clang warnings: - - http2.c:184:27: error: no previous extern declaration for non-static - variable 'Curl_handler_http2' [-Werror,-Wmissing-variable-declarations] - http2.c:204:27: error: no previous extern declaration for non-static - variable 'Curl_handler_http2_ssl' - [-Werror,-Wmissing-variable-declarations] - -Dan Fandrich (30 Apr 2017) -- unit1604: fixed indentation - -- unit1604: fixed compilation under Windows, broken in the previous commit - -- tests: fixed OOM handling of unit tests to abort test - - It's dangerous to continue to run the test when a memory alloc fails. - -Marcel Raad (29 Apr 2017) -- curl_rtmp: fix missing-variable-declarations warnings - - clang complains: - - curl_rtmp.c:61:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmp' [-Werror,-Wmissing-variable-declarations] - curl_rtmp.c:81:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpt' [-Werror,-Wmissing-variable-declarations] - curl_rtmp.c:101:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpe' [-Werror,-Wmissing-variable-declarations] - curl_rtmp.c:121:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpte' [-Werror,-Wmissing-variable-declarations] - curl_rtmp.c:141:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmps' [-Werror,-Wmissing-variable-declarations] - curl_rtmp.c:161:27: error: no previous extern declaration for non-static variable 'Curl_handler_rtmpts' [-Werror,-Wmissing-variable-declarations] - - Fix this by including the header file. - -Dan Fandrich (29 Apr 2017) -- url: fixed a memory leak on OOM while setting CURLOPT_BUFFERSIZE - -- tests: added --remote-time tests for remaining protocols that support it - -- runtests.pl: support multiline commands - -- tool_operate: use utimes instead of obsolescent utime when available - -- test1443: test --remote-time - -- http-proxy: removed unused argument in CURL_DISABLE_PROXY case - - Missed in commit 55c3c02e - -Daniel Stenberg (27 Apr 2017) -- cookie_interface.c: changed the other domain to example.com too - -- cookie_interface.c: fix cookie domain so the example works - -Dan Fandrich (26 Apr 2017) -- Makefile: fix make dist - - Commit 80a87e8a broke 'make dist' as it can't handle installing from - absolute target names. Rearranged the dependencies so the absolute name - is used for building but the relative name is use for distributing. - -Marcel Raad (26 Apr 2017) -- lib: remove unused code - - This fixes the following clang warnings: - macro is not used [-Wunused-macros] - will never be executed [-Wunreachable-code] - - Closes https://github.com/curl/curl/pull/1448 - -Daniel Stenberg (26 Apr 2017) -- http-proxy: remove unused argument from Curl_proxyCONNECT() - -- [Martin Kepplinger brought this change] - - url: declare get_protocol_family() static - - get_protocol_family() is not defined static even though there is a - static local forward declaration. Let's simply make the definition match - it's declaration. - - Bug: https://curl.haxx.se/mail/lib-2017-04/0127.html - -- examples: ftpuploadfrommem.c - - Uploads data to an FTP site, directly from memory. - - Closes #1451 - -Kamil Dudka (25 Apr 2017) -- nss: load libnssckbi.so if no other trust is specified - - The module contains a more comprehensive set of trust information than - supported by nss-pem, because libnssckbi.so also includes information - about distrusted certificates. - - Reviewed-by: Kai Engert - Closes #1414 - -- nss: factorize out nss_{un,}load_module to separate fncs - - No change of behavior is intended by this commit. - -- nss: do not leak PKCS #11 slot while loading a key - - It could prevent nss-pem from being unloaded later on. - - Bug: https://bugzilla.redhat.com/1444860 - -Marcel Raad (25 Apr 2017) -- typecheck-gcc: fix _curl_is_slist_info - - Info values starting with CURLINFO_SOCKET expect a curl_socket_t, not a - curl_slist argument. - - This fixes the following GCC warning when building the examples with - --enable-optimize: - - ../../include/curl/typecheck-gcc.h:126:42: warning: call to - ‘_curl_easy_getinfo_err_curl_slist’ declared with attribute warning: - curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this - info [enabled by default] - sendrecv.c:90:11: note: in expansion of macro ‘curl_easy_getinfo’ - res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd); - - Closes https://github.com/curl/curl/pull/1447 - -Daniel Stenberg (25 Apr 2017) -- curl: set a 100K buffer size by default - - Test command 'time curl http://localhost/80GB -so /dev/null' on a Debian - Linux. - - Before (middle performing run out 9): - - real 0m28.078s - user 0m11.240s - sys 0m12.876s - - After (middle performing run out 9) - - real 0m26.356s (93.9%) - user 0m5.324s (47.4%) - sys 0m8.368s (65.0%) - - Also, doing SFTP over a 200 millsecond latency link is now about 6 times - faster. - - Closes #1446 - -- transfer: remove 'uploadbuf' pointer and cleanup readwrite_upload() - - The data->req.uploadbuf struct member served no good purpose, instead we - use ->state.uploadbuffer directly. It makes it clearer in the code which - buffer that's being used. - - Removed the 'SingleRequest *' argument from the readwrite_upload() proto - as it can be derived from the Curl_easy struct. Also made the code in - the readwrite_upload() function use the 'k->' shortcut to all references - to struct fields in 'data->req', which previously was made with a mix of - both. - -Jay Satiro (25 Apr 2017) -- configure: stop prepending to LDFLAGS, CPPFLAGS - - - Change prepends to appends because user's LDFLAGS and CPPFLAGS should - always come first so they're searched before ours. - - Bug: https://github.com/curl/curl/issues/1420 - Reported-by: Helmut K. C. Tessarek - -Marcel Raad (25 Apr 2017) -- if2ip: fix -Wcast-align warning - - Follow-up to 119037325de02579f5c58256ca2ed2a0aa592c86, which fixed the - warning in the HAVE_GETIFADDRS block, but not in the - HAVE_IOCTL_SIOCGIFADDR block. - -Dan Fandrich (24 Apr 2017) -- Makefile: avoid use of GNU-specific form of $< - - $< is only allowed in implicit rules in some non-GNU makes (e.g. BSD, - AIX) so avoid use elsewhere by referencing the dependent curl.1 file - directly instead. This is somewhat tricky because the file is supplied - in the packaged tar ball (but not in git) but must still be able to be - rebuilt when its dependencies change. The right thing must happen in - both tar ball and git source trees, as well as in both in-tree and - out-of-tree builds. - -Kamil Dudka (24 Apr 2017) -- nss: adapt to the new Curl_llist API - - This commit fixes compilation failure caused by - cbae73e1dd95946597ea74ccb580c30f78e3fa73. - -Marcel Raad (24 Apr 2017) -- curl-compilers.m4: accept -Og and -Ofast GCC flags - - -Og, introduced in GCC 4.8, optimizes for debugging experience. - -Ofast, introduced in GCC 4.7, builds on -O3 and enables further - optimizations breaking strict standards compliance. - When specified in CFLAGS, these were always overridden by -O0 or -O2. - Fix this by adding them to flags_opt_all. - - Ref: https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.html - Ref: https://github.com/curl/curl/pull/1404#issuecomment-296401570 - Closes https://github.com/curl/curl/pull/1440 - -Daniel Stenberg (24 Apr 2017) -- RELEASE-NOTES: synced with c68fed875 - -- configure: fix the -ldl check for openssl, add -lpthread check - - The check for if -ldl is needed to build with (a statically built) - openssl was broken. This repairs the check, and adds a check for - -lpthread as well since OpenSSL 1.1.0+ does in fact require -lpthread so - only adding -ldl for a static openssl build is no longer enough. - - Reported-by: Jay Satiro - Ref: #1426 - Closes #1427 - -- llist: fix a comment after cbae73e1dd9 - - Pointed-it-by: Kevin Ji - URL: https://github.com/curl/curl/commit/cbae73e1dd95946597ea74ccb580c30f78e3fa73#commitcomment-21872622 - -Jay Satiro (22 Apr 2017) -- schannel: Don't treat encrypted partial record as pending data - - - Track when the cached encrypted data contains only a partial record - that can't be decrypted without more data (SEC_E_INCOMPLETE_MESSAGE). - - - Change Curl_schannel_data_pending to return false in such a case. - - Other SSL libraries have pending data functions that behave similarly. - - Ref: https://github.com/curl/curl/pull/1387 - - Closes https://github.com/curl/curl/pull/1392 - -Daniel Stenberg (22 Apr 2017) -- [Alan Jenkins brought this change] - - multi: clarify condition in curl_multi_wait - - `if(nfds || extra_nfds) {` is followed by `malloc(nfds * ...)`. - - If `extra_fs` could be non-zero when `nfds` was zero, then we have - `malloc(0)` which is allowed to return `NULL`. But, malloc returning - NULL can be confusing. In this code, the next line would treat the NULL - as an allocation failure. - - It turns out, if `nfds` is zero then `extra_nfds` must also be zero. - The final value of `nfds` includes `extra_nfds`. So the test for - `extra_nfds` is redundant. It can only confuse the reader. - - Closes #1439 - -Marcel Raad (22 Apr 2017) -- lib: fix maybe-uninitialized warnings - - With -Og, GCC complains: - - easy.c:628:7: error: ‘mcode’ may be used uninitialized in this function [-Werror=maybe-uninitialized] - - ../lib/strcase.h:35:29: error: ‘tok_buf’ may be used uninitialized in this function [-Werror=maybe-uninitialized] - vauth/digest.c:208:9: note: ‘tok_buf’ was declared here - - ../lib/strcase.h:35:29: error: ‘tok_buf’ may be used uninitialized in this function [-Werror=maybe-uninitialized] - vauth/digest.c:566:15: note: ‘tok_buf’ was declared here - - Fix this by initializing the variables. - -Dan Fandrich (22 Apr 2017) -- gnutls: removed some code when --disable-verbose is configured - - This reduces the binary size and fixes a compile warning. - -Daniel Stenberg (22 Apr 2017) -- llist: no longer uses malloc - - The 'list element' struct now has to be within the data that is being - added to the list. Removes 16.6% (tiny) mallocs from a simple HTTP - transfer. (96 => 80) - - Also removed return codes since the llist functions can't fail now. - - Test 1300 updated accordingly. - - Closes #1435 - -Marcel Raad (21 Apr 2017) -- typecheck-gcc: handle function pointers properly - - All the callbacks passed to curl_easy_setopt are defined as function - pointers. The possibility to pass both functions and function pointers - was handled for the callbacks that typecheck-gcc.h defined as - compatible, but not for the public callback types themselves. - - This makes all compatible callback types defined in typecheck-gcc.h - function pointers too and checks all functions uniformly with - _curl_callback_compatible, which handles both functions and function - pointers. - - A symptom of the problem was a warning in tool_operate.c with - --disable-libcurl-option and without --enable-debug as that file - passes the callback functions to curl_easy_setopt directly. - - Fixes https://github.com/curl/curl/issues/1403 - Closes https://github.com/curl/curl/pull/1404 - -Dan Fandrich (21 Apr 2017) -- mbedtls: enable NTLM (& SMB) even if MD4 support is unavailable - - In that case, use libcurl's internal MD4 routine. This fixes tests 1013 - and 1014 which were failing due to configure assuming NTLM and SMB were - always available whenever mbed TLS was in use (which is now true). - -Daniel Stenberg (21 Apr 2017) -- tests: remove the html and PDF versions from the tarball - -- openssl: fix memory leak in servercert - - ... when failing to get the server certificate. - -- Revert "src/Makefile.am: avoid explicit $<" - - This reverts commit 5b4cbcf11d5100ff793a8e9edbaa6fe1fc7495f5. - - Since it broke out-of-tree builds from tarballs. See discussion in #1432 - -- bump: start working on next release - -- src/Makefile.am: avoid explicit $< - - ... since apparently "BSD make" doesn't support it. - - Reported-by: Thomas Klausner - Fixes #1432 - -Version 7.54.0 (19 Apr 2017) - -Daniel Stenberg (19 Apr 2017) -- THANKS: add contributors from 7.54.0 release notes - -- RELEASE-NOTES: curl 7.54.0 - -Marcel Raad (18 Apr 2017) -- nss: fix MinGW compiler warnings - - This fixes 3 warnings issued by MinGW: - 1. PR_ImportTCPSocket actually has a paramter of type PROsfd instead of - PRInt32, which is 64 bits on Windows. Fixed this by including the - corresponding header file instead of redeclaring the function, which is - supported even though it is in the private include folder. [1] - 2. In 64-bit mode, size_t is 64 bits while CK_ULONG is 32 bits, so an explicit - narrowing cast is needed. - 3. Curl_timeleft returns time_t instead of long since commit - 21aa32d30dbf319f2d336e0cb68d3a3235869fbb. - - [1] https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/PR_ImportTCPSocket - - Closes https://github.com/curl/curl/pull/1393 - -Daniel Stenberg (18 Apr 2017) -- [Jay Satiro brought this change] - - TLS: Fix switching off SSL session id when client cert is used - - Move the sessionid flag to ssl_primary_config so that ssl and proxy_ssl - will each have their own sessionid flag. - - Regression since HTTPS-Proxy support was added in cb4e2be. Prior to that - this issue had been fixed in 247d890, CVE-2016-5419. - - Bug: https://github.com/curl/curl/issues/1341 - Reported-by: lijian996@users.noreply.github.com - - The new incarnation of this bug is called CVE-2017-7468 and is documented - here: https://curl.haxx.se/docs/adv_20170419.html - -- [David Benjamin brought this change] - - openssl: don't try to print nonexistant peer private keys - - X.509 certificates carry public keys, not private keys. Fields - corresponding to the private half of the key will always be NULL. - - Closes #1425 - -- [David Benjamin brought this change] - - openssl: fix thread-safety bugs in error-handling - - ERR_error_string with NULL parameter is not thread-safe. The library - writes the string into some static buffer. Two threads doing this at - once may clobber each other and run into problems. Switch to - ERR_error_string_n which avoids this problem and is explicitly - bounds-checked. - - Also clean up some remnants of OpenSSL 0.9.5 around here. A number of - comments (fixed buffer size, explaining that ERR_error_string_n was - added in a particular version) date to when ossl_strerror tried to - support pre-ERR_error_string_n OpenSSLs. - - Closes #1424 - -- [David Benjamin brought this change] - - openssl: make SSL_ERROR_to_str more future-proof - - Rather than making assumptions about the values, use a switch-case. - - Closes #1424 - -- [Daniel Gustafsson brought this change] - - code: fix typos and style in comments - - A few random typos, and minor whitespace cleanups, found in comments - while reading code. - - Closes #1423 - -Marcel Raad (17 Apr 2017) -- extern-scan.pl: strip trailing CR - - This makes test 1135 pass with CRLF checkouts. - - Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166 - Closes https://github.com/curl/curl/pull/1422 - -- configure.ac: ignore CR after version numbers - - Ignore everything after the version numbers in LIBCURL_VERSION and - LIBCURL_VERSION_NUM to ged rid of the extra CR character. - This makes tests 1022 and 1023 pass on Linux with a CRLF checkout. - - Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166 - Closes https://github.com/curl/curl/pull/1422 - -- .gitattributes: force shell scripts to LF - - Bash on Linux errors out on CR characters. - This makes tests 1221 and 1222 pass on Linux with a CRLF checkout. - - Ref: https://github.com/curl/curl/pull/1344#issuecomment-289243166 - Closes https://github.com/curl/curl/pull/1422 - -- unit1303: fix compiler warning - - MinGW-w64 complains: - warning: conversion to 'long int' from 'time_t {aka long long int}' may - alter its value [-Wconversion] - Fix this by using the correct type. - -Daniel Stenberg (16 Apr 2017) -- RELEASE-NOTES: synced with 1451271e0 - -- [Larry Stefani brought this change] - - http2: fix handle leak in error path - - Add missing newhandle free call in push_promise(). - - Closes #1416 - -- [Larry Stefani brought this change] - - mbedtls: fix memory leak in error path - - Add missing our_ssl_sessionid free call in mbed_connect_step3(). - - Closes #1417 - -Marcel Raad (15 Apr 2017) -- curl-compilers.m4: turn implicit function declarations into errors - - This adds -Werror-implicit-function-declaration for GCC 2.95+ so that - these errors are visible at the point where they occur instead of only - at link time. - Implicit function declarations are illegal in C99 and C++ anyway, and - the same warning has been turned into an error for ICC in commit - 3072c5b8a127057aa922b7c51051bbb4a630b091. - - Ref: https://gcc.gnu.org/onlinedocs/gcc-2.95.2/gcc_2.html#SEC8 - Ref: https://curl.haxx.se/mail/lib-2017-04/0001.html - Closes https://github.com/curl/curl/pull/1419 - -- test1541: also test for CURL_PULL_WS2TCPIP_H - - Ref: https://github.com/curl/curl/issues/1408 - Closes https://github.com/curl/curl/pull/1412 - -- tests/server/util: prefer over - - Follow-up to aa573c3c55cda72ec5ef677d87f6f46a53385f0c - - Ref: https://github.com/curl/curl/pull/1406 - -Daniel Stenberg (11 Apr 2017) -- Curl_expire_latest: ignore already expired timers - - If the existing timer is still in there but has expired, the new timer - should be added. - - Reported-by: Rainer Canavan - Bug: https://curl.haxx.se/mail/lib-2017-04/0030.html - Closes #1407 - -- system.h: fix mingw section - - Reported-by: Marcel Raad - Fixes #1408 - Closes #1409 - -Marcel Raad (11 Apr 2017) -- polarssl: unbreak build with versions < 1.3.8 - - ssl_session_init was only introduced in version 1.3.8, the penultimate - version. The function only contains a memset, so replace it with that. - - Suggested-by: Jay Satiro - Fixes https://github.com/curl/curl/issues/1401 - -- poll: prefer over - - The POSIX standard location is . Using results in - warning spam when using the musl standard library. - - Closes https://github.com/curl/curl/pull/1406 - -Daniel Stenberg (10 Apr 2017) -- [Alexis La Goutte brought this change] - - openssl: fix this statement may fall through [-Wimplicit-fallthrough=] - - Closes #1402 - -Kamil Dudka (10 Apr 2017) -- nss: load CA certificates even with --insecure - - ... because they may include an intermediate certificate for a client - certificate and the intermediate certificate needs to be presented to - the server, no matter if we verify the peer or not. - - Reported-by: thraidh - Closes #851 - -Daniel Stenberg (10 Apr 2017) -- RELEASE-NOTES: synced with f9d1e9a27f7e1 - -Dan Fandrich (10 Apr 2017) -- libcurl-thread.3: fixed a bad macro that caused test 1140 to fail - -Daniel Stenberg (9 Apr 2017) -- libcurl-thread.3: also mention threaded-resolver - - Reported-by: Alex Bligh - Bug: https://curl.haxx.se/mail/lib-2017-04/0044.html - -- .github/stale.yml: enable the stale bot - - Issues and PRs with no activity for 180 days will get marked as stale, - and if no further activity happens within 14 more days, the issue gets - closed. - - This follows our established policy of not letting stalled bugs "get in - the way": https://curl.haxx.se/docs/bugs.html#Closing_off_stalled_bugs - - Closes #1398 - -Jay Satiro (8 Apr 2017) -- CURLINFO_SCHEME.3: fix variable type - - - Change documented param type to char ** from incorrect long *. - -Marcel Raad (8 Apr 2017) -- INSTALL.md: fix secure transport configure arguments - - --without-ssl is needed instead of --with-winssl. - -- vtls: fix unreferenced variable warnings - - ... by moving the variables into the correct #ifdef block. - -Daniel Stenberg (7 Apr 2017) -- BUGS: "Bugs in old versions" - -- system.h: add section for tcc - - Closes #1397 - -Marcel Raad (7 Apr 2017) -- schannel: fix compiler warnings - - When UNICODE is not defined, the Curl_convert_UTF8_to_tchar macro maps - directly to its argument. As it is declared as a pointer to const and - InitializeSecurityContext expects a pointer to non-const, both MSVC and MinGW - issue a warning about implicitly casting away the const. Fix this by declaring - the variables as pointers to non-const. - - Closes https://github.com/curl/curl/pull/1394 - -- [Isaac Boukris brought this change] - - sspi: print out InitializeSecurityContext() error message - - Reported-by: Carsten (talksinmath) - - Fixes #1384 - Closes #1395 - -- gtls: fix compiler warning - - Curl_timeleft returns time_t instead of long since commit - 21aa32d30dbf319f2d336e0cb68d3a3235869fbb. - -Daniel Stenberg (6 Apr 2017) -- test1606: verify speedcheck - -- low_speed_limit: improved function for longer time periods - - Previously, periods of fast speed between periods of slow speed would - not count and could still erroneously trigger a timeout. - - Reported-by: Paul Harris - Fixes #1345 - Closes #1390 - -- system.h: set sizeof long to 4 on "default 32 bit" systems - - Triggered a test failure on test 1541 for the build known as - "Linux 4.4 i686 tcc 0.9.26 glibc 2.20" - -Marcel Raad (6 Apr 2017) -- nss: fix build after e60fe20fdf94e829ba5fce33f7a9d6c281149f7d - - Curl_llist_alloc is now Curl_llist_init. - - Closes https://github.com/curl/curl/pull/1391 - -Daniel Stenberg (6 Apr 2017) -- INSTALL.cmake: more problems - - and mention specific issues where they are discussed - -- test1541: ignore the curl_off_t variable type name comparison - - ... the sizes and the formatting strings are what's really important and - avoids problems with int64_t vs "long long". - - Bug: https://curl.haxx.se/mail/lib-2017-04/0019.html - -- Revert "configure: prefer 'long long' to int64_t for curl_off_t" - - This reverts commit 81284374bf3c670d2050f8562edeb69f060b07cc. - - Due to mingw32 brekage. - -Marcel Raad (5 Apr 2017) -- tool_operate: fix MinGW compiler warning - - MinGW complains: - tool_operate.c:197:15: error: comparison is always true due to limited range - of data type [-Werror=type-limits] - - Fix this by only doing the comparison if 'long' is large enough to hold the - constant it is compared with. - - Closes https://github.com/curl/curl/pull/1378 - -- tool_operate: move filetime code to its own function - - Ref: https://github.com/curl/curl/pull/1378 - -Daniel Stenberg (5 Apr 2017) -- configure: prefer 'long long' to int64_t for curl_off_t - - Since it is a native type and it makes it less complicated to find a - matching one in system.h - - Bug: https://curl.haxx.se/mail/lib-2017-04/0010.html - Reported-by: Dan Fandrich - - Closes #1388 - -- [DĂĄniel Bakai brought this change] - - tests: added test for Curl_splaygetbest to unit1309 - - This checks the new behavior of Curl_splaygetbest, so that the smallest - node not larger than the key is removed, and FIFO behavior is kept even - when there are multiple nodes with the same key. - - Closes #1358 - -- [DĂĄniel Bakai brought this change] - - multi: fix queueing of pending easy handles - - Multi handles repeatedly invert the queue of pending easy handles when - used with CURLMOPT_MAX_TOTAL_CONNECTIONS. This is caused by a multistep - process involving Curl_splaygetbest and violates the FIFO property of - the multi handle. - This patch fixes this issue by redefining the "best" node in the - context of timeouts as the "smallest not larger than now", and - implementing the necessary data structure modifications to do this - effectively, namely: - - splay nodes with the same key are now stored in a doubly-linked - circular list instead of a non-circular one to enable O(1) - insertion to the tail of the list - - Curl_splayinsert inserts nodes with the same key to the tail of - the same list - - in case of multiple nodes with the same key, the one on the head of - the list gets selected - -Marcel Raad (4 Apr 2017) -- tool: fix Windows Unicode build - - ... by explicitly calling the ANSI versions of Windows API functions where - required. - -Daniel Stenberg (4 Apr 2017) -- [Martin Kepplinger brought this change] - - curl_sasl: declare mechtable static - - struct mechtable is only used locally here. It can be declared static. - -Jay Satiro (4 Apr 2017) -- [Antti Hätälä brought this change] - - url: don't free postponed data on connection reuse - - - Don't free postponed data on a connection that will be reused since - doing so can cause data loss when pipelining. - - Only Windows builds are affected by this. - - Closes https://github.com/curl/curl/issues/1380 - -Daniel Stenberg (4 Apr 2017) -- RELEASE-NOTES: synced with 4f2e348f9b42c69c480 - -- hash: move key into hash struct to reduce mallocs - - This removes one tiny malloc for each hash struct allocated. In a simple - case like "curl localhost", this save three mallocs. - - Closes #1376 - -- llist: replace Curl_llist_alloc with Curl_llist_init - - No longer allocate the curl_llist head struct for lists separately. - - Removes 17 (15%) tiny allocations in a normal "curl localhost" invoke. - - closes #1381 - -Jay Satiro (4 Apr 2017) -- easy: silence compiler warning - - Safe to silence warning adding time delta of poll, which can trigger on - Windows since sizeof time_t > sizeof long. - - warning C4244: '+=' : conversion from 'time_t' to 'long', possible loss - of data - -Daniel Stenberg (4 Apr 2017) -- [Richlv brought this change] - - docs: minor typo in write-out.d - - Closes #1382 - -- include: curl/system.h is a run-time version of curlbuild.h - - system.h is aimed to replace curlbuild.h at a later point in time when - we feel confident system.h works sufficiently well. - - curl/system.h is currently used in parallel with curl/curlbuild.h - - curl/system.h determines a data sizes, data types and include file - status based on available preprocessor defines instead of getting - generated at build-time. This, in order to avoid relying on a build-time - generated file that makes it complicated to do 32 and 64 bit bields from - the same installed set of headers. - - Test 1541 verifies that system.h comes to the same conclusion that - curlbuild.h offers. - - Closes #1373 - -- multi: make curl_multi_wait avoid malloc in the typical case - - When only a few additional file descriptors are used, avoid the malloc. - - Closes #1377 - -Marcel Raad (3 Apr 2017) -- tests/server/util: remove in6addr_any for recent MinGW - - In ancient MinGW versions, in6addr_any was declared as extern, but not - defined. Because of that, 22a0c57746ae12506b1ba0f0fafffd26c1907d6a added - definitions for in6addr_any when compiling with MinGW. The bug was fixed in - w32api version 3.6 from 2006, so this workaround is not needed anymore for - recent versions. - - This fixes the following MinGW-w64 warnings because the MinGW-w64 version of - IN6ADDR_ANY_INIT has the two additional braces inside the macro: - util.c:59:14: warning: braces around scalar initializer - util.c:59:40: warning: excess elements in scalar initializer - - Ref: https://sourceforge.net/p/mingw/mingw-org-wsl/ci/e4803e0da25c57ae1ad0fa75ae2b7182ff7fa339/tree/w32api/ChangeLog - Closes https://github.com/curl/curl/pull/1379 - -Daniel Stenberg (3 Apr 2017) -- docs: added examples for CURLINFO_FILETIME.3 and CURLOPT_FILETIME.3 - -Jay Satiro (31 Mar 2017) -- fail-early.d: fix typos - -- docs: Explain --fail-early does not imply --fail - - Closes https://github.com/curl/curl/pull/1375 - -Daniel Stenberg (1 Apr 2017) -- telnet: (win32) fix read callback return variable - - telnet.c(1427,21): warning: comparison of constant 268435456 with - expression of type 'CURLcode' is always false - - telnet.c(1433,21): warning: comparison of constant 268435457 with - expression of type 'CURLcode' is always false - - Reviewed-by: Jay Satiro - Reported-by: Gisle Vanem - Bug: https://github.com/curl/curl/issues/1225#issuecomment-290340890 - - Closes #1374 - -- CTestConfig.cmake: removed, unused - -- libcurl.def: removed, unused - -- docs/index.html: removed, was not shipped anyway - -- dist: add missing files to the tarball - -Peter Wu (30 Mar 2017) -- cmake: fix build with cmake 2.8.12.2 - - For some reason, CMake 2.8.12.2 did not expand the list argument in a - single DEPENDS argument. Remove the quotes, so it gets expanded into - multiple arguments for add_custom_command and add_custom_target. - - Fixes https://github.com/curl/curl/issues/1370 - Closes #1372 - -Marcel Raad (30 Mar 2017) -- ssh: fix narrowing conversion warning - - 'left' is used as time_t but declared as long. - MinGW complains: - error: conversion to 'long int' from 'time_t {aka long long int}' may alter - its value [-Werror=conversion] - Changed the declaration to time_t. - -- http2: silence unused parameter warnings - - In release mode, MinGW complains: - error: unused parameter 'lib_error_code' [-Werror=unused-parameter] - -Daniel Stenberg (30 Mar 2017) -- [Hanno BĂśck brought this change] - - curl: fix callback functions to match prototype - - The function tool_debug_cb doesn't match curl_debug_callback in curl.h - (unsigned vs. signed char* for 3rd param). - - Bug: https://curl.haxx.se/mail/lib-2017-03/0120.html - -- [Alexis La Goutte brought this change] - - gcc7: fix ‘*’ in boolean context, suggest ‘&&’ instead [-Wint-in-bool-context] - - Closes #1371 - -Marcel Raad (30 Mar 2017) -- schannel: fix unused variable warning - - If CURL_DISABLE_VERBOSE_STRINGS is defined, hostname is not used in - schannel_connect_step3. - -- connect: fix unreferenced parameter warning - - When CURL_DISABLE_VERBOSE_STRINGS is defined, the reason parameter in - Curl_conncontrol is not used as the infof macro expands to nothing. - -- select: use correct SIZEOF_ constant - - At least under Windows, there is no SIZEOF_LONG, so it evaluates to 0 even - though sizeof(int) == sizeof(long). This should probably have been - CURL_SIZEOF_LONG, but the type of timeout_ms changed from long to time_t - anyway. - This triggered MSVC warning C4668 about implicitly replacing undefined - macros with '0'. - - Closes https://github.com/curl/curl/pull/1362 - -Daniel Stenberg (30 Mar 2017) -- cmake: add cmake file in docs/libcurl/opts/ to dist - -- cmake: add more missing files to the dist - -- docs/Makefile.am: include CMakeLists.txt in the dist tarball - -Marcel Raad (29 Mar 2017) -- NTLM: check for features with #ifdef instead of #if - - Feature defines are normally checked with #ifdef instead of #if in the rest of - the codebase. Additionally, some compilers warn when a macro is implicitly - evaluated to 0 because it is not defined, which was the case here. - - Ref: https://github.com/curl/curl/pull/1362#discussion_r108605101 - Closes https://github.com/curl/curl/pull/1367 - -Daniel Stenberg (29 Mar 2017) -- [Hanno BĂśck brought this change] - - curl: fix callback argument inconsistency - - As you can see the callback definition uses a char* for the first - argument, while the function uses a void*. - - URL: https://curl.haxx.se/mail/lib-2017-03/0116.html - -- RELEASE-NOTES: synced with 556c51a2df - -- [madblobfish brought this change] - - KNOWN_BUGS: typo - - Closes #1364 - -- [Maksim Stsepanenka brought this change] - - make: use the variable MAKE for recursive calls - - Closes #1366 - -- conncache: make hashkey avoid malloc - - ... to make it much faster. Idea developed with primepie on IRC. - - Closes #1365 - -Kamil Dudka (28 Mar 2017) -- http: do not treat FTPS over CONNECT as HTTPS - - If we use FTPS over CONNECT, the TLS handshake for the FTPS control - connection needs to be initiated in the SENDPROTOCONNECT state, not - the WAITPROXYCONNECT state. Otherwise, if the TLS handshake completed - without blocking, the information about the completed TLS handshake - would be saved to a wrong flag. Consequently, the TLS handshake would - be initiated in the SENDPROTOCONNECT state once again on the same - connection, resulting in a failure of the TLS handshake. I was able to - observe the failure with the NSS backend if curl ran through valgrind. - - Note that this commit partially reverts curl-7_21_6-52-ge34131d. - -Daniel Stenberg (28 Mar 2017) -- pause: handle mixed types of data when paused - - When receiving chunked encoded data with trailers, and the write - callback returns PAUSE, there might be both body and header to store to - resend on unpause. Previously libcurl returned error for that case. - - Added test case 1540 to verify. - - Reported-by: Stephen Toub - Fixes #1354 - Closes #1357 - -Jay Satiro (28 Mar 2017) -- [Isaac Boukris brought this change] - - http: Fix proxy connection reuse with basic-auth - - When using basic-auth, connections and proxy connections - can be re-used with different Authorization headers since - it does not authenticate the connection (like NTLM does). - - For instance, the below command should re-use the proxy - connection, but it currently doesn't: - curl -v -U alice:a -x http://localhost:8181 http://localhost/ - --next -U bob:b -x http://localhost:8181 http://localhost/ - - This is a regression since refactoring of ConnectionExists() - as part of: cb4e2be7c6d42ca0780f8e0a747cecf9ba45f151 - - Fix the above by removing the username and password compare - when re-using proxy connection at proxy_info_matches(). - - However, this fix brings back another bug would make curl - to re-print the old proxy-authorization header of previous - proxy basic-auth connection because it wasn't cleared. - - For instance, in the below command the second request should - fail if the proxy requires authentication, but would succeed - after the above fix (and before aforementioned commit): - curl -v -U alice:a -x http://localhost:8181 http://localhost/ - --next -x http://localhost:8181 http://localhost/ - - Fix this by clearing conn->allocptr.proxyuserpwd after use - unconditionally, same as we do for conn->allocptr.userpwd. - - Also fix test 540 to not expect digest auth header to be - resent when connection is reused. - - Signed-off-by: Isaac Boukris - - Closes https://github.com/curl/curl/pull/1350 - -- openssl: exclude DSA code when OPENSSL_NO_DSA is defined - - - Fix compile errors that occur in openssl.c when OpenSSL lib was - built without DSA support. - - Bug: https://github.com/curl/curl/issues/1361 - Reported-by: neheb@users.noreply.github.com - -- examples/fopen: checksrc compliance - -Marcel Raad (28 Mar 2017) -- schannel: fix variable shadowing warning - - No need to redeclare the variable. - -- multi: fix MinGW-w64 compiler warnings - - error: conversion to 'long int' from 'time_t {aka long long int}' may alter - its value [-Werror=conversion] - -- .gitattributes: turn off CRLF for *.am - - If Makefile.am uses CRLF, buildconf in a Windows checkout fails with: - ".ibtoolize: error: AC_CONFIG_MACRO_DIRS([m4]) conflicts with - ACLOCAL_AMFLAGS=-I m4" - -Daniel Stenberg (26 Mar 2017) -- [klemens brought this change] - - spelling fixes - - Closes #1356 - -- curl: check for end of input in writeout backslash handling - - Reported-by: Brian Carpenter - - Added test 1442 to verify - -Marcel Raad (24 Mar 2017) -- tests/README: make "Run" section foolproof - - curl must be built before building the tests. - - Closes https://github.com/curl/curl/pull/1352 - -Daniel Stenberg (23 Mar 2017) -- openssl: fix comparison between signed and unsigned integer expressions - -Marcel Raad (23 Mar 2017) -- [Edward Kimmel brought this change] - - asiohiper: make sure socket is open in event_cb - - Send curl_socket_t to event_cb and make sure it hasn't been closed yet. - - Closes https://github.com/curl/curl/pull/1318 - -Dan Fandrich (23 Mar 2017) -- openssl: made the error table static const - -Jay Satiro (23 Mar 2017) -- openssl: fall back on SSL_ERROR_* string when no error detail - - - If SSL_get_error is called but no extended error detail is available - then show that SSL_ERROR_* as a string. - - Prior to this change there was some inconsistency in that case: the - SSL_ERROR_* code may or may not have been shown, or may have been shown - as unknown even if it was known. - - Ref: https://github.com/curl/curl/issues/1300 - - Closes https://github.com/curl/curl/pull/1348 - -Dan Fandrich (23 Mar 2017) -- mkhelp: disable compression if the perl gzip module is unavailable - - This is nowadays included with the base perl distribution, but wasn't - prior to about perl 5.14 - -Daniel Stenberg (23 Mar 2017) -- [Anders Roxell brought this change] - - tests/README: mention nroff for --manual tests - - Signed-off-by: Anders Roxell - - Closes #1342 - -- CURLINFO_PRIMARY_IP.3: add example - -- travis: run tests-nonflaky instead of tests-full - -- make: introduce 'test-nonflaky' target - - Running this in the root build dir will invoke the test suite to only - run tests not marked as 'flaky'. - -- test2033: flaky - -Jay Satiro (21 Mar 2017) -- [Ales Mlakar brought this change] - - mbedtls: add support for CURLOPT_SSL_CTX_FUNCTION - - Ref: https://curl.haxx.se/mail/lib-2017-02/0097.html - - Closes https://github.com/curl/curl/pull/1272 - -Peter Wu (21 Mar 2017) -- cmake: add support for building HTML and PDF docs - - Note that for some reason there is this warning (that also exists with - autotools, added since curl-7_15_1-94-ga718cb05f): - - docs/libcurl/curl_multi_socket_all.3:1: can't open `man3/curl_multi_socket.3': No such file or directory - - Additionally, adjust the roffit --mandir option to support creating - links when doing out-of-tree builds. - - Ref: https://github.com/curl/curl/pull/1288 - -- cmake: build manual pages (including curl.1) - - Also make Perl mandatory to allow building the docs. - - While CMakeLists.txt could probably read the list of manual pages from - Makefile.am, actually putting those in CMakeLists.txt is cleaner so that - is what is done here. - - Fixes #1230 - Ref: https://github.com/curl/curl/pull/1288 - -- docs: split file lists into Makefile.inc - - For easier sharing with CMake. The contents were reformatted to use - two-space indent and expanded tabs (matching lib/Makefile.common). - - Ref: https://github.com/curl/curl/pull/1288 - -Daniel Stenberg (21 Mar 2017) -- examples: comment typos in http2 examples - -- RELEASE-NOTES: typo - -- RELEASE-NOTES: synced with 6e0f26c8a8c28df - -- multi: fix streamclose() crash in debug mode - - The code would refer to the wrong data pointer. Only debug builds do - this - for verbosity. - - Reported-by: zelinchen@users.noreply.github.com - Fixes #1329 - -- CONTRIBUTE: mention referring to github issues in commit msgs - -Dan Fandrich (20 Mar 2017) -- runtests.pl: fixed display of the Gopher IPv6 port number - -- tests: fixed the documented test server port numbers - -- test714/5: added HTTP as a required feature - - These tests use an HTTP proxy so require that curl be built with HTTP - support. - -- tests: strip more options from non-HTTP --libcurl tests - - The CURLOPT_USERAGENT and CURLOPT_MAXREDIRS options are only set if HTTP - support is available, so ignore them in tests where HTTP is not - guaranteed. - -Jay Satiro (18 Mar 2017) -- [Palo Markovic brought this change] - - darwinssl: fix typo in variable name - - Broken a week ago in 6448f98. - - Closes https://github.com/curl/curl/pull/1337 - -- tool_operate: Fix showing HTTPS-Proxy options on CURLE_SSL_CACERT - - - Show the HTTPS-proxy options on CURLE_SSL_CACERT if libcurl was built - with HTTPS-proxy support. - - Prior to this change those options were shown only if an HTTPS-proxy was - specified by --proxy, but that did not take into account environment - variables such as http_proxy, https_proxy, etc. Follow-up to e1187c4. - - Bug: https://github.com/curl/curl/issues/1331 - Reported-by: Nehal J Wani - -- CURLINFO_LOCAL_PORT.3: fix typo - -Daniel Stenberg (16 Mar 2017) -- CURLINFO_LOCAL_PORT.3: added example - -- SSLCERTS.md: mention HTTPS proxies and their separate options - -- BINDINGS: a Delphi binding - -- KNOWN_BUGS: remove libidn related issue - - ... as we no longer use libidn - -Dan Fandrich (14 Mar 2017) -- build: removed redundant DEPENDENCIES from makefiles - -Daniel Stenberg (13 Mar 2017) -- [Sylvestre Ledru brought this change] - - Improve code readbility - - ... by removing the else branch after a return, break or continue. - - Closes #1310 - -Jay Satiro (13 Mar 2017) -- [Anatol Belski brought this change] - - winbuild: add basic support for OpenSSL 1.1.x - - - Auto-detect OpenSSL 1.1 libs - - Closes https://github.com/curl/curl/pull/1322 - -Daniel Stenberg (13 Mar 2017) -- RELEASE-NOTES: synced with c25e0761d0fc49c4 - -- make: regenerate docs/curl.1 by runinng make in docs - - ... previously, docs/ was only a dist subdir, now also a build subdir. - - Reported-by: Dan Fandrich - Bug: https://curl.haxx.se/mail/lib-2017-03/0017.html - -Dan Fandrich (12 Mar 2017) -- test1440/1: depend on well-defined file: behaviour - - Depend on the known behaviour of URLs for nonexistent files rather than - the undefined behaviour of URLs for directories (which fails on Windows). - The test isn't about file: URLs at all, so the URL used doesn't really - matter. - -- tests: clear the SSL_CERT_FILE variable on --libcurl tests - - Otherwise, the contents will end up in the output and fail the - verification. - -- test1287: added verbose logs keyword - -- tool_writeout: fixed a buffer read overrun on --write-out - - If a % ended the statement, the string's trailing NUL would be skipped - and memory past the end of the buffer would be accessed and potentially - displayed as part of the --write-out output. Added tests 1440 and 1441 - to check for this kind of condition. - - Reported-by: Brian Carpenter - -Jay Satiro (12 Mar 2017) -- [Desmond O. Chang brought this change] - - url: add option CURLOPT_SUPPRESS_CONNECT_HEADERS - - - Add new option CURLOPT_SUPPRESS_CONNECT_HEADERS to allow suppressing - proxy CONNECT response headers from the user callback functions - CURLOPT_HEADERFUNCTION and CURLOPT_WRITEFUNCTION. - - - Add new tool option --suppress-connect-headers to expose - CURLOPT_SUPPRESS_CONNECT_HEADERS and allow suppressing proxy CONNECT - response headers from --dump-header and --include. - - Assisted-by: Jay Satiro - Assisted-by: CarloCannas@users.noreply.github.com - Closes https://github.com/curl/curl/pull/783 - -- http_proxy: Ignore TE and CL in CONNECT 2xx responses - - A client MUST ignore any Content-Length or Transfer-Encoding header - fields received in a successful response to CONNECT. - "Successful" described as: 2xx (Successful). RFC 7231 4.3.6 - - Prior to this change such a case would cause an error. - - In some ways this bug appears to be a regression since c50b878. Prior to - that libcurl may have appeared to function correctly in such cases by - acting on those headers instead of causing an error. But that behavior - was also incorrect. - - Bug: https://github.com/curl/curl/issues/1317 - Reported-by: mkzero@users.noreply.github.com - -- [Thomas Glanzmann brought this change] - - mbedtls: fix typo in variable name - - Broken a few days ago in 6448f98. - - Bug: https://curl.haxx.se/mail/lib-2017-03/0015.html - -Michael Kaufmann (11 Mar 2017) -- tests: fix the authretry tests - - Do not call curl_easy_reset() between the requests, because the - auth state must be preserved for these tests. - - Follow-up to 0afbcfd - -- proxy: skip SSL initialization for closed connections - - This prevents a "Descriptor is not a socket" error for WinSSL. - - Reported-by: Antony74@users.noreply.github.com - Reviewed-by: Jay Satiro - - Fixes https://github.com/curl/curl/issues/1239 - -- curl_easy_reset: Also reset the authentication state - - Follow-up to 5278462 - See https://github.com/curl/curl/issues/1095 - -- [Isaac Boukris brought this change] - - authneg: clear auth.multi flag at http_done - - This flag is meant for the current request based on authentication - state, once the request is done we can clear the flag. - - Also change auth.multi to auth.multipass for better readability. - - Fixes https://github.com/curl/curl/issues/1095 - Closes https://github.com/curl/curl/pull/1326 - - Signed-off-by: Isaac Boukris - Reported-by: Michael Kaufmann - -Dan Fandrich (11 Mar 2017) -- url: don't compile detect_proxy if HTTP support is disabled - -- cmdline-opts: fixed a few typos - -Daniel Stenberg (10 Mar 2017) -- README.md: add coverity and travis badges - -- ISSUE_TEMPLATE: for bugs, ask questions on the mailing list - - and try to add the top comment within an HTML comment in the hope - that it might get hidden if the text is kept - -- openssl: add two /* FALLTHROUGH */ to satisfy coverity - - CID 1402159 and 1402158 - -- tests: disabled 1903 now - - Test 1903 is doing HTTP pipelining, and that is a timing and ordering - sensitive operation and this fails far too often on the Travis CI - leading to people more or less ignoring test failures there. Not good. - - The end of pipelning is probably coming sooner rather than later - anyway... - -Dan Fandrich (9 Mar 2017) -- tls-max.d: added to the makefile - -- build: fixed making man page in out-of-tree tarball builds - - The man page taken from the release package is found in a different - location than if it's built from source. It must be referenced as $< in - the rule to get its correct location in the VPATH. - -- mkhelp: simplified the gzip code - - This eliminates the need for an external gzip program, which wasn't - working with Busybox's gzip, anyway. It now compresses using perl's - IO::Compress::Gzip - -- polarssl: fixed compile errors introduced in 6448f98c - -Daniel Stenberg (8 Mar 2017) -- bump: next release will be known as 7.54.0 - - ...due to the newly added CURL_SSLVERSION_MAX_* functionality - -- openssl: unbreak the build after 6448f98c1857de - - Verified with OpenSSL 1.1.0e and OpenSSL master (1.1.1) - -Kamil Dudka (8 Mar 2017) -- [Jozef Kralik brought this change] - - vtls: add options to specify range of enabled TLS versions - - This commit introduces the CURL_SSLVERSION_MAX_* constants as well as - the --tls-max option of the curl tool. - - Closes https://github.com/curl/curl/pull/1166 - -Daniel Stenberg (8 Mar 2017) -- RELEASE-NOTES: synced with 6888a670aa01 - -- MANPAGE: clarify the dash situation in meta data - -- insecure.d: clarify that this is for server connections - - Assisted-by: Ray Satiro - Bug: https://curl.haxx.se/mail/lib-2017-03/0002.html - -Dan Fandrich (8 Mar 2017) -- test1260: added http as a required feature - -Daniel Stenberg (7 Mar 2017) -- [Steve Brokenshire brought this change] - - maketgz: Run updatemanpages.pl to update man pages - - maketgz now runs scripts/updatemanpages.pl to update the man pages .TH - section to use the current date and curl/libcurl version. - - (TODO Section 3.1) - - Closes #1058 - -- [Steve Brokenshire brought this change] - - gitignore: Ignore man page dist files - - Ignore man page dist files generated by scripts/updatemanpages.pl - -- [Steve Brokenshire brought this change] - - Makefile.am: Remove distribution man pages when running 'make clean' - -- [Steve Brokenshire brought this change] - - Makefile.am: Added scripts/updatemanpages.pl to EXTRA_DIST - -- [Steve Brokenshire brought this change] - - updatemanpages.pl: Update man pages to use current date and versions - - Added script to update man pages to use the current date and - curl/libcurl versions. - - updatemanpages.pl has three arrays: list of directories to look in, - list of extensions to process, list of files to exclude from - processing. - - Check man page in git repoistory using the date from the existing man - page before updating to avoid updating the man page if no change is - made. - - If data is received from the git command then update the man page with - the current date and version otherwise leave alone. - - Applied patch from badger to make the date argument optional, change the - git command used, added date argument to processfile subroutine and - print to STDERR if no date is found in a man page. - - Added code to process the changed man page into a new man page with - .dist added to the filename to keep the original source files unchanged. - Updated POD documentation to reflect that the date argument optional. - - Code style is in line with CODE_STYLE.md. - - Directories: docs/ docs/libcurl/ docs/libcurl/opts/ tests/ - Extensions: .1 .3 - Excluded files: mk-ca-bundle.1 template.3 - - (TODO Section 3.1) - -- [Tatsuhiro Tsujikawa brought this change] - - http2: Fix assertion error on redirect with CL=0 - - This fixes assertion error which occurs when redirect is done with 0 - length body via HTTP/2, and the easy handle is reused, but new - connection is established due to hostname change: - - curl: http2.c:1572: ssize_t http2_recv(struct connectdata *, - int, char *, size_t, CURLcode *): - Assertion `httpc->drain_total >= data->state.drain' failed. - - To fix this bug, ensure that http2_handle_stream is called. - - Fixes #1286 - Closes #1302 - -- ares: Curl_resolver_wait_resolv: clear *entry first in function - -- ares: better error return on timeouts - - Assisted-by: Ray Satiro - - Bug: https://curl.haxx.se/mail/lib-2017-03/0009.html - -Jay Satiro (6 Mar 2017) -- KNOWN_BUGS: Add DarwinSSL won't import PKCS#12 without a password - - Bug: https://github.com/curl/curl/issues/1308 - Reported-by: Justin Clift - -Dan Fandrich (6 Mar 2017) -- test1260: removed errant XML tag - -Daniel Stenberg (6 Mar 2017) -- URL: return error on malformed URLs with junk after port number - - ... because it causes confusion with users. Example URLs: - - "http://[127.0.0.1]:11211:80" which a lot of languages' URL parsers will - parse and claim uses port number 80, while libcurl would use port number - 11211. - - "http://user@example.com:80@localhost" which by the WHATWG URL spec will - be treated to contain user name 'user@example.com' but according to - RFC3986 is user name 'user' for the host 'example.com' and then port 80 - is followed by "@localhost" - - Both these formats are now rejected, and verified so in test 1260. - - Reported-by: Orange Tsai - -- BINDINGS: update the Lua-cURL URL - -- [Sylvestre Ledru brought this change] - - BINDINGS: add Scilab binding - - Closes #1312 - -- BINDINGS: add go-curl and perl6-net-curl - - Reported-by: Peter Pentchev - -- BINDINGS: add misssing C++ bindings - - Reported-by: Giuseppe Persico - -- ares: return error at once if timed out before name resolve starts - - Pointed-out-by: Ray Satiro - Bug: https://curl.haxx.se/mail/lib-2017-03/0004.html - -Peter Wu (5 Mar 2017) -- [Michael Maltese brought this change] - - CMake: Set at most one SSL library - - Ref: https://github.com/curl/curl/pull/1228 - -- [Michael Maltese brought this change] - - CMake: Add mbedTLS support - - Ref: https://github.com/curl/curl/pull/1228 - -- [Michael Maltese brought this change] - - CMake: Add DarwinSSL support - - Assisted-by: Simon Warta - Ref: https://github.com/curl/curl/pull/1228 - -- [Michael Maltese brought this change] - - CMake: Reorganize SSL support, separate WinSSL and SSPI - - This is closer to how configure.ac does it - - Ref: https://github.com/curl/curl/pull/1228 - -Jay Satiro (4 Mar 2017) -- CURLOPT_SSL_CTX_FUNCTION.3: Fix EXAMPLE formatting errors - - .. also document that CURLE_NOT_BUILT_IN is a RETURN VALUE. - - Ref: https://github.com/curl/curl/pull/1290 - -Daniel Stenberg (4 Mar 2017) -- [Andrew Krieger brought this change] - - fix potential use of uninitialized variables - - MSVC with LTCG detects this at warning level 4. - - Closes #1304 - -Dan Fandrich (4 Mar 2017) -- [Sylvestre Ledru brought this change] - - fix some typos in the doc (#1306) - -- tests: fixed a typo in some comments - -Jay Satiro (3 Mar 2017) -- url: split off proxy init and parsing from create_conn - - Move the proxy parse/init into helper create_conn_helper_init_proxy to - mitigate the chances some non-proxy code will be mistakenly added to it. - - Ref: https://github.com/curl/curl/issues/1274#issuecomment-281556510 - Ref: https://github.com/curl/curl/pull/1293 - - Closes https://github.com/curl/curl/pull/1298 - -- [Alexis La Goutte brought this change] - - build: fix gcc7 implicit fallthrough warnings - - Mark intended fallthroughs with /* FALLTHROUGH */ so that gcc will know - it's expected and won't warn on [-Wimplicit-fallthrough=]. - - Closes https://github.com/curl/curl/pull/1297 - -- [Greg Rowe brought this change] - - configure: fix --with-zlib when a path is specified - - Prior to this change if you attempted to configure curl using - --wtih-zlib and specified a path the path would be ignored if you also - had pkg-config installed on your system. This situation can easily - arise when you are cross compiling. This change moves the test for - detecting zlib settings via pkg-config only if OPT_ZLIB is not set. - - Closes https://github.com/curl/curl/pull/1292 - -- [c4rlo brought this change] - - no-keepalive.d: fix typo - - Closes https://github.com/curl/curl/pull/1301 - -- checksrc.bat: Ignore curl_config.h.in, curl_config.h - -- configure: fix for --enable-pthreads - - Better handle options conflicts that can occur if --enable-pthreads. - - Bug: https://github.com/curl/curl/pull/1295 - Reported-by: Marc-Antoine Perennou - -- [JDepooter brought this change] - - darwinssl: Warn that disabling host verify also disables SNI - - In DarwinSSL the SSLSetPeerDomainName function is used to enable both - sending SNI and verifying the host. When host verification is disabled - the function cannot be called, therefore SNI is disabled as well. - - Closes https://github.com/curl/curl/pull/1240 - -Marcel Raad (28 Feb 2017) -- warnless: suppress compiler warning - - If size_t is 32 bits, MSVC warns: - warning C4310: cast truncates constant value - The warning is harmless as CURL_MASK_SCOFFT gets - truncated to the maximum value of size_t. - -Dan Fandrich (27 Feb 2017) -- tests: enable HTTP/2 tests to run with non-default port numbers - -Marcel Raad (27 Feb 2017) -- digest_sspi: fix compilation warning - - MSVC complains: - warning C4701: potentially uninitialized local variable 'output_token_len' used - -Jay Satiro (26 Feb 2017) -- cyassl: get library version string at runtime - - wolfSSL >= 3.6.0 supports getting its library version string at runtime. - -Dan Fandrich (26 Feb 2017) -- test1139: allow for the possibility that the man page is not rebuilt - - This is likely to be the case when building from a tar ball release - package which includes a prebuilt man page. In that case, test the - packaged man page instead. This only makes a difference when building - out-of-tree (in-tree, the location in both cases is identical). - -Jay Satiro (25 Feb 2017) -- [Isaac Boukris brought this change] - - url: fix unix-socket support for proxy-disabled builds - - Prior to this change if curl was built with Unix Socket support - (--enable-unix-sockets) and without Proxy support (--disable-proxy) then - unix socket options would erroneously be ignored. - - Regression introduced in: - 0b8d682f81ee9acb763dd4c9ad805fe08d1227c0 - - Bug: https://github.com/curl/curl/issues/1274 - Reported-by: mccormickt12@users.noreply.github.com - - Closes https://github.com/curl/curl/pull/1289 - -Dan Fandrich (26 Feb 2017) -- gopher: fixed detection of an error condition from Curl_urldecode - -- ftp: fixed a NULL pointer dereference on OOM - -Jay Satiro (25 Feb 2017) -- [Peter Wu brought this change] - - docs: de-duplicate file lists in the Makefiles - - Make use of macro substitution of suffix patterns to remove duplication - of manual names. This approach is portable according to - http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html - - Closes https://github.com/curl/curl/pull/1287 - -Dan Fandrich (25 Feb 2017) -- ftp: removed an erroneous free in an OOM path - -- proxy: fixed a memory leak on OOM - -- tests: use consistent environment variables for setting charset - - The character set in POSIX is set by the locale defined by (in - decreasing order of precedence) the LC_ALL, LC_CTYPE and LANG - environment variables (CHARSET was used by libidn but not libidn2). - LC_ALL is cleared to ensure that LC_CTYPE takes effect, but LC_ALL is - not used to set the locale to ensure that other parts of the locale - aren't overridden. Since there doesn't seem to be a cross-platform way - of specifying a UTF-8 locale, and not all systems may support UTF-8, a - is used to skip the test if UTF-8 can't be verified to be - available. Test 1035 was also converted to UTF-8 for consistency, as - the actual character set used there is irrelevant to the test. - - This patch uses a different UTF-8 locale than the last attempt, namely - en_US.UTF-8. This one has been verified on 7 different Linux and BSD - distributions and is more complete and usable than the locale UTF-8 (on - at least some systems). - -- test557: explicitly use the C locale so the numeric output is as expected - -Jay Satiro (25 Feb 2017) -- [Simon Warta brought this change] - - cmake: Replace invalid UTF-8 byte sequence - - - Change the encoding of the regex temp placeholder token to UTF-8. - - Prior to this change the file contained special chars in a different - encoding than ASCII or UTF-8 making text editors and Python complain - when reading the file. - - Closes https://github.com/curl/curl/pull/1271 - Closes https://github.com/curl/curl/pull/1275 - -Daniel Stenberg (24 Feb 2017) -- bump: work on the next release - -Version 7.53.1 (24 Feb 2017) - -Daniel Stenberg (24 Feb 2017) -- release: 7.53.1 - -- Revert "tests: use consistent environment variables for setting charset" - - This reverts commit ecd1d020abdae3c3ce3643ddab3106501e62e7c0. - - That commit caused test failures on my Debian Linux machine for all - changed test cases. We need to reconsider how that should get done. - -Dan Fandrich (23 Feb 2017) -- tests: use consistent environment variables for setting charset - - Character set in POSIX is set by the locale defined (in decreasing order - of precedence) by the LC_ALL, LC_CTYPE and LANG environment variables (I - believe CHARSET is only historic). LC_ALL is cleared to ensure that - LC_CTYPE takes effect, but LC_ALL is not used to set the locale to - ensure that other parts of the locale aren't overriden, if set. Since - there doesn't seem to be a cross-platform way of specifying a UTF-8 - locale, and not all systems may support UTF-8, a is used - (where relevant) to skip the test if UTF-8 isn't in use. Test 1035 was - also converted to UTF-8 for consistency, as the actual character set - used there is irrelevant to the test. - -Jay Satiro (23 Feb 2017) -- url: Default the CA proxy bundle location to CURL_CA_BUNDLE - - If the compile-time CURL_CA_BUNDLE location is defined use it as the - default value for the proxy CA bundle location, which is the same as - what we already do for the regular CA bundle location. - - Ref: https://github.com/curl/curl/pull/1257 - -Daniel Stenberg (23 Feb 2017) -- [Sergii Pylypenko brought this change] - - rand: added missing #ifdef HAVE_FCNTL_H around fcntl.h header - - Closes #1285 - -- TODO: "OPTIONS *" - - Closes #1280 - -- RELEASE-NOTES: synced with 443e5b03a7d441 - -- THANKS-filter: shachaf - -- [Ä°smail DĂśnmez brought this change] - - tests: Set CHARSET & LANG to UTF-8 in 1035, 2046 and 2047 - - Closes #1283 - Fixes #1277 - -- bump: 7.53.1 coming up - - synced with df665f4df0f7a352 - -- formdata: check for EOF when reading from stdin - - Reported-by: shachaf@users.noreply.github.com - - Fixes #1281 - -Jay Satiro (22 Feb 2017) -- docs: gitignore curl.1 - - curl.1 is generated by the cmdline-opts script since 4c49b83. - -Daniel Stenberg (22 Feb 2017) -- TODO: HTTP Digest using SHA-256 - -- TODO: brotli is deployed widely now - -Jay Satiro (21 Feb 2017) -- [Viktor Szakats brought this change] - - urldata: include curl_sspi.h when Windows SSPI is enabled - - f77dabe broke builds in Windows using Windows SSPI but not Windows SSL. - - Bug: https://github.com/curl/curl/issues/1276 - Reported-by: jveazey@users.noreply.github.com - -- url: Improve CURLOPT_PROXY_CAPATH error handling - - - Change CURLOPT_PROXY_CAPATH to return CURLE_NOT_BUILT_IN if the option - is not supported, which is the same as what we already do for - CURLOPT_CAPATH. - - - Change the curl tool to handle CURLOPT_PROXY_CAPATH error - CURLE_NOT_BUILT_IN as a warning instead of as an error, which is the - same as what we already do for CURLOPT_CAPATH. - - - Fix CAPATH docs to show that CURLE_NOT_BUILT_IN is returned when the - respective CAPATH option is not supported by the SSL library. - - Ref: https://github.com/curl/curl/pull/1257 - -- cyassl: fix typo - -Version 7.53.0 (22 Feb 2017) - -Daniel Stenberg (22 Feb 2017) -- release: 7.53.0 - -- cookie: fix declaration of 'dup' shadows a global declaration - -- TLS: make SSL_VERIFYSTATUS work again - - The CURLOPT_SSL_VERIFYSTATUS option was not properly handled by libcurl - and thus even if the status couldn't be verified, the connection would - be allowed and the user would not be told about the failed verification. - - Regression since cb4e2be7c6d42ca - - CVE-2017-2629 - Bug: https://curl.haxx.se/docs/adv_20170222.html - - Reported-by: Marcus Hoffmann - -Jay Satiro (21 Feb 2017) -- digest_sspi: Handle 'stale=TRUE' directive in HTTP digest - - - If the server has provided another challenge use it as the replacement - input token if stale=TRUE. Otherwise previous credentials have failed - so return CURLE_LOGIN_DENIED. - - Prior to this change the stale directive was ignored and if another - challenge was received it would cause error CURLE_BAD_CONTENT_ENCODING. - - Ref: https://tools.ietf.org/html/rfc2617#page-10 - - Bug: https://github.com/curl/curl/issues/928 - Reported-by: tarek112@users.noreply.github.com - -Daniel Stenberg (20 Feb 2017) -- smb: use getpid replacement for windows UWP builds - - Source: https://github.com/Microsoft/vcpkg/blob/7676b8780db1e1e591c4fc7eba4f96f73c428cb4/ports/curl/0002_fix_uwp.patch - -- TODO: CURLOPT_RESOLVE for any port number - - Closes #1264 - -- RELEASE-NOTES: synced with af30f1152d43dcdb - -- [Jean Gressmann brought this change] - - sftp: improved checks for create dir failures - - Since negative values are errors and not only -1. This makes SFTP upload - with --create-dirs work (again). - - Closes #1269 - -Jay Satiro (20 Feb 2017) -- [Max Khon brought this change] - - digest_sspi: Fix nonce-count generation in HTTP digest - - - on the first invocation: keep security context returned by - InitializeSecurityContext() - - - on subsequent invocations: use MakeSignature() instead of - InitializeSecurityContext() to generate HTTP digest response - - Bug: https://github.com/curl/curl/issues/870 - Reported-by: Andreas Roth - - Closes https://github.com/curl/curl/pull/1251 - -- examples/multi-uv: checksrc compliance - -Michael Kaufmann (19 Feb 2017) -- string formatting: fix 4 printf-style format strings - -Dan Fandrich (18 Feb 2017) -- tests: removed the obsolete name parameter - -Michael Kaufmann (18 Feb 2017) -- speed caps: update the timeouts if the speed is too low/high - - Follow-up to 4b86113 - - Fixes https://github.com/curl/curl/issues/793 - Fixes https://github.com/curl/curl/issues/942 - -- docs: fix timeout handling in multi-uv example - -- proxy: fix hostname resolution and IDN conversion - - Properly resolve, convert and log the proxy host names. - Support the "--connect-to" feature for SOCKS proxies and for passive FTP - data transfers. - - Follow-up to cb4e2be - - Reported-by: Jay Satiro - Fixes https://github.com/curl/curl/issues/1248 - -Jay Satiro (17 Feb 2017) -- [Isaac Boukris brought this change] - - http: fix missing 'Content-Length: 0' while negotiating auth - - - While negotiating auth during PUT/POST if a user-specified - Content-Length header is set send 'Content-Length: 0'. - - This is what we do already in HTTPREQ_POST_FORM and what we did in the - HTTPREQ_POST case (regression since afd288b). - - Prior to this change no Content-Length header would be sent in such a - case. - - Bug: https://curl.haxx.se/mail/lib-2017-02/0006.html - Reported-by: Dominik HĂślzl - - Closes https://github.com/curl/curl/pull/1242 - -Daniel Stenberg (16 Feb 2017) -- [Simon Warta brought this change] - - winbuild: add note on auto-detection of MACHINE in Makefile.vc - - Closes #1265 - -- RELEASE-PROCEDURE: update the upcoming release calendar - -- TODO: consider file name from the redirected URL with -O ? - - It isn't easily solved, but with some thinking someone could probably - come up with a working approach? - - Closes #1241 - -Jay Satiro (15 Feb 2017) -- tool_urlglob: Allow a glob range with the same start and stop - - For example allow ranges like [1-1] and [a-a] etc. - - Regression since 5ca96cb. - - Bug: https://github.com/curl/curl/issues/1238 - Reported-by: R. Dennis Steed - -Daniel Stenberg (15 Feb 2017) -- axtls: adapt to API changes - - Builds with axTLS 2.1.2. This then also breaks compatibility with axTLS - < 2.1.0 (the older API) - - ... and fix the session_id mixup brought in 04b4ee549 - - Fixes #1220 - -- RELEASE-NOTES: synced with 690935390c29c - -- [Nick Draffen brought this change] - - curl: fix typo in time condition warning message - - The warning message had a typo. The argument long form is --time-cond - not --timecond - - Closes #1263 - -- smb: code indent +$ git log --pretty=fuller --no-color --date=short --decorate=full | \ + ./scripts/log2changes.pl diff --git a/libraries/curl/CMakeLists.txt b/libraries/curl/CMakeLists.txt index 261baba5c..7b73b98f7 100644 --- a/libraries/curl/CMakeLists.txt +++ b/libraries/curl/CMakeLists.txt @@ -38,7 +38,7 @@ # To check: # (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not. # (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options. -cmake_minimum_required(VERSION 2.8 FATAL_ERROR) +cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}") include(Utilities) include(Macros) @@ -366,7 +366,6 @@ if(CMAKE_USE_OPENSSL) check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H) check_include_file("openssl/err.h" HAVE_OPENSSL_ERR_H) check_include_file("openssl/pem.h" HAVE_OPENSSL_PEM_H) - check_include_file("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H) check_include_file("openssl/rsa.h" HAVE_OPENSSL_RSA_H) check_include_file("openssl/ssl.h" HAVE_OPENSSL_SSL_H) check_include_file("openssl/x509.h" HAVE_OPENSSL_X509_H) @@ -875,10 +874,12 @@ check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE) check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME) 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_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME) # symbol exists in win32, but function does not. if(WIN32) @@ -1131,6 +1132,12 @@ function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE) endfunction() +if(WIN32 AND NOT CYGWIN) + set(CURL_INSTALL_CMAKE_DIR CMake) +else() + set(CURL_INSTALL_CMAKE_DIR lib/cmake/curl) +endif() + if(USE_MANUAL) add_subdirectory(docs) endif() @@ -1281,6 +1288,25 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl" DESTINATION include FILES_MATCHING PATTERN "*.h") + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${PROJECT_BINARY_DIR}/curl-config-version.cmake" + VERSION ${CURL_VERSION} + COMPATIBILITY SameMajorVersion +) + +configure_file(CMake/curl-config.cmake + "${PROJECT_BINARY_DIR}/curl-config.cmake" + COPYONLY +) + +install( + FILES ${PROJECT_BINARY_DIR}/curl-config.cmake + ${PROJECT_BINARY_DIR}/curl-config-version.cmake + DESTINATION ${CURL_INSTALL_CMAKE_DIR} +) + # Workaround for MSVS10 to avoid the Dialog Hell # FIXME: This could be removed with future version of CMake. if(MSVC_VERSION EQUAL 1600) diff --git a/libraries/curl/GIT-INFO b/libraries/curl/GIT-INFO index 16f4a2201..51df76ab4 100644 --- a/libraries/curl/GIT-INFO +++ b/libraries/curl/GIT-INFO @@ -10,15 +10,6 @@ This file is only present in git - never in release archives. It contains information about other files and things that the git repository keeps in its inner sanctum. -Compile and build instructions follow below. - - CHANGES.0 contains ancient changes - CHANGES contains the most recent changes - - Makefile.dist is included as the root Makefile in distribution archives - - perl/ is a subdirectory with various perl scripts - To build in environments that support configure, after having extracted everything from git, do this: @@ -51,17 +42,3 @@ installed: install them, you can rename the source file src/tool_hugehelp.c.cvs to src/tool_hugehelp.c and avoid having to generate this file. This will give you a stubbed version of the file that doesn't contain actual content. - -MAC OS X - - With Mac OS X 10.2 and the associated Developer Tools, the installed versions - of the build tools are adequate. For Mac OS X 10.1 users, Guido Neitzer - wrote the following step-by-step guide: - - 1. Install fink (http://fink.sourceforge.net) - 2. Update fink to the newest version (with the installed fink) - 3. Install the latest version of autoconf, automake and m4 with fink - 4. Install version 1.4.1 of libtool - you find it in the "unstable" section - (read the manual to see how to get unstable versions) - 5. Get cURL from git - 6. Build cURL with "./buildconf", "./configure", "make", "sudo make install" diff --git a/libraries/curl/Makefile.am b/libraries/curl/Makefile.am index e517ba56e..d225a09ec 100644 --- a/libraries/curl/Makefile.am +++ b/libraries/curl/Makefile.am @@ -30,7 +30,8 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \ CMake/Macros.cmake \ CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \ CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \ - CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in + CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in \ + CMake/curl-config.cmake VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist @@ -210,9 +211,6 @@ test-am: endif -fuzzer: - @(cd tests/fuzz; $(MAKE) all) - examples: @(cd docs/examples; $(MAKE) check) diff --git a/libraries/curl/Makefile.dist b/libraries/curl/Makefile.dist index f0f50d8cf..8577c8a14 100644 --- a/libraries/curl/Makefile.dist +++ b/libraries/curl/Makefile.dist @@ -5,11 +5,11 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2017, Daniel Stenberg, , 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 http://curl.haxx.se/docs/copyright.html. +# 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 @@ -20,8 +20,6 @@ # ########################################################################### -VC=vc6 - all: ./configure make @@ -87,366 +85,13 @@ mingw32%: $(MAKE) -C lib -f Makefile.m32 CFG=$@ $(MAKE) -C src -f Makefile.m32 CFG=$@ -vc-clean: $(VC) - cd lib - nmake -f Makefile.$(VC) clean - cd ..\src - nmake -f Makefile.$(VC) clean +vc: + cd winbuild + nmake /f Makefile.vc MACHINE=x86 -vc-all: $(VC) - cd lib - nmake -f Makefile.$(VC) cfg=release - nmake -f Makefile.$(VC) cfg=release-ssl - nmake -f Makefile.$(VC) cfg=release-zlib - nmake -f Makefile.$(VC) cfg=release-ssl-zlib - nmake -f Makefile.$(VC) cfg=release-ssl-dll - nmake -f Makefile.$(VC) cfg=release-zlib-dll - nmake -f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll - nmake -f Makefile.$(VC) cfg=release-dll - nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll - nmake -f Makefile.$(VC) cfg=release-dll-zlib-dll - nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll - nmake -f Makefile.$(VC) cfg=debug - nmake -f Makefile.$(VC) cfg=debug-ssl - nmake -f Makefile.$(VC) cfg=debug-zlib - nmake -f Makefile.$(VC) cfg=debug-ssl-zlib - nmake -f Makefile.$(VC) cfg=debug-ssl-dll - nmake -f Makefile.$(VC) cfg=debug-zlib-dll - nmake -f Makefile.$(VC) cfg=debug-ssl-dll-zlib-dll - nmake -f Makefile.$(VC) cfg=debug-dll - nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll - nmake -f Makefile.$(VC) cfg=debug-dll-zlib-dll - nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll-zlib-dll - -vc: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release - cd ..\src - nmake /f Makefile.$(VC) - -vc-x64: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release - -vc-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1 - -vc-x64-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release WINDOWS_SSPI=1 - -vc-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release USE_IDN=1 - -vc-x64-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 - -vc-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 WINDOWS_SSPI=1 - -vc-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-zlib - cd ..\src - nmake /f Makefile.$(VC) cfg=release-zlib - -vc-x64-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib - -vc-zlib-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-zlib WINDOWS_SSPI=1 - -vc-x64-zlib-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib WINDOWS_SSPI=1 - -vc-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 - -vc-x64-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 - -vc-zlib-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-zlib-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-ssl: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl - -vc-x64-ssl: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl - -vc-ssl-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl WINDOWS_SSPI=1 - -vc-x64-ssl-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl WINDOWS_SSPI=1 - -vc-ssl-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 - -vc-x64-ssl-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 - -vc-ssl-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-ssl-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1 - -vc-ssl-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-zlib - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-zlib - -vc-x64-ssl-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib - -vc-ssl-zlib-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-zlib WINDOWS_SSPI=1 - -vc-x64-ssl-zlib-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib WINDOWS_SSPI=1 - -vc-ssl-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 - -vc-x64-ssl-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 - -vc-ssl-zlib-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-ssl-zlib-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-ssl-ssh2-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib - -vc-x64-ssl-ssh2-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib - -vc-ssl-ssh2-zlib-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1 - -vc-x64-ssl-ssh2-zlib-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1 - -vc-ssl-ssh2-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 - -vc-x64-ssl-ssh2-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 - -vc-ssl-ssh2-zlib-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-ssl-ssh2-zlib-idn-sspi: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-winssl: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-winssl WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-winssl WINDOWS_SSPI=1 - -vc-x64-winssl: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl WINDOWS_SSPI=1 - -vc-winssl-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-winssl-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1 - -vc-winssl-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-winssl-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-winssl-zlib WINDOWS_SSPI=1 - -vc-x64-winssl-zlib: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib WINDOWS_SSPI=1 - -vc-winssl-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-x64-winssl-zlib-idn: $(VC) - cd lib - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - cd ..\src - nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1 - -vc-ssl-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-dll - -vc-dll-ssl-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll - -vc-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-dll - -vc-dll-zlib-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll - -vc-dll-ssl-dll-zlib-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll - -vc-ssl-dll-zlib-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll - -vc-zlib-dll: $(VC) - cd lib - nmake /f Makefile.$(VC) cfg=release-zlib-dll - cd ..\src - nmake /f Makefile.$(VC) cfg=release-zlib-dll +vc-x64: + cd winbuild + nmake /f Makefile.vc MACHINE=x64 djgpp: $(MAKE) -C lib -f Makefile.dj @@ -497,75 +142,6 @@ linux: all linux-ssl: ssl -# We don't need to do anything for vc6. -vc6: - -# VC7 makefiles are for use with VS.NET and VS.NET 2003 -vc7: lib/Makefile.vc7 src/Makefile.vc7 - -lib/Makefile.vc7: lib/Makefile.vc6 - @echo "generate $@" - @sed -e "s/VC6/VC7/g" lib/Makefile.vc6 > lib/Makefile.vc7 - -src/Makefile.vc7: src/Makefile.vc6 - @echo "generate $@" - @sed -e "s/VC6/VC7/g" src/Makefile.vc6 > src/Makefile.vc7 - -# VC8 makefiles are for use with VS2005 -vc8: lib/Makefile.vc8 src/Makefile.vc8 - -lib/Makefile.vc8: lib/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" lib/Makefile.vc6 > lib/Makefile.vc8 - -src/Makefile.vc8: src/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" src/Makefile.vc6 > src/Makefile.vc8 - -# VC9 makefiles are for use with VS2008 -vc9: lib/Makefile.vc9 src/Makefile.vc9 - -lib/Makefile.vc9: lib/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" lib/Makefile.vc6 > lib/Makefile.vc9 - -src/Makefile.vc9: src/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" src/Makefile.vc6 > src/Makefile.vc9 - -# VC10 makefiles are for use with VS2010 -vc10: lib/Makefile.vc10 src/Makefile.vc10 - -lib/Makefile.vc10: lib/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc10/g" -e "s/VC6/VC10/g" lib/Makefile.vc6 > lib/Makefile.vc10 - -src/Makefile.vc10: src/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc10/g" -e "s/VC6/VC10/g" src/Makefile.vc6 > src/Makefile.vc10 - -# VC11 makefiles are for use with VS2012 -vc11: lib/Makefile.vc11 src/Makefile.vc11 - -lib/Makefile.vc11: lib/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc11/g" -e "s/VC6/VC11/g" lib/Makefile.vc6 > lib/Makefile.vc11 - -src/Makefile.vc11: src/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc11/g" -e "s/VC6/VC11/g" src/Makefile.vc6 > src/Makefile.vc11 - -# VC12 makefiles are for use with VS2013 -vc12: lib/Makefile.vc12 src/Makefile.vc12 - -lib/Makefile.vc12: lib/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" lib/Makefile.vc6 > lib/Makefile.vc12 - -src/Makefile.vc12: src/Makefile.vc6 - @echo "generate $@" - @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" src/Makefile.vc6 > src/Makefile.vc12 - ca-bundle: lib/mk-ca-bundle.pl @echo "generate a fresh ca-bundle.crt" @perl $< -b -l -u lib/ca-bundle.crt diff --git a/libraries/curl/RELEASE-NOTES b/libraries/curl/RELEASE-NOTES index 971336faf..151c4299c 100644 --- a/libraries/curl/RELEASE-NOTES +++ b/libraries/curl/RELEASE-NOTES @@ -1,110 +1,79 @@ -Curl and libcurl 7.56.0 +Curl and libcurl 7.57.0 - Public curl releases: 169 + Public curl releases: 171 Command line options: 211 curl_easy_setopt() options: 249 Public functions in libcurl: 74 - Contributors: 1618 + Contributors: 1626 This release includes the following changes: - o curl: enable compression for SCP/SFTP with --compressed-ssh [11] - o libcurl: enable compression for SCP/SFTP with CURLOPT_SSH_COMPRESSION [11] - o vtls: added dynamic changing SSL backend with curl_global_sslset() [28] - o new MIME API, curl_mime_init() and friends [32] - o openssl: initial SSLKEYLOGFILE implementation [36] + o auth: add support for RFC7616 - HTTP Digest access authentication [12] + o share: add support for sharing the connection cache [31] + o HTTP: implement Brotli content encoding [28] This release includes the following bugfixes: - o FTP: zero terminate the entry path even on bad input [67] - o examples/ftpuploadresume.c: use portable code - o runtests: match keywords case insensitively - o travis: build the examples too [1] - o strtoofft: reduce integer overflow risks globally [2] - o zsh.pl: produce a working completion script again [3] - o cmake: remove dead code for CURL_DISABLE_RTMP [4] - o progress: Track total times following redirects [5] - o configure: fix --disable-threaded-resolver [6] - o cmake: remove dead code for DISABLED_THREADSAFE [7] - o configure: fix clang version detection - o darwinssi: fix error: variable length array used - o travis: add metalink to some osx builds [8] - o configure: check for __builtin_available() availability [9] - o http_proxy: fix build error for CURL_DOES_CONVERSIONS [10] - o examples/ftpuploadresume: checksrc compliance - o ftp: fix CWD when doing multicwd then nocwd on same connection [12] - o system.h: remove all CURL_SIZEOF_* defines [13] - o http: Don't wait on CONNECT when there is no proxy [14] - o system.h: check for __ppc__ as well [15] - o http2_recv: return error better on fatal h2 errors [16] - o scripts/contri*sh: use "git log --use-mailmap" - o tftp: fix memory leak on too long filename [17] - o system.h: fix build for hppa [18] - o cmake: enable picky compiler options with clang and gcc [19] - o makefile.m32: add support for libidn2 [20] - o curl: turn off MinGW CRT's globbing [21] - o request-target.d: mention added in 7.55.0 - o curl: shorten and clean up CA cert verification error message [22] - o imap: support PREAUTH [23] - o CURLOPT_USERPWD.3: see also CURLOPT_PROXYUSERPWD - o examples/threaded-ssl: mention that this is for openssl before 1.1 - o winbuild: fix embedded manifest option [24] - o tests: Make sure libtests & unittests call curl_global_cleanup() - o system.h: include sys/poll.h for AIX [25] - o darwinssl: handle long strings in TLS certs [26] - o strtooff: fix build for systems with long long but no strtoll [27] - o asyn-thread: Improved cleanup after OOM situations - o HELP-US.md: "How to get started helping out in the curl project" [29] - o curl.h: CURLSSLBACKEND_WOLFSSL used wrong value [30] - o unit1301: fix error message on first test - o ossfuzz: moving towards the ideal integration [31] - o http: fix a memory leakage in checkrtspprefix() - o examples/post-callback: stop returning one byte at a time - o schannel: return CURLE_SSL_CACERT on failed verification [33] - o MAIL-ETIQUETTE: added "1.9 Your emails are public" - o http-proxy: treat all 2xx as CONNECT success [34] - o openssl: use OpenSSL's default ciphers by default [35] - o runtests.pl: support attribute "nonewline" in part verify/upload - o configure: remove --enable-soname-bump and SONAME_BUMP [37] - o travis: add c-ares enabled builds linux + osx [38] - o vtls: fix WolfSSL 3.12 build problems [39] - o http-proxy: when not doing CONNECT, that phase is done immediately [40] - o configure: fix curl_off_t check's include order [41] - o configure: use -Wno-varargs on clang 3.9[.X] debug builds - o rtsp: do not call fwrite() with NULL pointer FILE * [42] - o mbedtls: enable CA path processing [43] - o travis: add build without HTTP/SMTP/IMAP - o checksrc: verify more code style rules [44] - o HTTP proxy: on connection re-use, still use the new remote port [45] - o tests: add initial gssapi test using stub implementation [46] - o rtsp: Segfault when using WRITEDATA [47] - o docs: clarify the CURLOPT_INTERLEAVE* options behavior - o non-ascii: use iconv() with 'char **' argument [48] - o server/getpart: provide dummy function to build conversion enabled - o conversions: fix several compiler warnings - o openssl: add missing includes [49] - o schannel: Support partial send for when data is too large [50] - o socks: fix incorrect port number in SOCKS4 error message [51] - o curl: fix integer overflow in timeout options [52] - o travis: on mac, don't install openssl or libidn [53] - o cookies: reject oversized cookies instead of truncating [54] - o cookies: use lock when using CURLINFO_COOKIELIST [55] - o curl: check fseek() return code and bail on error - o examples/post-callback: use long for CURLOPT_POSTFIELDSIZE - o openssl: only verify RSA private key if supported [56] - o tests: make the imap server not verify user+password [57] - o imap: quote atoms properly when escaping characters [58] - o tests: fix a compiler warning in test 643 - o file_range: avoid integer overflow when figuring out byte range [59] - o curl.h: include on cygwin too [60] - o reuse_conn: don't copy flags that are known to be equal [61] - o http: fix adding custom empty headers to repeated requests [62] - o docs: clarify the use of environment variables for proxy [63] - o docs: link CURLOPT_CONNECTTIMEOUT and CURLOPT_CONNECTTIMEOUT_MS [64] - o connect: fix race condition with happy eyeballs timeout [65] - o cookie: fix memory leak if path was set twice in header [66] - o vtls: compare and clone ssl configs properly [68] - o proxy: read the "no_proxy" variable only if necessary [69] + o curl_mime_filedata.3: fix typos [1] + o libtest: Add required test libraries for lib1552 and lib1553 [2] + o fix time diffs for systems using unsigned time_t [3] + o ftplistparser: memory leak fix: free temporary memory always [4] + o multi: allow table handle sizes to be overridden [5] + o wildcards: don't use with non-supported protocols [6] + o curl_fnmatch: return error on illegal wildcard pattern [7] + o transfer: Fix chunked-encoding upload too early exit [8] + o curl_setup: Improve detection of CURL_WINDOWS_APP [9] + o resolvers: only include anything if needed [10] + o setopt: fix CURLOPT_SSH_AUTH_TYPES option read + o appveyor: add a win32 build + o Curl_timeleft: change return type to timediff_t [11] + o cmake: Export libcurl and curl targets to use by other cmake projects [13] + o curl: in -F option arg, comma is a delimiter for files only [14] + o curl: improved ";type=" handling in -F option arguments + o timeval: use mach_absolute_time() on MacOS [15] + o curlx: the timeval functions are no longer provided as curlx_* [16] + o mkhelp.pl: do not generate comment with current date [17] + o memdebug: use send/recv signature for curl_dosend/curl_dorecv [18] + o cookie: avoid NULL dereference [19] + o url: fix CURLOPT_POSTFIELDSIZE arg value check to allow -1 [20] + o include: remove conncache.h inclusion from where its not needed + o CURLOPT_MAXREDIRS: allow -1 as a value [21] + o tests: Fixed torture tests on tests 556 and 650 + o http2: Fixed OOM handling in upgrade request + o url: fix CURLOPT_DNS_CACHE_TIMEOUT arg value check to allow -1 + o CURLOPT_INFILESIZE: accept -1 [22] + o curl: pass through [] in URLs instead of calling globbing error [23] + o curl: speed up handling of many URLs [24] + o ntlm: avoid malloc(0) for zero length passwords [25] + o url: remove faulty arg value check from CURLOPT_SSH_AUTH_TYPES [26] + o HTTP: support multiple Content-Encodings [27] + o travis: add a job with brotli enabled + o url: remove unncessary NULL-check + o fnmatch: remove dead code + o connect: store IPv6 connection status after valid connection [29] + o imap: deal with commands case insensitively [30] + o --interface: add support for Linux VRF [32] + o content_encoding: fix inflate_stream for no bytes available [33] + o cmake: Correctly include curl.rc in Windows builds [34] + o cmake: Add missing setmode check [35] + o connect.c: remove executable bit on file [36] + o SMB: fix uninitialized local variable + o zlib/brotli: only include header files in modules needing them [37] + o URL: return error on malformed URLs with junk after IPv6 bracket [38] + o openssl: fix too broad use of HAVE_OPAQUE_EVP_PKEY [39] + o macOS: Fix missing connectx function with Xcode version older than 9.0 [40] + o --resolve: allow IP address within [] brackets [41] + o examples/curlx: Fix code style [42] + o ntlm: remove unnecessary NULL-check to please scan-build [43] + o Curl_llist_remove: fix potential NULL pointer deref [43] + o mime: fix "Value stored to 'sz' is never read" scan-build error [43] + o openssl: fix "Value stored to 'rc' is never read" scan-build error [43] + o http2: fix "Value stored to 'hdbuf' is never read" scan-build error [43] + o http2: fix "Value stored to 'end' is never read" scan-build error [43] + o Curl_open: fix OOM return error correctly [43] + o url: reject ASCII control characters and space in host names [44] + o examples/rtsp: clear RANGE again after use [45] + o connect: improve the bind error message [46] This release includes the following known bugs: @@ -113,89 +82,63 @@ This release includes the following known bugs: This release would not have looked like this without help, code, reports and advice from friends like these: - Anders Bakken, Andrei Karas, Benbuck Nason, Ben Greear, Benjamin Sergeant, - Bill Pyne, Brian Carpenter, Dan Fandrich, Daniel Stenberg, David Benjamin, - Dirk Feytons, Even Rouault, Frank Denis, Gergely Nagy, Gisle Vanem, - Ian Fette, imilli on github, Isaac Boukris, Jackarain on github, - Jakub Zakrzewski, Jan Alexander Steffens, Johannes Schindelin, - John David Anglin, joshhe on github, Kamil Dudka, Kevin Smith, - Lawrence Wagerfield, Maksim Stsepanenka, Marc Aldorasi, Marcel Raad, - Max Dymond, Michael Kaufmann, Michael Smith, Nick Zitzmann, - Nicolas Morey-Chaisemartin, Oli Kingshott, Patrick Monnerat, Pavel P, - Peter Lamare, Peter Wu, Ray Satiro, Rich Gray, Ryan Schmidt, Ryan Winograd, - SBKarr on github, Tatsuhiro Tsujikawa, Viktor SzakĂĄts, - (47 contributors) + Alessandro Ghedini, Alex Malinovich, Alfonso Martone, Andrew Lambert, + arainchik on github, Brian Carpenter, cbartl on github, Dan Fandrich, + Daniel Bankhead, Daniel Stenberg, Dirk Feytons, Dmitri Tikhonov, Gisle Vanem, + hsiao yi, Jakub Zakrzewski, John Starks, Juro Bystricky, Luca Boccassi, + Marcel Raad, Martin StorsjĂś, Max Dymond, Michael Felt, Michael Kaufmann, + moohoorama on github, omau on github, Orgad Shaneh, Patrick Monnerat, + Paul Howarth, Pavel Gushchin, Pavol Markovic, Per Lundberg, Peter Piekarski, + Petr Voytsik, Ray Satiro, Rob Cotrone, Viktor SzakĂĄts, youngchopin on github, + (37 contributors) Thanks! (and sorry if I forgot to mention someone) References to bug reports and discussions on issues: - [1] = https://curl.haxx.se/bug/?i=1777 - [2] = https://curl.haxx.se/bug/?i=1758 - [3] = https://curl.haxx.se/bug/?i=1779 - [4] = https://curl.haxx.se/bug/?i=1785 - [5] = https://curl.haxx.se/bug/?i=1602 - [6] = https://curl.haxx.se/bug/?i=1784 - [7] = https://curl.haxx.se/bug/?i=1786 - [8] = https://curl.haxx.se/bug/?i=1790 - [9] = https://curl.haxx.se/bug/?i=1788 - [10] = https://curl.haxx.se/bug/?i=1793 - [11] = https://curl.haxx.se/bug/?i=1735 - [12] = https://curl.haxx.se/bug/?i=1782 - [13] = https://curl.haxx.se/bug/?i=1767 - [14] = https://curl.haxx.se/bug/?i=1803 - [15] = https://curl.haxx.se/bug/?i=1797 - [16] = https://curl.haxx.se/bug/?i=1021 - [17] = https://curl.haxx.se/bug/?i=1808 - [18] = https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872502#10 - [19] = https://curl.haxx.se/bug/?i=1799 - [20] = https://curl.haxx.se/bug/?i=1815 - [21] = https://curl.haxx.se/bug/?i=1751 - [22] = https://curl.haxx.se/bug/?i=1810 - [23] = https://curl.haxx.se/bug/?i=1818 - [24] = https://curl.haxx.se/bug/?i=1832 - [25] = https://curl.haxx.se/bug/?i=1828 - [26] = https://curl.haxx.se/bug/?i=1823 - [27] = https://curl.haxx.se/bug/?i=1829 - [28] = https://curl.haxx.se/libcurl/c/curl_global_sslset.html - [29] = https://curl.haxx.se/bug/?i=1837 - [30] = https://curl.haxx.se/mail/lib-2017-08/0120.html - [31] = https://curl.haxx.se/bug/?i=1842 - [32] = https://curl.haxx.se/bug/?i=1839 - [33] = https://curl.haxx.se/bug/?i=1858 - [34] = https://curl.haxx.se/bug/?i=1859 - [35] = https://curl.haxx.se/bug/?i=1846 - [36] = https://curl.haxx.se/bug/?i=1866 - [37] = https://curl.haxx.se/bug/?i=1861 - [38] = https://curl.haxx.se/bug/?i=1868 - [39] = https://curl.haxx.se/bug/?i=1865 - [40] = https://curl.haxx.se/bug/?i=1853 - [41] = https://curl.haxx.se/bug/?i=1870 - [42] = https://curl.haxx.se/bug/?i=1874 - [43] = https://curl.haxx.se/bug/?i=1877 - [44] = https://curl.haxx.se/bug/?i=1878 - [45] = https://curl.haxx.se/bug/?i=1887 - [46] = https://curl.haxx.se/bug/?i=1687 - [47] = https://curl.haxx.se/bug/?i=1880 - [48] = https://curl.haxx.se/mail/lib-2017-09/0031.html - [49] = https://curl.haxx.se/bug/?i=1891 - [50] = https://curl.haxx.se/bug/?i=1890 - [51] = https://curl.haxx.se/bug/?i=1892 - [52] = https://curl.haxx.se/bug/?i=1893 - [53] = https://curl.haxx.se/bug/?i=1895 - [54] = https://curl.haxx.se/bug/?i=1894 - [55] = https://curl.haxx.se/bug/?i=1896 - [56] = https://curl.haxx.se/bug/?i=1904 - [57] = https://curl.haxx.se/bug/?i=1902 - [58] = https://curl.haxx.se/bug/?i=1902 - [59] = https://curl.haxx.se/bug/?i=1908 - [60] = https://curl.haxx.se/bug/?i=1925 - [61] = https://curl.haxx.se/bug/?i=1918 - [62] = https://curl.haxx.se/bug/?i=1920 - [63] = https://curl.haxx.se/bug/?i=1921 - [64] = https://curl.haxx.se/bug/?i=1922 - [65] = https://curl.haxx.se/bug/?i=1928 - [66] = https://curl.haxx.se/bug/?i=1932 - [67] = https://curl.haxx.se/docs/adv_20171004.html - [68] = https://curl.haxx.se/bug/?i=1917 - [69] = https://curl.haxx.se/bug/?i=1919 + [1] = https://curl.haxx.se/bug/?i=2008 + [2] = https://curl.haxx.se/bug/?i=2006 + [3] = https://curl.haxx.se/bug/?i=2004 + [4] = https://curl.haxx.se/bug/?i=2013 + [5] = https://curl.haxx.se/bug/?i=1982 + [6] = https://curl.haxx.se/bug/?i=2016 + [7] = https://curl.haxx.se/bug/?i=2015 + [8] = https://curl.haxx.se/bug/?i=2001 + [9] = https://curl.haxx.se/bug/?i=2025 + [10] = https://curl.haxx.se/bug/?i=2023 + [11] = https://curl.haxx.se/bug/?i=2021 + [12] = https://curl.haxx.se/bug/?i=1934 + [13] = https://curl.haxx.se/bug/?i=1879 + [14] = https://curl.haxx.se/bug/?i=2022 + [15] = https://curl.haxx.se/bug/?i=2033 + [16] = https://curl.haxx.se/bug/?i=2034 + [17] = https://curl.haxx.se/bug/?i=2026 + [18] = https://curl.haxx.se/bug/?i=2031 + [19] = https://curl.haxx.se/bug/?i=2032 + [20] = https://curl.haxx.se/mail/lib-2017-11/0000.html + [21] = https://curl.haxx.se/bug/?i=2038 + [22] = https://curl.haxx.se/bug/?i=2047 + [23] = https://curl.haxx.se/bug/?i=2044 + [24] = https://curl.haxx.se/bug/?i=1959 + [25] = https://curl.haxx.se/bug/?i=2054 + [26] = https://github.com/curl/curl/commit/f121575#commitcomment-25347120 + [27] = https://curl.haxx.se/bug/?i=2002 + [28] = https://curl.haxx.se/bug/?i=2045 + [29] = https://curl.haxx.se/bug/?i=2053 + [30] = https://curl.haxx.se/bug/?i=2061 + [31] = https://curl.haxx.se/bug/?i=2043 + [32] = https://curl.haxx.se/bug/?i=2024 + [33] = https://curl.haxx.se/bug/?i=2060 + [34] = https://curl.haxx.se/bug/?i=2064 + [35] = https://curl.haxx.se/bug/?i=2067 + [36] = https://curl.haxx.se/bug/?i=2071 + [37] = https://curl.haxx.se/mail/lib-2017-11/0032.html + [38] = https://curl.haxx.se/bug/?i=2072 + [39] = https://curl.haxx.se/bug/?i=2079 + [40] = https://curl.haxx.se/bug/?i=2080 + [41] = https://curl.haxx.se/bug/?i=2087 + [42] = https://curl.haxx.se/bug/?i=2096 + [43] = https://curl.haxx.se/bug/?i=2098 + [44] = https://curl.haxx.se/bug/?i=2073 + [45] = https://curl.haxx.se/bug/?i=2106 + [46] = https://curl.haxx.se/bug/?i=2104 diff --git a/libraries/curl/configure.ac b/libraries/curl/configure.ac index 4d5018d91..c15ff4e4c 100644 --- a/libraries/curl/configure.ac +++ b/libraries/curl/configure.ac @@ -124,7 +124,6 @@ AC_SUBST(libext) dnl figure out the libcurl version CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h` XC_CHECK_PROG_CC -AC_PROG_CXX XC_AUTOMAKE AC_MSG_CHECKING([curl version]) AC_MSG_RESULT($CURLVERSION) @@ -149,6 +148,7 @@ dnl initialize all the info variables curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )" curl_ssh_msg="no (--with-libssh2)" curl_zlib_msg="no (--with-zlib)" + curl_brotli_msg="no (--with-brotli)" curl_gss_msg="no (--with-gssapi)" curl_tls_srp_msg="no (--enable-tls-srp)" curl_res_msg="default (--enable-ares / --enable-threaded-resolver)" @@ -976,6 +976,94 @@ dnl set variable for use in automakefile(s) AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1) AC_SUBST(ZLIB_LIBS) +dnl ********************************************************************** +dnl Check for the presence of BROTLI decoder libraries and headers +dnl ********************************************************************** + +dnl Brotli project home page: https://github.com/google/brotli + +dnl Default to compiler & linker defaults for BROTLI files & libraries. +OPT_BROTLI=off +AC_ARG_WITH(brotli,dnl +AC_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) +AC_HELP_STRING([--without-brotli], [disable BROTLI]), + OPT_BROTLI=$withval) + +if test X"$OPT_BROTLI" != Xno; then + dnl backup the pre-brotli variables + CLEANLDFLAGS="$LDFLAGS" + CLEANCPPFLAGS="$CPPFLAGS" + CLEANLIBS="$LIBS" + + case "$OPT_BROTLI" in + yes) + dnl --with-brotli (without path) used + CURL_CHECK_PKGCONFIG(libbrotlidec) + + if test "$PKGCONFIG" != "no" ; then + LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec` + LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec` + CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec` + version=`$PKGCONFIG --modversion libbrotlidec` + DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/-L//'` + fi + + ;; + off) + dnl no --with-brotli option given, just check default places + ;; + *) + dnl use the given --with-brotli spot + PREFIX_BROTLI=$OPT_BROTLI + ;; + esac + + dnl if given with a prefix, we set -L and -I based on that + if test -n "$PREFIX_BROTLI"; then + LIB_BROTLI="-lbrotlidec" + LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff + CPP_BROTLI=-I${PREFIX_BROTLI}/include + DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff + fi + + LDFLAGS="$LDFLAGS $LD_BROTLI" + CPPFLAGS="$CPPFLAGS $CPP_BROTLI" + LIBS="$LIB_BROTLI $LIBS" + + AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress) + + AC_CHECK_HEADERS(brotli/decode.h, + curl_brotli_msg="enabled (libbrotlidec)" + HAVE_BROTLI=1 + AC_DEFINE(HAVE_BROTLI, 1, [if BROTLI is in use]) + AC_SUBST(HAVE_BROTLI, [1]) + ) + + if test X"$OPT_BROTLI" != Xoff && + test "$HAVE_BROTLI" != "1"; then + AC_MSG_ERROR([BROTLI libs and/or directories were not found where specified!]) + fi + + if test "$HAVE_BROTLI" = "1"; then + if test -n "$DIR_BROTLI"; then + dnl when the brotli shared libs were found in a path that the run-time + dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH + dnl to prevent further configure tests to fail due to this + + if test "x$cross_compiling" != "xyes"; then + LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_BROTLI" + export LD_LIBRARY_PATH + AC_MSG_NOTICE([Added $DIR_BROTLI to LD_LIBRARY_PATH]) + fi + fi + else + dnl no brotli, revert back to clean variables + LDFLAGS=$CLEANLDFLAGS + CPPFLAGS=$CLEANCPPFLAGS + LIBS=$CLEANLIBS + fi +fi + dnl ********************************************************************** dnl Check for LDAP dnl ********************************************************************** @@ -1647,10 +1735,7 @@ if test -z "$ssl_backends" -o "x$OPT_SSL" != xno && fi fi - if test X"$OPENSSL_ENABLED" = X"1"; then - dnl is there a pkcs12.h header present? - AC_CHECK_HEADERS(openssl/pkcs12.h) - else + if test X"$OPENSSL_ENABLED" != X"1"; then LIBS="$CLEANLIBS" fi @@ -3389,6 +3474,7 @@ AC_CHECK_FUNCS([geteuid \ getrlimit \ gettimeofday \ if_nametoindex \ + mach_absolute_time \ pipe \ setlocale \ setmode \ @@ -3789,6 +3875,9 @@ fi if test "x$HAVE_LIBZ" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES libz" fi +if test "x$HAVE_BROTLI" = "x1"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES brotli" +fi if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \ -o "x$USE_THREADS_WIN32" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" @@ -3974,7 +4063,6 @@ AC_CONFIG_FILES([Makefile \ tests/server/Makefile \ tests/libtest/Makefile \ tests/unit/Makefile \ - tests/fuzz/Makefile \ packages/Makefile \ packages/Win32/Makefile \ packages/Win32/cygwin/Makefile \ @@ -4007,6 +4095,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl: SSL support: ${curl_ssl_msg} SSH support: ${curl_ssh_msg} zlib support: ${curl_zlib_msg} + brotli support: ${curl_brotli_msg} GSS-API support: ${curl_gss_msg} TLS-SRP support: ${curl_tls_srp_msg} resolver: ${curl_res_msg} diff --git a/libraries/curl/docs/.gitignore b/libraries/curl/docs/.gitignore index 23f832b73..60f329382 100644 --- a/libraries/curl/docs/.gitignore +++ b/libraries/curl/docs/.gitignore @@ -1,2 +1,4 @@ *.html *.pdf +curl.1 +*.1.dist diff --git a/libraries/curl/docs/BUGS b/libraries/curl/docs/BUGS index 3c8fa9fcc..33f06cedc 100644 --- a/libraries/curl/docs/BUGS +++ b/libraries/curl/docs/BUGS @@ -63,7 +63,7 @@ BUGS Security related bugs or bugs that are suspected to have a security impact, should be reported by email to curl-security@haxx.se so that they first can be dealt with away from the public to minimize the harm and impact it will - have on existing users out there who might be using the vulernable versions. + have on existing users out there who might be using the vulnerable versions. The curl project's process for handling security related issues is documented here: @@ -186,7 +186,7 @@ BUGS include the version number of the curl you're using when you experience the issue. If that version number shows us that you're using an out-of-date curl, you should also try out a modern curl version to see if the problem - persists or how/if it has changed in apperance. + persists or how/if it has changed in appearance. Even if you cannot immediately upgrade your application/system to run the latest curl version, you can most often at least run a test version or @@ -290,8 +290,8 @@ BUGS The issue and pull request trackers on https://github.com/curl/curl will only hold "active" entries (using a non-precise definition of what active actually is, but they're at least not completely dead). Those that are - abandonded or in other ways dormant will be closed and sometimes added to + abandoned or in other ways dormant will be closed and sometimes added to TODO and KNOWN_BUGS instead. This way, we only have "active" issues open on github. Irrelevant issues and - pull requests will not distract developes or casual visitors. + pull requests will not distract developers or casual visitors. diff --git a/libraries/curl/docs/FAQ b/libraries/curl/docs/FAQ index 5b9810637..7ed5fa0ce 100644 --- a/libraries/curl/docs/FAQ +++ b/libraries/curl/docs/FAQ @@ -1418,7 +1418,7 @@ FAQ timed out. The most flexible way is by writing your own time-out logic and using - CURLOPT_PROGRESSFUNCTION (perhaps in combination with other callbacks) and + CURLOPT_XFERINFOFUNCTION (perhaps in combination with other callbacks) and use that to figure out exactly when the right condition is met when the transfer should get stopped. diff --git a/libraries/curl/docs/HELP-US.md b/libraries/curl/docs/HELP-US.md index d9e0bddc5..aae2b9f59 100644 --- a/libraries/curl/docs/HELP-US.md +++ b/libraries/curl/docs/HELP-US.md @@ -15,11 +15,11 @@ found yourself or perhaps got annoyed at in the past. It can be a spelling error in an error text or a weirdly phrased section in a man page. Hunt it down and report the bug. Or make your first pull request with a fix for that. -## PR-welcome +## Help wanted -In the issue tracker we occasionally mark bugs with -[PR-welcome](https://github.com/curl/curl/labels/PR-welcome), as a sign that -the bug is acknowledged to exist and that there's nobody known to work on this +In the issue tracker we occasionally mark bugs with [help +wanted](https://github.com/curl/curl/labels/help%20wanted), as a sign that the +bug is acknowledged to exist and that there's nobody known to work on this issue for the moment. Those are bugs that are fine to "grab" and provide a pull request for. The complexity level of these will of course vary, so pick one that piques your interest. diff --git a/libraries/curl/docs/INTERNALS.md b/libraries/curl/docs/INTERNALS.md index 2e273a9dc..459684ba2 100644 --- a/libraries/curl/docs/INTERNALS.md +++ b/libraries/curl/docs/INTERNALS.md @@ -82,7 +82,7 @@ Dependencies - zlib 1.1.4 - libssh2 0.16 - c-ares 1.6.0 - - libidn 0.4.1 + - libidn2 2.0.0 - cyassl 2.0.0 - openldap 2.0 - MIT Kerberos 1.2.4 @@ -612,20 +612,6 @@ curlx strtoll() (or equivalent) function exist on your platform. If `curl_off_t` is only a 32 bit number on your platform, this macro uses strtol(). -`curlx_tvnow()` ---------------- - returns a struct timeval for the current time. - -`curlx_tvdiff()` --------------- - returns the difference between two timeval structs, in number of - milliseconds. - -`curlx_tvdiff_secs()` ---------------------- - returns the same as `curlx_tvdiff` but with full usec resolution (as a - double) - Future ------ @@ -656,29 +642,29 @@ Content Encoding ## About content encodings [HTTP/1.1][4] specifies that a client may request that a server encode its - response. This is usually used to compress a response using one of a set of - commonly available compression techniques. These schemes are 'deflate' (the - zlib algorithm), 'gzip' and 'compress'. A client requests that the server - perform an encoding by including an Accept-Encoding header in the request - document. The value of the header should be one of the recognized tokens - 'deflate', ... (there's a way to register new schemes/tokens, see sec 3.5 of - the spec). A server MAY honor the client's encoding request. When a response - is encoded, the server includes a Content-Encoding header in the - response. The value of the Content-Encoding header indicates which scheme was - used to encode the data. + response. This is usually used to compress a response using one (or more) + encodings from a set of commonly available compression techniques. These + schemes include 'deflate' (the zlib algorithm), 'gzip' 'br' (brotli) and + 'compress'. A client requests that the server perform an encoding by including + an Accept-Encoding header in the request document. The value of the header + should be one of the recognized tokens 'deflate', ... (there's a way to + register new schemes/tokens, see sec 3.5 of the spec). A server MAY honor + the client's encoding request. When a response is encoded, the server + includes a Content-Encoding header in the response. The value of the + Content-Encoding header indicates which encodings were used to encode the + data, in the order in which they were applied. - A client may tell a server that it can understand several different encoding - schemes. In this case the server may choose any one of those and use it to - encode the response (indicating which one using the Content-Encoding header). It's also possible for a client to attach priorities to different schemes so that the server knows which it prefers. See sec 14.3 of RFC 2616 for more - information on the Accept-Encoding header. + information on the Accept-Encoding header. See sec [3.1.2.2 of RFC 7231][15] + for more information on the Content-Encoding header. ## Supported content encodings - The 'deflate' and 'gzip' content encoding are supported by libcurl. Both - regular and chunked transfers work fine. The zlib library is required for - this feature. + The 'deflate', 'gzip' and 'br' content encodings are supported by libcurl. + Both regular and chunked transfers work fine. The zlib library is required + for the 'deflate' and 'gzip' encodings, while the brotli decoding library is + for the 'br' encoding. ## The libcurl interface @@ -688,14 +674,15 @@ Content Encoding where string is the intended value of the Accept-Encoding header. - Currently, libcurl only understands how to process responses that use the - "deflate" or "gzip" Content-Encoding, so the only values for - [`CURLOPT_ACCEPT_ENCODING`][5] that will work (besides "identity," which does - nothing) are "deflate" and "gzip" If a response is encoded using the - "compress" or methods, libcurl will return an error indicating that the - response could not be decoded. If is NULL no Accept-Encoding header - is generated. If is a zero-length string, then an Accept-Encoding - header containing all supported encodings will be generated. + Currently, libcurl does support multiple encodings but only + understands how to process responses that use the "deflate", "gzip" and/or + "br" content encodings, so the only values for [`CURLOPT_ACCEPT_ENCODING`][5] + that will work (besides "identity," which does nothing) are "deflate", + "gzip" and "br". If a response is encoded using the "compress" or methods, + libcurl will return an error indicating that the response could + not be decoded. If is NULL no Accept-Encoding header is generated. + If is a zero-length string, then an Accept-Encoding header + containing all supported encodings will be generated. The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for content to be automatically decoded. If it is not set and the server still @@ -1091,3 +1078,4 @@ for older and later versions as things don't change drastically that often. [12]: https://curl.haxx.se/libcurl/c/curl_multi_fdset.html [13]: https://curl.haxx.se/libcurl/c/curl_multi_add_handle.html [14]: https://curl.haxx.se/libcurl/c/curl_multi_info_read.html +[15]: https://tools.ietf.org/html/rfc7231#section-3.1.2.2 diff --git a/libraries/curl/docs/RELEASE-PROCEDURE b/libraries/curl/docs/RELEASE-PROCEDURE index 5137f55d5..b7f8fcda0 100644 --- a/libraries/curl/docs/RELEASE-PROCEDURE +++ b/libraries/curl/docs/RELEASE-PROCEDURE @@ -83,10 +83,13 @@ Coming dates Based on the description above, here are some planned release dates (at the time of this writing): -- June 14, 2017 (version 7.54.1) -- August 9, 2017 -- October 4, 2017 - November 29, 2017 - January 24, 2018 - March 21, 2018 - May 16, 2018 +- July 11, 2018 +- September 5, 2018 +- October 31, 2018 +- December 26, 2018 +- February 20, 2019 +- April 17, 2019 diff --git a/libraries/curl/docs/RESOURCES b/libraries/curl/docs/RESOURCES index 1ad8aac31..2880b8fb0 100644 --- a/libraries/curl/docs/RESOURCES +++ b/libraries/curl/docs/RESOURCES @@ -81,3 +81,5 @@ This document lists documents and standards used by curl. RFC 4616 - PLAIN authentication RFC 4954 - SMTP Authentication + + RFC 7932 - Brotli Compressed Data Format diff --git a/libraries/curl/docs/ROADMAP.md b/libraries/curl/docs/ROADMAP.md index 1007ccb02..64989b1be 100644 --- a/libraries/curl/docs/ROADMAP.md +++ b/libraries/curl/docs/ROADMAP.md @@ -1,20 +1,14 @@ curl the next few years - perhaps ================================= -Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is -intended to serve as a guideline for others for information, feedback and -possible participation. +Roadmap of things Daniel Stenberg wants to work on next. It is intended to +serve as a guideline for others for information, feedback and possible +participation. QUIC ---- -The standardization process of QUIC has been taken to the IETF and can be -followed on the [IETF QUIC Mailing -list](https://www.ietf.org/mailman/listinfo/quic). I'd like us to get on the -bandwagon. Ideally, this would be done with a separate library/project to -handle the binary/framing layer in a similar fashion to how HTTP/2 is -implemented. This, to allow other projects to benefit from the work and to -thus broaden the interest and chance of others to participate. + See the [QUIC wiki page](https://github.com/curl/curl/wiki/QUIC). HTTP cookies ------------ @@ -34,85 +28,15 @@ SRV records How to find services for specific domains/hosts. -curl_formadd() --------------- - -make sure there's an easy handle passed in to `curl_formadd()`, -`curl_formget()` and `curl_formfree()` by adding replacement functions and -deprecating the old ones to allow custom mallocs and more. - -Or perhaps even better: revamp the formpost API completely while we're at it -and making something that is easier to use and understand: - - https://github.com/curl/curl/wiki/formpost-API-redesigned - -Third-party SASL ----------------- - -Add support for third-party SASL libraries such as Cyrus SASL. - -SASL authentication in LDAP ---------------------------- - -... - -Simplify the SMTP email ------------------------ - -Simplify the SMTP email interface so that programmers don't have to -construct the body of an email that contains all the headers, alternative -content, images and attachments - maintain raw interface so that -programmers that want to do this can - -email capabilities ------------------- - -Allow the email protocols to return the capabilities before -authenticating. This will allow an application to decide on the best -authentication mechanism - -Win32 pthreads --------------- - -Allow Windows threading model to be replaced by Win32 pthreads port - -dynamic buffer size -------------------- - -Implement a dynamic buffer size to allow SFTP to use much larger buffers and -possibly allow the size to be customizable by applications. Use less memory -when handles are not in use? - -New stuff - curl ----------------- - -1. Embed a language interpreter (lua?). For that middle ground where curl - isn’t enough and a libcurl binding feels “too much”. Build-time conditional - of course. - -2. Simplify the SMTP command line so that the headers and multi-part content - don't have to be constructed before calling curl - Improve ------- -1. build for windows (considered hard by many users) +1. curl -h output (considered overwhelming to users). -2. curl -h output (considered overwhelming to users) - -3. we have > 200 command line options, is there a way to redo things to +2. We have > 200 command line options, is there a way to redo things to simplify or improve the situation as we are likely to keep adding - features/options in the future too + features/options in the future too. -4. authentication framework (consider merging HTTP and SASL authentication to - give one API for protocols to call) - -5. Perform some of the clean up from the TODO document, removing old +3. Perform some of the clean up from the TODO document, removing old definitions and such like that are currently earmarked to be removed years - ago - -Remove ------- - -1. makefile.vc files as there is no point in maintaining two sets of Windows - makefiles. Note: These are currently being used by the Windows autobuilds + ago. diff --git a/libraries/curl/docs/THANKS b/libraries/curl/docs/THANKS index 5aa2a122c..14a131938 100644 --- a/libraries/curl/docs/THANKS +++ b/libraries/curl/docs/THANKS @@ -60,6 +60,7 @@ Alexander Sinditskiy Alexander Traud Alexander Zhuravlev Alexey Borzov +Alexey Melnichuk Alexey Pesternikov Alexey Simak Alexey Zakhlestin @@ -131,6 +132,7 @@ Arkadiusz Miskiewicz Armel Asselin Arnaud Compan Arnaud Ebalard +Artak Galoyan Arthur Murray Arve Knudsen Arvid Norberg @@ -481,6 +483,7 @@ Fabrizio Ammollo Fahim Chandurwala Fedor Karpelevitch Feist Josselin +Felix Kaiser Felix Yan Felix von Leitner Feng Tu @@ -664,6 +667,7 @@ Jason McDonald Jason S. Priebe Javier Barroso Javier G. Sogo +Javier Sixto Jay Austin Jayesh A Shah Jaz Fresh @@ -750,6 +754,7 @@ John Wanghui John Wilkinson John-Mark Bell Johnny Luong +Jon DeVree Jon Grubbs Jon Nelson Jon Sargeant @@ -842,6 +847,7 @@ Krishnendu Majumdar Krister Johansen Kristian Gunstone Kristian KĂśhntopp +Kristiyan Tsaklev Kurt Fankhauser Kyle J. McKay Kyle L. Huff @@ -1561,6 +1567,7 @@ William Ahern Wojciech Zwiefka Wouter Van Rooy Wu Yongzheng +Wyatt O'Day Xavier Bouchoux Xiangbin Li Yaakov Selkowitz @@ -1581,6 +1588,7 @@ Yves Arrouye Yves Lejeune Zdenek Pavlas Zekun Ni +Zenju on github Zmey Petroff Zvi Har'El afrind on github diff --git a/libraries/curl/docs/THANKS-filter b/libraries/curl/docs/THANKS-filter index 2c5d82553..4c447be68 100644 --- a/libraries/curl/docs/THANKS-filter +++ b/libraries/curl/docs/THANKS-filter @@ -48,4 +48,32 @@ s/Rodrigo Silva (MestreLion)/Rodrigo Silva/ s/tetetest tetetest// s/Jiří HruĹĄka/Jiri Hruska/ s/Viktor Szakats/Viktor SzakĂĄts/ -s/Jonathan Cardoso/Jonathan Cardoso Machado/ +s/Jonathan Cardoso$/Jonathan Cardoso Machado/ +s/Linus Nielsen$/Linus Nielsen Feltzing/ +s/Todd Ouska$/Todd A Ouska/ +s/Tim Ruehsen/Tim RĂźhsen/ +s/Michael Koenig/Michael KĂśnig/ +s/moparisthebest/Travis Burtrum/ +s/Jan-E/Jan Ehrhardt/ +s/Paras S$/Paras Sethia/ +s/Cristian Rodr\xEDguez$/Cristian RodrĂ­guez/ +s/Sidney San Mart\xEDn$/Sidney San MartĂ­n/ +s/Sidney San Martin$/Sidney San MartĂ­n/ +s/Taneli V\xE4h\xE4kangas$/Taneli Vähäkangas/ +s/Taneli Vahakangas$/Taneli Vähäkangas/ +s/Никита Дорохин./Никита Дорохин/ +s/upstream tests 305// +s/ (edited)// +s/Jean-Philippe Barette-LaPierre$/Jean-Philippe Barrette-LaPierre/ +s/Joern Hartroth$/JĂśrn Hartroth/ +s/Hongli Lai (Phusion)$/Hongli Lai/ +s/github user 'kreshano'$/kreshano on github/ +s/Marc Hoersken$/Marc HĂśrsken/ +s/Martin Storsjo$/Martin StorsjĂś/ +s/Jiri Malak$/Jiří MalĂĄk/ +s/JDepooter$/Joel Depooter/ +s/ERAMOTO Masaya$/Eramoto Masaya/ +s/shachaf on github$/Shachaf Ben-Kiki/ +s/CarloCannas on github$/Carlo Cannas/ +s/Henrik S. Gaßmann$/Henrik Gaßmann/ +s/moteus on github/Alexey Melnichuk/ diff --git a/libraries/curl/docs/TODO b/libraries/curl/docs/TODO index 264d559ad..4a0d4aed1 100644 --- a/libraries/curl/docs/TODO +++ b/libraries/curl/docs/TODO @@ -56,6 +56,7 @@ 4.5 ASCII support 4.6 GSSAPI via Windows SSPI 4.7 STAT for LIST without data connection + 4.8 Option to ignore private IP addresses in PASV response 5. HTTP 5.1 Better persistency for HTTP 1.0 @@ -64,9 +65,8 @@ 5.4 HTTP Digest using SHA-256 5.5 auth= in URLs 5.6 Refuse "downgrade" redirects - 5.7 Brotli compression - 5.8 QUIC - 5.10 Leave secure cookies alone + 5.7 QUIC + 5.8 Leave secure cookies alone 6. TELNET 6.1 ditch stdin @@ -449,17 +449,23 @@ 4.6 GSSAPI via Windows SSPI -In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5) -via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add -support for GSSAPI authentication via Windows SSPI. + In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5) + via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add + support for GSSAPI authentication via Windows SSPI. 4.7 STAT for LIST without data connection -Some FTP servers allow STAT for listing directories instead of using LIST, and -the response is then sent over the control connection instead of as the -otherwise usedw data connection: http://www.nsftools.com/tips/RawFTP.htm#STAT + Some FTP servers allow STAT for listing directories instead of using LIST, + and the response is then sent over the control connection instead of as the + otherwise usedw data connection: http://www.nsftools.com/tips/RawFTP.htm#STAT -This is not detailed in any FTP specification. + This is not detailed in any FTP specification. + +4.8 Option to ignore private IP addresses in PASV response + + Some servers respond with and some other FTP client implementations can + ignore private (RFC 1918 style) IP addresses when received in PASV responses. + To consider for libcurl as well. See https://github.com/curl/curl/issues/1455 5. HTTP @@ -514,13 +520,7 @@ This is not detailed in any FTP specification. Consider a way to tell curl to refuse to "downgrade" protocol with a redirect and/or possibly a bit that refuses redirect to change protocol completely. -5.7 Brotli compression - - Brotli compression performs better than gzip and is being implemented by - browsers and servers widely. The algorithm: https://github.com/google/brotli - The Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=366559 - -5.8 QUIC +5.7 QUIC The standardization process of QUIC has been taken to the IETF and can be followed on the [IETF QUIC Mailing @@ -530,7 +530,7 @@ This is not detailed in any FTP specification. implemented. This, to allow other projects to benefit from the work and to thus broaden the interest and chance of others to participate. -5.10 Leave secure cookies alone +5.8 Leave secure cookies alone Non-secure origins (HTTP sites) should not be allowed to set or modify cookies with the 'secure' property: diff --git a/libraries/curl/docs/curl-config.1 b/libraries/curl/docs/curl-config.1 index 457519b17..4c1e323c6 100644 --- a/libraries/curl/docs/curl-config.1 +++ b/libraries/curl/docs/curl-config.1 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl-config 1 "February 03, 2016" "Curl 7.56.0" "curl-config manual" - +.TH curl-config 1 "25 Oct 2007" "Curl 7.17.1" "curl-config manual" .SH NAME curl-config \- Get information about a libcurl installation .SH SYNOPSIS diff --git a/libraries/curl/docs/examples/.gitignore b/libraries/curl/docs/examples/.gitignore index d64e12de0..f22c7b02f 100644 --- a/libraries/curl/docs/examples/.gitignore +++ b/libraries/curl/docs/examples/.gitignore @@ -70,6 +70,11 @@ smtp-multi smtp-ssl smtp-tls smtp-vrfy +sslbackend url2file usercertinmem xmlstream +http2-download +http2-serverpush +http2-upload +imap-lsub diff --git a/libraries/curl/docs/examples/Makefile.inc b/libraries/curl/docs/examples/Makefile.inc index 71b804c75..075df9ea2 100644 --- a/libraries/curl/docs/examples/Makefile.inc +++ b/libraries/curl/docs/examples/Makefile.inc @@ -33,7 +33,8 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \ imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \ imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \ http2-upload http2-serverpush getredirect ftpuploadfrommem \ - ftpuploadresume sslbackend postit2-formadd multi-formadd + ftpuploadresume sslbackend postit2-formadd multi-formadd \ + shared-connection-cache # These examples require external dependencies that may not be commonly # available on POSIX systems, so don't bother attempting to compile them here. diff --git a/libraries/curl/docs/examples/adddocsref.pl b/libraries/curl/docs/examples/adddocsref.pl index 2dcc24b63..efebfe2bc 100644 --- a/libraries/curl/docs/examples/adddocsref.pl +++ b/libraries/curl/docs/examples/adddocsref.pl @@ -2,7 +2,7 @@ # pass files as argument(s) -my $docroot="http://curl.haxx.se/libcurl/c"; +my $docroot="https://curl.haxx.se/libcurl/c"; for $f (@ARGV) { open(NEW, ">$f.new"); diff --git a/libraries/curl/docs/examples/curlx.c b/libraries/curl/docs/examples/curlx.c index c36beedfa..2aa10aa75 100644 --- a/libraries/curl/docs/examples/curlx.c +++ b/libraries/curl/docs/examples/curlx.c @@ -537,7 +537,7 @@ int main(int argc, char **argv) res = curl_easy_perform(p.curl)); { int result = curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response); - if(mimetypeaccept && p.verbose) + if(mimetypeaccept && p.verbose) { if(!strcmp(mimetypeaccept, response)) BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n", response); @@ -545,6 +545,7 @@ int main(int argc, char **argv) BIO_printf(p.errorbio, "the response doesn\'t have an acceptable " "mime type, it is %s instead of %s\n", response, mimetypeaccept); + } } /*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/ diff --git a/libraries/curl/docs/examples/rtsp.c b/libraries/curl/docs/examples/rtsp.c index 5c66aa6e5..3035e3fbc 100644 --- a/libraries/curl/docs/examples/rtsp.c +++ b/libraries/curl/docs/examples/rtsp.c @@ -129,6 +129,9 @@ static void rtsp_play(CURL *curl, const char *uri, const char *range) my_curl_easy_setopt(curl, CURLOPT_RANGE, range); my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_PLAY); my_curl_easy_perform(curl); + + /* switch off using range again */ + my_curl_easy_setopt(curl, CURLOPT_RANGE, NULL); } diff --git a/libraries/curl/docs/libcurl/.gitignore b/libraries/curl/docs/libcurl/.gitignore index 2e5b359aa..270b0531f 100644 --- a/libraries/curl/docs/libcurl/.gitignore +++ b/libraries/curl/docs/libcurl/.gitignore @@ -1,3 +1,4 @@ *.html *.pdf +*.3.dist libcurl-symbols.3 diff --git a/libraries/curl/docs/libcurl/curl_easy_cleanup.3 b/libraries/curl/docs/libcurl/curl_easy_cleanup.3 index b842455ef..cc5990e21 100644 --- a/libraries/curl/docs/libcurl/curl_easy_cleanup.3 +++ b/libraries/curl/docs/libcurl/curl_easy_cleanup.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_cleanup 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_cleanup 3 "22 aug 2007" "libcurl 7.17.0" "libcurl Manual" .SH NAME curl_easy_cleanup - End a libcurl easy handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_duphandle.3 b/libraries/curl/docs/libcurl/curl_easy_duphandle.3 index 900d239fe..262cebd32 100644 --- a/libraries/curl/docs/libcurl/curl_easy_duphandle.3 +++ b/libraries/curl/docs/libcurl/curl_easy_duphandle.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_easy_duphandle 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_duphandle 3 "19 Sep 2014" "libcurl" "libcurl Manual" .SH NAME curl_easy_duphandle - Clone a libcurl session handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_escape.3 b/libraries/curl/docs/libcurl/curl_easy_escape.3 index 6a6a72469..2f9192e10 100644 --- a/libraries/curl/docs/libcurl/curl_easy_escape.3 +++ b/libraries/curl/docs/libcurl/curl_easy_escape.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_escape 3 "7 April 2006" "libcurl 7.15.4" "libcurl Manual" .SH NAME curl_easy_escape - URL encodes the given string .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_getinfo.3 b/libraries/curl/docs/libcurl/curl_easy_getinfo.3 index 523b3ea17..3edef83e2 100644 --- a/libraries/curl/docs/libcurl/curl_easy_getinfo.3 +++ b/libraries/curl/docs/libcurl/curl_easy_getinfo.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_getinfo 3 "June 15, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_getinfo 3 "11 Feb 2009" "libcurl 7.19.4" "libcurl Manual" .SH NAME curl_easy_getinfo - extract information from a curl handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_init.3 b/libraries/curl/docs/libcurl/curl_easy_init.3 index c91be4dc1..371a3b81c 100644 --- a/libraries/curl/docs/libcurl/curl_easy_init.3 +++ b/libraries/curl/docs/libcurl/curl_easy_init.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_init 3 "4 March 2002" "libcurl 7.8.1" "libcurl Manual" .SH NAME curl_easy_init - Start a libcurl easy session .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_pause.3 b/libraries/curl/docs/libcurl/curl_easy_pause.3 index 57b15de87..131fa774f 100644 --- a/libraries/curl/docs/libcurl/curl_easy_pause.3 +++ b/libraries/curl/docs/libcurl/curl_easy_pause.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_pause 3 "17 Dec 2007" "libcurl 7.18.0" "libcurl Manual" .SH NAME curl_easy_pause - pause and unpause a connection .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_perform.3 b/libraries/curl/docs/libcurl/curl_easy_perform.3 index 98705c6c6..48c1f3117 100644 --- a/libraries/curl/docs/libcurl/curl_easy_perform.3 +++ b/libraries/curl/docs/libcurl/curl_easy_perform.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_easy_perform 3 "May 02, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_perform 3 "5 Mar 2001" "libcurl 7.7" "libcurl Manual" .SH NAME curl_easy_perform - perform a blocking file transfer .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_recv.3 b/libraries/curl/docs/libcurl/curl_easy_recv.3 index 91592489c..7a812dd00 100644 --- a/libraries/curl/docs/libcurl/curl_easy_recv.3 +++ b/libraries/curl/docs/libcurl/curl_easy_recv.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_recv 3 "29 April 2008" "libcurl 7.18.2" "libcurl Manual" .SH NAME curl_easy_recv - receives raw data on an "easy" connection .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_reset.3 b/libraries/curl/docs/libcurl/curl_easy_reset.3 index 13666ffce..0bafb64ac 100644 --- a/libraries/curl/docs/libcurl/curl_easy_reset.3 +++ b/libraries/curl/docs/libcurl/curl_easy_reset.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_easy_reset 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_reset 3 "31 July 2004" "libcurl 7.12.1" "libcurl Manual" .SH NAME curl_easy_reset - reset all options of a libcurl session handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_send.3 b/libraries/curl/docs/libcurl/curl_easy_send.3 index 0b119ad32..47976f391 100644 --- a/libraries/curl/docs/libcurl/curl_easy_send.3 +++ b/libraries/curl/docs/libcurl/curl_easy_send.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_send 3 "29 April 2008" "libcurl 7.18.2" "libcurl Manual" .SH NAME curl_easy_send - sends raw data over an "easy" connection .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_setopt.3 b/libraries/curl/docs/libcurl/curl_easy_setopt.3 index 5bf37525d..2982056f0 100644 --- a/libraries/curl/docs/libcurl/curl_easy_setopt.3 +++ b/libraries/curl/docs/libcurl/curl_easy_setopt.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_setopt 3 "September 02, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_setopt 3 "25 Jun 2014" "libcurl 7.38.0" "libcurl Manual" .SH NAME curl_easy_setopt \- set options for a curl easy handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_strerror.3 b/libraries/curl/docs/libcurl/curl_easy_strerror.3 index b2df3661f..ac9412207 100644 --- a/libraries/curl/docs/libcurl/curl_easy_strerror.3 +++ b/libraries/curl/docs/libcurl/curl_easy_strerror.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_strerror 3 "26 Apr 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_easy_strerror - return string describing error code .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_easy_unescape.3 b/libraries/curl/docs/libcurl/curl_easy_unescape.3 index 40f62c2f6..50ce97db7 100644 --- a/libraries/curl/docs/libcurl/curl_easy_unescape.3 +++ b/libraries/curl/docs/libcurl/curl_easy_unescape.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_easy_unescape 3 "7 April 2006" "libcurl 7.15.4" "libcurl Manual" .SH NAME curl_easy_unescape - URL decodes the given string .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_escape.3 b/libraries/curl/docs/libcurl/curl_escape.3 index c88b874a3..03f02d323 100644 --- a/libraries/curl/docs/libcurl/curl_escape.3 +++ b/libraries/curl/docs/libcurl/curl_escape.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_escape 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_escape 3 "6 March 2002" "libcurl 7.9" "libcurl Manual" .SH NAME curl_escape - URL encodes the given string .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_formadd.3 b/libraries/curl/docs/libcurl/curl_formadd.3 index ac3df79ce..de202aa47 100644 --- a/libraries/curl/docs/libcurl/curl_formadd.3 +++ b/libraries/curl/docs/libcurl/curl_formadd.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_formadd 3 "September 22, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_formadd 3 "24 June 2002" "libcurl 7.9.8" "libcurl Manual" .SH NAME curl_formadd - add a section to a multipart/formdata HTTP POST .SH SYNOPSIS @@ -173,7 +172,10 @@ you've called \fIcurl_easy_cleanup(3)\fP for the curl handle. See example below. .SH AVAILABILITY Deprecated in 7.56.0. Before this release, field names were allowed to -contain zero-valued bytes. +contain zero-valued bytes. The pseudo-filename "-" to read stdin is +discouraged although still supported, but data is not read before being +actually sent: the effective data size can then not be automatically +determined, resulting in a chunked encoding transfer. .SH RETURN VALUE 0 means everything was ok, non-zero means an error occurred corresponding to a CURL_FORMADD_* constant defined in diff --git a/libraries/curl/docs/libcurl/curl_formfree.3 b/libraries/curl/docs/libcurl/curl_formfree.3 index c7395f6e2..dd00494be 100644 --- a/libraries/curl/docs/libcurl/curl_formfree.3 +++ b/libraries/curl/docs/libcurl/curl_formfree.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_formfree 3 "September 02, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_formfree 3 "6 April 2001" "libcurl 7.7.1" "libcurl Manual" .SH NAME curl_formfree - free a previously build multipart/formdata HTTP POST chain .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_formget.3 b/libraries/curl/docs/libcurl/curl_formget.3 index f32c0f0bf..0d947253a 100644 --- a/libraries/curl/docs/libcurl/curl_formget.3 +++ b/libraries/curl/docs/libcurl/curl_formget.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_formget 3 "September 02, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_formget 3 "20 June 2006" "libcurl 7.15.5" "libcurl Manual" .SH NAME curl_formget - serialize a previously built multipart/formdata HTTP POST chain .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_free.3 b/libraries/curl/docs/libcurl/curl_free.3 index 4f9577982..5bbf74535 100644 --- a/libraries/curl/docs/libcurl/curl_free.3 +++ b/libraries/curl/docs/libcurl/curl_free.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_free 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_free 3 "12 Aug 2003" "libcurl 7.10" "libcurl Manual" .SH NAME curl_free - reclaim memory that has been obtained through a libcurl call .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_getdate.3 b/libraries/curl/docs/libcurl/curl_getdate.3 index 6d4c035f6..d09980d09 100644 --- a/libraries/curl/docs/libcurl/curl_getdate.3 +++ b/libraries/curl/docs/libcurl/curl_getdate.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_getdate 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_getdate 3 "12 Aug 2005" "libcurl 7.0" "libcurl Manual" .SH NAME curl_getdate - Convert a date string to number of seconds .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_getenv.3 b/libraries/curl/docs/libcurl/curl_getenv.3 index 02679970e..c6bee98db 100644 --- a/libraries/curl/docs/libcurl/curl_getenv.3 +++ b/libraries/curl/docs/libcurl/curl_getenv.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_getenv 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_getenv 3 "30 April 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_getenv - return value for environment name .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_global_cleanup.3 b/libraries/curl/docs/libcurl/curl_global_cleanup.3 index e390ee961..04ab0437c 100644 --- a/libraries/curl/docs/libcurl/curl_global_cleanup.3 +++ b/libraries/curl/docs/libcurl/curl_global_cleanup.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_global_cleanup 3 "17 Feb 2006" "libcurl 7.8" "libcurl Manual" .SH NAME curl_global_cleanup - global libcurl cleanup .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_global_init.3 b/libraries/curl/docs/libcurl/curl_global_init.3 index 81d341968..c911bad0a 100644 --- a/libraries/curl/docs/libcurl/curl_global_init.3 +++ b/libraries/curl/docs/libcurl/curl_global_init.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_global_init 3 "August 28, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_global_init 3 "11 May 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_global_init - Global libcurl initialisation .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_global_init_mem.3 b/libraries/curl/docs/libcurl/curl_global_init_mem.3 index c66974ea1..7252cf9fa 100644 --- a/libraries/curl/docs/libcurl/curl_global_init_mem.3 +++ b/libraries/curl/docs/libcurl/curl_global_init_mem.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_global_init_mem 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_global_init_mem 3 "10 May 2004" "libcurl 7.12.0" "libcurl Manual" .SH NAME curl_global_init_mem - Global libcurl initialisation with memory callbacks .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_mprintf.3 b/libraries/curl/docs/libcurl/curl_mprintf.3 index 7f973b20f..e861ed9ce 100644 --- a/libraries/curl/docs/libcurl/curl_mprintf.3 +++ b/libraries/curl/docs/libcurl/curl_mprintf.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_printf 3 "April 01, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_printf 3 "30 April 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf, diff --git a/libraries/curl/docs/libcurl/curl_multi_add_handle.3 b/libraries/curl/docs/libcurl/curl_multi_add_handle.3 index 6c1dff03f..4c294f5a6 100644 --- a/libraries/curl/docs/libcurl/curl_multi_add_handle.3 +++ b/libraries/curl/docs/libcurl/curl_multi_add_handle.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_add_handle 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_add_handle 3 "4 March 2002" "libcurl 7.9.5" "libcurl Manual" .SH NAME curl_multi_add_handle - add an easy handle to a multi session .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_assign.3 b/libraries/curl/docs/libcurl/curl_multi_assign.3 index 0fed97cd0..75cb86b4c 100644 --- a/libraries/curl/docs/libcurl/curl_multi_assign.3 +++ b/libraries/curl/docs/libcurl/curl_multi_assign.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_assign 3 "9 Jul 2006" "libcurl 7.16.0" "libcurl Manual" .SH NAME curl_multi_assign \- set data to associate with an internal socket .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_cleanup.3 b/libraries/curl/docs/libcurl/curl_multi_cleanup.3 index 0703dd091..07d921605 100644 --- a/libraries/curl/docs/libcurl/curl_multi_cleanup.3 +++ b/libraries/curl/docs/libcurl/curl_multi_cleanup.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_cleanup 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_cleanup 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual" .SH NAME curl_multi_cleanup - close down a multi session .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_fdset.3 b/libraries/curl/docs/libcurl/curl_multi_fdset.3 index eef1ca359..de3a92862 100644 --- a/libraries/curl/docs/libcurl/curl_multi_fdset.3 +++ b/libraries/curl/docs/libcurl/curl_multi_fdset.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_fdset 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.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 @@ -59,9 +58,10 @@ 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 diff --git a/libraries/curl/docs/libcurl/curl_multi_info_read.3 b/libraries/curl/docs/libcurl/curl_multi_info_read.3 index 2eea35f7c..736183df3 100644 --- a/libraries/curl/docs/libcurl/curl_multi_info_read.3 +++ b/libraries/curl/docs/libcurl/curl_multi_info_read.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_info_read 3 "18 Dec 2004" "libcurl 7.10.3" "libcurl Manual" .SH NAME curl_multi_info_read - read multi stack informationals .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_init.3 b/libraries/curl/docs/libcurl/curl_multi_init.3 index 3d03452bc..e84eb768f 100644 --- a/libraries/curl/docs/libcurl/curl_multi_init.3 +++ b/libraries/curl/docs/libcurl/curl_multi_init.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_init 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_init 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual" .SH NAME curl_multi_init - create a multi handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_perform.3 b/libraries/curl/docs/libcurl/curl_multi_perform.3 index 4ef766f9a..d2ae541cf 100644 --- a/libraries/curl/docs/libcurl/curl_multi_perform.3 +++ b/libraries/curl/docs/libcurl/curl_multi_perform.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_perform 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual" .SH NAME curl_multi_perform - reads/writes available data from each easy handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_remove_handle.3 b/libraries/curl/docs/libcurl/curl_multi_remove_handle.3 index c3c80f47d..b9daae9b1 100644 --- a/libraries/curl/docs/libcurl/curl_multi_remove_handle.3 +++ b/libraries/curl/docs/libcurl/curl_multi_remove_handle.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_remove_handle 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_remove_handle 3 "6 March 2002" "libcurl 7.9.5" "libcurl Manual" .SH NAME curl_multi_remove_handle - remove an easy handle from a multi session .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_setopt.3 b/libraries/curl/docs/libcurl/curl_multi_setopt.3 index 4b5ca34ec..d27c52441 100644 --- a/libraries/curl/docs/libcurl/curl_multi_setopt.3 +++ b/libraries/curl/docs/libcurl/curl_multi_setopt.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_setopt 3 "4 Nov 2014" "libcurl 7.39.0" "libcurl Manual" .SH NAME curl_multi_setopt \- set options for a curl multi handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_socket.3 b/libraries/curl/docs/libcurl/curl_multi_socket.3 index 4e7108f0d..ea29e7110 100644 --- a/libraries/curl/docs/libcurl/curl_multi_socket.3 +++ b/libraries/curl/docs/libcurl/curl_multi_socket.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_socket 3 "December 15, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_socket 3 "9 Jul 2006" "libcurl 7.16.0" "libcurl Manual" .SH NAME curl_multi_socket \- reads/writes available data .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_socket_action.3 b/libraries/curl/docs/libcurl/curl_multi_socket_action.3 index cb796a32b..2b8419232 100644 --- a/libraries/curl/docs/libcurl/curl_multi_socket_action.3 +++ b/libraries/curl/docs/libcurl/curl_multi_socket_action.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_socket_action 3 "June 07, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_socket_action 3 "9 Jul 2006" "libcurl 7.16.0" "libcurl Manual" .SH NAME curl_multi_socket_action \- reads/writes available data given an action .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_strerror.3 b/libraries/curl/docs/libcurl/curl_multi_strerror.3 index 491ab6a10..b5aa7afb3 100644 --- a/libraries/curl/docs/libcurl/curl_multi_strerror.3 +++ b/libraries/curl/docs/libcurl/curl_multi_strerror.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_strerror 3 "26 Apr 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_multi_strerror - return string describing error code .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_timeout.3 b/libraries/curl/docs/libcurl/curl_multi_timeout.3 index 1d15d8b36..71b2b320a 100644 --- a/libraries/curl/docs/libcurl/curl_multi_timeout.3 +++ b/libraries/curl/docs/libcurl/curl_multi_timeout.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_timeout 3 "May 02, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_timeout 3 "2 Jan 2006" "libcurl 7.16.0" "libcurl Manual" .SH NAME curl_multi_timeout \- how long to wait for action before proceeding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_multi_wait.3 b/libraries/curl/docs/libcurl/curl_multi_wait.3 index 6b47bafe2..9f15c5f89 100644 --- a/libraries/curl/docs/libcurl/curl_multi_wait.3 +++ b/libraries/curl/docs/libcurl/curl_multi_wait.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_multi_wait 3 "March 09, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_multi_wait 3 "12 Jul 2012" "libcurl 7.28.0" "libcurl Manual" .SH NAME curl_multi_wait - polls on all easy handles in a multi handle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_share_cleanup.3 b/libraries/curl/docs/libcurl/curl_share_cleanup.3 index 345ed8785..0b265e86e 100644 --- a/libraries/curl/docs/libcurl/curl_share_cleanup.3 +++ b/libraries/curl/docs/libcurl/curl_share_cleanup.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_share_cleanup 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_share_cleanup 3 "8 Aug 2003" "libcurl 7.10.7" "libcurl Manual" .SH NAME curl_share_cleanup - Clean up a shared object .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_share_init.3 b/libraries/curl/docs/libcurl/curl_share_init.3 index e3dd2c447..545ba038f 100644 --- a/libraries/curl/docs/libcurl/curl_share_init.3 +++ b/libraries/curl/docs/libcurl/curl_share_init.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_share_init 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_share_init 3 "8 Aug 2003" "libcurl 7.10.7" "libcurl Manual" .SH NAME curl_share_init - Create a shared object .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_share_setopt.3 b/libraries/curl/docs/libcurl/curl_share_setopt.3 index e35fc9dd9..947722806 100644 --- a/libraries/curl/docs/libcurl/curl_share_setopt.3 +++ b/libraries/curl/docs/libcurl/curl_share_setopt.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_share_setopt 3 "May 29, 2016" "libcurl 7.56.0" "libcurl Manual" - +.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 @@ -71,6 +70,13 @@ 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 diff --git a/libraries/curl/docs/libcurl/curl_share_strerror.3 b/libraries/curl/docs/libcurl/curl_share_strerror.3 index 80163267b..faa5299d1 100644 --- a/libraries/curl/docs/libcurl/curl_share_strerror.3 +++ b/libraries/curl/docs/libcurl/curl_share_strerror.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_share_strerror 3 "26 Apr 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_share_strerror - return string describing error code .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_slist_append.3 b/libraries/curl/docs/libcurl/curl_slist_append.3 index 03eb10274..2d4e30527 100644 --- a/libraries/curl/docs/libcurl/curl_slist_append.3 +++ b/libraries/curl/docs/libcurl/curl_slist_append.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_slist_append 3 "May 05, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_slist_append 3 "19 Jun 2003" "libcurl 7.10.4" "libcurl Manual" .SH NAME curl_slist_append - add a string to an slist .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_slist_free_all.3 b/libraries/curl/docs/libcurl/curl_slist_free_all.3 index 3409362a0..895524914 100644 --- a/libraries/curl/docs/libcurl/curl_slist_free_all.3 +++ b/libraries/curl/docs/libcurl/curl_slist_free_all.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_slist_free_all 3 "May 05, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_slist_free_all 3 "5 March 2001" "libcurl 7.0" "libcurl Manual" .SH NAME curl_slist_free_all - free an entire curl_slist list .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_strequal.3 b/libraries/curl/docs/libcurl/curl_strequal.3 index 0b72f3850..e9cf80387 100644 --- a/libraries/curl/docs/libcurl/curl_strequal.3 +++ b/libraries/curl/docs/libcurl/curl_strequal.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_strequal 3 "June 29, 2017" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_strequal 3 "30 April 2004" "libcurl 7.12" "libcurl Manual" .SH NAME curl_strequal, curl_strnequal - case insensitive string comparisons .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_unescape.3 b/libraries/curl/docs/libcurl/curl_unescape.3 index 84f9b5c0a..061fbbf5c 100644 --- a/libraries/curl/docs/libcurl/curl_unescape.3 +++ b/libraries/curl/docs/libcurl/curl_unescape.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_unescape 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_unescape 3 "22 March 2001" "libcurl 7.7" "libcurl Manual" .SH NAME curl_unescape - URL decodes the given string .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_version.3 b/libraries/curl/docs/libcurl/curl_version.3 index b29bd935b..4acd73aab 100644 --- a/libraries/curl/docs/libcurl/curl_version.3 +++ b/libraries/curl/docs/libcurl/curl_version.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH curl_version 3 "February 03, 2016" "libcurl 7.56.0" "libcurl Manual" - +.TH curl_version 3 "5 March 2001" "libcurl 7.0" "libcurl Manual" .SH NAME curl_version - returns the libcurl version string .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/curl_version_info.3 b/libraries/curl/docs/libcurl/curl_version_info.3 index b3b1dfecd..1154f4ce7 100644 --- a/libraries/curl/docs/libcurl/curl_version_info.3 +++ b/libraries/curl/docs/libcurl/curl_version_info.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_version_info 3 "August 18, 2017" "libcurl 7.56.0" "libcurl Manual" - +.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 @@ -73,6 +72,12 @@ typedef struct { 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 @@ -161,6 +166,8 @@ libcurl was built with support for HTTPS-proxy. 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. diff --git a/libraries/curl/docs/libcurl/libcurl-easy.3 b/libraries/curl/docs/libcurl/libcurl-easy.3 index b926a8b12..d112632fa 100644 --- a/libraries/curl/docs/libcurl/libcurl-easy.3 +++ b/libraries/curl/docs/libcurl/libcurl-easy.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH libcurl 3 "February 03, 2016" "libcurl 7.56.0" "libcurl easy interface" - +.TH libcurl 3 "19 Sep 2014" "libcurl" "libcurl easy interface" .SH NAME libcurl-easy \- easy interface overview .SH DESCRIPTION diff --git a/libraries/curl/docs/libcurl/libcurl-errors.3 b/libraries/curl/docs/libcurl/libcurl-errors.3 index e8067977a..1b6e34f51 100644 --- a/libraries/curl/docs/libcurl/libcurl-errors.3 +++ b/libraries/curl/docs/libcurl/libcurl-errors.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-errors 3 "August 22, 2016" "libcurl 7.56.0" "libcurl errors" - +.TH libcurl-errors 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl errors" .SH NAME libcurl-errors \- error codes in libcurl .SH DESCRIPTION diff --git a/libraries/curl/docs/libcurl/libcurl-multi.3 b/libraries/curl/docs/libcurl/libcurl-multi.3 index da64c9c29..76f8c3620 100644 --- a/libraries/curl/docs/libcurl/libcurl-multi.3 +++ b/libraries/curl/docs/libcurl/libcurl-multi.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-multi 3 "June 07, 2017" "libcurl 7.56.0" "libcurl multi interface" - +.TH libcurl-multi 3 "19 Sep 2014" "libcurl" "libcurl multi interface" .SH NAME libcurl-multi \- how to use the multi interface .SH DESCRIPTION diff --git a/libraries/curl/docs/libcurl/libcurl-share.3 b/libraries/curl/docs/libcurl/libcurl-share.3 index 016f3f3f0..c7cd65548 100644 --- a/libraries/curl/docs/libcurl/libcurl-share.3 +++ b/libraries/curl/docs/libcurl/libcurl-share.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH libcurl-share 3 "February 03, 2016" "libcurl 7.56.0" "libcurl share interface" - +.TH libcurl-share 3 "8 Aug 2003" "libcurl 7.10.7" "libcurl share interface" .SH NAME libcurl-share \- how to use the share interface .SH DESCRIPTION diff --git a/libraries/curl/docs/libcurl/libcurl-tutorial.3 b/libraries/curl/docs/libcurl/libcurl-tutorial.3 index 19e1daea2..6b23057de 100644 --- a/libraries/curl/docs/libcurl/libcurl-tutorial.3 +++ b/libraries/curl/docs/libcurl/libcurl-tutorial.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-tutorial 3 "October 03, 2017" "libcurl 7.56.0" "libcurl programming" - +.TH libcurl-tutorial 3 "19 Sep 2014" "libcurl" "libcurl programming" .SH NAME libcurl-tutorial \- libcurl programming tutorial .SH "Objective" @@ -1223,7 +1222,7 @@ alternative and a file attachment encoded in base64: .nf curl_mime *message = curl_mime_init(easyhandle); - /* The inline part is an alterative proposing the html and the text + /* The inline part is an alternative proposing the html and the text versions of the e-mail. */ curl_mime *alt = curl_mime_init(easyhandle); diff --git a/libraries/curl/docs/libcurl/libcurl.3 b/libraries/curl/docs/libcurl/libcurl.3 index 0b80b766b..e8ecc31da 100644 --- a/libraries/curl/docs/libcurl/libcurl.3 +++ b/libraries/curl/docs/libcurl/libcurl.3 @@ -19,8 +19,7 @@ .\" * KIND, either express or implied. .\" * .\" ************************************************************************** -.TH libcurl 3 "July 15, 2017" "libcurl 7.56.0" "libcurl overview" - +.TH libcurl 3 "19 March 2002" "libcurl 7.9.6" "libcurl overview" .SH NAME libcurl \- client-side URL transfers .SH DESCRIPTION diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 index e227278b4..f07676082 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 index 3e2ca841c..c7a004041 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 index 0f9c51c51..eda68568c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAXCONNECTS 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_MAXCONNECTS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAXCONNECTS \- set size of connection cache .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 index 5e6306779..9507a04ec 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 index 93bd15ee1..4ced6bfb9 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 index f2f9cfd76..bca000186 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 index 63ef38513..796ac3c77 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PIPELINING 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_PIPELINING 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 index 083ff6d9c..660afecd3 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PIPELINING_SERVER_BL 3 "February 03, 2016" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_PIPELINING_SERVER_BL 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 index 380655d85..8c5f5d410 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PIPELINING_SITE_BL 3 "February 03, 2016" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_PIPELINING_SITE_BL 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 index 8ce899de7..54e8befa6 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_SOCKETDATA 3 "3 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 index 8bf02b0d1..2b2b322fe 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_SOCKETFUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_SOCKETFUNCTION 3 "3 Nov 2016" "libcurl 7.39.0" "curl_multi_setopt options" .SH NAME CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 index f8169b997..6f590d3e7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_TIMERDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options" .SH NAME CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 index af5ab9b60..778a26c61 100644 --- a/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_TIMERFUNCTION 3 "May 27, 2017" "libcurl 7.56.0" "curl_multi_setopt options" - +.TH CURLMOPT_TIMERFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options" .SH NAME CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 index f9e028a0f..70325fd9a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 index be53c230a..3a5fc166d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ACCEPT_ENCODING 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_ACCEPT_ENCODING 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 index 6f2e586f6..4ce6db9b1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ADDRESS_SCOPE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_ADDRESS_SCOPE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_ADDRESS_SCOPE \- set scope for local IPv6 addresses .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_APPEND.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_APPEND.3 index ef5d1dbae..c22acf797 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_APPEND.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_APPEND.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_APPEND 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_APPEND \- enable appending to the remote file .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 index 28153ff45..4d8a1c04d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_AUTOREFERER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_AUTOREFERER \- automatically update the referer header .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 index fe048b440..b4100e607 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_BUFFERSIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_BUFFERSIZE \- set preferred receive buffer size .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 index c9584a976..bc094ef00 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CAINFO 3 "May 27, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CAINFO 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 index 93376c889..183428ffc 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CAPATH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CAPATH \- specify directory holding CA certificates .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 index f8a7ce176..f60b1d54d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CERTINFO 3 "May 27, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CERTINFO 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CERTINFO \- request SSL certificate information .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 index 35c6b9306..69b6db07b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 index 0859bc49f..6a734e58c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CHUNK_DATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CHUNK_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 index 9484f92ea..e8d20982b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CHUNK_END_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 index c9cdd544f..b1eab0378 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CLOSESOCKETDATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CLOSESOCKETDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 index c08f44261..7cfaa22be 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CLOSESOCKETFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 index eeeb30f34..2adb9bb09 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECTTIMEOUT 3 "September 24, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CONNECTTIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase .SH SYNOPSIS @@ -59,7 +58,8 @@ if(curl) { .SH AVAILABILITY Always .SH RETURN VALUE -Returns CURLE_OK +Returns CURLE_OK. Returns CURLE_BAD_FUNCTION_ARGUMENT if set to a negative +value or a value that when converted to milliseconds is too large. .SH "SEE ALSO" -.BR CURLOPT_CONNECTTIMEOUT_MS "(3), " +.BR CURLOPT_CONNECTTIMEOUT_MS "(3), " .BR CURLOPT_TIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), " diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 index 11cf920c3..2a7f107a8 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 24, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CONNECTTIMEOUT_MS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 index 8a3c480d0..89a2fc12b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECT_ONLY 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CONNECT_ONLY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONNECT_ONLY \- stop when connected to target server .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 index 351cd9527..b810129dd 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 index 39cc05f32..e029fc032 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 index 8389d683e..c9aea1e44 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 index d522c45be..d0da3f1f1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_COOKIE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIE \- set contents of HTTP Cookie header .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 index 7c9cebe68..457d94470 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIEFILE 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_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 diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 index 3b48d77f9..d4f7ccdad 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_COOKIEJAR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIEJAR \- file name to store cookies to .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 index 6997a7d97..7de4da882 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_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 diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 index 4281724af..c4c015f82 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_COOKIESESSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_COOKIESESSION \- start a new cookie session .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 index c6e12d376..001d6fe4a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_COPYPOSTFIELDS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CRLF.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CRLF.3 index 6caa43cc0..61ac9e264 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CRLF.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CRLF.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CRLF 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CRLF \- enable/disable CRLF conversion .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 index a1d3916cb..1b8df4afc 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CRLFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CRLFILE \- specify a Certificate Revocation List file .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 index 13eff5dce..33cce250b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CUSTOMREQUEST 3 "June 21, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_CUSTOMREQUEST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_CUSTOMREQUEST \- custom string for request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 index 809c07ddb..27b9cbb39 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DEBUGDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DEBUGDATA \- custom pointer for debug callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 index 25d90b94c..535c5302b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DEBUGFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DEBUGFUNCTION \- debug callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 index de92d139c..203e247b7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DIRLISTONLY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DIRLISTONLY \- ask for names only in a directory listing .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 index ac8a4a602..f672e6048 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 index 8814d5f07..824ca1ea6 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DNS_INTERFACE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_INTERFACE \- set interface to speak DNS over .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 index 909184406..57dad16b6 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_LOCAL_IP4 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DNS_LOCAL_IP4 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 index 92f9227b4..3402f346c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DNS_LOCAL_IP6 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 index 19b3509ed..0067494ae 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DNS_SERVERS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_SERVERS \- set preferred DNS servers .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 index e8f68eba7..b23493b41 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 index 30e427cc4..8a2c1a603 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_EGDSOCKET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_EGDSOCKET \- set EGD socket path .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 index 7353e6ad6..b64a2a394 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ERRORBUFFER 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_ERRORBUFFER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_ERRORBUFFER \- set error buffer for error messages .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 index 5746cd09e..af7f31fe0 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 index 18ffbc068..451b07cad 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FAILONERROR 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FAILONERROR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FAILONERROR \- request failure on HTTP response >= 400 .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 index 7cfcf2f98..d8d1c7ed0 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FILETIME 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FILETIME \- get the modification time of the remote resource .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 index 5206e096d..88f3ba662 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FNMATCH_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 index 2e4fe6cb8..7a79ad8a7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FNMATCH_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 index 9f0f2d8a3..094ee05d9 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FOLLOWLOCATION 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FOLLOWLOCATION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 index 37f06ab4b..509052381 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FORBID_REUSE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FORBID_REUSE \- make connection get closed at once after use .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 index 6f40a0c59..19cd575c6 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FRESH_CONNECT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FRESH_CONNECT \- force a new connection to be used .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 index 3e57c5e14..e150a5b29 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTPPORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTPPORT \- make FTP transfer active .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 index 6eae20121..8aa9eec0b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTPSSLAUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 index b09504368..8218038a1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_ACCOUNT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_ACCOUNT \- set account info for FTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 index ff1ecc5b9..a9723b5f6 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 index 03d0efde1..f57873605 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 index 689e43840..381145bc3 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_FILEMETHOD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 index 9f089ad15..86b6073ff 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response .SH SYNOPSIS @@ -55,7 +54,9 @@ if(curl) { .SH AVAILABILITY Added in 7.10.8 .SH RETURN VALUE -Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. +Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. Returns +CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when +converted to milliseconds is too large. .SH "SEE ALSO" .BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), " .BR CURLOPT_LOW_SPEED_LIMIT "(3), " diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 index 5bad8760e..9d468a551 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_SKIP_PASV_IP 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 index 07c91f2b8..2cd2c7380 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_SSL_CCC 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 index a26490ae6..181f5a1cb 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_USE_EPRT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 index beafb7815..970e08a83 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_USE_EPSV 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 index c00165b86..53b33e50d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_FTP_USE_PRET 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_FTP_USE_PRET \- enable the PRET command .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 index 0a952db48..9cd7be906 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_GSSAPI_DELEGATION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADER.3 index c61bc5dd1..b650163d1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADER 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HEADER 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADER \- pass headers to the data stream .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 index b9a6572ed..73dcc2bb9 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HEADERDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADERDATA \- pointer to pass to header callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 index efd2d7bf3..b8596d8fd 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADERFUNCTION 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HEADERFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADERFUNCTION \- callback that receives header data .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 index c7629d4a0..ff9070e74 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADEROPT 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HEADEROPT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HEADEROPT \- set how to send HTTP headers .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 index fe733e081..24d33053f 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTP200ALIASES 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 index b37db0813..8a5ae4143 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPAUTH 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTPAUTH 3 "2 Aug 2014" "libcurl 7.38.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 index ce6e65910..01de1f3cb 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPGET 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTPGET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPGET \- ask for a HTTP GET request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 index 8c83914a2..c5ccb1a53 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPHEADER 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTPHEADER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPHEADER \- set custom HTTP headers .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 index 72f2fc056..68a15d816 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTPPOST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPPOST \- specify the multipart formpost content .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 index b56f5db51..5ded4d27a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPPROXYTUNNEL 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTPPROXYTUNNEL 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 index ae0395144..084070774 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTP_CONTENT_DECODING 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 index e7765e660..db629615b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 index fee513a86..e602b0311 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP_VERSION 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_HTTP_VERSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 index 8a2be02b8..413ee5791 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 index 6b39b6023..088f45d01 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_INFILESIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_INFILESIZE \- set size of the input file to send off .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 index 525104a20..f866cd43d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INFILESIZE_LARGE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_INFILESIZE_LARGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 index a766a8c7a..16e542adb 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INTERFACE 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_INTERFACE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_INTERFACE \- source interface for outgoing traffic .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 index 45bc76c37..59d36a1be 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_INTERLEAVEDATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 index f8111e69f..20f1c218d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INTERLEAVEFUNCTION 3 "September 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_INTERLEAVEFUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 index f0b9c7376..f8d1e6782 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_IOCTLDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 index 7fd93a1b9..d2917df26 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IOCTLFUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_IOCTLFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_IOCTLFUNCTION \- callback for I/O operations .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 index f02b6cafc..a23d883fd 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_IPRESOLVE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_IPRESOLVE \- specify which IP protocol version to use .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 index 5ddcb05f3..8c5d70faf 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_ISSUERCERT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_ISSUERCERT \- issuer SSL certificate filename .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 index e59273d22..ea3212144 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_KEYPASSWD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_KEYPASSWD \- set passphrase to private key .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 index 355a5f7b7..175e1cd77 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_KRBLEVEL 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_KRBLEVEL \- set FTP kerberos security level .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 index 6277f1854..79239ec15 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOCALPORT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_LOCALPORT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOCALPORT \- set local port number to use for socket .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 index 1e4b043a9..dfa231380 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOCALPORTRANGE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_LOCALPORTRANGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOCALPORTRANGE \- number of additional local ports to try .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 index 0b5fb3141..9b690341c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_LOGIN_OPTIONS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOGIN_OPTIONS \- set login options .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 index 4ec1c6f71..7061345cf 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_LOW_SPEED_LIMIT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 index 6d12c2e14..64c336099 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_LOW_SPEED_TIME 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_LOW_SPEED_TIME \- set low speed limit time period .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 index c019ea9f0..6aa4d604d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAIL_AUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAIL_AUTH \- SMTP authentication address .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 index 54b3b9764..2963c2731 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAIL_FROM 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAIL_FROM \- SMTP sender address .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 index 6e5400e7d..403a7a510 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_RCPT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAIL_RCPT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAIL_RCPT \- list of SMTP mail recipients .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 index d4c40bb3e..b60517175 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAXCONNECTS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXCONNECTS \- maximum connection cache size .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 index 14605d78e..b75e66df7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAXFILESIZE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXFILESIZE \- maximum file size allowed to download .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 index a7391c498..969cc5f2c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAXFILESIZE_LARGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 index 19d67cecc..ce6255360 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAXREDIRS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAXREDIRS \- maximum number of redirects allowed .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 index 4c1350d08..e4ced8643 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 index b15d4d2a7..d9f5c8bf0 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC.3 index 015fb42e0..0f5fc7ad7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NETRC 3 "August 02, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NETRC 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NETRC \- request that .netrc is used .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 index 99c2abc43..8cb29f534 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NETRC_FILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NETRC_FILE \- file name to read .netrc info from .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 index 1e03169da..e355dcd15 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 index 1924a8275..d74c34e4f 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NEW_FILE_PERMS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 index 74aafb52f..02590b212 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NOBODY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOBODY \- do the download request without getting the body .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 index 2ac39f0f9..b8132d8f8 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOPROGRESS 3 "March 06, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NOPROGRESS 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOPROGRESS \- switch off the progress meter .SH SYNOPSIS @@ -31,10 +30,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff); .SH DESCRIPTION If \fIonoff\fP is to 1, it tells the library to shut off the progress meter completely for requests done with this \fIhandle\fP. It will also prevent the -\fICURLOPT_PROGRESSFUNCTION(3)\fP from getting called. - -Future versions of libcurl are likely to not have any built-in progress meter -at all. +\fICURLOPT_XFERINFOFUNCTION(3)\fP or \fICURLOPT_PROGRESSFUNCTION(3)\fP from +getting called. .SH DEFAULT 1, meaning it normally runs without a progress meter. .SH PROTOCOLS @@ -57,4 +54,6 @@ Always .SH RETURN VALUE Returns CURLE_OK. .SH "SEE ALSO" +.BR CURLOPT_XFERINFOFUNCTION "(3), " .BR CURLOPT_PROGRESSFUNCTION "(3), " +.BR CURLOPT_VERBOSE "(3), " diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 index 6fc16679e..61500fc05 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOPROXY 3 "September 24, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NOPROXY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOPROXY \- disable proxy use for specific hosts .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 index 2cfcc3b24..dac0710f1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_NOSIGNAL 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_NOSIGNAL \- skip all signal handling .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 index fedb90675..dadc3651c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_OPENSOCKETDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 index 92f8be450..28a0e5752 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_OPENSOCKETFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 index f0232cb65..3c5f7de40 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PASSWORD 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PASSWORD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PASSWORD \- password to use in authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 index 4f85ee966..9b0d3d558 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PATH_AS_IS 3 "February 14, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PATH_AS_IS 3 "17 Jun 2014" "libcurl 7.42.0" "curl_easy_setopt options" .SH NAME CURLOPT_PATH_AS_IS \- do not handle dot dot sequences .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 index 00f58fbc9..47646474e 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PINNEDPUBLICKEY 3 "April 17, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PINNEDPUBLICKEY 3 "27 Aug 2014" "libcurl 7.38.0" "curl_easy_setopt options" .SH NAME CURLOPT_PINNEDPUBLICKEY \- set pinned public key .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PORT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PORT.3 index ba3e8c373..6c7b9dc82 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PORT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PORT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PORT \- set remote port number to work with .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_POST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_POST.3 index 4e1b3a217..5e4f0409b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_POST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_POST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POST 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_POST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_POST \- request a HTTP POST .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 index 238b89aef..515376bab 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTFIELDS 3 "July 07, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_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 diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 index c9079e832..8db05c68b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_POSTFIELDSIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTFIELDSIZE \- size of POST data pointed to .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 index 63653eadb..9d0c40178 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 index 8c71804da..8af7ffdd0 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_POSTQUOTE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 index e60c377e8..07aea6e61 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTREDIR 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_POSTREDIR 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_POSTREDIR \- how to act on a HTTP POST redirect .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 index 26794618f..77da3908a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PREQUOTE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PREQUOTE \- commands to run before an FTP transfer .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 index c8c7144e6..80f2c6b09 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PRIVATE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PRIVATE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PRIVATE \- store a private pointer .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 index 5c93a352f..7dc70f128 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROGRESSDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 index 5de83ac48..b077e3b6e 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROGRESSFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROGRESSFUNCTION \- callback to progress meter function .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 index 06b89da9d..4fecb81d0 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROTOCOLS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROTOCOLS \- set allowed protocols .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY.3 index 36f430f8e..8e93309f1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY 3 "September 24, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY \- set proxy to use .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 index 7d13449f7..fbf941430 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYAUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 index 3915201ee..44ed85ece 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYHEADER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 index 7135f936a..75b2b7df3 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYPASSWORD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYPASSWORD \- password to use with proxy authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 index b8b09a6e6..30ed17f11 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYPORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYPORT \- port number the proxy listens on .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 index 5efc1d880..d7d97504e 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYTYPE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYTYPE \- proxy protocol type .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 index 09987d8ea..54981b124 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYUSERNAME 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 index b3940db23..cdf4e0885 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXYUSERPWD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 index a3ce85ee8..4baa6a0ed 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXY_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 index 70378320a..06366490b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_TRANSFER_MODE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PROXY_TRANSFER_MODE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_PUT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_PUT.3 index 60a2d0ca4..73f7e0a33 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_PUT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_PUT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PUT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_PUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_PUT \- make a HTTP PUT request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 index e059489ab..e02d2c742 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_QUOTE 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_QUOTE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_QUOTE \- (S)FTP commands to run before transfer .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 index 356116531..9f3e3876d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RANDOM_FILE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RANDOM_FILE \- specify a source for random data .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RANGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RANGE.3 index 2b7cac962..e90696c01 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RANGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RANGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RANGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RANGE \- set byte range to request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_READDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_READDATA.3 index 634ca9677..ef51264c6 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_READDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_READDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_READDATA 3 "May 01, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_READDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_READDATA \- custom pointer passed to the read callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 index 5edb53b78..a43e68b92 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_READFUNCTION 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_READFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_READFUNCTION \- read callback for data uploads .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 index b7b69e4a5..3a5c3fcdc 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_REDIR_PROTOCOLS 3 "September 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_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 diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_REFERER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_REFERER.3 index 7f79d510a..881f48c9e 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_REFERER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_REFERER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_REFERER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_REFERER \- set the HTTP referer header .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 index 03fe2bfc0..c22f7b006 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESOLVE 3 "May 17, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.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 @@ -56,6 +55,8 @@ 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 diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 index 884380e26..ac6986fd8 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RESUME_FROM 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RESUME_FROM \- set a point to resume transfer from .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 index 8de6c038f..4905f3903 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RESUME_FROM_LARGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 index 6d34be7b4..c536e580d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 index 079fc816b..f8a662877 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_REQUEST 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RTSP_REQUEST 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_REQUEST \- specify RTSP request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 index 2342ca4c2..7bba1ecd5 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RTSP_SERVER_CSEQ 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 index 81365f465..b3dcf8b41 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RTSP_SESSION_ID 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_SESSION_ID \- set RTSP session ID .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 index c8d20d71c..3bdf4e414 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_STREAM_URI 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RTSP_STREAM_URI 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 index bb68b3471..82de2ef4a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_RTSP_TRANSPORT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 index c54edfbe1..cc5da8c66 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SASL_IR 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SASL_IR \- enable sending initial response in first packet .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 index 9ebeb7ff0..6ffa7d12a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SEEKDATA 3 "August 12, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SEEKDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SEEKDATA \- custom pointer passed to the seek callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 index 4c02fa0d7..95780c872 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SEEKFUNCTION 3 "August 12, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SEEKFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 index 937701838..303d0acb3 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options" .SH NAME CURLOPT_SERVICE_NAME \- authentication service name .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SHARE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SHARE.3 index 04be8e1cc..d2a5d2dac 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SHARE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SHARE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SHARE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SHARE \- specify share handle to use .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 index d4085ba5a..54d9ea052 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SOCKOPTDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 index 7e766e13d..c04d8aa33 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SOCKOPTFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 index 1906d7ed0..1ff5a1f23 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 index c0fc789f1..1ac38a2de 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 index 6099e871d..5377531cc 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_AUTH_TYPES 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 index ee7869821..5ea5a0fe1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 index bcbd857ed..aace0ffd5 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_KEYDATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 index fcae7bdd3..dc025d6ee 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_KEYFUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 index 21dbb63b8..8da76a9f4 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_KNOWNHOSTS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 index 6dcceb04c..9a7ddfc89 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 index 5b0d07c33..518a19b38 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 index 73a7a7feb..6e190dce1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLCERT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLCERT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLCERT \- set SSL client certificate .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 index 217041acc..294ceb56f 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLCERTTYPE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 index db5d805ac..179c56839 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLENGINE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLENGINE \- set SSL engine identifier .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 index 62cd70136..15069d19e 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLENGINE_DEFAULT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 index a463cb4c5..e3216992d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLKEY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 index d3c0709ad..42368fbee 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLKEYTYPE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLKEYTYPE \- set type of the private key file .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 index aa113f1a0..5c447d8f3 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLVERSION 3 "August 12, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSLVERSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSLVERSION \- set preferred TLS/SSL version .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 index 3316849da..b64035ada 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_CIPHER_LIST 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_CIPHER_LIST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 index 3295e9af7..216bdec3a 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_CTX_DATA 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_CTX_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 index 89f8b9080..6a6c57f35 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_CTX_FUNCTION 3 "March 26, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_CTX_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL/CyaSSL or mbedTLS .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 index 032229caa..bf23a72a9 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_ENABLE_ALPN 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_ENABLE_ALPN \- enable ALPN .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 index 7ae07cdce..3e8240f30 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_ENABLE_NPN 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_ENABLE_NPN \- enable NPN .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 index b39fcf1bf..150e02f12 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_FALSESTART 3 "14 Feb 2015" "libcurl 7.41.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_FALSESTART \- enable TLS false start .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 index 2af10f8d5..f71f8eaa7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_OPTIONS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_OPTIONS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_OPTIONS \- set SSL behavior options .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 index b6eb3ad7e..a72928421 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_SESSIONID_CACHE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 index 689489eb6..acadd0774 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_VERIFYHOST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 index 4091ad183..f7ff1b203 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_VERIFYPEER 3 "February 09, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_VERIFYPEER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 index 4d2a9ab90..5e5c14cda 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_SSL_VERIFYSTATUS 3 "04 Dec 2014" "libcurl 7.40.0" "curl_easy_setopt options" .SH NAME CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_STDERR.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_STDERR.3 index 32fc7e708..7dfe371fb 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_STDERR.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_STDERR.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_STDERR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_STDERR \- redirect stderr to another stream .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 index f15e5b29d..cc3642feb 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TCP_KEEPALIVE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 index 2a7cbd093..4d587a9b4 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TCP_KEEPIDLE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 index 1f4b08c30..a755c0546 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TCP_KEEPINTVL 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 index 42ba0b554..701e31502 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_NODELAY 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TCP_NODELAY 3 "30 Jun 2016" "libcurl 7.50.0" "curl_easy_setopt options" .SH NAME CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 index fc8dc479b..b20dfaf6e 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TELNETOPTIONS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TELNETOPTIONS \- custom telnet options .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 index 914e84382..b4e9365cc 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TFTP_BLKSIZE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TFTP_BLKSIZE \- TFTP block size .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 index b3db1bcff..a8fcea7b1 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TIMECONDITION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMECONDITION \- select condition for a time request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 index 1f23ca5ab..dafe142d0 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEOUT 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEOUT \- set maximum time the request is allowed to take .SH SYNOPSIS @@ -65,7 +64,8 @@ if(curl) { .SH AVAILABILITY Always .SH RETURN VALUE -Returns CURLE_OK +Returns CURLE_OK. Returns CURLE_BAD_FUNCTION_ARGUMENT if set to a negative +value or a value that when converted to milliseconds is too large. .SH "SEE ALSO" -.BR CURLOPT_TIMEOUT_MS "(3), " +.BR CURLOPT_TIMEOUT_MS "(3), " .BR CURLOPT_CONNECTTIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), " diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 index e28b961f0..2a7afb104 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEOUT_MS 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TIMEOUT_MS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 index 2e6919f13..cd745ffa7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEVALUE 3 "April 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TIMEVALUE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TIMEVALUE \- set time value for conditional .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 index 0812d76e2..ba2d9e488 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TLSAUTH_PASSWORD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 index 047b4b568..6d1e131e7 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TLSAUTH_TYPE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 index 0ba205da9..56bb6377d 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TLSAUTH_USERNAME 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 index 5311563da..55f7e4e6c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TRANSFERTEXT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 index 08da1ecb1..9d5046e26 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_TRANSFER_ENCODING 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 index 9fac9ee01..8cf4d24ea 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UNIX_SOCKET_PATH 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_UNIX_SOCKET_PATH 3 "09 Oct 2014" "libcurl 7.40.0" "curl_easy_setopt options" .SH NAME CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 index 784c65785..a0099b2ef 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_UNRESTRICTED_AUTH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 index 769ca5314..0ad201a1c 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UPLOAD 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_UPLOAD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_UPLOAD \- enable data upload .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_URL.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_URL.3 index 153fd7aa9..879f18323 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_URL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_URL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_URL 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_URL 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_URL \- provide the URL to use in the request .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 index d8773f984..bf58f2bc9 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_USERAGENT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_USERAGENT \- set HTTP user-agent header .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 index 309e9ffb1..116b205da 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_USERNAME 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_USERNAME \- user name to use in authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 index 4828007ca..0dec56bfe 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_USERPWD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_USERPWD \- user name and password to use in authentication .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 index d215a5808..37a224d49 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USE_SSL 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_USE_SSL 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_USE_SSL \- request using SSL / TLS for the transfer .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 index e70675271..e6a6fd191 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_VERBOSE 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_VERBOSE \- set verbose mode on/off .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 index 81c8f30f0..1ca1bedd4 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WILDCARDMATCH 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_WILDCARDMATCH 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 index a9016e99c..fdb58863f 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WRITEDATA 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_WRITEDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_WRITEDATA \- custom pointer passed to the write callback .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 index 4e1f90c37..2c77a4c1b 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WRITEFUNCTION 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_WRITEFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_WRITEFUNCTION \- set callback for writing received data .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 index 9b79e268d..dbdbf3e77 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_XFERINFODATA 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_XFERINFODATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback .SH SYNOPSIS @@ -44,4 +43,4 @@ Added in 7.32.0 .SH RETURN VALUE Returns CURLE_OK .SH "SEE ALSO" -.BR CURLOPT_XFERINFOFUNCTION "(3), " CURLOPT_XFERINFOFUNCTION "(3), " +.BR CURLOPT_XFERINFOFUNCTION "(3), " CURLOPT_VERBOSE "(3), " diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 index b87911406..9bd89db70 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_XFERINFOFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_XFERINFOFUNCTION \- callback to progress meter function .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/libraries/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 index 34154f198..262c63764 100644 --- a/libraries/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 +++ b/libraries/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_XOAUTH2_BEARER 3 "May 31, 2017" "libcurl 7.56.0" "curl_easy_setopt options" - +.TH CURLOPT_XOAUTH2_BEARER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" .SH NAME CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token .SH SYNOPSIS diff --git a/libraries/curl/docs/libcurl/opts/template.3 b/libraries/curl/docs/libcurl/opts/template.3 index 184e471e1..7ba220e8f 100644 --- a/libraries/curl/docs/libcurl/opts/template.3 +++ b/libraries/curl/docs/libcurl/opts/template.3 @@ -9,7 +9,7 @@ .\" * .\" * 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 http://curl.haxx.se/docs/copyright.html. +.\" * 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 diff --git a/libraries/curl/docs/libcurl/symbols-in-versions b/libraries/curl/docs/libcurl/symbols-in-versions index f912fb719..7878b227f 100644 --- a/libraries/curl/docs/libcurl/symbols-in-versions +++ b/libraries/curl/docs/libcurl/symbols-in-versions @@ -699,6 +699,7 @@ CURLUSESSL_ALL 7.17.0 CURLUSESSL_CONTROL 7.17.0 CURLUSESSL_NONE 7.17.0 CURLUSESSL_TRY 7.17.0 +CURLVERSION_FIFTH 7.57.0 CURLVERSION_FIRST 7.10 CURLVERSION_FOURTH 7.16.1 CURLVERSION_NOW 7.10 @@ -829,6 +830,7 @@ CURL_TIMECOND_NONE 7.9.7 CURL_TLSAUTH_NONE 7.21.4 CURL_TLSAUTH_SRP 7.21.4 CURL_VERSION_ASYNCHDNS 7.10.7 +CURL_VERSION_BROTLI 7.57.0 CURL_VERSION_CONV 7.15.4 CURL_VERSION_CURLDEBUG 7.19.6 CURL_VERSION_DEBUG 7.10.6 diff --git a/libraries/curl/include/curl/.gitignore b/libraries/curl/include/curl/.gitignore index 8adbe4118..555795fae 100644 --- a/libraries/curl/include/curl/.gitignore +++ b/libraries/curl/include/curl/.gitignore @@ -1,4 +1,3 @@ -curlbuild.h +curlver.h.dist stamp-h2 stamp-h3 -curlver.h.dist diff --git a/libraries/curl/include/curl/curl.h b/libraries/curl/include/curl/curl.h index 7139a3311..764cbc703 100644 --- a/libraries/curl/include/curl/curl.h +++ b/libraries/curl/include/curl/curl.h @@ -2592,6 +2592,7 @@ typedef enum { CURLVERSION_SECOND, CURLVERSION_THIRD, CURLVERSION_FOURTH, + CURLVERSION_FIFTH, CURLVERSION_LAST /* never actually use this */ } CURLversion; @@ -2600,7 +2601,7 @@ typedef enum { meant to be a built-in version number for what kind of struct the caller expects. If the struct ever changes, we redefine the NOW to another enum from above. */ -#define CURLVERSION_NOW CURLVERSION_FOURTH +#define CURLVERSION_NOW CURLVERSION_FIFTH typedef struct { CURLversion age; /* age of the returned struct */ @@ -2628,6 +2629,12 @@ typedef struct { const char *libssh_version; /* human readable string */ + /* These fields were added in CURLVERSION_FIFTH */ + + unsigned int brotli_ver_num; /* Numeric Brotli version + (MAJOR << 24) | (MINOR << 12) | PATCH */ + const char *brotli_version; /* human readable string. */ + } curl_version_info_data; #define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ @@ -2658,6 +2665,7 @@ typedef struct { for cookie domain verification */ #define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */ #define CURL_VERSION_MULTI_SSL (1<<22) /* Multiple SSL backends available */ +#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */ /* * NAME curl_version_info() diff --git a/libraries/curl/include/curl/curlver.h b/libraries/curl/include/curl/curlver.h index a37a3928e..eff1148f1 100644 --- a/libraries/curl/include/curl/curlver.h +++ b/libraries/curl/include/curl/curlver.h @@ -30,12 +30,12 @@ /* This is the version number of the libcurl package from which this header file origins: */ -#define LIBCURL_VERSION "7.56.0" +#define LIBCURL_VERSION "7.57.0-DEV" /* The numeric version number is also available "in parts" by using these defines: */ #define LIBCURL_VERSION_MAJOR 7 -#define LIBCURL_VERSION_MINOR 56 +#define LIBCURL_VERSION_MINOR 57 #define LIBCURL_VERSION_PATCH 0 /* This is the numeric version of the libcurl version number, meant for easier @@ -57,7 +57,7 @@ CURL_VERSION_BITS() macro since curl's own configure script greps for it and needs it to contain the full number. */ -#define LIBCURL_VERSION_NUM 0x073800 +#define LIBCURL_VERSION_NUM 0x073900 /* * This is the date and time when the full source package was created. The @@ -68,7 +68,7 @@ * * "2007-11-23" */ -#define LIBCURL_TIMESTAMP "2017-10-04" +#define LIBCURL_TIMESTAMP "[unreleased]" #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z) #define CURL_AT_LEAST_VERSION(x,y,z) \ diff --git a/libraries/curl/lib/.gitignore b/libraries/curl/lib/.gitignore index e289640c6..719fc977f 100644 --- a/libraries/curl/lib/.gitignore +++ b/libraries/curl/lib/.gitignore @@ -1,15 +1,12 @@ -curl_config.h -curl_config.h.in -stamp-h1 -*.orig -*.rej -TAGS -Makefile.vc8.dist -Makefile.vc9.dist -libcurl.plist.dist -Makefile.vc10.dist -libcurl.vers *.a -*.res *.imp *.nlm +*.orig +*.rej +*.res +TAGS +curl_config.h +curl_config.h.in +libcurl.plist.dist +libcurl.vers +stamp-h1 diff --git a/libraries/curl/lib/CMakeLists.txt b/libraries/curl/lib/CMakeLists.txt index d6c996189..1fabdba90 100644 --- a/libraries/curl/lib/CMakeLists.txt +++ b/libraries/curl/lib/CMakeLists.txt @@ -108,7 +108,24 @@ if(WIN32) endif() endif() +target_include_directories(${LIB_NAME} INTERFACE + $) + install(TARGETS ${LIB_NAME} + EXPORT libcurl-target ARCHIVE DESTINATION lib LIBRARY DESTINATION lib - RUNTIME DESTINATION bin) + RUNTIME DESTINATION bin +) + +export(TARGETS ${LIB_NAME} + APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake + NAMESPACE CURL:: +) + +install(EXPORT libcurl-target + FILE libcurl-target.cmake + NAMESPACE CURL:: + DESTINATION ${CURL_INSTALL_CMAKE_DIR} +) + diff --git a/libraries/curl/lib/Makefile.inc b/libraries/curl/lib/Makefile.inc index 5c0b930cf..0a88b8eb8 100644 --- a/libraries/curl/lib/Makefile.inc +++ b/libraries/curl/lib/Makefile.inc @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -54,7 +54,7 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \ http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \ curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \ x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \ - mime.c + mime.c sha256.c setopt.c LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \ formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \ @@ -73,7 +73,7 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \ curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \ curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \ x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \ - curl_printf.h system_win32.h rand.h mime.h + curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h LIB_RCFILES = libcurl.rc diff --git a/libraries/curl/lib/Makefile.m32 b/libraries/curl/lib/Makefile.m32 index 22efbdee0..773187ad7 100644 --- a/libraries/curl/lib/Makefile.m32 +++ b/libraries/curl/lib/Makefile.m32 @@ -22,8 +22,9 @@ ########################################################################### # -## Makefile for building libcurl.a with MingW (GCC-3.2 or later) -## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4) +## Makefile for building libcurl.a with MingW (GCC-3.2 or later or LLVM/Clang) +## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4), +## brotli (1.0.1) ## ## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...] ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn @@ -38,6 +39,10 @@ ifndef ZLIB_PATH ZLIB_PATH = ../../zlib-1.2.8 endif +# Edit the path below to point to the base of your Brotli sources. +ifndef BROTLI_PATH +BROTLI_PATH = ../../brotli-1.0.1 +endif # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH OPENSSL_PATH = ../../openssl-1.0.2a @@ -76,13 +81,23 @@ ifndef LIBCARES_PATH LIBCARES_PATH = $(PROOT)/ares endif -CC = $(CROSSPREFIX)gcc +ifeq ($(CURL_CC),) +CURL_CC := $(CROSSPREFIX)gcc +endif +ifeq ($(CURL_AR),) +CURL_AR := $(CROSSPREFIX)ar +endif +ifeq ($(CURL_RANLIB),) +CURL_RANLIB := $(CROSSPREFIX)ranlib +endif + +CC = $(CURL_CC) CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W CFLAGS += -fno-strict-aliasing # comment LDFLAGS below to keep debug info LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_DLL) -s -AR = $(CROSSPREFIX)ar -RANLIB = $(CROSSPREFIX)ranlib +AR = $(CURL_AR) +RANLIB = $(CURL_RANLIB) RC = $(CROSSPREFIX)windres RCFLAGS = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O COFF STRIP = $(CROSSPREFIX)strip -g @@ -165,6 +180,9 @@ endif ifeq ($(findstring -zlib,$(CFG)),-zlib) ZLIB = 1 endif +ifeq ($(findstring -brotli,$(CFG)),-brotli) +BROTLI = 1 +endif ifeq ($(findstring -idn2,$(CFG)),-idn2) IDN2 = 1 endif @@ -270,6 +288,16 @@ ifdef ZLIB CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H DLL_LIBS += -L"$(ZLIB_PATH)" -lz endif +ifdef BROTLI + INCLUDES += -I"$(BROTLI_PATH)/include" + CFLAGS += -DHAVE_BROTLI + DLL_LIBS += -L"$(BROTLI_PATH)/lib" + ifdef BROTLI_LIBS + DLL_LIBS += $(BROTLI_LIBS) + else + DLL_LIBS += -lbrotlidec + endif +endif ifdef IDN2 INCLUDES += -I"$(LIBIDN2_PATH)/include" CFLAGS += -DUSE_LIBIDN2 @@ -313,8 +341,12 @@ DLL_LIBS += -lws2_32 # Makefile.inc provides the CSOURCES and HHEADERS defines include Makefile.inc -libcurl_dll_LIBRARY = libcurl.dll -libcurl_dll_a_LIBRARY = libcurldll.a +ifeq ($(CURL_DLL_A_SUFFIX),) +CURL_DLL_A_SUFFIX := dll +endif + +libcurl_dll_LIBRARY = libcurl$(CURL_DLL_SUFFIX).dll +libcurl_dll_a_LIBRARY = libcurl$(CURL_DLL_A_SUFFIX).a libcurl_a_LIBRARY = libcurl.a libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(strip $(CSOURCES))) diff --git a/libraries/curl/lib/asyn-ares.c b/libraries/curl/lib/asyn-ares.c index 87e70b4d9..38ede999c 100644 --- a/libraries/curl/lib/asyn-ares.c +++ b/libraries/curl/lib/asyn-ares.c @@ -22,6 +22,14 @@ #include "curl_setup.h" +/*********************************************************************** + * Only for ares-enabled builds + * And only for functions that fulfill the asynch resolver backend API + * as defined in asyn.h, nothing else belongs in this file! + **********************************************************************/ + +#ifdef CURLRES_ARES + #ifdef HAVE_LIMITS_H #include #endif @@ -48,14 +56,6 @@ #define in_addr_t unsigned long #endif -/*********************************************************************** - * Only for ares-enabled builds - * And only for functions that fulfill the asynch resolver backend API - * as defined in asyn.h, nothing else belongs in this file! - **********************************************************************/ - -#ifdef CURLRES_ARES - #include "urldata.h" #include "sendf.h" #include "hostip.h" @@ -354,8 +354,8 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn, { CURLcode result = CURLE_OK; struct Curl_easy *data = conn->data; - long timeout; - struct curltime now = Curl_tvnow(); + timediff_t timeout; + struct curltime now = Curl_now(); struct Curl_dns_entry *temp_entry; if(entry) @@ -400,8 +400,8 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn, if(Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; else { - struct curltime now2 = Curl_tvnow(); - time_t timediff = Curl_tvdiff(now2, now); /* spent time */ + struct curltime now2 = Curl_now(); + timediff_t timediff = Curl_timediff(now2, now); /* spent time */ if(timediff <= 0) timeout -= 1; /* always deduct at least 1 */ else if(timediff > timeout) diff --git a/libraries/curl/lib/asyn-thread.c b/libraries/curl/lib/asyn-thread.c index a86772965..1ac3fc809 100644 --- a/libraries/curl/lib/asyn-thread.c +++ b/libraries/curl/lib/asyn-thread.c @@ -535,7 +535,8 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn, } else { /* poll for name lookup done with exponential backoff up to 250ms */ - time_t elapsed = Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle); + timediff_t elapsed = Curl_timediff(Curl_now(), + data->progress.t_startsingle); if(elapsed < 0) elapsed = 0; diff --git a/libraries/curl/lib/config-os400.h b/libraries/curl/lib/config-os400.h index fe5b864d6..7844444fe 100644 --- a/libraries/curl/lib/config-os400.h +++ b/libraries/curl/lib/config-os400.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -403,8 +403,14 @@ /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 +/* The size of `long', as computed by sizeof. */ +#define SIZEOF_LONG 4 + /* The size of `size_t', as computed by sizeof. */ -#define SIZEOF_SIZE_T 8 +#define SIZEOF_SIZE_T 4 + +/* The size of `curl_off_t', as computed by sizeof. */ +#define SIZEOF_CURL_OFF_T 8 /* Whether long long constants must be suffixed by LL. */ diff --git a/libraries/curl/lib/config-win32.h b/libraries/curl/lib/config-win32.h index 00191fe4c..309f701a9 100644 --- a/libraries/curl/lib/config-win32.h +++ b/libraries/curl/lib/config-win32.h @@ -709,9 +709,7 @@ Vista #endif /* Define to use the Windows crypto library. */ -#if !defined(USE_OPENSSL) && !defined(USE_NSS) #define USE_WIN32_CRYPTO -#endif /* ---------------------------------------------------------------- */ /* ADDITIONAL DEFINITIONS */ diff --git a/libraries/curl/lib/conncache.c b/libraries/curl/lib/conncache.c index c79d22764..f8ef2e88b 100644 --- a/libraries/curl/lib/conncache.c +++ b/libraries/curl/lib/conncache.c @@ -31,11 +31,21 @@ #include "multiif.h" #include "sendf.h" #include "conncache.h" +#include "share.h" +#include "sigpipe.h" +#include "connect.h" + /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" +#define CONN_LOCK(x) if((x)->share) \ + Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE) +#define CONN_UNLOCK(x) if((x)->share) \ + Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT) + + static void conn_llist_dtor(void *user, void *element) { struct connectdata *data = element; @@ -109,8 +119,23 @@ static void free_bundle_hash_entry(void *freethis) int Curl_conncache_init(struct conncache *connc, int size) { - return Curl_hash_init(&connc->hash, size, Curl_hash_str, - Curl_str_key_compare, free_bundle_hash_entry); + int rc; + + /* allocate a new easy handle to use when closing cached connections */ + connc->closure_handle = curl_easy_init(); + if(!connc->closure_handle) + return 1; /* bad */ + + rc = Curl_hash_init(&connc->hash, size, Curl_hash_str, + Curl_str_key_compare, free_bundle_hash_entry); + if(rc) { + Curl_close(connc->closure_handle); + connc->closure_handle = NULL; + } + else + connc->closure_handle->state.conn_cache = connc; + + return rc; } void Curl_conncache_destroy(struct conncache *connc) @@ -149,7 +174,9 @@ struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn, if(connc) { char key[128]; hashkey(conn, key, sizeof(key)); + CONN_LOCK(conn->data); bundle = Curl_hash_pick(&connc->hash, key, strlen(key)); + CONN_UNLOCK(conn->data); } return bundle; @@ -206,7 +233,9 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc, return result; hashkey(conn, key, sizeof(key)); + CONN_LOCK(data); rc = conncache_add_bundle(data->state.conn_cache, key, new_bundle); + CONN_UNLOCK(data); if(!rc) { bundle_destroy(new_bundle); @@ -215,12 +244,15 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc, bundle = new_bundle; } + CONN_LOCK(data); result = bundle_add_conn(bundle, conn); if(result) { if(new_bundle) conncache_remove_bundle(data->state.conn_cache, new_bundle); + CONN_UNLOCK(data); return result; } + CONN_UNLOCK(data); conn->connection_id = connc->next_connection_id++; connc->num_connections++; @@ -240,11 +272,11 @@ void Curl_conncache_remove_conn(struct conncache *connc, /* The bundle pointer can be NULL, since this function can be called due to a failed connection attempt, before being added to a bundle */ if(bundle) { + CONN_LOCK(conn->data); bundle_remove_conn(bundle, conn); - if(bundle->num_connections == 0) { + if(bundle->num_connections == 0) conncache_remove_bundle(connc, bundle); - } - + CONN_UNLOCK(conn->data); if(connc) { connc->num_connections--; @@ -261,7 +293,8 @@ void Curl_conncache_remove_conn(struct conncache *connc, Return 0 from func() to continue the loop, return 1 to abort it. */ -void Curl_conncache_foreach(struct conncache *connc, +void Curl_conncache_foreach(struct Curl_easy *data, + struct conncache *connc, void *param, int (*func)(struct connectdata *conn, void *param)) { @@ -272,6 +305,7 @@ void Curl_conncache_foreach(struct conncache *connc, if(!connc) return; + CONN_LOCK(data); Curl_hash_start_iterate(&connc->hash, &iter); he = Curl_hash_next_element(&iter); @@ -288,14 +322,21 @@ void Curl_conncache_foreach(struct conncache *connc, struct connectdata *conn = curr->ptr; curr = curr->next; - if(1 == func(conn, param)) + if(1 == func(conn, param)) { + CONN_UNLOCK(data); return; + } } } + CONN_UNLOCK(data); } /* Return the first connection found in the cache. Used when closing all - connections */ + connections. + + NOTE: no locking is done here as this is presumably only done when cleaning + up a cache! +*/ struct connectdata * Curl_conncache_find_first_connection(struct conncache *connc) { @@ -321,6 +362,90 @@ Curl_conncache_find_first_connection(struct conncache *connc) return NULL; } +/* + * This function finds the connection in the connection + * cache that has been unused for the longest time. + * + * Returns the pointer to the oldest idle connection, or NULL if none was + * found. + */ +struct connectdata * +Curl_conncache_oldest_idle(struct Curl_easy *data) +{ + struct conncache *bc = data->state.conn_cache; + struct curl_hash_iterator iter; + struct curl_llist_element *curr; + struct curl_hash_element *he; + timediff_t highscore =- 1; + timediff_t score; + struct curltime now; + struct connectdata *conn_candidate = NULL; + struct connectbundle *bundle; + + now = Curl_now(); + + CONN_LOCK(data); + Curl_hash_start_iterate(&bc->hash, &iter); + + he = Curl_hash_next_element(&iter); + while(he) { + struct connectdata *conn; + + bundle = he->ptr; + + curr = bundle->conn_list.head; + while(curr) { + conn = curr->ptr; + + if(!conn->inuse) { + /* Set higher score for the age passed since the connection was used */ + score = Curl_timediff(now, conn->now); + + if(score > highscore) { + highscore = score; + conn_candidate = conn; + } + } + curr = curr->next; + } + + he = Curl_hash_next_element(&iter); + } + CONN_UNLOCK(data); + + return conn_candidate; +} + +void Curl_conncache_close_all_connections(struct conncache *connc) +{ + struct connectdata *conn; + + conn = Curl_conncache_find_first_connection(connc); + while(conn) { + SIGPIPE_VARIABLE(pipe_st); + conn->data = connc->closure_handle; + + sigpipe_ignore(conn->data, &pipe_st); + conn->data->easy_conn = NULL; /* clear the easy handle's connection + pointer */ + /* This will remove the connection from the cache */ + connclose(conn, "kill all"); + (void)Curl_disconnect(conn, FALSE); + sigpipe_restore(&pipe_st); + + conn = Curl_conncache_find_first_connection(connc); + } + + if(connc->closure_handle) { + SIGPIPE_VARIABLE(pipe_st); + sigpipe_ignore(connc->closure_handle, &pipe_st); + + Curl_hostcache_clean(connc->closure_handle, + connc->closure_handle->dns.hostcache); + Curl_close(connc->closure_handle); + sigpipe_restore(&pipe_st); + } +} #if 0 /* Useful for debugging the connection cache */ diff --git a/libraries/curl/lib/conncache.h b/libraries/curl/lib/conncache.h index 14be4e8e7..0d97a6cef 100644 --- a/libraries/curl/lib/conncache.h +++ b/libraries/curl/lib/conncache.h @@ -28,6 +28,8 @@ struct conncache { size_t num_connections; long next_connection_id; struct curltime last_cleanup; + /* handle used for closing cached connections */ + struct Curl_easy *closure_handle; }; #define BUNDLE_NO_MULTIUSE -1 @@ -41,8 +43,8 @@ struct connectbundle { struct curl_llist conn_list; /* The connectdata members of the bundle */ }; +/* returns 1 on error, 0 is fine */ int Curl_conncache_init(struct conncache *, int size); - void Curl_conncache_destroy(struct conncache *connc); /* return the correct bundle, to a host or a proxy */ @@ -55,7 +57,8 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc, void Curl_conncache_remove_conn(struct conncache *connc, struct connectdata *conn); -void Curl_conncache_foreach(struct conncache *connc, +void Curl_conncache_foreach(struct Curl_easy *data, + struct conncache *connc, void *param, int (*func)(struct connectdata *conn, void *param)); @@ -63,6 +66,9 @@ void Curl_conncache_foreach(struct conncache *connc, struct connectdata * Curl_conncache_find_first_connection(struct conncache *connc); +struct connectdata * +Curl_conncache_oldest_idle(struct Curl_easy *data); +void Curl_conncache_close_all_connections(struct conncache *connc); void Curl_conncache_print(struct conncache *connc); #endif /* HEADER_CURL_CONNCACHE_H */ diff --git a/libraries/curl/lib/connect.c b/libraries/curl/lib/connect.c index b7d10af55..45e18bc07 100644 --- a/libraries/curl/lib/connect.c +++ b/libraries/curl/lib/connect.c @@ -179,12 +179,12 @@ singleipconnect(struct connectdata *conn, * * @unittest: 1303 */ -time_t Curl_timeleft(struct Curl_easy *data, - struct curltime *nowp, - bool duringconnect) +timediff_t Curl_timeleft(struct Curl_easy *data, + struct curltime *nowp, + bool duringconnect) { int timeout_set = 0; - time_t timeout_ms = duringconnect?DEFAULT_CONNECT_TIMEOUT:0; + timediff_t timeout_ms = duringconnect?DEFAULT_CONNECT_TIMEOUT:0; struct curltime now; /* if a timeout is set, use the most restrictive one */ @@ -218,17 +218,17 @@ time_t Curl_timeleft(struct Curl_easy *data, } if(!nowp) { - now = Curl_tvnow(); + now = Curl_now(); nowp = &now; } /* subtract elapsed time */ if(duringconnect) /* since this most recent connect started */ - timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startsingle); + timeout_ms -= Curl_timediff(*nowp, data->progress.t_startsingle); else /* since the entire operation started */ - timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startop); + timeout_ms -= Curl_timediff(*nowp, data->progress.t_startop); if(!timeout_ms) /* avoid returning 0 as that means no timeout! */ return -1; @@ -285,6 +285,34 @@ static CURLcode bindlocal(struct connectdata *conn, /* interface */ if(!is_host) { +#ifdef SO_BINDTODEVICE + /* I am not sure any other OSs than Linux that provide this feature, + * and at the least I cannot test. --Ben + * + * This feature allows one to tightly bind the local socket to a + * particular interface. This will force even requests to other + * local interfaces to go out the external interface. + * + * + * Only bind to the interface when specified as interface, not just + * as a hostname or ip address. + * + * interface might be a VRF, eg: vrf-blue, which means it cannot be + * converted to an IP address and would fail Curl_if2ip. Simply try + * to use it straight away. + */ + if(setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, + dev, (curl_socklen_t)strlen(dev) + 1) == 0) { + /* This is typically "errno 1, error: Operation not permitted" if + * you're not running as root or another suitable privileged + * user. + * If it succeeds it means the parameter was a valid interface and + * not an IP address. Return immediately. + */ + return CURLE_OK; + } +#endif + switch(Curl_if2ip(af, scope, conn->scope_id, dev, myhost, sizeof(myhost))) { case IF2IP_NOT_FOUND: @@ -305,30 +333,6 @@ static CURLcode bindlocal(struct connectdata *conn, infof(data, "Local Interface %s is ip %s using address family %i\n", dev, myhost, af); done = 1; - -#ifdef SO_BINDTODEVICE - /* I am not sure any other OSs than Linux that provide this feature, - * and at the least I cannot test. --Ben - * - * This feature allows one to tightly bind the local socket to a - * particular interface. This will force even requests to other - * local interfaces to go out the external interface. - * - * - * Only bind to the interface when specified as interface, not just - * as a hostname or ip address. - */ - if(setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, - dev, (curl_socklen_t)strlen(dev) + 1) != 0) { - error = SOCKERRNO; - infof(data, "SO_BINDTODEVICE %s failed with errno %d: %s;" - " will do regular bind\n", - dev, error, Curl_strerror(conn, error)); - /* This is typically "errno 1, error: Operation not permitted" if - you're not running as root or another suitable privileged - user */ - } -#endif break; } } @@ -408,6 +412,10 @@ static CURLcode bindlocal(struct connectdata *conn, } if(done < 1) { + /* errorbuf is set false so failf will overwrite any message already in + the error buffer, so the user receives this error message instead of a + generic resolve error. */ + data->state.errorbuf = FALSE; failf(data, "Couldn't bind to '%s'", dev); return CURLE_INTERFACE_FAILED; } @@ -721,7 +729,7 @@ CURLcode Curl_is_connected(struct connectdata *conn, { struct Curl_easy *data = conn->data; CURLcode result = CURLE_OK; - time_t allow; + timediff_t allow; int error = 0; struct curltime now; int rc; @@ -737,7 +745,7 @@ CURLcode Curl_is_connected(struct connectdata *conn, return CURLE_OK; } - now = Curl_tvnow(); + now = Curl_now(); /* figure out how long time we have left to connect */ allow = Curl_timeleft(data, &now, TRUE); @@ -765,7 +773,7 @@ CURLcode Curl_is_connected(struct connectdata *conn, if(rc == 0) { /* no connection yet */ error = 0; - if(curlx_tvdiff(now, conn->connecttime) >= conn->timeoutms_per_addr) { + if(Curl_timediff(now, conn->connecttime) >= conn->timeoutms_per_addr) { infof(data, "After %ldms connect time, move on!\n", conn->timeoutms_per_addr); error = ETIMEDOUT; @@ -773,7 +781,7 @@ CURLcode Curl_is_connected(struct connectdata *conn, /* should we try another protocol family? */ if(i == 0 && conn->tempaddr[1] == NULL && - curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) { + Curl_timediff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) { trynextip(conn, sockindex, 1); } } @@ -785,6 +793,9 @@ CURLcode Curl_is_connected(struct connectdata *conn, conn->sock[sockindex] = conn->tempsock[i]; conn->ip_addr = conn->tempaddr[i]; conn->tempsock[i] = CURL_SOCKET_BAD; +#ifdef ENABLE_IPV6 + conn->bits.ipv6 = (conn->ip_addr->ai_family == AF_INET6)?TRUE:FALSE; +#endif /* close the other socket, if open */ if(conn->tempsock[other] != CURL_SOCKET_BAD) { @@ -1051,17 +1062,19 @@ static CURLcode singleipconnect(struct connectdata *conn, /* set socket non-blocking */ (void)curlx_nonblock(sockfd, TRUE); - conn->connecttime = Curl_tvnow(); + conn->connecttime = Curl_now(); if(conn->num_addr > 1) Curl_expire(data, conn->timeoutms_per_addr, EXPIRE_DNS_PER_NAME); /* Connect TCP sockets, bind UDP */ if(!isconnected && (conn->socktype == SOCK_STREAM)) { if(conn->bits.tcp_fastopen) { -#if defined(CONNECT_DATA_IDEMPOTENT) /* OS X */ -#ifdef HAVE_BUILTIN_AVAILABLE +#if defined(CONNECT_DATA_IDEMPOTENT) /* Darwin */ +# if defined(HAVE_BUILTIN_AVAILABLE) + /* while connectx function is available since macOS 10.11 / iOS 9, + it did not have the interface declared correctly until + Xcode 9 / macOS SDK 10.13 */ if(__builtin_available(macOS 10.11, iOS 9.0, tvOS 9.0, watchOS 2.0, *)) { -#endif /* HAVE_BUILTIN_AVAILABLE */ sa_endpoints_t endpoints; endpoints.sae_srcif = 0; endpoints.sae_srcaddr = NULL; @@ -1072,12 +1085,13 @@ static CURLcode singleipconnect(struct connectdata *conn, rc = connectx(sockfd, &endpoints, SAE_ASSOCID_ANY, CONNECT_RESUME_ON_READ_WRITE | CONNECT_DATA_IDEMPOTENT, NULL, 0, NULL, NULL); -#ifdef HAVE_BUILTIN_AVAILABLE } else { rc = connect(sockfd, &addr.sa_addr, addr.addrlen); } -#endif /* HAVE_BUILTIN_AVAILABLE */ +# else + rc = connect(sockfd, &addr.sa_addr, addr.addrlen); +# endif /* HAVE_BUILTIN_AVAILABLE */ #elif defined(MSG_FASTOPEN) /* Linux */ if(conn->given->flags & PROTOPT_SSL) rc = connect(sockfd, &addr.sa_addr, addr.addrlen); @@ -1097,10 +1111,6 @@ static CURLcode singleipconnect(struct connectdata *conn, return CURLE_OK; } -#ifdef ENABLE_IPV6 - conn->bits.ipv6 = (addr.family == AF_INET6)?TRUE:FALSE; -#endif - if(-1 == rc) { switch(error) { case EINPROGRESS: @@ -1145,10 +1155,10 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */ const struct Curl_dns_entry *remotehost) { struct Curl_easy *data = conn->data; - struct curltime before = Curl_tvnow(); + struct curltime before = Curl_now(); CURLcode result = CURLE_COULDNT_CONNECT; - time_t timeout_ms = Curl_timeleft(data, &before, TRUE); + timediff_t timeout_ms = Curl_timeleft(data, &before, TRUE); if(timeout_ms < 0) { /* a precaution, no need to continue if time already is up */ @@ -1225,7 +1235,7 @@ curl_socket_t Curl_getconnectinfo(struct Curl_easy *data, find.tofind = data->state.lastconnect; find.found = FALSE; - Curl_conncache_foreach(data->multi_easy? + Curl_conncache_foreach(data, data->multi_easy? &data->multi_easy->conn_cache: &data->multi->conn_cache, &find, conn_is_conn); diff --git a/libraries/curl/lib/connect.h b/libraries/curl/lib/connect.h index 3f05c3978..397448636 100644 --- a/libraries/curl/lib/connect.h +++ b/libraries/curl/lib/connect.h @@ -25,6 +25,7 @@ #include "nonblock.h" /* for curlx_nonblock(), formerly Curl_nonblock() */ #include "sockaddr.h" +#include "timeval.h" CURLcode Curl_is_connected(struct connectdata *conn, int sockindex, @@ -35,9 +36,9 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* generic function that returns how much time there's left to run, according to the timeouts set */ -time_t Curl_timeleft(struct Curl_easy *data, - struct curltime *nowp, - bool duringconnect); +timediff_t Curl_timeleft(struct Curl_easy *data, + struct curltime *nowp, + bool duringconnect); #define DEFAULT_CONNECT_TIMEOUT 300000 /* milliseconds == five minutes */ #define HAPPY_EYEBALLS_TIMEOUT 200 /* milliseconds to wait between diff --git a/libraries/curl/lib/content_encoding.c b/libraries/curl/lib/content_encoding.c index 110226034..3d061375c 100644 --- a/libraries/curl/lib/content_encoding.c +++ b/libraries/curl/lib/content_encoding.c @@ -22,22 +22,43 @@ #include "curl_setup.h" -#ifdef HAVE_LIBZ - #include "urldata.h" #include +#include + +#ifdef HAVE_ZLIB_H +#include +#ifdef __SYMBIAN32__ +/* zlib pollutes the namespace with this definition */ +#undef WIN32 +#endif +#endif + +#ifdef HAVE_BROTLI +#include +#endif + #include "sendf.h" +#include "http.h" #include "content_encoding.h" #include "strdup.h" +#include "strcase.h" #include "curl_memory.h" #include "memdebug.h" +#define CONTENT_ENCODING_DEFAULT "identity" + +#ifndef CURL_DISABLE_HTTP + +#define DSIZ CURL_MAX_WRITE_SIZE /* buffer size for decompressed data */ + + +#ifdef HAVE_LIBZ + /* Comment this out if zlib is always going to be at least ver. 1.2.0.4 (doing so will reduce code size slightly). */ #define OLD_ZLIB_SUPPORT 1 -#define DSIZ CURL_MAX_WRITE_SIZE /* buffer size for decompressed data */ - #define GZIP_MAGIC_0 0x1f #define GZIP_MAGIC_1 0x8b @@ -49,6 +70,21 @@ #define COMMENT 0x10 /* bit 4 set: file comment present */ #define RESERVED 0xE0 /* bits 5..7: reserved */ +typedef enum { + ZLIB_UNINIT, /* uninitialized */ + ZLIB_INIT, /* initialized */ + ZLIB_GZIP_HEADER, /* reading gzip header */ + ZLIB_GZIP_INFLATING, /* inflating gzip stream */ + ZLIB_INIT_GZIP /* initialized in transparent gzip mode */ +} zlibInitState; + +/* Writer parameters. */ +typedef struct { + zlibInitState zlib_init; /* zlib init state */ + z_stream z; /* State structure for zlib. */ +} zlib_params; + + static voidpf zalloc_cb(voidpf opaque, unsigned int items, unsigned int size) { @@ -79,19 +115,27 @@ process_zlib_error(struct connectdata *conn, z_stream *z) } static CURLcode -exit_zlib(z_stream *z, zlibInitState *zlib_init, CURLcode result) +exit_zlib(struct connectdata *conn, + z_stream *z, zlibInitState *zlib_init, CURLcode result) { - inflateEnd(z); - *zlib_init = ZLIB_UNINIT; + if(*zlib_init == ZLIB_GZIP_HEADER) + Curl_safefree(z->next_in); + + if(*zlib_init != ZLIB_UNINIT) { + if(inflateEnd(z) != Z_OK && result == CURLE_OK) + result = process_zlib_error(conn, z); + *zlib_init = ZLIB_UNINIT; + } + return result; } static CURLcode -inflate_stream(struct connectdata *conn, - struct SingleRequest *k) +inflate_stream(struct connectdata *conn, contenc_writer *writer) { + zlib_params *zp = (zlib_params *) &writer->params; int allow_restart = 1; - z_stream *z = &k->z; /* zlib state structure */ + z_stream *z = &zp->z; /* zlib state structure */ uInt nread = z->avail_in; Bytef *orig_in = z->next_in; int status; /* zlib status */ @@ -102,44 +146,42 @@ inflate_stream(struct connectdata *conn, large to hold on the stack */ decomp = malloc(DSIZ); if(decomp == NULL) { - return exit_zlib(z, &k->zlib_init, CURLE_OUT_OF_MEMORY); + return exit_zlib(conn, z, &zp->zlib_init, CURLE_OUT_OF_MEMORY); } /* because the buffer size is fixed, iteratively decompress and transfer to the client via client_write. */ for(;;) { + if(z->avail_in == 0) { + free(decomp); + return result; + } + /* (re)set buffer for decompressed output for every iteration */ - z->next_out = (Bytef *)decomp; + z->next_out = (Bytef *) decomp; z->avail_out = DSIZ; status = inflate(z, Z_SYNC_FLUSH); if(status == Z_OK || status == Z_STREAM_END) { allow_restart = 0; - if((DSIZ - z->avail_out) && (!k->ignorebody)) { - result = Curl_client_write(conn, CLIENTWRITE_BODY, decomp, + result = Curl_unencode_write(conn, writer->downstream, decomp, DSIZ - z->avail_out); - /* if !CURLE_OK, clean up, return */ - if(result) { - free(decomp); - return exit_zlib(z, &k->zlib_init, result); - } + /* if !CURLE_OK, clean up, return */ + if(result) { + free(decomp); + return exit_zlib(conn, z, &zp->zlib_init, result); } /* Done? clean up, return */ if(status == Z_STREAM_END) { free(decomp); - if(inflateEnd(z) == Z_OK) - return exit_zlib(z, &k->zlib_init, result); - return exit_zlib(z, &k->zlib_init, process_zlib_error(conn, z)); + return exit_zlib(conn, z, &zp->zlib_init, result); } /* Done with these bytes, exit */ /* status is always Z_OK at this point! */ - if(z->avail_in == 0) { - free(decomp); - return result; - } + continue; } else if(allow_restart && status == Z_DATA_ERROR) { /* some servers seem to not generate zlib headers, so this is an attempt @@ -148,7 +190,8 @@ inflate_stream(struct connectdata *conn, (void) inflateEnd(z); /* don't care about the return code */ if(inflateInit2(z, -MAX_WBITS) != Z_OK) { free(decomp); - return exit_zlib(z, &k->zlib_init, process_zlib_error(conn, z)); + zp->zlib_init = ZLIB_UNINIT; /* inflateEnd() already called. */ + return exit_zlib(conn, z, &zp->zlib_init, process_zlib_error(conn, z)); } z->next_in = orig_in; z->avail_in = nread; @@ -157,36 +200,97 @@ inflate_stream(struct connectdata *conn, } else { /* Error; exit loop, handle below */ free(decomp); - return exit_zlib(z, &k->zlib_init, process_zlib_error(conn, z)); + return exit_zlib(conn, z, &zp->zlib_init, process_zlib_error(conn, z)); } } - /* Will never get here */ + /* UNREACHED */ } -CURLcode -Curl_unencode_deflate_write(struct connectdata *conn, - struct SingleRequest *k, - ssize_t nread) + +/* Deflate handler. */ +static CURLcode deflate_init_writer(struct connectdata *conn, + contenc_writer *writer) { - z_stream *z = &k->z; /* zlib state structure */ + zlib_params *zp = (zlib_params *) &writer->params; + z_stream *z = &zp->z; /* zlib state structure */ - /* Initialize zlib? */ - if(k->zlib_init == ZLIB_UNINIT) { - memset(z, 0, sizeof(z_stream)); - z->zalloc = (alloc_func)zalloc_cb; - z->zfree = (free_func)zfree_cb; + if(!writer->downstream) + return CURLE_WRITE_ERROR; - if(inflateInit(z) != Z_OK) - return process_zlib_error(conn, z); - k->zlib_init = ZLIB_INIT; - } + /* Initialize zlib */ + z->zalloc = (alloc_func) zalloc_cb; + z->zfree = (free_func) zfree_cb; + + if(inflateInit(z) != Z_OK) + return process_zlib_error(conn, z); + zp->zlib_init = ZLIB_INIT; + return CURLE_OK; +} + +static CURLcode deflate_unencode_write(struct connectdata *conn, + contenc_writer *writer, + const char *buf, size_t nbytes) +{ + zlib_params *zp = (zlib_params *) &writer->params; + z_stream *z = &zp->z; /* zlib state structure */ /* Set the compressed input when this function is called */ - z->next_in = (Bytef *)k->str; - z->avail_in = (uInt)nread; + z->next_in = (Bytef *) buf; + z->avail_in = (uInt) nbytes; /* Now uncompress the data */ - return inflate_stream(conn, k); + return inflate_stream(conn, writer); +} + +static void deflate_close_writer(struct connectdata *conn, + contenc_writer *writer) +{ + zlib_params *zp = (zlib_params *) &writer->params; + z_stream *z = &zp->z; /* zlib state structure */ + + exit_zlib(conn, z, &zp->zlib_init, CURLE_OK); +} + +static const content_encoding deflate_encoding = { + "deflate", + NULL, + deflate_init_writer, + deflate_unencode_write, + deflate_close_writer, + sizeof(zlib_params) +}; + + +/* Gzip handler. */ +static CURLcode gzip_init_writer(struct connectdata *conn, + contenc_writer *writer) +{ + zlib_params *zp = (zlib_params *) &writer->params; + z_stream *z = &zp->z; /* zlib state structure */ + + if(!writer->downstream) + return CURLE_WRITE_ERROR; + + /* Initialize zlib */ + z->zalloc = (alloc_func) zalloc_cb; + z->zfree = (free_func) zfree_cb; + + if(strcmp(zlibVersion(), "1.2.0.4") >= 0) { + /* zlib ver. >= 1.2.0.4 supports transparent gzip decompressing */ + if(inflateInit2(z, MAX_WBITS + 32) != Z_OK) { + return process_zlib_error(conn, z); + } + zp->zlib_init = ZLIB_INIT_GZIP; /* Transparent gzip decompress state */ + } + else { + /* we must parse the gzip header ourselves */ + if(inflateInit2(z, -MAX_WBITS) != Z_OK) { + return process_zlib_error(conn, z); + } + zp->zlib_init = ZLIB_INIT; /* Initial call state */ + } + + return CURLE_OK; } #ifdef OLD_ZLIB_SUPPORT @@ -273,47 +377,25 @@ static enum { } #endif -CURLcode -Curl_unencode_gzip_write(struct connectdata *conn, - struct SingleRequest *k, - ssize_t nread) +static CURLcode gzip_unencode_write(struct connectdata *conn, + contenc_writer *writer, + const char *buf, size_t nbytes) { - z_stream *z = &k->z; /* zlib state structure */ + zlib_params *zp = (zlib_params *) &writer->params; + z_stream *z = &zp->z; /* zlib state structure */ - /* Initialize zlib? */ - if(k->zlib_init == ZLIB_UNINIT) { - memset(z, 0, sizeof(z_stream)); - z->zalloc = (alloc_func)zalloc_cb; - z->zfree = (free_func)zfree_cb; - - if(strcmp(zlibVersion(), "1.2.0.4") >= 0) { - /* zlib ver. >= 1.2.0.4 supports transparent gzip decompressing */ - if(inflateInit2(z, MAX_WBITS + 32) != Z_OK) { - return process_zlib_error(conn, z); - } - k->zlib_init = ZLIB_INIT_GZIP; /* Transparent gzip decompress state */ - } - else { - /* we must parse the gzip header ourselves */ - if(inflateInit2(z, -MAX_WBITS) != Z_OK) { - return process_zlib_error(conn, z); - } - k->zlib_init = ZLIB_INIT; /* Initial call state */ - } - } - - if(k->zlib_init == ZLIB_INIT_GZIP) { + if(zp->zlib_init == ZLIB_INIT_GZIP) { /* Let zlib handle the gzip decompression entirely */ - z->next_in = (Bytef *)k->str; - z->avail_in = (uInt)nread; + z->next_in = (Bytef *) buf; + z->avail_in = (uInt) nbytes; /* Now uncompress the data */ - return inflate_stream(conn, k); + return inflate_stream(conn, writer); } #ifndef OLD_ZLIB_SUPPORT /* Support for old zlib versions is compiled away and we are running with an old version, so return an error. */ - return exit_zlib(z, &k->zlib_init, CURLE_WRITE_ERROR); + return exit_zlib(conn, z, &zp->zlib_init, CURLE_WRITE_ERROR); #else /* This next mess is to get around the potential case where there isn't @@ -326,18 +408,18 @@ Curl_unencode_gzip_write(struct connectdata *conn, * can handle the gzip header themselves. */ - switch(k->zlib_init) { + switch(zp->zlib_init) { /* Skip over gzip header? */ case ZLIB_INIT: { /* Initial call state */ ssize_t hlen; - switch(check_gzip_header((unsigned char *)k->str, nread, &hlen)) { + switch(check_gzip_header((unsigned char *) buf, nbytes, &hlen)) { case GZIP_OK: - z->next_in = (Bytef *)k->str + hlen; - z->avail_in = (uInt)(nread - hlen); - k->zlib_init = ZLIB_GZIP_INFLATING; /* Inflating stream state */ + z->next_in = (Bytef *) buf + hlen; + z->avail_in = (uInt) (nbytes - hlen); + zp->zlib_init = ZLIB_GZIP_INFLATING; /* Inflating stream state */ break; case GZIP_UNDERFLOW: @@ -348,19 +430,19 @@ Curl_unencode_gzip_write(struct connectdata *conn, * the first place, and it's even more unlikely for a transfer to fail * immediately afterwards, it should seldom be a problem. */ - z->avail_in = (uInt)nread; + z->avail_in = (uInt) nbytes; z->next_in = malloc(z->avail_in); if(z->next_in == NULL) { - return exit_zlib(z, &k->zlib_init, CURLE_OUT_OF_MEMORY); + return exit_zlib(conn, z, &zp->zlib_init, CURLE_OUT_OF_MEMORY); } - memcpy(z->next_in, k->str, z->avail_in); - k->zlib_init = ZLIB_GZIP_HEADER; /* Need more gzip header data state */ + memcpy(z->next_in, buf, z->avail_in); + zp->zlib_init = ZLIB_GZIP_HEADER; /* Need more gzip header data state */ /* We don't have any data to inflate yet */ return CURLE_OK; case GZIP_BAD: default: - return exit_zlib(z, &k->zlib_init, process_zlib_error(conn, z)); + return exit_zlib(conn, z, &zp->zlib_init, process_zlib_error(conn, z)); } } @@ -370,22 +452,22 @@ Curl_unencode_gzip_write(struct connectdata *conn, { /* Need more gzip header data state */ ssize_t hlen; - z->avail_in += (uInt)nread; + z->avail_in += (uInt) nbytes; z->next_in = Curl_saferealloc(z->next_in, z->avail_in); if(z->next_in == NULL) { - return exit_zlib(z, &k->zlib_init, CURLE_OUT_OF_MEMORY); + return exit_zlib(conn, z, &zp->zlib_init, CURLE_OUT_OF_MEMORY); } /* Append the new block of data to the previous one */ - memcpy(z->next_in + z->avail_in - nread, k->str, nread); + memcpy(z->next_in + z->avail_in - nbytes, buf, nbytes); switch(check_gzip_header(z->next_in, z->avail_in, &hlen)) { case GZIP_OK: /* This is the zlib stream data */ free(z->next_in); /* Don't point into the malloced block since we just freed it */ - z->next_in = (Bytef *)k->str + hlen + nread - z->avail_in; - z->avail_in = (uInt)(z->avail_in - hlen); - k->zlib_init = ZLIB_GZIP_INFLATING; /* Inflating stream state */ + z->next_in = (Bytef *) buf + hlen + nbytes - z->avail_in; + z->avail_in = (uInt) (z->avail_in - hlen); + zp->zlib_init = ZLIB_GZIP_INFLATING; /* Inflating stream state */ break; case GZIP_UNDERFLOW: @@ -394,8 +476,7 @@ Curl_unencode_gzip_write(struct connectdata *conn, case GZIP_BAD: default: - free(z->next_in); - return exit_zlib(z, &k->zlib_init, process_zlib_error(conn, z)); + return exit_zlib(conn, z, &zp->zlib_init, process_zlib_error(conn, z)); } } @@ -404,8 +485,8 @@ Curl_unencode_gzip_write(struct connectdata *conn, case ZLIB_GZIP_INFLATING: default: /* Inflating stream state */ - z->next_in = (Bytef *)k->str; - z->avail_in = (uInt)nread; + z->next_in = (Bytef *) buf; + z->avail_in = (uInt) nbytes; break; } @@ -415,17 +496,465 @@ Curl_unencode_gzip_write(struct connectdata *conn, } /* We've parsed the header, now uncompress the data */ - return inflate_stream(conn, k); + return inflate_stream(conn, writer); #endif } +static void gzip_close_writer(struct connectdata *conn, + contenc_writer *writer) +{ + zlib_params *zp = (zlib_params *) &writer->params; + z_stream *z = &zp->z; /* zlib state structure */ + + exit_zlib(conn, z, &zp->zlib_init, CURLE_OK); +} + +static const content_encoding gzip_encoding = { + "gzip", + "x-gzip", + gzip_init_writer, + gzip_unencode_write, + gzip_close_writer, + sizeof(zlib_params) +}; + +#endif /* HAVE_LIBZ */ + + +#ifdef HAVE_BROTLI + +/* Writer parameters. */ +typedef struct { + BrotliDecoderState *br; /* State structure for brotli. */ +} brotli_params; + + +static CURLcode brotli_map_error(BrotliDecoderErrorCode be) +{ + switch(be) { + case BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: + case BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: + case BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: + case BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: + case BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: + case BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: + case BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: + case BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: + case BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: + case BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: + case BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: + case BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: + case BROTLI_DECODER_ERROR_FORMAT_PADDING_1: + case BROTLI_DECODER_ERROR_FORMAT_PADDING_2: + case BROTLI_DECODER_ERROR_COMPOUND_DICTIONARY: + case BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: + case BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: + return CURLE_BAD_CONTENT_ENCODING; + case BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: + case BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: + case BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: + case BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: + case BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: + case BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: + return CURLE_OUT_OF_MEMORY; + default: + break; + } + return CURLE_WRITE_ERROR; +} + +static CURLcode brotli_init_writer(struct connectdata *conn, + contenc_writer *writer) +{ + brotli_params *bp = (brotli_params *) &writer->params; + + (void) conn; + + if(!writer->downstream) + return CURLE_WRITE_ERROR; + + bp->br = BrotliDecoderCreateInstance(NULL, NULL, NULL); + return bp->br? CURLE_OK: CURLE_OUT_OF_MEMORY; +} + +static CURLcode brotli_unencode_write(struct connectdata *conn, + contenc_writer *writer, + const char *buf, size_t nbytes) +{ + brotli_params *bp = (brotli_params *) &writer->params; + const uint8_t *src = (const uint8_t *) buf; + char *decomp; + uint8_t *dst; + size_t dstleft; + CURLcode result = CURLE_OK; + + if(!bp->br) + return CURLE_WRITE_ERROR; /* Stream already ended. */ + + decomp = malloc(DSIZ); + if(!decomp) + return CURLE_OUT_OF_MEMORY; + + while(nbytes && result == CURLE_OK) { + BrotliDecoderResult r; + + dst = (uint8_t *) decomp; + dstleft = DSIZ; + r = BrotliDecoderDecompressStream(bp->br, + &nbytes, &src, &dstleft, &dst, NULL); + result = Curl_unencode_write(conn, writer->downstream, + decomp, DSIZ - dstleft); + if(result) + break; + switch(r) { + case BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: + case BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: + break; + case BROTLI_DECODER_RESULT_SUCCESS: + BrotliDecoderDestroyInstance(bp->br); + bp->br = NULL; + if(nbytes) + result = CURLE_WRITE_ERROR; + break; + default: + result = brotli_map_error(BrotliDecoderGetErrorCode(bp->br)); + break; + } + } + free(decomp); + return result; +} + +static void brotli_close_writer(struct connectdata *conn, + contenc_writer *writer) +{ + brotli_params *bp = (brotli_params *) &writer->params; + + (void) conn; + + if(bp->br) { + BrotliDecoderDestroyInstance(bp->br); + bp->br = NULL; + } +} + +static const content_encoding brotli_encoding = { + "br", + NULL, + brotli_init_writer, + brotli_unencode_write, + brotli_close_writer, + sizeof(brotli_params) +}; +#endif + + +/* Identity handler. */ +static CURLcode identity_init_writer(struct connectdata *conn, + contenc_writer *writer) +{ + (void) conn; + return writer->downstream? CURLE_OK: CURLE_WRITE_ERROR; +} + +static CURLcode identity_unencode_write(struct connectdata *conn, + contenc_writer *writer, + const char *buf, size_t nbytes) +{ + return Curl_unencode_write(conn, writer->downstream, buf, nbytes); +} + +static void identity_close_writer(struct connectdata *conn, + contenc_writer *writer) +{ + (void) conn; + (void) writer; +} + +static const content_encoding identity_encoding = { + "identity", + NULL, + identity_init_writer, + identity_unencode_write, + identity_close_writer, + 0 +}; + + +/* supported content encodings table. */ +static const content_encoding * const encodings[] = { + &identity_encoding, +#ifdef HAVE_LIBZ + &deflate_encoding, + &gzip_encoding, +#endif +#ifdef HAVE_BROTLI + &brotli_encoding, +#endif + NULL +}; + + +/* Return a list of comma-separated names of supported encodings. */ +char *Curl_all_content_encodings(void) +{ + size_t len = 0; + const content_encoding * const *cep; + const content_encoding *ce; + char *ace; + char *p; + + for(cep = encodings; *cep; cep++) { + ce = *cep; + if(!strcasecompare(ce->name, CONTENT_ENCODING_DEFAULT)) + len += strlen(ce->name) + 2; + } + + if(!len) + return strdup(CONTENT_ENCODING_DEFAULT); + + ace = malloc(len); + if(ace) { + p = ace; + for(cep = encodings; *cep; cep++) { + ce = *cep; + if(!strcasecompare(ce->name, CONTENT_ENCODING_DEFAULT)) { + strcpy(p, ce->name); + p += strlen(p); + *p++ = ','; + *p++ = ' '; + } + } + p[-2] = '\0'; + } + + return ace; +} + + +/* Real client writer: no downstream. */ +static CURLcode client_init_writer(struct connectdata *conn, + contenc_writer *writer) +{ + (void) conn; + return writer->downstream? CURLE_WRITE_ERROR: CURLE_OK; +} + +static CURLcode client_unencode_write(struct connectdata *conn, + contenc_writer *writer, + const char *buf, size_t nbytes) +{ + struct Curl_easy *data = conn->data; + struct SingleRequest *k = &data->req; + + (void) writer; + + if(!nbytes || k->ignorebody) + return CURLE_OK; + + return Curl_client_write(conn, CLIENTWRITE_BODY, (char *) buf, nbytes); +} + +static void client_close_writer(struct connectdata *conn, + contenc_writer *writer) +{ + (void) conn; + (void) writer; +} + +static const content_encoding client_encoding = { + NULL, + NULL, + client_init_writer, + client_unencode_write, + client_close_writer, + 0 +}; + + +/* Deferred error dummy writer. */ +static CURLcode error_init_writer(struct connectdata *conn, + contenc_writer *writer) +{ + (void) conn; + return writer->downstream? CURLE_OK: CURLE_WRITE_ERROR; +} + +static CURLcode error_unencode_write(struct connectdata *conn, + contenc_writer *writer, + const char *buf, size_t nbytes) +{ + char *all = Curl_all_content_encodings(); + + (void) writer; + (void) buf; + (void) nbytes; + + if(!all) + return CURLE_OUT_OF_MEMORY; + failf(conn->data, "Unrecognized content encoding type. " + "libcurl understands %s content encodings.", all); + free(all); + return CURLE_BAD_CONTENT_ENCODING; +} + +static void error_close_writer(struct connectdata *conn, + contenc_writer *writer) +{ + (void) conn; + (void) writer; +} + +static const content_encoding error_encoding = { + NULL, + NULL, + error_init_writer, + error_unencode_write, + error_close_writer, + 0 +}; + +/* Create an unencoding writer stage using the given handler. */ +static contenc_writer *new_unencoding_writer(struct connectdata *conn, + const content_encoding *handler, + contenc_writer *downstream) +{ + size_t sz = offsetof(contenc_writer, params) + handler->paramsize; + contenc_writer *writer = (contenc_writer *) malloc(sz); + + if(writer) { + memset(writer, 0, sz); + writer->handler = handler; + writer->downstream = downstream; + if(handler->init_writer(conn, writer)) { + free(writer); + writer = NULL; + } + } + + return writer; +} + +/* Write data using an unencoding writer stack. */ +CURLcode Curl_unencode_write(struct connectdata *conn, contenc_writer *writer, + const char *buf, size_t nbytes) +{ + if(!nbytes) + return CURLE_OK; + return writer->handler->unencode_write(conn, writer, buf, nbytes); +} + +/* Close and clean-up the connection's writer stack. */ void Curl_unencode_cleanup(struct connectdata *conn) { struct Curl_easy *data = conn->data; struct SingleRequest *k = &data->req; - z_stream *z = &k->z; - if(k->zlib_init != ZLIB_UNINIT) - (void) exit_zlib(z, &k->zlib_init, CURLE_OK); + contenc_writer *writer = k->writer_stack; + + while(writer) { + k->writer_stack = writer->downstream; + writer->handler->close_writer(conn, writer); + free(writer); + writer = k->writer_stack; + } } -#endif /* HAVE_LIBZ */ +/* Find the content encoding by name. */ +static const content_encoding *find_encoding(const char *name, size_t len) +{ + const content_encoding * const *cep; + const content_encoding *ce; + + for(cep = encodings; *cep; cep++) { + ce = *cep; + if((strncasecompare(name, ce->name, len) && !ce->name[len]) || + (ce->alias && strncasecompare(name, ce->alias, len) && !ce->alias[len])) + return ce; + } + return NULL; +} + +/* Set-up the unencoding stack from the Content-Encoding header value. + * See RFC 7231 section 3.1.2.2. */ +CURLcode Curl_build_unencoding_stack(struct connectdata *conn, + const char *enclist, int maybechunked) +{ + struct Curl_easy *data = conn->data; + struct SingleRequest *k = &data->req; + + do { + const char *name; + size_t namelen; + + /* Parse a single encoding name. */ + while(ISSPACE(*enclist) || *enclist == ',') + enclist++; + + name = enclist; + + for(namelen = 0; *enclist && *enclist != ','; enclist++) + if(!ISSPACE(*enclist)) + namelen = enclist - name + 1; + + /* Special case: chunked encoding is handled at the reader level. */ + if(maybechunked && namelen == 7 && strncasecompare(name, "chunked", 7)) { + k->chunk = TRUE; /* chunks coming our way. */ + Curl_httpchunk_init(conn); /* init our chunky engine. */ + } + else if(namelen) { + const content_encoding *encoding = find_encoding(name, namelen); + contenc_writer *writer; + + if(!k->writer_stack) { + k->writer_stack = new_unencoding_writer(conn, &client_encoding, NULL); + + if(!k->writer_stack) + return CURLE_OUT_OF_MEMORY; + } + + if(!encoding) + encoding = &error_encoding; /* Defer error at stack use. */ + + /* Stack the unencoding stage. */ + writer = new_unencoding_writer(conn, encoding, k->writer_stack); + if(!writer) + return CURLE_OUT_OF_MEMORY; + k->writer_stack = writer; + } + } while(*enclist); + + return CURLE_OK; +} + +#else +/* Stubs for builds without HTTP. */ +CURLcode Curl_build_unencoding_stack(struct connectdata *conn, + const char *enclist, int maybechunked) +{ + (void) conn; + (void) enclist; + (void) maybechunked; + return CURLE_NOT_BUILT_IN; +} + +CURLcode Curl_unencode_write(struct connectdata *conn, contenc_writer *writer, + const char *buf, size_t nbytes) +{ + (void) conn; + (void) writer; + (void) buf; + (void) nbytes; + return CURLE_NOT_BUILT_IN; +} + +void Curl_unencode_cleanup(struct connectdata *conn) +{ + (void) conn; +} + +char *Curl_all_content_encodings(void) +{ + return strdup(CONTENT_ENCODING_DEFAULT); /* Satisfy caller. */ +} + +#endif /* CURL_DISABLE_HTTP */ diff --git a/libraries/curl/lib/content_encoding.h b/libraries/curl/lib/content_encoding.h index 3fadd2899..4cd52be62 100644 --- a/libraries/curl/lib/content_encoding.h +++ b/libraries/curl/lib/content_encoding.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -23,26 +23,33 @@ ***************************************************************************/ #include "curl_setup.h" -/* - * Comma-separated list all supported Content-Encodings ('identity' is implied) - */ -#ifdef HAVE_LIBZ -#define ALL_CONTENT_ENCODINGS "deflate, gzip" -/* force a cleanup */ +/* Decoding writer. */ +typedef struct contenc_writer_s contenc_writer; +typedef struct content_encoding_s content_encoding; + +struct contenc_writer_s { + const content_encoding *handler; /* Encoding handler. */ + contenc_writer *downstream; /* Downstream writer. */ + void *params; /* Encoding-specific storage (variable length). */ +}; + +/* Content encoding writer. */ +struct content_encoding_s { + const char *name; /* Encoding name. */ + const char *alias; /* Encoding name alias. */ + CURLcode (*init_writer)(struct connectdata *conn, contenc_writer *writer); + CURLcode (*unencode_write)(struct connectdata *conn, contenc_writer *writer, + const char *buf, size_t nbytes); + void (*close_writer)(struct connectdata *conn, contenc_writer *writer); + size_t paramsize; +}; + + +CURLcode Curl_build_unencoding_stack(struct connectdata *conn, + const char *enclist, int maybechunked); +CURLcode Curl_unencode_write(struct connectdata *conn, contenc_writer *writer, + const char *buf, size_t nbytes); void Curl_unencode_cleanup(struct connectdata *conn); -#else -#define ALL_CONTENT_ENCODINGS "identity" -#define Curl_unencode_cleanup(x) Curl_nop_stmt -#endif - -CURLcode Curl_unencode_deflate_write(struct connectdata *conn, - struct SingleRequest *req, - ssize_t nread); - -CURLcode -Curl_unencode_gzip_write(struct connectdata *conn, - struct SingleRequest *k, - ssize_t nread); - +char *Curl_all_content_encodings(void); #endif /* HEADER_CURL_CONTENT_ENCODING_H */ diff --git a/libraries/curl/lib/cookie.c b/libraries/curl/lib/cookie.c index 271f6d49d..c7afc7ae3 100644 --- a/libraries/curl/lib/cookie.c +++ b/libraries/curl/lib/cookie.c @@ -309,7 +309,7 @@ static void remove_expired(struct CookieInfo *cookies) while(co) { nx = co->next; if(co->expires && co->expires < now) { - if(co == cookies->cookies) { + if(!pv) { cookies->cookies = co->next; } else { diff --git a/libraries/curl/lib/curl_config.h.cmake b/libraries/curl/lib/curl_config.h.cmake index c80484f65..e4d14c784 100644 --- a/libraries/curl/lib/curl_config.h.cmake +++ b/libraries/curl/lib/curl_config.h.cmake @@ -1000,3 +1000,6 @@ /* the signed version of size_t */ #cmakedefine ssize_t ${ssize_t} + +/* Define to 1 if you have the mach_absolute_time function. */ +#cmakedefine HAVE_MACH_ABSOLUTE_TIME 1 diff --git a/libraries/curl/lib/curl_fnmatch.c b/libraries/curl/lib/curl_fnmatch.c index 631268bc1..da83393b4 100644 --- a/libraries/curl/lib/curl_fnmatch.c +++ b/libraries/curl/lib/curl_fnmatch.c @@ -235,15 +235,10 @@ static int setcharset(unsigned char **p, unsigned char *charset) return SETCHARSET_FAIL; break; case CURLFNM_SCHS_MAYRANGE2: - if(c == '\\') { - c = *(++(*p)); - if(!ISPRINT(c)) - return SETCHARSET_FAIL; - } if(c == ']') { return SETCHARSET_OK; } - if(c == '\\') { + else if(c == '\\') { c = *(++(*p)); if(ISPRINT(c)) { charset[c] = 1; @@ -253,7 +248,7 @@ static int setcharset(unsigned char **p, unsigned char *charset) else return SETCHARSET_FAIL; } - if(c >= rangestart) { + else if(c >= rangestart) { if((ISLOWER(c) && ISLOWER(rangestart)) || (ISDIGIT(c) && ISDIGIT(rangestart)) || (ISUPPER(c) && ISUPPER(rangestart))) { @@ -267,6 +262,8 @@ static int setcharset(unsigned char **p, unsigned char *charset) else return SETCHARSET_FAIL; } + else + return SETCHARSET_FAIL; break; case CURLFNM_SCHS_RIGHTBR: if(c == '[') { diff --git a/libraries/curl/lib/curl_ntlm_core.c b/libraries/curl/lib/curl_ntlm_core.c index 5154949e6..1309bf0d9 100644 --- a/libraries/curl/lib/curl_ntlm_core.c +++ b/libraries/curl/lib/curl_ntlm_core.c @@ -557,7 +557,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data, unsigned char *ntbuffer /* 21 bytes */) { size_t len = strlen(password); - unsigned char *pw = malloc(len * 2); + unsigned char *pw = len ? malloc(len * 2) : strdup(""); CURLcode result; if(!pw) return CURLE_OUT_OF_MEMORY; diff --git a/libraries/curl/lib/curl_setup.h b/libraries/curl/lib/curl_setup.h index 402ebc03d..25a7b4c54 100644 --- a/libraries/curl/lib/curl_setup.h +++ b/libraries/curl/lib/curl_setup.h @@ -751,9 +751,10 @@ endings either CRLF or LF so 't' is appropriate. /* Detect Windows App environment which has a restricted access * to the Win32 APIs. */ -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602) +# if (defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0602)) || \ + defined(WINAPI_FAMILY) # include -# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \ +# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \ !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) # define CURL_WINDOWS_APP # endif diff --git a/libraries/curl/lib/curlx.h b/libraries/curl/lib/curlx.h index 6168dc119..6e418266b 100644 --- a/libraries/curl/lib/curlx.h +++ b/libraries/curl/lib/curlx.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -42,16 +42,6 @@ curl_off_t number from a given string. */ -#include "timeval.h" -/* - "timeval.h" sets up a 'struct timeval' even for platforms that otherwise - don't have one and has protos for these functions: - - curlx_tvnow() - curlx_tvdiff() - curlx_tvdiff_secs() -*/ - #include "nonblock.h" /* "nonblock.h" provides curlx_nonblock() */ diff --git a/libraries/curl/lib/easy.c b/libraries/curl/lib/easy.c index 5328f9c2d..2f5cc7f89 100644 --- a/libraries/curl/lib/easy.c +++ b/libraries/curl/lib/easy.c @@ -68,10 +68,11 @@ #include "amigaos.h" #include "non-ascii.h" #include "warnless.h" -#include "conncache.h" #include "multiif.h" #include "sigpipe.h" #include "ssh.h" +#include "setopt.h" + /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" @@ -365,28 +366,6 @@ struct Curl_easy *curl_easy_init(void) return data; } -/* - * curl_easy_setopt() is the external interface for setting options on an - * easy handle. - */ - -#undef curl_easy_setopt -CURLcode curl_easy_setopt(struct Curl_easy *data, CURLoption tag, ...) -{ - va_list arg; - CURLcode result; - - if(!data) - return CURLE_BAD_FUNCTION_ARGUMENT; - - va_start(arg, tag); - - result = Curl_setopt(data, tag, arg); - - va_end(arg); - return result; -} - #ifdef CURLDEBUG struct socketmonitor { @@ -586,12 +565,12 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev) } /* get the time stamp to use to figure out how long poll takes */ - before = curlx_tvnow(); + before = Curl_now(); /* wait for activity or timeout */ pollrc = Curl_poll(fds, numfds, (int)ev->ms); - after = curlx_tvnow(); + after = Curl_now(); ev->msbump = FALSE; /* reset here */ @@ -619,7 +598,7 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev) /* If nothing updated the timeout, we decrease it by the spent time. * If it was updated, it has the new timeout time stored already. */ - time_t timediff = curlx_tvdiff(after, before); + timediff_t timediff = Curl_timediff(after, before); if(timediff > 0) { if(timediff > ev->ms) ev->ms = 0; @@ -680,17 +659,17 @@ static CURLcode easy_transfer(struct Curl_multi *multi) int still_running = 0; int rc; - before = curlx_tvnow(); + before = Curl_now(); mcode = curl_multi_wait(multi, NULL, 0, 1000, &rc); if(!mcode) { if(!rc) { - struct curltime after = curlx_tvnow(); + struct curltime after = Curl_now(); /* If it returns without any filedescriptor instantly, we need to avoid busy-looping during periods where it has nothing particular to wait for */ - if(curlx_tvdiff(after, before) <= 10) { + if(Curl_timediff(after, before) <= 10) { without_fds++; if(without_fds > 2) { int sleep_ms = without_fds < 10 ? (1 << (without_fds - 1)) : 1000; @@ -861,6 +840,40 @@ CURLcode curl_easy_getinfo(struct Curl_easy *data, CURLINFO info, ...) return result; } +static CURLcode dupset(struct Curl_easy *dst, struct Curl_easy *src) +{ + CURLcode result = CURLE_OK; + enum dupstring i; + + /* Copy src->set into dst->set first, then deal with the strings + afterwards */ + dst->set = src->set; + + /* clear all string pointers first */ + memset(dst->set.str, 0, STRING_LAST * sizeof(char *)); + + /* duplicate all strings */ + for(i = (enum dupstring)0; i< STRING_LASTZEROTERMINATED; i++) { + result = Curl_setstropt(&dst->set.str[i], src->set.str[i]); + if(result) + return result; + } + + /* duplicate memory areas pointed to */ + i = STRING_COPYPOSTFIELDS; + if(src->set.postfieldsize && src->set.str[i]) { + /* postfieldsize is curl_off_t, Curl_memdup() takes a size_t ... */ + dst->set.str[i] = Curl_memdup(src->set.str[i], + curlx_sotouz(src->set.postfieldsize)); + if(!dst->set.str[i]) + return CURLE_OUT_OF_MEMORY; + /* point to the new copy */ + dst->set.postfields = dst->set.str[i]; + } + + return CURLE_OK; +} + /* * curl_easy_duphandle() is an external interface to allow duplication of a * given input easy handle. The returned handle will be a new working handle @@ -888,7 +901,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data) outcurl->state.headersize = HEADERSIZE; /* copy all userdefined values */ - if(Curl_dupset(outcurl, data)) + if(dupset(outcurl, data)) goto fail; /* the connection cache is setup on demand */ diff --git a/libraries/curl/lib/file.c b/libraries/curl/lib/file.c index 7cfdab19f..0bbc0e180 100644 --- a/libraries/curl/lib/file.c +++ b/libraries/curl/lib/file.c @@ -404,7 +404,7 @@ static CURLcode file_upload(struct connectdata *conn) if(Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; else - result = Curl_speedcheck(data, Curl_tvnow()); + result = Curl_speedcheck(data, Curl_now()); } if(!result && Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; @@ -589,7 +589,7 @@ static CURLcode file_do(struct connectdata *conn, bool *done) if(Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; else - result = Curl_speedcheck(data, Curl_tvnow()); + result = Curl_speedcheck(data, Curl_now()); } if(Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; diff --git a/libraries/curl/lib/formdata.c b/libraries/curl/lib/formdata.c index 3568ac579..d0579c52f 100644 --- a/libraries/curl/lib/formdata.c +++ b/libraries/curl/lib/formdata.c @@ -907,7 +907,7 @@ CURLcode Curl_getformdata(struct Curl_easy *data, result = curl_mime_headers(part, file->contentheader, 0); /* Set the content type. */ - if(!result &&file->contenttype) + if(!result && file->contenttype) result = curl_mime_type(part, file->contenttype); /* Set field name. */ diff --git a/libraries/curl/lib/ftp.c b/libraries/curl/lib/ftp.c index 54ba4057f..8042edf48 100644 --- a/libraries/curl/lib/ftp.c +++ b/libraries/curl/lib/ftp.c @@ -182,7 +182,8 @@ const struct Curl_handler Curl_handler_ftp = { PORT_FTP, /* defport */ CURLPROTO_FTP, /* protocol */ PROTOPT_DUAL | PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD | - PROTOPT_NOURLQUERY | PROTOPT_PROXY_AS_HTTP /* flags */ + PROTOPT_NOURLQUERY | PROTOPT_PROXY_AS_HTTP | + PROTOPT_WILDCARD /* flags */ }; @@ -210,7 +211,7 @@ const struct Curl_handler Curl_handler_ftps = { PORT_FTPS, /* defport */ CURLPROTO_FTPS, /* protocol */ PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION | - PROTOPT_NEEDSPWD | PROTOPT_NOURLQUERY /* flags */ + PROTOPT_NEEDSPWD | PROTOPT_NOURLQUERY | PROTOPT_WILDCARD /* flags */ }; #endif @@ -332,16 +333,16 @@ static CURLcode AcceptServerConnect(struct connectdata *conn) * Curl_pgrsTime(..., TIMER_STARTACCEPT); * */ -static time_t ftp_timeleft_accept(struct Curl_easy *data) +static timediff_t ftp_timeleft_accept(struct Curl_easy *data) { - time_t timeout_ms = DEFAULT_ACCEPT_TIMEOUT; - time_t other; + timediff_t timeout_ms = DEFAULT_ACCEPT_TIMEOUT; + timediff_t other; struct curltime now; if(data->set.accepttimeout > 0) timeout_ms = data->set.accepttimeout; - now = Curl_tvnow(); + now = Curl_now(); /* check if the generic timeout possibly is set shorter */ other = Curl_timeleft(data, &now, FALSE); @@ -351,7 +352,7 @@ static time_t ftp_timeleft_accept(struct Curl_easy *data) timeout_ms = other; else { /* subtract elapsed time */ - timeout_ms -= Curl_tvdiff(now, data->progress.t_acceptdata); + timeout_ms -= Curl_timediff(now, data->progress.t_acceptdata); if(!timeout_ms) /* avoid returning 0 as that means no timeout! */ return -1; @@ -1457,25 +1458,22 @@ static CURLcode ftp_state_list(struct connectdata *conn) then just do LIST (in that case: nothing to do here) */ char *cmd, *lstArg, *slashPos; + const char *inpath = data->state.path; lstArg = NULL; if((data->set.ftp_filemethod == FTPFILE_NOCWD) && - data->state.path && - data->state.path[0] && - strchr(data->state.path, '/')) { - - lstArg = strdup(data->state.path); - if(!lstArg) - return CURLE_OUT_OF_MEMORY; + inpath && inpath[0] && strchr(inpath, '/')) { + size_t n = strlen(inpath); /* Check if path does not end with /, as then we cut off the file part */ - if(lstArg[strlen(lstArg) - 1] != '/') { - + if(inpath[n - 1] != '/') { /* chop off the file part if format is dir/dir/file */ - slashPos = strrchr(lstArg, '/'); - if(slashPos) - *(slashPos + 1) = '\0'; + slashPos = strrchr(inpath, '/'); + n = slashPos - inpath; } + result = Curl_urldecode(data, inpath, n, &lstArg, NULL, FALSE); + if(result) + return result; } cmd = aprintf("%s%s%s", @@ -1877,8 +1875,8 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn, else if((ftpc->count1 == 1) && (ftpcode == 227)) { /* positive PASV response */ - int ip[4]; - int port[2]; + unsigned int ip[4]; + unsigned int port[2]; /* * Scan for a sequence of six comma-separated numbers and use them as @@ -1890,14 +1888,15 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn, * "227 Entering passive mode. 127,0,0,1,4,51" */ while(*str) { - if(6 == sscanf(str, "%d,%d,%d,%d,%d,%d", + if(6 == sscanf(str, "%u,%u,%u,%u,%u,%u", &ip[0], &ip[1], &ip[2], &ip[3], &port[0], &port[1])) break; str++; } - if(!*str) { + if(!*str || (ip[0] > 255) || (ip[1] > 255) || (ip[2] > 255) || + (ip[3] > 255) || (port[0] > 255) || (port[1] > 255) ) { failf(data, "Couldn't interpret the 227-response"); return CURLE_FTP_WEIRD_227_FORMAT; } @@ -2419,8 +2418,8 @@ static CURLcode ftp_state_get_resp(struct connectdata *conn, char *bytes; char *buf = data->state.buffer; bytes = strstr(buf, " bytes"); - if(bytes--) { - long in = (long)(bytes-buf); + if(bytes) { + long in = (long)(--bytes-buf); /* this is a hint there is size information in there! ;-) */ while(--in) { /* scan for the left parenthesis and break there */ @@ -3179,7 +3178,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status, /* now store a copy of the directory we are in */ free(ftpc->prevpath); - if(data->set.wildcardmatch) { + if(data->state.wildcardmatch) { if(data->set.chunk_end && ftpc->file) { data->set.chunk_end(data->wildcard.customptr); } @@ -3263,7 +3262,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status, long old_time = pp->response_time; pp->response_time = 60*1000; /* give it only a minute for now */ - pp->response = Curl_tvnow(); /* timeout relative now */ + pp->response = Curl_now(); /* timeout relative now */ result = Curl_GetFTPResponse(&nread, conn, &ftpcode); @@ -3383,7 +3382,7 @@ CURLcode ftp_sendquote(struct connectdata *conn, struct curl_slist *quote) PPSENDF(&conn->proto.ftpc.pp, "%s", cmd); - pp->response = Curl_tvnow(); /* timeout relative now */ + pp->response = Curl_now(); /* timeout relative now */ result = Curl_GetFTPResponse(&nread, conn, &ftpcode); if(result) @@ -3964,7 +3963,7 @@ static CURLcode ftp_do(struct connectdata *conn, bool *done) *done = FALSE; /* default to false */ ftpc->wait_data_conn = FALSE; /* default to no such wait */ - if(conn->data->set.wildcardmatch) { + if(conn->data->state.wildcardmatch) { result = wc_statemach(conn); if(conn->data->wildcard.state == CURLWC_SKIP || conn->data->wildcard.state == CURLWC_DONE) { diff --git a/libraries/curl/lib/ftplistparser.c b/libraries/curl/lib/ftplistparser.c index b2a8c0fdb..262ac0306 100644 --- a/libraries/curl/lib/ftplistparser.c +++ b/libraries/curl/lib/ftplistparser.c @@ -264,16 +264,6 @@ static int ftp_pl_get_permission(const char *str) return permissions; } -static void PL_ERROR(struct connectdata *conn, CURLcode err) -{ - struct ftp_wc_tmpdata *tmpdata = conn->data->wildcard.tmp; - struct ftp_parselist_data *parser = tmpdata->parser; - if(parser->file_data) - Curl_fileinfo_dtor(NULL, parser->file_data); - parser->file_data = NULL; - parser->error = err; -} - static CURLcode ftp_pl_insert_finfo(struct connectdata *conn, struct fileinfo *infop) { @@ -338,6 +328,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, struct curl_fileinfo *finfo; unsigned long i = 0; CURLcode result; + size_t retsize = bufflen; if(parser->error) { /* error in previous call */ /* scenario: @@ -346,7 +337,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, * 3. (last) call => is skipped RIGHT HERE and the error is hadled later * in wc_statemach() */ - return bufflen; + goto fail; } if(parser->os_type == OS_TYPE_UNKNOWN && bufflen > 0) { @@ -362,12 +353,12 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->file_data = Curl_fileinfo_alloc(); if(!parser->file_data) { parser->error = CURLE_OUT_OF_MEMORY; - return bufflen; + goto fail; } parser->file_data->info.b_data = malloc(FTP_BUFFER_ALLOCSIZE); if(!parser->file_data->info.b_data) { - PL_ERROR(conn, CURLE_OUT_OF_MEMORY); - return bufflen; + parser->error = CURLE_OUT_OF_MEMORY; + goto fail; } parser->file_data->info.b_size = FTP_BUFFER_ALLOCSIZE; parser->item_offset = 0; @@ -390,8 +381,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, Curl_fileinfo_dtor(NULL, parser->file_data); parser->file_data = NULL; parser->error = CURLE_OUT_OF_MEMORY; - PL_ERROR(conn, CURLE_OUT_OF_MEMORY); - return bufflen; + goto fail; } } @@ -429,15 +419,15 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, while(ISDIGIT(*endptr)) endptr++; if(*endptr != 0) { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } parser->state.UNIX.main = PL_UNIX_FILETYPE; finfo->b_used = 0; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } break; @@ -470,8 +460,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, finfo->filetype = CURLFILETYPE_DOOR; break; default: - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } parser->state.UNIX.main = PL_UNIX_PERMISSION; parser->item_length = 0; @@ -481,21 +471,21 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->item_length++; if(parser->item_length <= 9) { if(!strchr("rwx-tTsS", c)) { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } else if(parser->item_length == 10) { unsigned int perm; if(c != ' ') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } finfo->b_data[10] = 0; /* terminate permissions */ perm = ftp_pl_get_permission(finfo->b_data + parser->item_offset); if(perm & FTP_LP_MALFORMATED_PERM) { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_PERM; parser->file_data->info.perm = perm; @@ -516,8 +506,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.hlinks = PL_UNIX_HLINKS_NUMBER; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } break; @@ -538,8 +528,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.user = PL_UNIX_USER_PRESPACE; } else if(c < '0' || c > '9') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -598,8 +588,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.size = PL_UNIX_SIZE_NUMBER; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } break; @@ -623,8 +613,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, } } else if(!ISDIGIT(c)) { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -639,8 +629,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.time = PL_UNIX_TIME_PART1; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } break; @@ -650,8 +640,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART2; } else if(!ISALNUM(c) && c != '.') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; case PL_UNIX_TIME_PREPART2: @@ -661,8 +651,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.time = PL_UNIX_TIME_PART2; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } break; @@ -672,8 +662,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART3; } else if(!ISALNUM(c) && c != '.') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; case PL_UNIX_TIME_PREPART3: @@ -683,8 +673,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.time = PL_UNIX_TIME_PART3; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } break; @@ -708,8 +698,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, } } else if(!ISALNUM(c) && c != '.' && c != ':') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -734,8 +724,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.main = PL_UNIX_FILETYPE; result = ftp_pl_insert_finfo(conn, infop); if(result) { - PL_ERROR(conn, result); - return bufflen; + parser->error = result; + goto fail; } } break; @@ -746,13 +736,13 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.main = PL_UNIX_FILETYPE; result = ftp_pl_insert_finfo(conn, infop); if(result) { - PL_ERROR(conn, result); - return bufflen; + parser->error = result; + goto fail; } } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -772,8 +762,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET1; } else if(c == '\r' || c == '\n') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; case PL_UNIX_SYMLINK_PRETARGET1: @@ -782,8 +772,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET2; } else if(c == '\r' || c == '\n') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } else { parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; @@ -795,8 +785,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET3; } else if(c == '\r' || c == '\n') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } else { parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; @@ -813,8 +803,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->item_offset = 0; } else if(c == '\r' || c == '\n') { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } else { parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; @@ -827,8 +817,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->item_length = 1; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; case PL_UNIX_SYMLINK_TARGET: @@ -841,8 +831,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->offsets.symlink_target = parser->item_offset; result = ftp_pl_insert_finfo(conn, infop); if(result) { - PL_ERROR(conn, result); - return bufflen; + parser->error = result; + goto fail; } parser->state.UNIX.main = PL_UNIX_FILETYPE; } @@ -853,14 +843,14 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->offsets.symlink_target = parser->item_offset; result = ftp_pl_insert_finfo(conn, infop); if(result) { - PL_ERROR(conn, result); - return bufflen; + parser->error = result; + goto fail; } parser->state.UNIX.main = PL_UNIX_FILETYPE; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -873,8 +863,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->item_length++; if(parser->item_length < 9) { if(!strchr("0123456789-", c)) { /* only simple control */ - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } else if(parser->item_length == 9) { @@ -883,13 +873,13 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->state.NT.sub.time = PL_WINNT_TIME_PRESPACE; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; case PL_WINNT_TIME: @@ -909,8 +899,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->item_length = 0; } else if(!strchr("APM0123456789:", c)) { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -940,8 +930,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, if(curlx_strtoofft(finfo->b_data + parser->item_offset, &endptr, 10, &finfo->size)) { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } /* correct file type */ parser->file_data->info.filetype = CURLFILETYPE_FILE; @@ -976,8 +966,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->offsets.filename = parser->item_offset; result = ftp_pl_insert_finfo(conn, infop); if(result) { - PL_ERROR(conn, result); - return bufflen; + parser->error = result; + goto fail; } parser->state.NT.main = PL_WINNT_DATE; parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; @@ -988,15 +978,15 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, parser->offsets.filename = parser->item_offset; result = ftp_pl_insert_finfo(conn, infop); if(result) { - PL_ERROR(conn, result); - return bufflen; + parser->error = result; + goto fail; } parser->state.NT.main = PL_WINNT_DATE; parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; } else { - PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST); - return bufflen; + parser->error = CURLE_FTP_BAD_FILE_LIST; + goto fail; } break; } @@ -1004,13 +994,22 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb, } break; default: - return bufflen + 1; + retsize = bufflen + 1; + goto fail; } i++; } - return bufflen; +fail: + + /* Clean up any allocated memory. */ + if(parser->file_data) { + Curl_fileinfo_dtor(NULL, parser->file_data); + parser->file_data = NULL; + } + + return retsize; } #endif /* CURL_DISABLE_FTP */ diff --git a/libraries/curl/lib/hostasyn.c b/libraries/curl/lib/hostasyn.c index 28bdf7a48..7b6e8568a 100644 --- a/libraries/curl/lib/hostasyn.c +++ b/libraries/curl/lib/hostasyn.c @@ -22,6 +22,11 @@ #include "curl_setup.h" +/*********************************************************************** + * Only for builds using asynchronous name resolves + **********************************************************************/ +#ifdef CURLRES_ASYNCH + #ifdef HAVE_NETINET_IN_H #include #endif @@ -51,11 +56,6 @@ /* The last #include file should be: */ #include "memdebug.h" -/*********************************************************************** - * Only for builds using asynchronous name resolves - **********************************************************************/ -#ifdef CURLRES_ASYNCH - /* * Curl_addrinfo_callback() gets called by ares, gethostbyname_thread() * or getaddrinfo_thread() when we got the name resolved (or not!). diff --git a/libraries/curl/lib/hostip.c b/libraries/curl/lib/hostip.c index 1a18a3ed7..7f010a037 100644 --- a/libraries/curl/lib/hostip.c +++ b/libraries/curl/lib/hostip.c @@ -688,8 +688,8 @@ clean_up: the time we spent until now! */ if(prev_alarm) { /* there was an alarm() set before us, now put it back */ - unsigned long elapsed_secs = (unsigned long) (Curl_tvdiff(Curl_tvnow(), - conn->created) / 1000); + timediff_t elapsed_secs = Curl_timediff(Curl_now(), + conn->created) / 1000; /* the alarm period is counted in even number of seconds */ unsigned long alarm_set = prev_alarm - elapsed_secs; @@ -778,7 +778,6 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data) { struct curl_slist *hostp; char hostname[256]; - char address[256]; int port; for(hostp = data->change.resolve; hostp; hostp = hostp->next) { @@ -820,6 +819,8 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data) Curl_addrinfo *addr; char *entry_id; size_t entry_len; + char buffer[256]; + char *address = &buffer[0]; if(3 != sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port, address)) { @@ -828,6 +829,16 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data) continue; } + /* allow IP(v6) address within [brackets] */ + if(address[0] == '[') { + size_t alen = strlen(address); + if(address[alen-1] != ']') + /* it needs to also end with ] to be valid */ + continue; + address[alen-1] = 0; /* zero terminate there */ + address++; /* pass the open bracket */ + } + addr = Curl_str2addr(address, port); if(!addr) { infof(data, "Address in '%s' found illegal!\n", hostp->data); diff --git a/libraries/curl/lib/hostip4.c b/libraries/curl/lib/hostip4.c index 6a7c6e576..9d6f115ae 100644 --- a/libraries/curl/lib/hostip4.c +++ b/libraries/curl/lib/hostip4.c @@ -22,6 +22,11 @@ #include "curl_setup.h" +/*********************************************************************** + * Only for plain IPv4 builds + **********************************************************************/ +#ifdef CURLRES_IPV4 /* plain IPv4 code coming up */ + #ifdef HAVE_NETINET_IN_H #include #endif @@ -53,10 +58,6 @@ #include "curl_memory.h" #include "memdebug.h" -/*********************************************************************** - * Only for plain IPv4 builds - **********************************************************************/ -#ifdef CURLRES_IPV4 /* plain IPv4 code coming up */ /* * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've * been set and returns TRUE if they are OK. diff --git a/libraries/curl/lib/hostip6.c b/libraries/curl/lib/hostip6.c index edeebec9e..7c9988f41 100644 --- a/libraries/curl/lib/hostip6.c +++ b/libraries/curl/lib/hostip6.c @@ -22,6 +22,11 @@ #include "curl_setup.h" +/*********************************************************************** + * Only for IPv6-enabled builds + **********************************************************************/ +#ifdef CURLRES_IPV6 + #ifdef HAVE_NETINET_IN_H #include #endif @@ -54,11 +59,6 @@ #include "curl_memory.h" #include "memdebug.h" -/*********************************************************************** - * Only for IPv6-enabled builds - **********************************************************************/ -#ifdef CURLRES_IPV6 - #if defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) /* These are strictly for memory tracing and are using the same style as the * family otherwise present in memdebug.c. I put these ones here since they diff --git a/libraries/curl/lib/hostsyn.c b/libraries/curl/lib/hostsyn.c index 1a95263c6..3de6746f5 100644 --- a/libraries/curl/lib/hostsyn.c +++ b/libraries/curl/lib/hostsyn.c @@ -22,6 +22,11 @@ #include "curl_setup.h" +/*********************************************************************** + * Only for builds using synchronous name resolves + **********************************************************************/ +#ifdef CURLRES_SYNCH + #ifdef HAVE_NETINET_IN_H #include #endif @@ -51,11 +56,6 @@ /* The last #include file should be: */ #include "memdebug.h" -/*********************************************************************** - * Only for builds using synchronous name resolves - **********************************************************************/ -#ifdef CURLRES_SYNCH - /* * Function provided by the resolver backend to set DNS servers to use. */ diff --git a/libraries/curl/lib/http.c b/libraries/curl/lib/http.c index 38227eb6c..def51abc3 100644 --- a/libraries/curl/lib/http.c +++ b/libraries/curl/lib/http.c @@ -73,7 +73,6 @@ #include "http_proxy.h" #include "warnless.h" #include "non-ascii.h" -#include "conncache.h" #include "pipeline.h" #include "http2.h" #include "connect.h" @@ -3104,7 +3103,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, !(conn->handler->protocol & CURLPROTO_RTSP) && data->set.httpreq != HTTPREQ_HEAD) { /* On HTTP 1.1, when connection is not to get closed, but no - Content-Length nor Content-Encoding chunked have been + Content-Length nor Transfer-Encoding chunked have been received, according to RFC2616 section 4.4 point 5, we assume that the server will close the connection to signal the end of the document. */ @@ -3387,12 +3386,14 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, } } else if(conn->handler->protocol & CURLPROTO_RTSP) { + char separator; nc = sscanf(HEADER1, - " RTSP/%d.%d %3d", + " RTSP/%1d.%1d%c%3d", &rtspversion_major, &conn->rtspversion, + &separator, &k->httpcode); - if(nc == 3) { + if((nc == 4) && (' ' == separator)) { conn->rtspversion += 10 * rtspversion_major; conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */ } @@ -3612,51 +3613,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, * of chunks, and a chunk-data set to zero signals the * end-of-chunks. */ - char *start; - - /* Find the first non-space letter */ - start = k->p + 18; - - for(;;) { - /* skip whitespaces and commas */ - while(*start && (ISSPACE(*start) || (*start == ','))) - start++; - - if(checkprefix("chunked", start)) { - k->chunk = TRUE; /* chunks coming our way */ - - /* init our chunky engine */ - Curl_httpchunk_init(conn); - - start += 7; - } - - if(k->auto_decoding) - /* TODO: we only support the first mentioned compression for now */ - break; - - if(checkprefix("identity", start)) { - k->auto_decoding = IDENTITY; - start += 8; - } - else if(checkprefix("deflate", start)) { - k->auto_decoding = DEFLATE; - start += 7; - } - else if(checkprefix("gzip", start)) { - k->auto_decoding = GZIP; - start += 4; - } - else if(checkprefix("x-gzip", start)) { - k->auto_decoding = GZIP; - start += 6; - } - else - /* unknown! */ - break; - - } - + result = Curl_build_unencoding_stack(conn, k->p + 18, TRUE); + if(result) + return result; } else if(checkprefix("Content-Encoding:", k->p) && data->set.str[STRING_ENCODING]) { @@ -3667,21 +3626,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, * 2616). zlib cannot handle compress. However, errors are * handled further down when the response body is processed */ - char *start; - - /* Find the first non-space letter */ - start = k->p + 17; - while(*start && ISSPACE(*start)) - start++; - - /* Record the content-encoding for later use */ - if(checkprefix("identity", start)) - k->auto_decoding = IDENTITY; - else if(checkprefix("deflate", start)) - k->auto_decoding = DEFLATE; - else if(checkprefix("gzip", start) - || checkprefix("x-gzip", start)) - k->auto_decoding = GZIP; + result = Curl_build_unencoding_stack(conn, k->p + 17, FALSE); + if(result) + return result; } else if(checkprefix("Content-Range:", k->p)) { /* Content-Range: bytes [num]- diff --git a/libraries/curl/lib/http2.c b/libraries/curl/lib/http2.c index 9a2a1dd55..8e2fc7199 100644 --- a/libraries/curl/lib/http2.c +++ b/libraries/curl/lib/http2.c @@ -32,7 +32,6 @@ #include "curl_base64.h" #include "strcase.h" #include "multiif.h" -#include "conncache.h" #include "url.h" #include "connect.h" #include "strtoofft.h" @@ -1184,14 +1183,17 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req, httpc->local_settings_num); if(!binlen) { failf(conn->data, "nghttp2 unexpectedly failed on pack_settings_payload"); + Curl_add_buffer_free(req); return CURLE_FAILED_INIT; } conn->proto.httpc.binlen = binlen; result = Curl_base64url_encode(conn->data, (const char *)binsettings, binlen, &base64, &blen); - if(result) + if(result) { + Curl_add_buffer_free(req); return result; + } result = Curl_add_bufferf(req, "Connection: Upgrade, HTTP2-Settings\r\n" @@ -1846,9 +1848,6 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex, goto fail; } - hdbuf = end + 1; - - end = line_end; nva[2].name = (unsigned char *)":scheme"; nva[2].namelen = strlen((char *)nva[2].name); if(conn->handler->flags & PROTOPT_SSL) diff --git a/libraries/curl/lib/http_chunks.c b/libraries/curl/lib/http_chunks.c index 92d773112..161642969 100644 --- a/libraries/curl/lib/http_chunks.c +++ b/libraries/curl/lib/http_chunks.c @@ -187,49 +187,17 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, piece = curlx_sotouz((ch->datasize >= length)?length:ch->datasize); /* Write the data portion available */ -#ifdef HAVE_LIBZ - switch(conn->data->set.http_ce_skip? - IDENTITY : data->req.auto_decoding) { - case IDENTITY: -#endif - if(!k->ignorebody) { - if(!data->set.http_te_skip) - result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, - piece); - else - result = CURLE_OK; - } -#ifdef HAVE_LIBZ - break; - - case DEFLATE: - /* update data->req.keep.str to point to the chunk data. */ - data->req.str = datap; - result = Curl_unencode_deflate_write(conn, &data->req, - (ssize_t)piece); - break; - - case GZIP: - /* update data->req.keep.str to point to the chunk data. */ - data->req.str = datap; - result = Curl_unencode_gzip_write(conn, &data->req, - (ssize_t)piece); - break; - - default: - failf(conn->data, - "Unrecognized content encoding type. " - "libcurl understands `identity', `deflate' and `gzip' " - "content encodings."); - return CHUNKE_BAD_ENCODING; + if(conn->data->set.http_ce_skip || !k->writer_stack) { + if(!k->ignorebody) + result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, piece); } -#endif + else + result = Curl_unencode_write(conn, k->writer_stack, datap, piece); if(result) return CHUNKE_WRITE_ERROR; *wrote += piece; - ch->datasize -= piece; /* decrease amount left to expect */ datap += piece; /* move read pointer forward */ length -= piece; /* decrease space left in this round */ diff --git a/libraries/curl/lib/http_proxy.c b/libraries/curl/lib/http_proxy.c index dff9d230a..0283c1f3f 100644 --- a/libraries/curl/lib/http_proxy.c +++ b/libraries/curl/lib/http_proxy.c @@ -188,7 +188,7 @@ static CURLcode CONNECT(struct connectdata *conn, CURLcode result; curl_socket_t tunnelsocket = conn->sock[sockindex]; bool closeConnection = FALSE; - time_t check; + timediff_t check; struct http_connect_state *s = conn->connect_state; #define SELECT_OK 0 diff --git a/libraries/curl/lib/imap.c b/libraries/curl/lib/imap.c index 954d18f37..1b52f73a4 100644 --- a/libraries/curl/lib/imap.c +++ b/libraries/curl/lib/imap.c @@ -275,15 +275,15 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len, case IMAP_LIST: if((!imap->custom && !imap_matchresp(line, len, "LIST")) || (imap->custom && !imap_matchresp(line, len, imap->custom) && - (strcmp(imap->custom, "STORE") || + (!strcasecompare(imap->custom, "STORE") || !imap_matchresp(line, len, "FETCH")) && - strcmp(imap->custom, "SELECT") && - strcmp(imap->custom, "EXAMINE") && - strcmp(imap->custom, "SEARCH") && - strcmp(imap->custom, "EXPUNGE") && - strcmp(imap->custom, "LSUB") && - strcmp(imap->custom, "UID") && - strcmp(imap->custom, "NOOP"))) + !strcasecompare(imap->custom, "SELECT") && + !strcasecompare(imap->custom, "EXAMINE") && + !strcasecompare(imap->custom, "SEARCH") && + !strcasecompare(imap->custom, "EXPUNGE") && + !strcasecompare(imap->custom, "LSUB") && + !strcasecompare(imap->custom, "UID") && + !strcasecompare(imap->custom, "NOOP"))) return FALSE; break; @@ -1053,7 +1053,7 @@ static CURLcode imap_state_select_resp(struct connectdata *conn, int imapcode, else if(imapcode == IMAP_RESP_OK) { /* Check if the UIDVALIDITY has been specified and matches */ if(imap->uidvalidity && imapc->mailbox_uidvalidity && - strcmp(imap->uidvalidity, imapc->mailbox_uidvalidity)) { + !strcasecompare(imap->uidvalidity, imapc->mailbox_uidvalidity)) { failf(conn->data, "Mailbox UIDVALIDITY has changed"); result = CURLE_REMOTE_FILE_NOT_FOUND; } @@ -1126,6 +1126,11 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode, /* The conversion from curl_off_t to size_t is always fine here */ chunk = (size_t)size; + if(!chunk) { + /* no size, we're done with the data */ + state(conn, IMAP_STOP); + return CURLE_OK; + } result = Curl_client_write(conn, CLIENTWRITE_BODY, pp->cache, chunk); if(result) return result; @@ -1521,9 +1526,9 @@ static CURLcode imap_perform(struct connectdata *conn, bool *connected, /* Determine if the requested mailbox (with the same UIDVALIDITY if set) has already been selected on this connection */ if(imap->mailbox && imapc->mailbox && - !strcmp(imap->mailbox, imapc->mailbox) && + strcasecompare(imap->mailbox, imapc->mailbox) && (!imap->uidvalidity || !imapc->mailbox_uidvalidity || - !strcmp(imap->uidvalidity, imapc->mailbox_uidvalidity))) + strcasecompare(imap->uidvalidity, imapc->mailbox_uidvalidity))) selected = TRUE; /* Start the first command in the DO phase */ diff --git a/libraries/curl/lib/ldap.c b/libraries/curl/lib/ldap.c index 040641cf8..89047bcbd 100644 --- a/libraries/curl/lib/ldap.c +++ b/libraries/curl/lib/ldap.c @@ -190,9 +190,11 @@ static int ldap_win_bind_auth(LDAP *server, const char *user, const char *passwd, unsigned long authflags) { ULONG method = 0; - SEC_WINNT_AUTH_IDENTITY cred = { 0, }; + SEC_WINNT_AUTH_IDENTITY cred; int rc = LDAP_AUTH_METHOD_NOT_SUPPORTED; + memset(&cred, 0, sizeof(cred)); + #if defined(USE_SPNEGO) if(authflags & CURLAUTH_NEGOTIATE) { method = LDAP_AUTH_NEGOTIATE; diff --git a/libraries/curl/lib/libcurl.plist b/libraries/curl/lib/libcurl.plist index 9803f71b9..622f66cfb 100644 --- a/libraries/curl/lib/libcurl.plist +++ b/libraries/curl/lib/libcurl.plist @@ -15,7 +15,7 @@ se.haxx.curl.libcurl CFBundleVersion - 7.56.0 + 7.12.3 CFBundleName libcurl @@ -27,9 +27,9 @@ ???? CFBundleShortVersionString - libcurl 7.56.0 + libcurl 7.12.3 CFBundleGetInfoString - libcurl.plist 7.56.0 + libcurl.plist 7.12.3 diff --git a/libraries/curl/lib/llist.c b/libraries/curl/lib/llist.c index 4bb0a51b8..f8769c2af 100644 --- a/libraries/curl/lib/llist.c +++ b/libraries/curl/lib/llist.c @@ -106,7 +106,11 @@ Curl_llist_remove(struct curl_llist *list, struct curl_llist_element *e, e->next->prev = NULL; } else { - e->prev->next = e->next; + if(!e->prev) + list->head = e->next; + else + e->prev->next = e->next; + if(!e->next) list->tail = e->prev; else diff --git a/libraries/curl/lib/memdebug.c b/libraries/curl/lib/memdebug.c index 0eb249ce9..2b81c26a6 100644 --- a/libraries/curl/lib/memdebug.c +++ b/libraries/curl/lib/memdebug.c @@ -343,7 +343,12 @@ curl_socket_t curl_socket(int domain, int type, int protocol, "FD %s:%d socket() = %ld\n" : "FD %s:%d socket() = %zd\n"; - curl_socket_t sockfd = socket(domain, type, protocol); + curl_socket_t sockfd; + + if(countcheck("socket", line, source)) + return CURL_SOCKET_BAD; + + sockfd = socket(domain, type, protocol); if(source && (sockfd != CURL_SOCKET_BAD)) curl_memlog(fmt, source, line, sockfd); @@ -351,6 +356,35 @@ curl_socket_t curl_socket(int domain, int type, int protocol, return sockfd; } +SEND_TYPE_RETV curl_dosend(SEND_TYPE_ARG1 sockfd, + SEND_QUAL_ARG2 SEND_TYPE_ARG2 buf, + SEND_TYPE_ARG3 len, SEND_TYPE_ARG4 flags, int line, + const char *source) +{ + SEND_TYPE_RETV rc; + if(countcheck("send", line, source)) + return -1; + rc = send(sockfd, buf, len, flags); + if(source) + curl_memlog("SEND %s:%d send(%lu) = %ld\n", + source, line, (unsigned long)len, (long)rc); + return rc; +} + +RECV_TYPE_RETV curl_dorecv(RECV_TYPE_ARG1 sockfd, RECV_TYPE_ARG2 buf, + RECV_TYPE_ARG3 len, RECV_TYPE_ARG4 flags, int line, + const char *source) +{ + RECV_TYPE_RETV rc; + if(countcheck("recv", line, source)) + return -1; + rc = recv(sockfd, buf, len, flags); + if(source) + curl_memlog("RECV %s:%d recv(%lu) = %ld\n", + source, line, (unsigned long)len, (long)rc); + return rc; +} + #ifdef HAVE_SOCKETPAIR int curl_socketpair(int domain, int type, int protocol, curl_socket_t socket_vector[2], diff --git a/libraries/curl/lib/memdebug.h b/libraries/curl/lib/memdebug.h index 835dab38c..6fb8b6851 100644 --- a/libraries/curl/lib/memdebug.h +++ b/libraries/curl/lib/memdebug.h @@ -8,7 +8,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -66,6 +66,17 @@ CURL_EXTERN int curl_socketpair(int domain, int type, int protocol, int line, const char *source); #endif +/* send/receive sockets */ +CURL_EXTERN SEND_TYPE_RETV curl_dosend(SEND_TYPE_ARG1 sockfd, + SEND_QUAL_ARG2 SEND_TYPE_ARG2 buf, + SEND_TYPE_ARG3 len, + SEND_TYPE_ARG4 flags, int line, + const char *source); +CURL_EXTERN RECV_TYPE_RETV curl_dorecv(RECV_TYPE_ARG1 sockfd, + RECV_TYPE_ARG2 buf, RECV_TYPE_ARG3 len, + RECV_TYPE_ARG4 flags, int line, + const char *source); + /* FILE functions */ CURL_EXTERN FILE *curl_fopen(const char *file, const char *mode, int line, const char *source); @@ -84,6 +95,8 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source); #define calloc(nbelem,size) curl_docalloc(nbelem, size, __LINE__, __FILE__) #define realloc(ptr,size) curl_dorealloc(ptr, size, __LINE__, __FILE__) #define free(ptr) curl_dofree(ptr, __LINE__, __FILE__) +#define send(a,b,c,d) curl_dosend(a,b,c,d, __LINE__, __FILE__) +#define recv(a,b,c,d) curl_dorecv(a,b,c,d, __LINE__, __FILE__) #ifdef WIN32 # ifdef UNICODE diff --git a/libraries/curl/lib/mk-ca-bundle.pl b/libraries/curl/lib/mk-ca-bundle.pl index cc36c7680..dcfec0bb6 100644 --- a/libraries/curl/lib/mk-ca-bundle.pl +++ b/libraries/curl/lib/mk-ca-bundle.pl @@ -47,11 +47,9 @@ eval "require LWP::UserAgent"; my %urls = ( 'nss' => - 'https://hg.mozilla.org/projects/nss/raw-file/tip/lib/ckfw/builtins/certdata.txt', + 'https://hg.mozilla.org/projects/nss/raw-file/default/lib/ckfw/builtins/certdata.txt', 'central' => 'https://hg.mozilla.org/mozilla-central/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt', - 'aurora' => - 'https://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt', 'beta' => 'https://hg.mozilla.org/releases/mozilla-beta/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt', 'release' => diff --git a/libraries/curl/lib/multi.c b/libraries/curl/lib/multi.c index 70aa6bcf9..9728e5a2f 100644 --- a/libraries/curl/lib/multi.c +++ b/libraries/curl/lib/multi.c @@ -59,7 +59,9 @@ #define CURL_SOCKET_HASH_TABLE_SIZE 911 #endif +#ifndef CURL_CONNECTION_HASH_SIZE #define CURL_CONNECTION_HASH_SIZE 97 +#endif #define CURL_MULTI_HANDLE 0x000bab1e @@ -324,14 +326,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */ Curl_llist_init(&multi->msglist, multi_freeamsg); Curl_llist_init(&multi->pending, multi_freeamsg); - /* allocate a new easy handle to use when closing cached connections */ - multi->closure_handle = curl_easy_init(); - if(!multi->closure_handle) - goto error; - - multi->closure_handle->multi = multi; - multi->closure_handle->state.conn_cache = &multi->conn_cache; - multi->max_pipeline_length = 5; /* -1 means it not set by user, use the default value */ @@ -343,8 +337,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */ Curl_hash_destroy(&multi->sockhash); Curl_hash_destroy(&multi->hostcache); Curl_conncache_destroy(&multi->conn_cache); - Curl_close(multi->closure_handle); - multi->closure_handle = NULL; Curl_llist_destroy(&multi->msglist, NULL); Curl_llist_destroy(&multi->pending, NULL); @@ -405,8 +397,11 @@ CURLMcode curl_multi_add_handle(struct Curl_multi *multi, data->dns.hostcachetype = HCACHE_MULTI; } - /* Point to the multi's connection cache */ - data->state.conn_cache = &multi->conn_cache; + /* Point to the shared or multi handle connection cache */ + if(data->share && (data->share->specifier & (1<< CURL_LOCK_DATA_CONNECT))) + data->state.conn_cache = &data->share->conn_cache; + else + data->state.conn_cache = &multi->conn_cache; /* This adds the new entry at the 'end' of the doubly-linked circular list of Curl_easy structs to try and maintain a FIFO queue so @@ -460,8 +455,8 @@ CURLMcode curl_multi_add_handle(struct Curl_multi *multi, state somewhat we clone the timeouts from each added handle so that the closure handle always has the same timeouts as the most recently added easy handle. */ - multi->closure_handle->set.timeout = data->set.timeout; - multi->closure_handle->set.server_response_timeout = + data->state.conn_cache->closure_handle->set.timeout = data->set.timeout; + data->state.conn_cache->closure_handle->set.server_response_timeout = data->set.server_response_timeout; update_timer(multi); @@ -502,7 +497,7 @@ ConnectionDone(struct Curl_easy *data, struct connectdata *conn) data->state.conn_cache->num_connections > maxconnects) { infof(data, "Connection cache is full, closing the oldest one.\n"); - conn_candidate = Curl_oldest_idle_connection(data); + conn_candidate = Curl_conncache_oldest_idle(data); if(conn_candidate) { /* Set the connection's owner correctly */ @@ -705,12 +700,6 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi, curl_easy_cleanup is called. */ Curl_expire_clear(data); - if(data->dns.hostcachetype == HCACHE_MULTI) { - /* stop using the multi handle's DNS cache */ - data->dns.hostcache = NULL; - data->dns.hostcachetype = HCACHE_NONE; - } - if(data->easy_conn) { /* we must call multi_done() here (if we still own the connection) so that @@ -729,6 +718,13 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi, Curl_getoff_all_pipelines(data, data->easy_conn); } + if(data->dns.hostcachetype == HCACHE_MULTI) { + /* stop using the multi handle's DNS cache, *after* the possible + multi_done() call above */ + data->dns.hostcache = NULL; + data->dns.hostcachetype = HCACHE_NONE; + } + Curl_wildcard_dtor(&data->wildcard); /* destroy the timeout list that is held in the easy handle, do this *after* @@ -1315,7 +1311,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, struct SingleRequest *k; time_t timeout_ms; time_t recv_timeout_ms; - time_t send_timeout_ms; + timediff_t send_timeout_ms; int control; if(!GOOD_EASY_HANDLE(data)) @@ -1379,23 +1375,23 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, /* Handle timed out */ if(data->mstate == CURLM_STATE_WAITRESOLVE) failf(data, "Resolving timed out after %ld milliseconds", - Curl_tvdiff(now, data->progress.t_startsingle)); + Curl_timediff(now, data->progress.t_startsingle)); else if(data->mstate == CURLM_STATE_WAITCONNECT) failf(data, "Connection timed out after %ld milliseconds", - Curl_tvdiff(now, data->progress.t_startsingle)); + Curl_timediff(now, data->progress.t_startsingle)); else { k = &data->req; if(k->size != -1) { failf(data, "Operation timed out after %ld milliseconds with %" CURL_FORMAT_CURL_OFF_T " out of %" CURL_FORMAT_CURL_OFF_T " bytes received", - Curl_tvdiff(now, data->progress.t_startsingle), + Curl_timediff(now, data->progress.t_startsingle), k->bytecount, k->size); } else { failf(data, "Operation timed out after %ld milliseconds with %" CURL_FORMAT_CURL_OFF_T " bytes received", - Curl_tvdiff(now, data->progress.t_startsingle), + Curl_timediff(now, data->progress.t_startsingle), k->bytecount); } } @@ -1660,7 +1656,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, if(!result) { if(!dophase_done) { /* some steps needed for wildcard matching */ - if(data->set.wildcardmatch) { + if(data->state.wildcardmatch) { struct WildcardData *wc = &data->wildcard; if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) { /* skip some states if it is important */ @@ -1812,7 +1808,13 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, (data->easy_conn->writesockfd != CURL_SOCKET_BAD)) multistate(data, CURLM_STATE_WAITPERFORM); else + { + if(data->state.wildcardmatch && + ((data->easy_conn->handler->flags & PROTOPT_WILDCARD) == 0)) { + data->wildcard.state = CURLWC_DONE; + } multistate(data, CURLM_STATE_DONE); + } rc = CURLM_CALL_MULTI_PERFORM; break; @@ -2029,7 +2031,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, data->easy_conn = NULL; } - if(data->set.wildcardmatch) { + if(data->state.wildcardmatch) { if(data->wildcard.state != CURLWC_DONE) { /* if a wildcard is set and we are not ending -> lets start again with CURLM_STATE_INIT */ @@ -2146,7 +2148,7 @@ CURLMcode curl_multi_perform(struct Curl_multi *multi, int *running_handles) struct Curl_easy *data; CURLMcode returncode = CURLM_OK; struct Curl_tree *t; - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); if(!GOOD_MULTI_HANDLE(multi)) return CURLM_BAD_HANDLE; @@ -2192,61 +2194,21 @@ CURLMcode curl_multi_perform(struct Curl_multi *multi, int *running_handles) return returncode; } -static void close_all_connections(struct Curl_multi *multi) -{ - struct connectdata *conn; - - conn = Curl_conncache_find_first_connection(&multi->conn_cache); - while(conn) { - SIGPIPE_VARIABLE(pipe_st); - conn->data = multi->closure_handle; - - sigpipe_ignore(conn->data, &pipe_st); - conn->data->easy_conn = NULL; /* clear the easy handle's connection - pointer */ - /* This will remove the connection from the cache */ - connclose(conn, "kill all"); - (void)Curl_disconnect(conn, FALSE); - sigpipe_restore(&pipe_st); - - conn = Curl_conncache_find_first_connection(&multi->conn_cache); - } -} - CURLMcode curl_multi_cleanup(struct Curl_multi *multi) { struct Curl_easy *data; struct Curl_easy *nextdata; if(GOOD_MULTI_HANDLE(multi)) { - bool restore_pipe = FALSE; - SIGPIPE_VARIABLE(pipe_st); - multi->type = 0; /* not good anymore */ - /* Close all the connections in the connection cache */ - close_all_connections(multi); - - if(multi->closure_handle) { - sigpipe_ignore(multi->closure_handle, &pipe_st); - restore_pipe = TRUE; - - multi->closure_handle->dns.hostcache = &multi->hostcache; - Curl_hostcache_clean(multi->closure_handle, - multi->closure_handle->dns.hostcache); - - Curl_close(multi->closure_handle); - } - - Curl_hash_destroy(&multi->sockhash); - Curl_conncache_destroy(&multi->conn_cache); - Curl_llist_destroy(&multi->msglist, NULL); - Curl_llist_destroy(&multi->pending, NULL); - - /* remove all easy handles */ + /* Firsrt remove all remaining easy handles */ data = multi->easyp; while(data) { nextdata = data->next; + if(!data->state.done && data->easy_conn) + /* if DONE was never called for this handle */ + (void)multi_done(&data->easy_conn, CURLE_OK, TRUE); if(data->dns.hostcachetype == HCACHE_MULTI) { /* clear out the usage of the shared DNS cache */ Curl_hostcache_clean(data, data->dns.hostcache); @@ -2261,6 +2223,14 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi) data = nextdata; } + /* Close all the connections in the connection cache */ + Curl_conncache_close_all_connections(&multi->conn_cache); + + Curl_hash_destroy(&multi->sockhash); + Curl_conncache_destroy(&multi->conn_cache); + Curl_llist_destroy(&multi->msglist, NULL); + Curl_llist_destroy(&multi->pending, NULL); + Curl_hash_destroy(&multi->hostcache); /* Free the blacklists by setting them to NULL */ @@ -2268,8 +2238,6 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi) Curl_pipeline_set_server_blacklist(NULL, &multi->pipelining_server_bl); free(multi); - if(restore_pipe) - sigpipe_restore(&pipe_st); return CURLM_OK; } @@ -2510,9 +2478,9 @@ static CURLMcode add_next_timeout(struct curltime now, timeout in *tv */ for(e = list->head; e;) { struct curl_llist_element *n = e->next; - time_t diff; + timediff_t diff; node = (struct time_node *)e->ptr; - diff = curlx_tvdiff(node->time, now); + diff = Curl_timediff(node->time, now); if(diff <= 0) /* remove outdated entry */ Curl_llist_remove(list, e, NULL); @@ -2549,7 +2517,7 @@ static CURLMcode multi_socket(struct Curl_multi *multi, CURLMcode result = CURLM_OK; struct Curl_easy *data = NULL; struct Curl_tree *t; - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); if(checkall) { /* *perform() deals with running_handles on its own */ @@ -2625,8 +2593,8 @@ static CURLMcode multi_socket(struct Curl_multi *multi, data = NULL; /* set data to NULL again to avoid calling multi_runsingle() in case there's no need to */ - now = Curl_tvnow(); /* get a newer time since the multi_runsingle() loop - may have taken some time */ + now = Curl_now(); /* get a newer time since the multi_runsingle() loop + may have taken some time */ } } else { @@ -2779,15 +2747,15 @@ static CURLMcode multi_timeout(struct Curl_multi *multi, if(multi->timetree) { /* we have a tree of expire times */ - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); /* splay the lowest to the bottom */ multi->timetree = Curl_splay(tv_zero, multi->timetree); if(Curl_splaycomparekeys(multi->timetree->key, now) > 0) { /* some time left before expiration */ - *timeout_ms = (long)curlx_tvdiff(multi->timetree->key, now); - if(!*timeout_ms) + timediff_t diff = Curl_timediff(multi->timetree->key, now); + if(diff <= 0) /* * Since we only provide millisecond resolution on the returned value * and the diff might be less than one millisecond here, we don't @@ -2796,6 +2764,10 @@ static CURLMcode multi_timeout(struct Curl_multi *multi, * millisecond! instead we return 1 until the time is ripe. */ *timeout_ms = 1; + else + /* this should be safe even on 64 bit archs, as we don't use that + overly long timeouts */ + *timeout_ms = (long)diff; } else /* 0 means immediately */ @@ -2902,7 +2874,7 @@ multi_addtimeout(struct Curl_easy *data, /* find the correct spot in the list */ for(e = timeoutlist->head; e; e = e->next) { struct time_node *check = (struct time_node *)e->ptr; - time_t diff = curlx_tvdiff(check->time, node->time); + timediff_t diff = Curl_timediff(check->time, node->time); if(diff > 0) break; prev = e; @@ -2941,7 +2913,7 @@ void Curl_expire(struct Curl_easy *data, time_t milli, expire_id id) DEBUGASSERT(id < EXPIRE_LAST); - set = Curl_tvnow(); + set = Curl_now(); set.tv_sec += milli/1000; set.tv_usec += (unsigned int)(milli%1000)*1000; @@ -2961,7 +2933,7 @@ void Curl_expire(struct Curl_easy *data, time_t milli, expire_id id) /* This means that the struct is added as a node in the splay tree. Compare if the new time is earlier, and only remove-old/add-new if it is. */ - time_t diff = curlx_tvdiff(set, *nowp); + timediff_t diff = Curl_timediff(set, *nowp); if(diff > 0) { /* The current splay tree entry is sooner than this new expiry time. diff --git a/libraries/curl/lib/multihandle.h b/libraries/curl/lib/multihandle.h index 405753947..de9a7cf59 100644 --- a/libraries/curl/lib/multihandle.h +++ b/libraries/curl/lib/multihandle.h @@ -114,10 +114,6 @@ struct Curl_multi { /* Shared connection cache (bundles)*/ struct conncache conn_cache; - /* This handle will be used for closing the cached connections in - curl_multi_cleanup() */ - struct Curl_easy *closure_handle; - long maxconnects; /* if >0, a fixed limit of the maximum number of entries we're allowed to grow the connection cache to */ diff --git a/libraries/curl/lib/openldap.c b/libraries/curl/lib/openldap.c index f2944033b..ac356d098 100644 --- a/libraries/curl/lib/openldap.c +++ b/libraries/curl/lib/openldap.c @@ -677,7 +677,7 @@ ldapsb_tls_read(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len) ber_slen_t ret; CURLcode err = CURLE_RECV_ERROR; - ret = li->recv(conn, FIRSTSOCKET, buf, len, &err); + ret = (li->recv)(conn, FIRSTSOCKET, buf, len, &err); if(ret < 0 && err == CURLE_AGAIN) { SET_SOCKERRNO(EWOULDBLOCK); } @@ -692,7 +692,7 @@ ldapsb_tls_write(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len) ber_slen_t ret; CURLcode err = CURLE_SEND_ERROR; - ret = li->send(conn, FIRSTSOCKET, buf, len, &err); + ret = (li->send)(conn, FIRSTSOCKET, buf, len, &err); if(ret < 0 && err == CURLE_AGAIN) { SET_SOCKERRNO(EWOULDBLOCK); } diff --git a/libraries/curl/lib/pingpong.c b/libraries/curl/lib/pingpong.c index b8f214005..438856a99 100644 --- a/libraries/curl/lib/pingpong.c +++ b/libraries/curl/lib/pingpong.c @@ -61,12 +61,12 @@ time_t Curl_pp_state_timeout(struct pingpong *pp) /* Without a requested timeout, we only wait 'response_time' seconds for the full response to arrive before we bail out */ timeout_ms = response_time - - Curl_tvdiff(Curl_tvnow(), pp->response); /* spent time */ + Curl_timediff(Curl_now(), pp->response); /* spent time */ if(data->set.timeout) { /* if timeout is requested, find out how much remaining time we have */ timeout2_ms = data->set.timeout - /* timeout time */ - Curl_tvdiff(Curl_tvnow(), conn->now); /* spent time */ + Curl_timediff(Curl_now(), conn->now); /* spent time */ /* pick the lowest number */ timeout_ms = CURLMIN(timeout_ms, timeout2_ms); @@ -120,7 +120,7 @@ CURLcode Curl_pp_statemach(struct pingpong *pp, bool block) if(Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; else - result = Curl_speedcheck(data, Curl_tvnow()); + result = Curl_speedcheck(data, Curl_now()); if(result) return result; @@ -143,7 +143,7 @@ void Curl_pp_init(struct pingpong *pp) pp->nread_resp = 0; pp->linestart_resp = conn->data->state.buffer; pp->pending_resp = TRUE; - pp->response = Curl_tvnow(); /* start response time-out now! */ + pp->response = Curl_now(); /* start response time-out now! */ } @@ -168,16 +168,22 @@ CURLcode Curl_pp_vsendf(struct pingpong *pp, char *s; CURLcode result; struct connectdata *conn = pp->conn; - struct Curl_easy *data = conn->data; + struct Curl_easy *data; #ifdef HAVE_GSSAPI - enum protection_level data_sec = conn->data_prot; + enum protection_level data_sec; #endif DEBUGASSERT(pp->sendleft == 0); DEBUGASSERT(pp->sendsize == 0); DEBUGASSERT(pp->sendthis == NULL); + if(!conn) + /* can't send without a connection! */ + return CURLE_SEND_ERROR; + + data = conn->data; + fmt_crlf = aprintf("%s\r\n", fmt); /* append a trailing CRLF */ if(!fmt_crlf) return CURLE_OUT_OF_MEMORY; @@ -205,6 +211,7 @@ CURLcode Curl_pp_vsendf(struct pingpong *pp, result = Curl_write(conn, conn->sock[FIRSTSOCKET], s, write_len, &bytes_written); #ifdef HAVE_GSSAPI + data_sec = conn->data_prot; DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST); conn->data_prot = data_sec; #endif @@ -228,7 +235,7 @@ CURLcode Curl_pp_vsendf(struct pingpong *pp, free(s); pp->sendthis = NULL; pp->sendleft = pp->sendsize = 0; - pp->response = Curl_tvnow(); + pp->response = Curl_now(); } return CURLE_OK; @@ -492,7 +499,7 @@ CURLcode Curl_pp_flushsend(struct pingpong *pp) free(pp->sendthis); pp->sendthis = NULL; pp->sendleft = pp->sendsize = 0; - pp->response = Curl_tvnow(); + pp->response = Curl_now(); } return CURLE_OK; } diff --git a/libraries/curl/lib/pingpong.h b/libraries/curl/lib/pingpong.h index a2c8ff592..5ac8df876 100644 --- a/libraries/curl/lib/pingpong.h +++ b/libraries/curl/lib/pingpong.h @@ -58,8 +58,8 @@ struct pingpong { server */ size_t sendleft; /* number of bytes left to send from the sendthis buffer */ size_t sendsize; /* total size of the sendthis buffer */ - struct curltime response; /* set to Curl_tvnow() when a command has been sent - off, used to time-out response reading */ + struct curltime response; /* set to Curl_now() when a command has been sent + off, used to time-out response reading */ long response_time; /* When no timeout is given, this is the amount of milliseconds we await for a server response. */ diff --git a/libraries/curl/lib/progress.c b/libraries/curl/lib/progress.c index 00609d9ee..72c518a14 100644 --- a/libraries/curl/lib/progress.c +++ b/libraries/curl/lib/progress.c @@ -161,7 +161,7 @@ void Curl_pgrsResetTransferSizes(struct Curl_easy *data) */ void Curl_pgrsTime(struct Curl_easy *data, timerid timer) { - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); time_t *delta = NULL; switch(timer) { @@ -212,13 +212,13 @@ void Curl_pgrsTime(struct Curl_easy *data, timerid timer) /* this is the normal end-of-transfer thing */ break; case TIMER_REDIRECT: - data->progress.t_redirect = Curl_tvdiff_us(now, data->progress.start); + data->progress.t_redirect = Curl_timediff_us(now, data->progress.start); break; } if(delta) { - time_t us = Curl_tvdiff_us(now, data->progress.t_startsingle); - if(!us) - us++; /* make sure at least one microsecond passed */ + timediff_t us = Curl_timediff_us(now, data->progress.t_startsingle); + if(us < 1) + us = 1; /* make sure at least one microsecond passed */ *delta += us; } } @@ -226,7 +226,7 @@ void Curl_pgrsTime(struct Curl_easy *data, timerid timer) void Curl_pgrsStartNow(struct Curl_easy *data) { data->progress.speeder_c = 0; /* reset the progress meter display */ - data->progress.start = Curl_tvnow(); + data->progress.start = Curl_now(); data->progress.is_t_startransfer_set = false; data->progress.ul_limit_start.tv_sec = 0; data->progress.ul_limit_start.tv_usec = 0; @@ -274,7 +274,7 @@ long Curl_pgrsLimitWaitTime(curl_off_t cursize, return -1; minimum = (time_t) (CURL_OFF_T_C(1000) * size / limit); - actual = Curl_tvdiff(now, start); + actual = Curl_timediff(now, start); if(actual < minimum) /* this is a conversion on some systems (64bit time_t => 32bit long) */ @@ -285,7 +285,7 @@ long Curl_pgrsLimitWaitTime(curl_off_t cursize, void Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size) { - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); data->progress.downloaded = size; @@ -303,7 +303,7 @@ void Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size) void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size) { - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); data->progress.uploaded = size; @@ -370,10 +370,10 @@ int Curl_pgrsUpdate(struct connectdata *conn) curl_off_t total_estimate; bool shownow = FALSE; - now = Curl_tvnow(); /* what time is it */ + now = Curl_now(); /* what time is it */ /* The time spent so far (from the start) */ - data->progress.timespent = Curl_tvdiff_us(now, data->progress.start); + data->progress.timespent = Curl_timediff_us(now, data->progress.start); timespent = (curl_off_t)data->progress.timespent/1000000; /* seconds */ /* The average download speed this far */ @@ -413,7 +413,7 @@ int Curl_pgrsUpdate(struct connectdata *conn) /* first of all, we don't do this if there's no counted seconds yet */ if(countindex) { - time_t span_ms; + timediff_t span_ms; /* Get the index position to compare with the 'nowindex' position. Get the oldest entry possible. While we have less than CURR_TIME @@ -422,8 +422,8 @@ int Curl_pgrsUpdate(struct connectdata *conn) data->progress.speeder_c%CURR_TIME:0; /* Figure out the exact time for the time span */ - span_ms = Curl_tvdiff(now, - data->progress.speeder_time[checkindex]); + span_ms = Curl_timediff(now, + data->progress.speeder_time[checkindex]); if(0 == span_ms) span_ms = 1; /* at least one millisecond MUST have passed */ diff --git a/libraries/curl/lib/select.c b/libraries/curl/lib/select.c index f6fecaf51..28390a4a6 100644 --- a/libraries/curl/lib/select.c +++ b/libraries/curl/lib/select.c @@ -51,7 +51,7 @@ #include "warnless.h" /* Convenience local macros */ -#define ELAPSED_MS() (int)curlx_tvdiff(curlx_tvnow(), initial_tv) +#define ELAPSED_MS() (int)Curl_timediff(Curl_now(), initial_tv) int Curl_ack_eintr = 0; #define ERROR_NOT_EINTR(error) (Curl_ack_eintr || error != EINTR) @@ -96,7 +96,7 @@ int Curl_wait_ms(int timeout_ms) Sleep(timeout_ms); #else pending_ms = timeout_ms; - initial_tv = curlx_tvnow(); + initial_tv = Curl_now(); do { #if defined(HAVE_POLL_FINE) r = poll(NULL, 0, pending_ms); @@ -177,14 +177,14 @@ int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */ return r; } - /* Avoid initial timestamp, avoid curlx_tvnow() call, when elapsed + /* Avoid initial timestamp, avoid Curl_now() call, when elapsed time in this function does not need to be measured. This happens when function is called with a zero timeout or a negative timeout value indicating a blocking call should be performed. */ if(timeout_ms > 0) { pending_ms = (int)timeout_ms; - initial_tv = curlx_tvnow(); + initial_tv = Curl_now(); } #ifdef HAVE_POLL_FINE @@ -418,14 +418,14 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) return r; } - /* Avoid initial timestamp, avoid curlx_tvnow() call, when elapsed + /* Avoid initial timestamp, avoid Curl_now() call, when elapsed time in this function does not need to be measured. This happens when function is called with a zero timeout or a negative timeout value indicating a blocking call should be performed. */ if(timeout_ms > 0) { pending_ms = timeout_ms; - initial_tv = curlx_tvnow(); + initial_tv = Curl_now(); } #ifdef HAVE_POLL_FINE diff --git a/libraries/curl/lib/sendf.c b/libraries/curl/lib/sendf.c index 7564cb3d0..cbdb233fd 100644 --- a/libraries/curl/lib/sendf.c +++ b/libraries/curl/lib/sendf.c @@ -241,25 +241,25 @@ void Curl_infof(struct Curl_easy *data, const char *fmt, ...) void Curl_failf(struct Curl_easy *data, const char *fmt, ...) { - va_list ap; - size_t len; - char error[CURL_ERROR_SIZE + 2]; - va_start(ap, fmt); + if(data->set.verbose || data->set.errorbuffer) { + va_list ap; + size_t len; + char error[CURL_ERROR_SIZE + 2]; + va_start(ap, fmt); + vsnprintf(error, CURL_ERROR_SIZE, fmt, ap); + len = strlen(error); - vsnprintf(error, CURL_ERROR_SIZE, fmt, ap); - len = strlen(error); - - if(data->set.errorbuffer && !data->state.errorbuf) { - strcpy(data->set.errorbuffer, error); - data->state.errorbuf = TRUE; /* wrote error string */ + if(data->set.errorbuffer && !data->state.errorbuf) { + strcpy(data->set.errorbuffer, error); + data->state.errorbuf = TRUE; /* wrote error string */ + } + if(data->set.verbose) { + error[len] = '\n'; + error[++len] = '\0'; + Curl_debug(data, CURLINFO_TEXT, error, len, NULL); + } + va_end(ap); } - if(data->set.verbose) { - error[len] = '\n'; - error[++len] = '\0'; - Curl_debug(data, CURLINFO_TEXT, error, len, NULL); - } - - va_end(ap); } /* Curl_sendf() sends formatted data to the server */ diff --git a/libraries/curl/lib/share.c b/libraries/curl/lib/share.c index 5b3957fcf..870b191fc 100644 --- a/libraries/curl/lib/share.c +++ b/libraries/curl/lib/share.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -102,6 +102,8 @@ curl_share_setopt(struct Curl_share *share, CURLSHoption option, ...) break; case CURL_LOCK_DATA_CONNECT: /* not supported (yet) */ + if(Curl_conncache_init(&share->conn_cache, 103)) + res = CURLSHE_NOMEM; break; default: @@ -186,6 +188,8 @@ curl_share_cleanup(struct Curl_share *share) return CURLSHE_IN_USE; } + Curl_conncache_close_all_connections(&share->conn_cache); + Curl_conncache_destroy(&share->conn_cache); Curl_hash_destroy(&share->hostcache); #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) diff --git a/libraries/curl/lib/share.h b/libraries/curl/lib/share.h index c039a16cb..4b13406d9 100644 --- a/libraries/curl/lib/share.h +++ b/libraries/curl/lib/share.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -26,6 +26,7 @@ #include #include "cookie.h" #include "urldata.h" +#include "conncache.h" /* SalfordC says "A structure member may not be volatile". Hence: */ @@ -43,7 +44,7 @@ struct Curl_share { curl_lock_function lockfunc; curl_unlock_function unlockfunc; void *clientdata; - + struct conncache conn_cache; struct curl_hash hostcache; #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) struct CookieInfo *cookies; diff --git a/libraries/curl/lib/smb.c b/libraries/curl/lib/smb.c index 13dfd514b..efcfd2da2 100644 --- a/libraries/curl/lib/smb.c +++ b/libraries/curl/lib/smb.c @@ -648,7 +648,7 @@ static CURLcode smb_connection_state(struct connectdata *conn, bool *done) if(smbc->state == SMB_CONNECTING) { #ifdef USE_SSL if((conn->handler->flags & PROTOPT_SSL)) { - bool ssl_done; + bool ssl_done = FALSE; result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &ssl_done); if(result && result != CURLE_AGAIN) return result; diff --git a/libraries/curl/lib/smtp.c b/libraries/curl/lib/smtp.c index de2dd3356..44ee2e9f8 100644 --- a/libraries/curl/lib/smtp.c +++ b/libraries/curl/lib/smtp.c @@ -1188,6 +1188,9 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status, if(!smtp || !pp->conn) return CURLE_OK; + /* Cleanup our per-request based variables */ + Curl_safefree(smtp->custom); + if(status) { connclose(conn, "SMTP done with bad status"); /* marked for closure */ result = status; /* use the already set error code */ @@ -1230,7 +1233,7 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status, } else { /* Successfully sent so adjust the response timeout relative to now */ - pp->response = Curl_tvnow(); + pp->response = Curl_now(); free(eob); } @@ -1246,9 +1249,6 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status, result = smtp_block_statemach(conn); } - /* Cleanup our per-request based variables */ - Curl_safefree(smtp->custom); - /* Clear the transfer mode for the next request */ smtp->transfer = FTPTRANSFER_BODY; diff --git a/libraries/curl/lib/socks.c b/libraries/curl/lib/socks.c index e64cb98d4..ac4270eac 100644 --- a/libraries/curl/lib/socks.c +++ b/libraries/curl/lib/socks.c @@ -57,7 +57,7 @@ int Curl_blockread_all(struct connectdata *conn, /* connection data */ ssize_t nread; ssize_t allread = 0; int result; - time_t timeleft; + timediff_t timeleft; *n = 0; for(;;) { timeleft = Curl_timeleft(conn->data, NULL, TRUE); @@ -382,7 +382,7 @@ CURLcode Curl_SOCKS5(const char *proxy_user, CURLcode code; curl_socket_t sock = conn->sock[sockindex]; struct Curl_easy *data = conn->data; - time_t timeout; + timediff_t timeout; bool socks5_resolve_local = (conn->socks_proxy.proxytype == CURLPROXY_SOCKS5) ? TRUE : FALSE; const size_t hostname_len = strlen(hostname); diff --git a/libraries/curl/lib/speedcheck.c b/libraries/curl/lib/speedcheck.c index fe669f11a..3aeea9111 100644 --- a/libraries/curl/lib/speedcheck.c +++ b/libraries/curl/lib/speedcheck.c @@ -46,7 +46,7 @@ CURLcode Curl_speedcheck(struct Curl_easy *data, data->state.keeps_speed = now; else { /* how long has it been under the limit */ - time_t howlong = Curl_tvdiff(now, data->state.keeps_speed); + timediff_t howlong = Curl_timediff(now, data->state.keeps_speed); if(howlong >= data->set.low_speed_time * 1000) { /* too long */ diff --git a/libraries/curl/lib/ssh.c b/libraries/curl/lib/ssh.c index 5406bf073..c4a369997 100644 --- a/libraries/curl/lib/ssh.c +++ b/libraries/curl/lib/ssh.c @@ -2833,8 +2833,8 @@ static CURLcode ssh_block_statemach(struct connectdata *conn, while((sshc->state != SSH_STOP) && !result) { bool block; - time_t left = 1000; - struct curltime now = Curl_tvnow(); + timediff_t left = 1000; + struct curltime now = Curl_now(); result = ssh_statemach_act(conn, &block); if(result) diff --git a/libraries/curl/lib/strtoofft.c b/libraries/curl/lib/strtoofft.c index 807fc5454..363647737 100644 --- a/libraries/curl/lib/strtoofft.c +++ b/libraries/curl/lib/strtoofft.c @@ -219,7 +219,10 @@ CURLofft curlx_strtoofft(const char *str, char **endp, int base, curl_off_t number; errno = 0; *num = 0; /* clear by default */ - while(str && *str && ISSPACE(*str)) + + DEBUGASSERT(str); + + while(*str && ISSPACE(*str)) str++; if('-' == *str) { if(endp) diff --git a/libraries/curl/lib/telnet.c b/libraries/curl/lib/telnet.c index a7bed3da1..48b134ee3 100644 --- a/libraries/curl/lib/telnet.c +++ b/libraries/curl/lib/telnet.c @@ -1560,8 +1560,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done) } if(data->set.timeout) { - now = Curl_tvnow(); - if(Curl_tvdiff(now, conn->created) >= data->set.timeout) { + now = Curl_now(); + if(Curl_timediff(now, conn->created) >= data->set.timeout) { failf(data, "Time-out"); result = CURLE_OPERATION_TIMEDOUT; keepon = FALSE; @@ -1678,8 +1678,8 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done) } /* poll switch statement */ if(data->set.timeout) { - now = Curl_tvnow(); - if(Curl_tvdiff(now, conn->created) >= data->set.timeout) { + now = Curl_now(); + if(Curl_timediff(now, conn->created) >= data->set.timeout) { failf(data, "Time-out"); result = CURLE_OPERATION_TIMEDOUT; keepon = FALSE; diff --git a/libraries/curl/lib/tftp.c b/libraries/curl/lib/tftp.c index 4e599fd27..20dc60040 100644 --- a/libraries/curl/lib/tftp.c +++ b/libraries/curl/lib/tftp.c @@ -200,7 +200,7 @@ const struct Curl_handler Curl_handler_tftp = { static CURLcode tftp_set_timeouts(tftp_state_data_t *state) { time_t maxtime, timeout; - time_t timeout_ms; + timediff_t timeout_ms; bool start = (state->state == TFTP_STATE_START) ? TRUE : FALSE; time(&state->start_time); @@ -1293,7 +1293,7 @@ static CURLcode tftp_doing(struct connectdata *conn, bool *dophase_done) if(Curl_pgrsUpdate(conn)) result = CURLE_ABORTED_BY_CALLBACK; else - result = Curl_speedcheck(conn->data, Curl_tvnow()); + result = Curl_speedcheck(conn->data, Curl_now()); } return result; } diff --git a/libraries/curl/lib/timeval.c b/libraries/curl/lib/timeval.c index d7207b3a2..66f923a8e 100644 --- a/libraries/curl/lib/timeval.c +++ b/libraries/curl/lib/timeval.c @@ -24,7 +24,7 @@ #if defined(WIN32) && !defined(MSDOS) -struct curltime curlx_tvnow(void) +struct curltime Curl_now(void) { /* ** GetTickCount() is available on _all_ Windows versions from W95 up @@ -48,7 +48,7 @@ struct curltime curlx_tvnow(void) #elif defined(HAVE_CLOCK_GETTIME_MONOTONIC) -struct curltime curlx_tvnow(void) +struct curltime Curl_now(void) { /* ** clock_gettime() is granted to be increased monotonically when the @@ -84,9 +84,40 @@ struct curltime curlx_tvnow(void) return cnow; } +#elif defined(HAVE_MACH_ABSOLUTE_TIME) + +#include +#include + +struct curltime Curl_now(void) +{ + /* + ** Monotonic timer on Mac OS is provided by mach_absolute_time(), which + ** returns time in Mach "absolute time units," which are platform-dependent. + ** To convert to nanoseconds, one must use conversion factors specified by + ** mach_timebase_info(). + */ + static mach_timebase_info_data_t timebase; + struct curltime cnow; + uint64_t usecs; + + if(0 == timebase.denom) + (void) mach_timebase_info(&timebase); + + usecs = mach_absolute_time(); + usecs *= timebase.numer; + usecs /= timebase.denom; + usecs /= 1000; + + cnow.tv_sec = usecs / 1000000; + cnow.tv_usec = usecs % 1000000; + + return cnow; +} + #elif defined(HAVE_GETTIMEOFDAY) -struct curltime curlx_tvnow(void) +struct curltime Curl_now(void) { /* ** gettimeofday() is not granted to be increased monotonically, due to @@ -103,7 +134,7 @@ struct curltime curlx_tvnow(void) #else -struct curltime curlx_tvnow(void) +struct curltime Curl_now(void) { /* ** time() returns the value of time in seconds since the Epoch. @@ -116,47 +147,40 @@ struct curltime curlx_tvnow(void) #endif +#if SIZEOF_TIME_T < 8 +#define TIME_MAX INT_MAX +#define TIME_MIN INT_MIN +#else +#define TIME_MAX 9223372036854775807LL +#define TIME_MIN -9223372036854775807LL +#endif + /* - * Make sure that the first argument is the more recent time, as otherwise - * we'll get a weird negative time-diff back... - * - * Returns: the time difference in number of milliseconds. For large diffs it - * returns 0x7fffffff on 32bit time_t systems. + * Returns: time difference in number of milliseconds. For too large diffs it + * returns max value. * * @unittest: 1323 */ -time_t curlx_tvdiff(struct curltime newer, struct curltime older) +timediff_t Curl_timediff(struct curltime newer, struct curltime older) { -#if SIZEOF_TIME_T < 8 - /* for 32bit time_t systems, add a precaution to avoid overflow for really - big time differences */ - time_t diff = newer.tv_sec-older.tv_sec; - if(diff >= (0x7fffffff/1000)) - return 0x7fffffff; -#endif - return (newer.tv_sec-older.tv_sec)*1000+ - (int)(newer.tv_usec-older.tv_usec)/1000; + timediff_t diff = newer.tv_sec-older.tv_sec; + if(diff >= (TIME_MAX/1000)) + return TIME_MAX; + else if(diff <= (TIME_MIN/1000)) + return TIME_MIN; + return diff * 1000 + (newer.tv_usec-older.tv_usec)/1000; } /* - * Make sure that the first argument is the more recent time, as otherwise - * we'll get a weird negative time-diff back... - * - * Returns: the time difference in number of microseconds. For too large diffs - * it returns max value. + * Returns: time difference in number of microseconds. For too large diffs it + * returns max value. */ -time_t Curl_tvdiff_us(struct curltime newer, struct curltime older) +timediff_t Curl_timediff_us(struct curltime newer, struct curltime older) { - time_t diff = newer.tv_sec-older.tv_sec; -#if SIZEOF_TIME_T < 8 - /* for 32bit time_t systems */ - if(diff >= (0x7fffffff/1000000)) - return 0x7fffffff; -#else - /* for 64bit time_t systems */ - if(diff >= (0x7fffffffffffffffLL/1000000)) - return 0x7fffffffffffffffLL; -#endif - return (newer.tv_sec-older.tv_sec)*1000000+ - (int)(newer.tv_usec-older.tv_usec); + timediff_t diff = newer.tv_sec-older.tv_sec; + if(diff >= (TIME_MAX/1000000)) + return TIME_MAX; + else if(diff <= (TIME_MIN/1000000)) + return TIME_MIN; + return diff * 1000000 + newer.tv_usec-older.tv_usec; } diff --git a/libraries/curl/lib/timeval.h b/libraries/curl/lib/timeval.h index 1ee4b3044..fb3f680c4 100644 --- a/libraries/curl/lib/timeval.h +++ b/libraries/curl/lib/timeval.h @@ -22,19 +22,20 @@ * ***************************************************************************/ -/* - * CAUTION: this header is designed to work when included by the app-side - * as well as the library. Do not mix with library internals! - */ - #include "curl_setup.h" +#if SIZEOF_TIME_T < 8 +typedef int timediff_t; +#else +typedef curl_off_t timediff_t; +#endif + struct curltime { - time_t tv_sec; /* seconds */ - unsigned int tv_usec; /* microseconds */ + time_t tv_sec; /* seconds */ + int tv_usec; /* microseconds */ }; -struct curltime curlx_tvnow(void); +struct curltime Curl_now(void); /* * Make sure that the first argument (t1) is the more recent time and t2 is @@ -42,7 +43,7 @@ struct curltime curlx_tvnow(void); * * Returns: the time difference in number of milliseconds. */ -time_t curlx_tvdiff(struct curltime t1, struct curltime t2); +timediff_t Curl_timediff(struct curltime t1, struct curltime t2); /* * Make sure that the first argument (t1) is the more recent time and t2 is @@ -50,12 +51,6 @@ time_t curlx_tvdiff(struct curltime t1, struct curltime t2); * * Returns: the time difference in number of microseconds. */ -time_t Curl_tvdiff_us(struct curltime newer, struct curltime older); - -/* These two defines below exist to provide the older API for library - internals only. */ -#define Curl_tvnow() curlx_tvnow() -#define Curl_tvdiff(x,y) curlx_tvdiff(x,y) +timediff_t Curl_timediff_us(struct curltime newer, struct curltime older); #endif /* HEADER_CURL_TIMEVAL_H */ - diff --git a/libraries/curl/lib/transfer.c b/libraries/curl/lib/transfer.c index 8e66d0d80..8f15b1a15 100644 --- a/libraries/curl/lib/transfer.c +++ b/libraries/curl/lib/transfer.c @@ -238,9 +238,11 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp) } #endif /* CURL_DOES_CONVERSIONS */ - if((nread - hexlen) == 0) + if((nread - hexlen) == 0) { /* mark this as done once this chunk is transferred */ data->req.upload_done = TRUE; + infof(data, "Signaling end of chunked upload via terminating chunk.\n"); + } nread += (int)strlen(endofline_native); /* for the added end of line */ } @@ -490,7 +492,7 @@ static CURLcode readwrite_data(struct Curl_easy *data, Curl_pgrsTime(data, TIMER_STARTTRANSFER); if(k->exp100 > EXP100_SEND_DATA) /* set time stamp to compare with when waiting for the 100 */ - k->start100 = Curl_tvnow(); + k->start100 = Curl_now(); } *didwhat |= KEEP_RECV; @@ -777,48 +779,19 @@ static CURLcode readwrite_data(struct Curl_easy *data, in http_chunks.c. Make sure that ALL_CONTENT_ENCODINGS contains all the encodings handled here. */ -#ifdef HAVE_LIBZ - switch(conn->data->set.http_ce_skip ? - IDENTITY : k->auto_decoding) { - case IDENTITY: -#endif - /* This is the default when the server sends no - Content-Encoding header. See Curl_readwrite_init; the - memset() call initializes k->auto_decoding to zero. */ + if(conn->data->set.http_ce_skip || !k->writer_stack) { if(!k->ignorebody) { - #ifndef CURL_DISABLE_POP3 - if(conn->handler->protocol&PROTO_FAMILY_POP3) + if(conn->handler->protocol & PROTO_FAMILY_POP3) result = Curl_pop3_write(conn, k->str, nread); else #endif /* CURL_DISABLE_POP3 */ - result = Curl_client_write(conn, CLIENTWRITE_BODY, k->str, nread); } -#ifdef HAVE_LIBZ - break; - - case DEFLATE: - /* Assume CLIENTWRITE_BODY; headers are not encoded. */ - if(!k->ignorebody) - result = Curl_unencode_deflate_write(conn, k, nread); - break; - - case GZIP: - /* Assume CLIENTWRITE_BODY; headers are not encoded. */ - if(!k->ignorebody) - result = Curl_unencode_gzip_write(conn, k, nread); - break; - - default: - failf(data, "Unrecognized content encoding type. " - "libcurl understands `identity', `deflate' and `gzip' " - "content encodings."); - result = CURLE_BAD_CONTENT_ENCODING; - break; } -#endif + else + result = Curl_unencode_write(conn, k->writer_stack, k->str, nread); } k->badheader = HEADER_NORMAL; /* taken care of now */ @@ -925,7 +898,7 @@ static CURLcode readwrite_upload(struct Curl_easy *data, go into the Expect: 100 state and await such a header */ k->exp100 = EXP100_AWAITING_CONTINUE; /* wait for the header */ k->keepon &= ~KEEP_SEND; /* disable writing */ - k->start100 = Curl_tvnow(); /* timeout count starts now */ + k->start100 = Curl_now(); /* timeout count starts now */ *didwhat &= ~KEEP_SEND; /* we didn't write anything actually */ /* set a timeout for the multi interface */ @@ -1046,7 +1019,8 @@ static CURLcode readwrite_upload(struct Curl_easy *data, k->writebytecount += bytes_written; - if(k->writebytecount == data->state.infilesize) { + if((!k->upload_chunky || k->forbidchunk) && + (k->writebytecount == data->state.infilesize)) { /* we have sent all data we were supposed to */ k->upload_done = TRUE; infof(data, "We are completely uploaded and fine\n"); @@ -1150,7 +1124,7 @@ CURLcode Curl_readwrite(struct connectdata *conn, return result; } - k->now = Curl_tvnow(); + k->now = Curl_now(); if(didwhat) { /* Update read/write counters */ if(k->bytecountp) @@ -1174,7 +1148,7 @@ CURLcode Curl_readwrite(struct connectdata *conn, */ - time_t ms = Curl_tvdiff(k->now, k->start100); + timediff_t ms = Curl_timediff(k->now, k->start100); if(ms >= data->set.expect_100_timeout) { /* we've waited long enough, continue anyway */ k->exp100 = EXP100_SEND_DATA; @@ -1198,13 +1172,14 @@ CURLcode Curl_readwrite(struct connectdata *conn, failf(data, "Operation timed out after %ld milliseconds with %" CURL_FORMAT_CURL_OFF_T " out of %" CURL_FORMAT_CURL_OFF_T " bytes received", - Curl_tvdiff(k->now, data->progress.t_startsingle), k->bytecount, - k->size); + Curl_timediff(k->now, data->progress.t_startsingle), + k->bytecount, k->size); } else { failf(data, "Operation timed out after %ld milliseconds with %" CURL_FORMAT_CURL_OFF_T " bytes received", - Curl_tvdiff(k->now, data->progress.t_startsingle), k->bytecount); + Curl_timediff(k->now, data->progress.t_startsingle), + k->bytecount); } return CURLE_OPERATION_TIMEDOUT; } @@ -1343,6 +1318,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data) if(result) return result; + data->state.wildcardmatch = data->set.wildcard_enabled; data->set.followlocation = 0; /* reset the location-follow counter */ data->state.this_is_a_follow = FALSE; /* reset this */ data->state.errorbuf = FALSE; /* no error has occurred */ @@ -1400,7 +1376,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data) data->state.authhost.picked &= data->state.authhost.want; data->state.authproxy.picked &= data->state.authproxy.want; - if(data->set.wildcardmatch) { + if(data->state.wildcardmatch) { struct WildcardData *wc = &data->wildcard; if(wc->state < CURLWC_INIT) { result = Curl_wildcard_init(wc); /* init wildcard structures */ @@ -2049,7 +2025,7 @@ Curl_setup_transfer( (http->sending == HTTPSEND_BODY)) { /* wait with write until we either got 100-continue or a timeout */ k->exp100 = EXP100_AWAITING_CONTINUE; - k->start100 = Curl_tvnow(); + k->start100 = Curl_now(); /* Set a timeout for the multi interface. Add the inaccuracy margin so that we don't fire slightly too early and get denied to run. */ diff --git a/libraries/curl/lib/url.c b/libraries/curl/lib/url.c index 584635bc3..1de02c2bd 100644 --- a/libraries/curl/lib/url.c +++ b/libraries/curl/lib/url.c @@ -120,6 +120,8 @@ bool curl_win32_idn_to_ascii(const char *in, char **out); #include "pipeline.h" #include "dotdot.h" #include "strdup.h" +#include "setopt.h" + /* The last 3 #include files should be in this order */ #include "curl_printf.h" #include "curl_memory.h" @@ -136,15 +138,8 @@ static CURLcode parse_url_login(struct Curl_easy *data, struct connectdata *conn, char **userptr, char **passwdptr, char **optionsptr); -static CURLcode parse_login_details(const char *login, const size_t len, - char **userptr, char **passwdptr, - char **optionsptr); static unsigned int get_protocol_family(unsigned int protocol); -#define READBUFFER_SIZE CURL_MAX_WRITE_SIZE -#define READBUFFER_MAX CURL_MAX_READ_SIZE -#define READBUFFER_MIN 1024 - /* Some parts of the code (e.g. chunked encoding) assume this buffer has at * more than just a few bytes to play with. Don't let it become too small or * bad things will happen. @@ -301,98 +296,6 @@ void Curl_freeset(struct Curl_easy *data) data->change.url = NULL; } -static CURLcode setstropt(char **charp, const char *s) -{ - /* Release the previous storage at `charp' and replace by a dynamic storage - copy of `s'. Return CURLE_OK or CURLE_OUT_OF_MEMORY. */ - - Curl_safefree(*charp); - - if(s) { - char *str = strdup(s); - - if(!str) - return CURLE_OUT_OF_MEMORY; - - *charp = str; - } - - return CURLE_OK; -} - -static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp) -{ - CURLcode result = CURLE_OK; - char *user = NULL; - char *passwd = NULL; - - /* Parse the login details if specified. It not then we treat NULL as a hint - to clear the existing data */ - if(option) { - result = parse_login_details(option, strlen(option), - (userp ? &user : NULL), - (passwdp ? &passwd : NULL), - NULL); - } - - if(!result) { - /* Store the username part of option if required */ - if(userp) { - if(!user && option && option[0] == ':') { - /* Allocate an empty string instead of returning NULL as user name */ - user = strdup(""); - if(!user) - result = CURLE_OUT_OF_MEMORY; - } - - Curl_safefree(*userp); - *userp = user; - } - - /* Store the password part of option if required */ - if(passwdp) { - Curl_safefree(*passwdp); - *passwdp = passwd; - } - } - - return result; -} - -CURLcode Curl_dupset(struct Curl_easy *dst, struct Curl_easy *src) -{ - CURLcode result = CURLE_OK; - enum dupstring i; - - /* Copy src->set into dst->set first, then deal with the strings - afterwards */ - dst->set = src->set; - - /* clear all string pointers first */ - memset(dst->set.str, 0, STRING_LAST * sizeof(char *)); - - /* duplicate all strings */ - for(i = (enum dupstring)0; i< STRING_LASTZEROTERMINATED; i++) { - result = setstropt(&dst->set.str[i], src->set.str[i]); - if(result) - return result; - } - - /* duplicate memory areas pointed to */ - i = STRING_COPYPOSTFIELDS; - if(src->set.postfieldsize && src->set.str[i]) { - /* postfieldsize is curl_off_t, Curl_memdup() takes a size_t ... */ - dst->set.str[i] = Curl_memdup(src->set.str[i], - curlx_sotouz(src->set.postfieldsize)); - if(!dst->set.str[i]) - return CURLE_OUT_OF_MEMORY; - /* point to the new copy */ - dst->set.postfields = dst->set.str[i]; - } - - return CURLE_OK; -} - /* * This is the internal function curl_easy_cleanup() calls. This should * cleanup and free all resources associated with this sessionhandle. @@ -489,12 +392,8 @@ CURLcode Curl_close(struct Curl_easy *data) Curl_share_unlock(data, CURL_LOCK_DATA_SHARE); } - if(data->set.wildcardmatch) { - /* destruct wildcard structures if it is needed */ - struct WildcardData *wc = &data->wildcard; - Curl_wildcard_dtor(wc); - } - + /* destruct wildcard structures if it is needed */ + Curl_wildcard_dtor(&data->wildcard); Curl_freeset(data); free(data); return CURLE_OK; @@ -591,25 +490,25 @@ CURLcode Curl_init_userdefined(struct UserDefined *set) /* This is our preferred CA cert bundle/path since install time */ #if defined(CURL_CA_BUNDLE) - result = setstropt(&set->str[STRING_SSL_CAFILE_ORIG], CURL_CA_BUNDLE); + result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_ORIG], CURL_CA_BUNDLE); if(result) return result; - result = setstropt(&set->str[STRING_SSL_CAFILE_PROXY], CURL_CA_BUNDLE); + result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY], CURL_CA_BUNDLE); if(result) return result; #endif #if defined(CURL_CA_PATH) - result = setstropt(&set->str[STRING_SSL_CAPATH_ORIG], CURL_CA_PATH); + result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_ORIG], CURL_CA_PATH); if(result) return result; - result = setstropt(&set->str[STRING_SSL_CAPATH_PROXY], CURL_CA_PATH); + result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], CURL_CA_PATH); if(result) return result; #endif - set->wildcardmatch = FALSE; + set->wildcard_enabled = FALSE; set->chunk_bgn = ZERO_NULL; set->chunk_end = ZERO_NULL; @@ -670,32 +569,31 @@ CURLcode Curl_open(struct Curl_easy **curl) DEBUGF(fprintf(stderr, "Error: malloc of buffer failed\n")); result = CURLE_OUT_OF_MEMORY; } - - Curl_mime_initpart(&data->set.mimepost, data); - - data->state.headerbuff = malloc(HEADERSIZE); - if(!data->state.headerbuff) { - DEBUGF(fprintf(stderr, "Error: malloc of headerbuff failed\n")); - result = CURLE_OUT_OF_MEMORY; - } else { - result = Curl_init_userdefined(&data->set); + Curl_mime_initpart(&data->set.mimepost, data); - data->state.headersize = HEADERSIZE; + data->state.headerbuff = malloc(HEADERSIZE); + if(!data->state.headerbuff) { + DEBUGF(fprintf(stderr, "Error: malloc of headerbuff failed\n")); + result = CURLE_OUT_OF_MEMORY; + } + else { + result = Curl_init_userdefined(&data->set); - Curl_convert_init(data); + data->state.headersize = HEADERSIZE; + Curl_convert_init(data); + Curl_initinfo(data); - Curl_initinfo(data); + /* most recent connection is not yet defined */ + data->state.lastconnect = NULL; - /* most recent connection is not yet defined */ - data->state.lastconnect = NULL; + data->progress.flags |= PGRS_HIDE; + data->state.current_speed = -1; /* init to negative == impossible */ + data->set.fnmatch = ZERO_NULL; + data->set.maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */ - data->progress.flags |= PGRS_HIDE; - data->state.current_speed = -1; /* init to negative == impossible */ - data->set.fnmatch = ZERO_NULL; - data->set.maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */ - - Curl_http2_init_state(&data->state); + Curl_http2_init_state(&data->state); + } } if(result) { @@ -712,2269 +610,6 @@ CURLcode Curl_open(struct Curl_easy **curl) return result; } -#define C_SSLVERSION_VALUE(x) (x & 0xffff) -#define C_SSLVERSION_MAX_VALUE(x) (x & 0xffff0000) - -CURLcode Curl_setopt(struct Curl_easy *data, CURLoption option, - va_list param) -{ - char *argptr; - CURLcode result = CURLE_OK; - long arg; -#ifndef CURL_DISABLE_HTTP - curl_off_t bigsize; -#endif - - switch(option) { - case CURLOPT_DNS_CACHE_TIMEOUT: - data->set.dns_cache_timeout = va_arg(param, long); - break; - case CURLOPT_DNS_USE_GLOBAL_CACHE: - /* remember we want this enabled */ - arg = va_arg(param, long); - data->set.global_dns_cache = (0 != arg) ? TRUE : FALSE; - break; - case CURLOPT_SSL_CIPHER_LIST: - /* set a list of cipher we want to use in the SSL connection */ - result = setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_SSL_CIPHER_LIST: - /* set a list of cipher we want to use in the SSL connection for proxy */ - result = setstropt(&data->set.str[STRING_SSL_CIPHER_LIST_PROXY], - va_arg(param, char *)); - break; - - case CURLOPT_RANDOM_FILE: - /* - * This is the path name to a file that contains random data to seed - * the random SSL stuff with. The file is only used for reading. - */ - result = setstropt(&data->set.str[STRING_SSL_RANDOM_FILE], - va_arg(param, char *)); - break; - case CURLOPT_EGDSOCKET: - /* - * The Entropy Gathering Daemon socket pathname - */ - result = setstropt(&data->set.str[STRING_SSL_EGDSOCKET], - va_arg(param, char *)); - break; - case CURLOPT_MAXCONNECTS: - /* - * Set the absolute number of maximum simultaneous alive connection that - * libcurl is allowed to have. - */ - data->set.maxconnects = va_arg(param, long); - break; - case CURLOPT_FORBID_REUSE: - /* - * When this transfer is done, it must not be left to be reused by a - * subsequent transfer but shall be closed immediately. - */ - data->set.reuse_forbid = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_FRESH_CONNECT: - /* - * This transfer shall not use a previously cached connection but - * should be made with a fresh new connect! - */ - data->set.reuse_fresh = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_VERBOSE: - /* - * Verbose means infof() calls that give a lot of information about - * the connection and transfer procedures as well as internal choices. - */ - data->set.verbose = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_HEADER: - /* - * Set to include the header in the general data output stream. - */ - data->set.include_header = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_NOPROGRESS: - /* - * Shut off the internal supported progress meter - */ - data->set.hide_progress = (0 != va_arg(param, long)) ? TRUE : FALSE; - if(data->set.hide_progress) - data->progress.flags |= PGRS_HIDE; - else - data->progress.flags &= ~PGRS_HIDE; - break; - case CURLOPT_NOBODY: - /* - * Do not include the body part in the output data stream. - */ - data->set.opt_no_body = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_FAILONERROR: - /* - * Don't output the >=400 error code HTML-page, but instead only - * return error. - */ - data->set.http_fail_on_error = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_KEEP_SENDING_ON_ERROR: - data->set.http_keep_sending_on_error = (0 != va_arg(param, long)) ? - TRUE : FALSE; - break; - case CURLOPT_UPLOAD: - case CURLOPT_PUT: - /* - * We want to sent data to the remote host. If this is HTTP, that equals - * using the PUT request. - */ - data->set.upload = (0 != va_arg(param, long)) ? TRUE : FALSE; - if(data->set.upload) { - /* If this is HTTP, PUT is what's needed to "upload" */ - data->set.httpreq = HTTPREQ_PUT; - data->set.opt_no_body = FALSE; /* this is implied */ - } - else - /* In HTTP, the opposite of upload is GET (unless NOBODY is true as - then this can be changed to HEAD later on) */ - data->set.httpreq = HTTPREQ_GET; - break; - case CURLOPT_REQUEST_TARGET: - result = setstropt(&data->set.str[STRING_TARGET], - va_arg(param, char *)); - break; - case CURLOPT_FILETIME: - /* - * Try to get the file time of the remote document. The time will - * later (possibly) become available using curl_easy_getinfo(). - */ - data->set.get_filetime = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_FTP_CREATE_MISSING_DIRS: - /* - * An FTP option that modifies an upload to create missing directories on - * the server. - */ - switch(va_arg(param, long)) { - case 0: - data->set.ftp_create_missing_dirs = 0; - break; - case 1: - data->set.ftp_create_missing_dirs = 1; - break; - case 2: - data->set.ftp_create_missing_dirs = 2; - break; - default: - /* reserve other values for future use */ - result = CURLE_UNKNOWN_OPTION; - break; - } - break; - case CURLOPT_SERVER_RESPONSE_TIMEOUT: - /* - * Option that specifies how quickly an server response must be obtained - * before it is considered failure. For pingpong protocols. - */ - data->set.server_response_timeout = va_arg(param, long) * 1000; - break; - case CURLOPT_TFTP_NO_OPTIONS: - /* - * Option that prevents libcurl from sending TFTP option requests to the - * server. - */ - data->set.tftp_no_options = va_arg(param, long) != 0; - break; - case CURLOPT_TFTP_BLKSIZE: - /* - * TFTP option that specifies the block size to use for data transmission. - */ - data->set.tftp_blksize = va_arg(param, long); - break; - case CURLOPT_DIRLISTONLY: - /* - * An option that changes the command to one that asks for a list - * only, no file info details. - */ - data->set.ftp_list_only = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_APPEND: - /* - * We want to upload and append to an existing file. - */ - data->set.ftp_append = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_FTP_FILEMETHOD: - /* - * How do access files over FTP. - */ - data->set.ftp_filemethod = (curl_ftpfile)va_arg(param, long); - break; - case CURLOPT_NETRC: - /* - * Parse the $HOME/.netrc file - */ - data->set.use_netrc = (enum CURL_NETRC_OPTION)va_arg(param, long); - break; - case CURLOPT_NETRC_FILE: - /* - * Use this file instead of the $HOME/.netrc file - */ - result = setstropt(&data->set.str[STRING_NETRC_FILE], - va_arg(param, char *)); - break; - case CURLOPT_TRANSFERTEXT: - /* - * This option was previously named 'FTPASCII'. Renamed to work with - * more protocols than merely FTP. - * - * Transfer using ASCII (instead of BINARY). - */ - data->set.prefer_ascii = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_TIMECONDITION: - /* - * Set HTTP time condition. This must be one of the defines in the - * curl/curl.h header file. - */ - data->set.timecondition = (curl_TimeCond)va_arg(param, long); - break; - case CURLOPT_TIMEVALUE: - /* - * This is the value to compare with the remote document with the - * method set with CURLOPT_TIMECONDITION - */ - data->set.timevalue = (time_t)va_arg(param, long); - break; - case CURLOPT_SSLVERSION: - /* - * Set explicit SSL version to try to connect with, as some SSL - * implementations are lame. - */ -#ifdef USE_SSL - arg = va_arg(param, long); - data->set.ssl.primary.version = C_SSLVERSION_VALUE(arg); - data->set.ssl.primary.version_max = C_SSLVERSION_MAX_VALUE(arg); -#else - result = CURLE_UNKNOWN_OPTION; -#endif - break; - case CURLOPT_PROXY_SSLVERSION: - /* - * Set explicit SSL version to try to connect with for proxy, as some SSL - * implementations are lame. - */ -#ifdef USE_SSL - arg = va_arg(param, long); - data->set.proxy_ssl.primary.version = C_SSLVERSION_VALUE(arg); - data->set.proxy_ssl.primary.version_max = C_SSLVERSION_MAX_VALUE(arg); -#else - result = CURLE_UNKNOWN_OPTION; -#endif - break; - -#ifndef CURL_DISABLE_HTTP - case CURLOPT_AUTOREFERER: - /* - * Switch on automatic referer that gets set if curl follows locations. - */ - data->set.http_auto_referer = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_ACCEPT_ENCODING: - /* - * String to use at the value of Accept-Encoding header. - * - * If the encoding is set to "" we use an Accept-Encoding header that - * encompasses all the encodings we support. - * If the encoding is set to NULL we don't send an Accept-Encoding header - * and ignore an received Content-Encoding header. - * - */ - argptr = va_arg(param, char *); - result = setstropt(&data->set.str[STRING_ENCODING], - (argptr && !*argptr)? - ALL_CONTENT_ENCODINGS: argptr); - break; - - case CURLOPT_TRANSFER_ENCODING: - data->set.http_transfer_encoding = (0 != va_arg(param, long)) ? - TRUE : FALSE; - break; - - case CURLOPT_FOLLOWLOCATION: - /* - * Follow Location: header hints on a HTTP-server. - */ - data->set.http_follow_location = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_UNRESTRICTED_AUTH: - /* - * Send authentication (user+password) when following locations, even when - * hostname changed. - */ - data->set.http_disable_hostname_check_before_authentication = - (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_MAXREDIRS: - /* - * The maximum amount of hops you allow curl to follow Location: - * headers. This should mostly be used to detect never-ending loops. - */ - data->set.maxredirs = va_arg(param, long); - break; - - case CURLOPT_POSTREDIR: - { - /* - * Set the behaviour of POST when redirecting - * CURL_REDIR_GET_ALL - POST is changed to GET after 301 and 302 - * CURL_REDIR_POST_301 - POST is kept as POST after 301 - * CURL_REDIR_POST_302 - POST is kept as POST after 302 - * CURL_REDIR_POST_303 - POST is kept as POST after 303 - * CURL_REDIR_POST_ALL - POST is kept as POST after 301, 302 and 303 - * other - POST is kept as POST after 301 and 302 - */ - arg = va_arg(param, long); - data->set.keep_post = arg & CURL_REDIR_POST_ALL; - } - break; - - case CURLOPT_POST: - /* Does this option serve a purpose anymore? Yes it does, when - CURLOPT_POSTFIELDS isn't used and the POST data is read off the - callback! */ - if(va_arg(param, long)) { - data->set.httpreq = HTTPREQ_POST; - data->set.opt_no_body = FALSE; /* this is implied */ - } - else - data->set.httpreq = HTTPREQ_GET; - break; - - case CURLOPT_COPYPOSTFIELDS: - /* - * A string with POST data. Makes curl HTTP POST. Even if it is NULL. - * If needed, CURLOPT_POSTFIELDSIZE must have been set prior to - * CURLOPT_COPYPOSTFIELDS and not altered later. - */ - argptr = va_arg(param, char *); - - if(!argptr || data->set.postfieldsize == -1) - result = setstropt(&data->set.str[STRING_COPYPOSTFIELDS], argptr); - else { - /* - * Check that requested length does not overflow the size_t type. - */ - - if((data->set.postfieldsize < 0) || - ((sizeof(curl_off_t) != sizeof(size_t)) && - (data->set.postfieldsize > (curl_off_t)((size_t)-1)))) - result = CURLE_OUT_OF_MEMORY; - else { - char *p; - - (void) setstropt(&data->set.str[STRING_COPYPOSTFIELDS], NULL); - - /* Allocate even when size == 0. This satisfies the need of possible - later address compare to detect the COPYPOSTFIELDS mode, and - to mark that postfields is used rather than read function or - form data. - */ - p = malloc((size_t)(data->set.postfieldsize? - data->set.postfieldsize:1)); - - if(!p) - result = CURLE_OUT_OF_MEMORY; - else { - if(data->set.postfieldsize) - memcpy(p, argptr, (size_t)data->set.postfieldsize); - - data->set.str[STRING_COPYPOSTFIELDS] = p; - } - } - } - - data->set.postfields = data->set.str[STRING_COPYPOSTFIELDS]; - data->set.httpreq = HTTPREQ_POST; - break; - - case CURLOPT_POSTFIELDS: - /* - * Like above, but use static data instead of copying it. - */ - data->set.postfields = va_arg(param, void *); - /* Release old copied data. */ - (void) setstropt(&data->set.str[STRING_COPYPOSTFIELDS], NULL); - data->set.httpreq = HTTPREQ_POST; - break; - - case CURLOPT_POSTFIELDSIZE: - /* - * The size of the POSTFIELD data to prevent libcurl to do strlen() to - * figure it out. Enables binary posts. - */ - bigsize = va_arg(param, long); - - if(data->set.postfieldsize < bigsize && - data->set.postfields == data->set.str[STRING_COPYPOSTFIELDS]) { - /* Previous CURLOPT_COPYPOSTFIELDS is no longer valid. */ - (void) setstropt(&data->set.str[STRING_COPYPOSTFIELDS], NULL); - data->set.postfields = NULL; - } - - data->set.postfieldsize = bigsize; - break; - - case CURLOPT_POSTFIELDSIZE_LARGE: - /* - * The size of the POSTFIELD data to prevent libcurl to do strlen() to - * figure it out. Enables binary posts. - */ - bigsize = va_arg(param, curl_off_t); - - if(data->set.postfieldsize < bigsize && - data->set.postfields == data->set.str[STRING_COPYPOSTFIELDS]) { - /* Previous CURLOPT_COPYPOSTFIELDS is no longer valid. */ - (void) setstropt(&data->set.str[STRING_COPYPOSTFIELDS], NULL); - data->set.postfields = NULL; - } - - data->set.postfieldsize = bigsize; - break; - - case CURLOPT_HTTPPOST: - /* - * Set to make us do HTTP POST - */ - data->set.httppost = va_arg(param, struct curl_httppost *); - data->set.httpreq = HTTPREQ_POST_FORM; - data->set.opt_no_body = FALSE; /* this is implied */ - break; -#endif /* CURL_DISABLE_HTTP */ - - case CURLOPT_MIMEPOST: - /* - * Set to make us do MIME/form POST - */ - result = curl_mime_subparts(&data->set.mimepost, - va_arg(param, curl_mime *)); - if(!result) { - data->set.mimepost.freefunc = NULL; /* Avoid free upon easy cleanup. */ - data->set.httpreq = HTTPREQ_POST_MIME; - data->set.opt_no_body = FALSE; /* this is implied */ - } - break; - - case CURLOPT_REFERER: - /* - * String to set in the HTTP Referer: field. - */ - if(data->change.referer_alloc) { - Curl_safefree(data->change.referer); - data->change.referer_alloc = FALSE; - } - result = setstropt(&data->set.str[STRING_SET_REFERER], - va_arg(param, char *)); - data->change.referer = data->set.str[STRING_SET_REFERER]; - break; - - case CURLOPT_USERAGENT: - /* - * String to use in the HTTP User-Agent field - */ - result = setstropt(&data->set.str[STRING_USERAGENT], - va_arg(param, char *)); - break; - - case CURLOPT_HTTPHEADER: - /* - * Set a list with HTTP headers to use (or replace internals with) - */ - data->set.headers = va_arg(param, struct curl_slist *); - break; - -#ifndef CURL_DISABLE_HTTP - case CURLOPT_PROXYHEADER: - /* - * Set a list with proxy headers to use (or replace internals with) - * - * Since CURLOPT_HTTPHEADER was the only way to set HTTP headers for a - * long time we remain doing it this way until CURLOPT_PROXYHEADER is - * used. As soon as this option has been used, if set to anything but - * NULL, custom headers for proxies are only picked from this list. - * - * Set this option to NULL to restore the previous behavior. - */ - data->set.proxyheaders = va_arg(param, struct curl_slist *); - break; - - case CURLOPT_HEADEROPT: - /* - * Set header option. - */ - arg = va_arg(param, long); - data->set.sep_headers = (arg & CURLHEADER_SEPARATE)? TRUE: FALSE; - break; - - case CURLOPT_HTTP200ALIASES: - /* - * Set a list of aliases for HTTP 200 in response header - */ - data->set.http200aliases = va_arg(param, struct curl_slist *); - break; - -#if !defined(CURL_DISABLE_COOKIES) - case CURLOPT_COOKIE: - /* - * Cookie string to send to the remote server in the request. - */ - result = setstropt(&data->set.str[STRING_COOKIE], - va_arg(param, char *)); - break; - - case CURLOPT_COOKIEFILE: - /* - * Set cookie file to read and parse. Can be used multiple times. - */ - argptr = (char *)va_arg(param, void *); - if(argptr) { - struct curl_slist *cl; - /* append the cookie file name to the list of file names, and deal with - them later */ - cl = curl_slist_append(data->change.cookielist, argptr); - if(!cl) { - curl_slist_free_all(data->change.cookielist); - data->change.cookielist = NULL; - return CURLE_OUT_OF_MEMORY; - } - data->change.cookielist = cl; /* store the list for later use */ - } - break; - - case CURLOPT_COOKIEJAR: - /* - * Set cookie file name to dump all cookies to when we're done. - */ - { - struct CookieInfo *newcookies; - result = setstropt(&data->set.str[STRING_COOKIEJAR], - va_arg(param, char *)); - - /* - * Activate the cookie parser. This may or may not already - * have been made. - */ - newcookies = Curl_cookie_init(data, NULL, data->cookies, - data->set.cookiesession); - if(!newcookies) - result = CURLE_OUT_OF_MEMORY; - data->cookies = newcookies; - } - break; - - case CURLOPT_COOKIESESSION: - /* - * Set this option to TRUE to start a new "cookie session". It will - * prevent the forthcoming read-cookies-from-file actions to accept - * cookies that are marked as being session cookies, as they belong to a - * previous session. - * - * In the original Netscape cookie spec, "session cookies" are cookies - * with no expire date set. RFC2109 describes the same action if no - * 'Max-Age' is set and RFC2965 includes the RFC2109 description and adds - * a 'Discard' action that can enforce the discard even for cookies that - * have a Max-Age. - * - * We run mostly with the original cookie spec, as hardly anyone implements - * anything else. - */ - data->set.cookiesession = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_COOKIELIST: - argptr = va_arg(param, char *); - - if(argptr == NULL) - break; - - if(strcasecompare(argptr, "ALL")) { - /* clear all cookies */ - Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE); - Curl_cookie_clearall(data->cookies); - Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE); - } - else if(strcasecompare(argptr, "SESS")) { - /* clear session cookies */ - Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE); - Curl_cookie_clearsess(data->cookies); - Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE); - } - else if(strcasecompare(argptr, "FLUSH")) { - /* flush cookies to file, takes care of the locking */ - Curl_flush_cookies(data, 0); - } - else if(strcasecompare(argptr, "RELOAD")) { - /* reload cookies from file */ - Curl_cookie_loadfiles(data); - break; - } - else { - if(!data->cookies) - /* if cookie engine was not running, activate it */ - data->cookies = Curl_cookie_init(data, NULL, NULL, TRUE); - - argptr = strdup(argptr); - if(!argptr || !data->cookies) { - result = CURLE_OUT_OF_MEMORY; - free(argptr); - } - else { - Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE); - - if(checkprefix("Set-Cookie:", argptr)) - /* HTTP Header format line */ - Curl_cookie_add(data, data->cookies, TRUE, argptr + 11, NULL, NULL); - - else - /* Netscape format line */ - Curl_cookie_add(data, data->cookies, FALSE, argptr, NULL, NULL); - - Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE); - free(argptr); - } - } - - break; -#endif /* !CURL_DISABLE_COOKIES */ - - case CURLOPT_HTTPGET: - /* - * Set to force us do HTTP GET - */ - if(va_arg(param, long)) { - data->set.httpreq = HTTPREQ_GET; - data->set.upload = FALSE; /* switch off upload */ - data->set.opt_no_body = FALSE; /* this is implied */ - } - break; - - case CURLOPT_HTTP_VERSION: - /* - * This sets a requested HTTP version to be used. The value is one of - * the listed enums in curl/curl.h. - */ - arg = va_arg(param, long); -#ifndef USE_NGHTTP2 - if(arg >= CURL_HTTP_VERSION_2) - return CURLE_UNSUPPORTED_PROTOCOL; -#endif - data->set.httpversion = arg; - break; - - case CURLOPT_EXPECT_100_TIMEOUT_MS: - /* - * Time to wait for a response to a HTTP request containing an - * Expect: 100-continue header before sending the data anyway. - */ - data->set.expect_100_timeout = va_arg(param, long); - break; - -#endif /* CURL_DISABLE_HTTP */ - - case CURLOPT_HTTPAUTH: - /* - * Set HTTP Authentication type BITMASK. - */ - { - int bitcheck; - bool authbits; - unsigned long auth = va_arg(param, unsigned long); - - if(auth == CURLAUTH_NONE) { - data->set.httpauth = auth; - break; - } - - /* the DIGEST_IE bit is only used to set a special marker, for all the - rest we need to handle it as normal DIGEST */ - data->state.authhost.iestyle = (auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE; - - if(auth & CURLAUTH_DIGEST_IE) { - auth |= CURLAUTH_DIGEST; /* set standard digest bit */ - auth &= ~CURLAUTH_DIGEST_IE; /* unset ie digest bit */ - } - - /* switch off bits we can't support */ -#ifndef USE_NTLM - auth &= ~CURLAUTH_NTLM; /* no NTLM support */ - auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */ -#elif !defined(NTLM_WB_ENABLED) - auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */ -#endif -#ifndef USE_SPNEGO - auth &= ~CURLAUTH_NEGOTIATE; /* no Negotiate (SPNEGO) auth without - GSS-API or SSPI */ -#endif - - /* check if any auth bit lower than CURLAUTH_ONLY is still set */ - bitcheck = 0; - authbits = FALSE; - while(bitcheck < 31) { - if(auth & (1UL << bitcheck++)) { - authbits = TRUE; - break; - } - } - if(!authbits) - return CURLE_NOT_BUILT_IN; /* no supported types left! */ - - data->set.httpauth = auth; - } - break; - - case CURLOPT_CUSTOMREQUEST: - /* - * Set a custom string to use as request - */ - result = setstropt(&data->set.str[STRING_CUSTOMREQUEST], - va_arg(param, char *)); - - /* we don't set - data->set.httpreq = HTTPREQ_CUSTOM; - here, we continue as if we were using the already set type - and this just changes the actual request keyword */ - break; - -#ifndef CURL_DISABLE_PROXY - case CURLOPT_HTTPPROXYTUNNEL: - /* - * Tunnel operations through the proxy instead of normal proxy use - */ - data->set.tunnel_thru_httpproxy = (0 != va_arg(param, long)) ? - TRUE : FALSE; - break; - - case CURLOPT_PROXYPORT: - /* - * Explicitly set HTTP proxy port number. - */ - data->set.proxyport = va_arg(param, long); - break; - - case CURLOPT_PROXYAUTH: - /* - * Set HTTP Authentication type BITMASK. - */ - { - int bitcheck; - bool authbits; - unsigned long auth = va_arg(param, unsigned long); - - if(auth == CURLAUTH_NONE) { - data->set.proxyauth = auth; - break; - } - - /* the DIGEST_IE bit is only used to set a special marker, for all the - rest we need to handle it as normal DIGEST */ - data->state.authproxy.iestyle = (auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE; - - if(auth & CURLAUTH_DIGEST_IE) { - auth |= CURLAUTH_DIGEST; /* set standard digest bit */ - auth &= ~CURLAUTH_DIGEST_IE; /* unset ie digest bit */ - } - /* switch off bits we can't support */ -#ifndef USE_NTLM - auth &= ~CURLAUTH_NTLM; /* no NTLM support */ - auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */ -#elif !defined(NTLM_WB_ENABLED) - auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */ -#endif -#ifndef USE_SPNEGO - auth &= ~CURLAUTH_NEGOTIATE; /* no Negotiate (SPNEGO) auth without - GSS-API or SSPI */ -#endif - - /* check if any auth bit lower than CURLAUTH_ONLY is still set */ - bitcheck = 0; - authbits = FALSE; - while(bitcheck < 31) { - if(auth & (1UL << bitcheck++)) { - authbits = TRUE; - break; - } - } - if(!authbits) - return CURLE_NOT_BUILT_IN; /* no supported types left! */ - - data->set.proxyauth = auth; - } - break; - - case CURLOPT_PROXY: - /* - * Set proxy server:port to use as proxy. - * - * If the proxy is set to "" (and CURLOPT_SOCKS_PROXY is set to "" or NULL) - * we explicitly say that we don't want to use a proxy - * (even though there might be environment variables saying so). - * - * Setting it to NULL, means no proxy but allows the environment variables - * to decide for us (if CURLOPT_SOCKS_PROXY setting it to NULL). - */ - result = setstropt(&data->set.str[STRING_PROXY], - va_arg(param, char *)); - break; - - case CURLOPT_PRE_PROXY: - /* - * Set proxy server:port to use as SOCKS proxy. - * - * If the proxy is set to "" or NULL we explicitly say that we don't want - * to use the socks proxy. - */ - result = setstropt(&data->set.str[STRING_PRE_PROXY], - va_arg(param, char *)); - break; - - case CURLOPT_PROXYTYPE: - /* - * Set proxy type. HTTP/HTTP_1_0/SOCKS4/SOCKS4a/SOCKS5/SOCKS5_HOSTNAME - */ - data->set.proxytype = (curl_proxytype)va_arg(param, long); - break; - - case CURLOPT_PROXY_TRANSFER_MODE: - /* - * set transfer mode (;type=) when doing FTP via an HTTP proxy - */ - switch(va_arg(param, long)) { - case 0: - data->set.proxy_transfer_mode = FALSE; - break; - case 1: - data->set.proxy_transfer_mode = TRUE; - break; - default: - /* reserve other values for future use */ - result = CURLE_UNKNOWN_OPTION; - break; - } - break; -#endif /* CURL_DISABLE_PROXY */ - - case CURLOPT_SOCKS5_AUTH: - data->set.socks5auth = va_arg(param, unsigned long); - if(data->set.socks5auth & ~(CURLAUTH_BASIC | CURLAUTH_GSSAPI)) - result = CURLE_NOT_BUILT_IN; - break; -#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) - case CURLOPT_SOCKS5_GSSAPI_NEC: - /* - * Set flag for NEC SOCK5 support - */ - data->set.socks5_gssapi_nec = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_SOCKS5_GSSAPI_SERVICE: - case CURLOPT_PROXY_SERVICE_NAME: - /* - * Set proxy authentication service name for Kerberos 5 and SPNEGO - */ - result = setstropt(&data->set.str[STRING_PROXY_SERVICE_NAME], - va_arg(param, char *)); - break; -#endif - -#if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \ - defined(USE_SPNEGO) - case CURLOPT_SERVICE_NAME: - /* - * Set authentication service name for DIGEST-MD5, Kerberos 5 and SPNEGO - */ - result = setstropt(&data->set.str[STRING_SERVICE_NAME], - va_arg(param, char *)); - break; - -#endif - - case CURLOPT_HEADERDATA: - /* - * Custom pointer to pass the header write callback function - */ - data->set.writeheader = (void *)va_arg(param, void *); - break; - case CURLOPT_ERRORBUFFER: - /* - * Error buffer provided by the caller to get the human readable - * error string in. - */ - data->set.errorbuffer = va_arg(param, char *); - break; - case CURLOPT_WRITEDATA: - /* - * FILE pointer to write to. Or possibly - * used as argument to the write callback. - */ - data->set.out = va_arg(param, void *); - break; - case CURLOPT_FTPPORT: - /* - * Use FTP PORT, this also specifies which IP address to use - */ - result = setstropt(&data->set.str[STRING_FTPPORT], - va_arg(param, char *)); - data->set.ftp_use_port = (data->set.str[STRING_FTPPORT]) ? TRUE : FALSE; - break; - - case CURLOPT_FTP_USE_EPRT: - data->set.ftp_use_eprt = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_FTP_USE_EPSV: - data->set.ftp_use_epsv = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_FTP_USE_PRET: - data->set.ftp_use_pret = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_FTP_SSL_CCC: - data->set.ftp_ccc = (curl_ftpccc)va_arg(param, long); - break; - - case CURLOPT_FTP_SKIP_PASV_IP: - /* - * Enable or disable FTP_SKIP_PASV_IP, which will disable/enable the - * bypass of the IP address in PASV responses. - */ - data->set.ftp_skip_ip = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_READDATA: - /* - * FILE pointer to read the file to be uploaded from. Or possibly - * used as argument to the read callback. - */ - data->set.in_set = va_arg(param, void *); - break; - case CURLOPT_INFILESIZE: - /* - * If known, this should inform curl about the file size of the - * to-be-uploaded file. - */ - data->set.filesize = va_arg(param, long); - break; - case CURLOPT_INFILESIZE_LARGE: - /* - * If known, this should inform curl about the file size of the - * to-be-uploaded file. - */ - data->set.filesize = va_arg(param, curl_off_t); - break; - case CURLOPT_LOW_SPEED_LIMIT: - /* - * The low speed limit that if transfers are below this for - * CURLOPT_LOW_SPEED_TIME, the transfer is aborted. - */ - data->set.low_speed_limit = va_arg(param, long); - break; - case CURLOPT_MAX_SEND_SPEED_LARGE: - /* - * When transfer uploads are faster then CURLOPT_MAX_SEND_SPEED_LARGE - * bytes per second the transfer is throttled.. - */ - data->set.max_send_speed = va_arg(param, curl_off_t); - break; - case CURLOPT_MAX_RECV_SPEED_LARGE: - /* - * When receiving data faster than CURLOPT_MAX_RECV_SPEED_LARGE bytes per - * second the transfer is throttled.. - */ - data->set.max_recv_speed = va_arg(param, curl_off_t); - break; - case CURLOPT_LOW_SPEED_TIME: - /* - * The low speed time that if transfers are below the set - * CURLOPT_LOW_SPEED_LIMIT during this time, the transfer is aborted. - */ - data->set.low_speed_time = va_arg(param, long); - break; - case CURLOPT_URL: - /* - * The URL to fetch. - */ - if(data->change.url_alloc) { - /* the already set URL is allocated, free it first! */ - Curl_safefree(data->change.url); - data->change.url_alloc = FALSE; - } - result = setstropt(&data->set.str[STRING_SET_URL], - va_arg(param, char *)); - data->change.url = data->set.str[STRING_SET_URL]; - break; - case CURLOPT_PORT: - /* - * The port number to use when getting the URL - */ - data->set.use_port = va_arg(param, long); - break; - case CURLOPT_TIMEOUT: - /* - * The maximum time you allow curl to use for a single transfer - * operation. - */ - data->set.timeout = va_arg(param, long) * 1000L; - break; - - case CURLOPT_TIMEOUT_MS: - data->set.timeout = va_arg(param, long); - break; - - case CURLOPT_CONNECTTIMEOUT: - /* - * The maximum time you allow curl to use to connect. - */ - data->set.connecttimeout = va_arg(param, long) * 1000L; - break; - - case CURLOPT_CONNECTTIMEOUT_MS: - data->set.connecttimeout = va_arg(param, long); - break; - - case CURLOPT_ACCEPTTIMEOUT_MS: - /* - * The maximum time you allow curl to wait for server connect - */ - data->set.accepttimeout = va_arg(param, long); - break; - - case CURLOPT_USERPWD: - /* - * user:password to use in the operation - */ - result = setstropt_userpwd(va_arg(param, char *), - &data->set.str[STRING_USERNAME], - &data->set.str[STRING_PASSWORD]); - break; - - case CURLOPT_USERNAME: - /* - * authentication user name to use in the operation - */ - result = setstropt(&data->set.str[STRING_USERNAME], - va_arg(param, char *)); - break; - - case CURLOPT_PASSWORD: - /* - * authentication password to use in the operation - */ - result = setstropt(&data->set.str[STRING_PASSWORD], - va_arg(param, char *)); - break; - - case CURLOPT_LOGIN_OPTIONS: - /* - * authentication options to use in the operation - */ - result = setstropt(&data->set.str[STRING_OPTIONS], - va_arg(param, char *)); - break; - - case CURLOPT_XOAUTH2_BEARER: - /* - * OAuth 2.0 bearer token to use in the operation - */ - result = setstropt(&data->set.str[STRING_BEARER], - va_arg(param, char *)); - break; - - case CURLOPT_POSTQUOTE: - /* - * List of RAW FTP commands to use after a transfer - */ - data->set.postquote = va_arg(param, struct curl_slist *); - break; - case CURLOPT_PREQUOTE: - /* - * List of RAW FTP commands to use prior to RETR (Wesley Laxton) - */ - data->set.prequote = va_arg(param, struct curl_slist *); - break; - case CURLOPT_QUOTE: - /* - * List of RAW FTP commands to use before a transfer - */ - data->set.quote = va_arg(param, struct curl_slist *); - break; - case CURLOPT_RESOLVE: - /* - * List of NAME:[address] names to populate the DNS cache with - * Prefix the NAME with dash (-) to _remove_ the name from the cache. - * - * Names added with this API will remain in the cache until explicitly - * removed or the handle is cleaned up. - * - * This API can remove any name from the DNS cache, but only entries - * that aren't actually in use right now will be pruned immediately. - */ - data->set.resolve = va_arg(param, struct curl_slist *); - data->change.resolve = data->set.resolve; - break; - case CURLOPT_PROGRESSFUNCTION: - /* - * Progress callback function - */ - data->set.fprogress = va_arg(param, curl_progress_callback); - if(data->set.fprogress) - data->progress.callback = TRUE; /* no longer internal */ - else - data->progress.callback = FALSE; /* NULL enforces internal */ - break; - - case CURLOPT_XFERINFOFUNCTION: - /* - * Transfer info callback function - */ - data->set.fxferinfo = va_arg(param, curl_xferinfo_callback); - if(data->set.fxferinfo) - data->progress.callback = TRUE; /* no longer internal */ - else - data->progress.callback = FALSE; /* NULL enforces internal */ - - break; - - case CURLOPT_PROGRESSDATA: - /* - * Custom client data to pass to the progress callback - */ - data->set.progress_client = va_arg(param, void *); - break; - -#ifndef CURL_DISABLE_PROXY - case CURLOPT_PROXYUSERPWD: - /* - * user:password needed to use the proxy - */ - result = setstropt_userpwd(va_arg(param, char *), - &data->set.str[STRING_PROXYUSERNAME], - &data->set.str[STRING_PROXYPASSWORD]); - break; - case CURLOPT_PROXYUSERNAME: - /* - * authentication user name to use in the operation - */ - result = setstropt(&data->set.str[STRING_PROXYUSERNAME], - va_arg(param, char *)); - break; - case CURLOPT_PROXYPASSWORD: - /* - * authentication password to use in the operation - */ - result = setstropt(&data->set.str[STRING_PROXYPASSWORD], - va_arg(param, char *)); - break; - case CURLOPT_NOPROXY: - /* - * proxy exception list - */ - result = setstropt(&data->set.str[STRING_NOPROXY], - va_arg(param, char *)); - break; -#endif - - case CURLOPT_RANGE: - /* - * What range of the file you want to transfer - */ - result = setstropt(&data->set.str[STRING_SET_RANGE], - va_arg(param, char *)); - break; - case CURLOPT_RESUME_FROM: - /* - * Resume transfer at the given file position - */ - data->set.set_resume_from = va_arg(param, long); - break; - case CURLOPT_RESUME_FROM_LARGE: - /* - * Resume transfer at the given file position - */ - data->set.set_resume_from = va_arg(param, curl_off_t); - break; - case CURLOPT_DEBUGFUNCTION: - /* - * stderr write callback. - */ - data->set.fdebug = va_arg(param, curl_debug_callback); - /* - * if the callback provided is NULL, it'll use the default callback - */ - break; - case CURLOPT_DEBUGDATA: - /* - * Set to a void * that should receive all error writes. This - * defaults to CURLOPT_STDERR for normal operations. - */ - data->set.debugdata = va_arg(param, void *); - break; - case CURLOPT_STDERR: - /* - * Set to a FILE * that should receive all error writes. This - * defaults to stderr for normal operations. - */ - data->set.err = va_arg(param, FILE *); - if(!data->set.err) - data->set.err = stderr; - break; - case CURLOPT_HEADERFUNCTION: - /* - * Set header write callback - */ - data->set.fwrite_header = va_arg(param, curl_write_callback); - break; - case CURLOPT_WRITEFUNCTION: - /* - * Set data write callback - */ - data->set.fwrite_func = va_arg(param, curl_write_callback); - if(!data->set.fwrite_func) { - data->set.is_fwrite_set = 0; - /* When set to NULL, reset to our internal default function */ - data->set.fwrite_func = (curl_write_callback)fwrite; - } - else - data->set.is_fwrite_set = 1; - break; - case CURLOPT_READFUNCTION: - /* - * Read data callback - */ - data->set.fread_func_set = va_arg(param, curl_read_callback); - if(!data->set.fread_func_set) { - data->set.is_fread_set = 0; - /* When set to NULL, reset to our internal default function */ - data->set.fread_func_set = (curl_read_callback)fread; - } - else - data->set.is_fread_set = 1; - break; - case CURLOPT_SEEKFUNCTION: - /* - * Seek callback. Might be NULL. - */ - data->set.seek_func = va_arg(param, curl_seek_callback); - break; - case CURLOPT_SEEKDATA: - /* - * Seek control callback. Might be NULL. - */ - data->set.seek_client = va_arg(param, void *); - break; - case CURLOPT_CONV_FROM_NETWORK_FUNCTION: - /* - * "Convert from network encoding" callback - */ - data->set.convfromnetwork = va_arg(param, curl_conv_callback); - break; - case CURLOPT_CONV_TO_NETWORK_FUNCTION: - /* - * "Convert to network encoding" callback - */ - data->set.convtonetwork = va_arg(param, curl_conv_callback); - break; - case CURLOPT_CONV_FROM_UTF8_FUNCTION: - /* - * "Convert from UTF-8 encoding" callback - */ - data->set.convfromutf8 = va_arg(param, curl_conv_callback); - break; - case CURLOPT_IOCTLFUNCTION: - /* - * I/O control callback. Might be NULL. - */ - data->set.ioctl_func = va_arg(param, curl_ioctl_callback); - break; - case CURLOPT_IOCTLDATA: - /* - * I/O control data pointer. Might be NULL. - */ - data->set.ioctl_client = va_arg(param, void *); - break; - case CURLOPT_SSLCERT: - /* - * String that holds file name of the SSL certificate to use - */ - result = setstropt(&data->set.str[STRING_CERT_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_SSLCERT: - /* - * String that holds file name of the SSL certificate to use for proxy - */ - result = setstropt(&data->set.str[STRING_CERT_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_SSLCERTTYPE: - /* - * String that holds file type of the SSL certificate to use - */ - result = setstropt(&data->set.str[STRING_CERT_TYPE_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_SSLCERTTYPE: - /* - * String that holds file type of the SSL certificate to use for proxy - */ - result = setstropt(&data->set.str[STRING_CERT_TYPE_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_SSLKEY: - /* - * String that holds file name of the SSL key to use - */ - result = setstropt(&data->set.str[STRING_KEY_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_SSLKEY: - /* - * String that holds file name of the SSL key to use for proxy - */ - result = setstropt(&data->set.str[STRING_KEY_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_SSLKEYTYPE: - /* - * String that holds file type of the SSL key to use - */ - result = setstropt(&data->set.str[STRING_KEY_TYPE_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_SSLKEYTYPE: - /* - * String that holds file type of the SSL key to use for proxy - */ - result = setstropt(&data->set.str[STRING_KEY_TYPE_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_KEYPASSWD: - /* - * String that holds the SSL or SSH private key password. - */ - result = setstropt(&data->set.str[STRING_KEY_PASSWD_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_KEYPASSWD: - /* - * String that holds the SSL private key password for proxy. - */ - result = setstropt(&data->set.str[STRING_KEY_PASSWD_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_SSLENGINE: - /* - * String that holds the SSL crypto engine. - */ - argptr = va_arg(param, char *); - if(argptr && argptr[0]) - result = Curl_ssl_set_engine(data, argptr); - break; - - case CURLOPT_SSLENGINE_DEFAULT: - /* - * flag to set engine as default. - */ - result = Curl_ssl_set_engine_default(data); - break; - case CURLOPT_CRLF: - /* - * Kludgy option to enable CRLF conversions. Subject for removal. - */ - data->set.crlf = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_INTERFACE: - /* - * Set what interface or address/hostname to bind the socket to when - * performing an operation and thus what from-IP your connection will use. - */ - result = setstropt(&data->set.str[STRING_DEVICE], - va_arg(param, char *)); - break; - case CURLOPT_LOCALPORT: - /* - * Set what local port to bind the socket to when performing an operation. - */ - arg = va_arg(param, long); - if((arg < 0) || (arg > 65535)) - return CURLE_BAD_FUNCTION_ARGUMENT; - data->set.localport = curlx_sltous(arg); - break; - case CURLOPT_LOCALPORTRANGE: - /* - * Set number of local ports to try, starting with CURLOPT_LOCALPORT. - */ - arg = va_arg(param, long); - if((arg < 0) || (arg > 65535)) - return CURLE_BAD_FUNCTION_ARGUMENT; - data->set.localportrange = curlx_sltosi(arg); - break; - case CURLOPT_KRBLEVEL: - /* - * A string that defines the kerberos security level. - */ - result = setstropt(&data->set.str[STRING_KRB_LEVEL], - va_arg(param, char *)); - data->set.krb = (data->set.str[STRING_KRB_LEVEL]) ? TRUE : FALSE; - break; - case CURLOPT_GSSAPI_DELEGATION: - /* - * GSS-API credential delegation - */ - data->set.gssapi_delegation = va_arg(param, long); - break; - case CURLOPT_SSL_VERIFYPEER: - /* - * Enable peer SSL verifying. - */ - data->set.ssl.primary.verifypeer = (0 != va_arg(param, long)) ? - TRUE : FALSE; - break; - case CURLOPT_PROXY_SSL_VERIFYPEER: - /* - * Enable peer SSL verifying for proxy. - */ - data->set.proxy_ssl.primary.verifypeer = - (0 != va_arg(param, long))?TRUE:FALSE; - break; - case CURLOPT_SSL_VERIFYHOST: - /* - * Enable verification of the host name in the peer certificate - */ - arg = va_arg(param, long); - - /* Obviously people are not reading documentation and too many thought - this argument took a boolean when it wasn't and misused it. We thus ban - 1 as a sensible input and we warn about its use. Then we only have the - 2 action internally stored as TRUE. */ - - if(1 == arg) { - failf(data, "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!"); - return CURLE_BAD_FUNCTION_ARGUMENT; - } - - data->set.ssl.primary.verifyhost = (0 != arg) ? TRUE : FALSE; - break; - case CURLOPT_PROXY_SSL_VERIFYHOST: - /* - * Enable verification of the host name in the peer certificate for proxy - */ - arg = va_arg(param, long); - - /* Obviously people are not reading documentation and too many thought - this argument took a boolean when it wasn't and misused it. We thus ban - 1 as a sensible input and we warn about its use. Then we only have the - 2 action internally stored as TRUE. */ - - if(1 == arg) { - failf(data, "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!"); - return CURLE_BAD_FUNCTION_ARGUMENT; - } - - data->set.proxy_ssl.primary.verifyhost = (0 != arg)?TRUE:FALSE; - break; - case CURLOPT_SSL_VERIFYSTATUS: - /* - * Enable certificate status verifying. - */ - if(!Curl_ssl_cert_status_request()) { - result = CURLE_NOT_BUILT_IN; - break; - } - - data->set.ssl.primary.verifystatus = (0 != va_arg(param, long)) ? - TRUE : FALSE; - break; - case CURLOPT_SSL_CTX_FUNCTION: - /* - * Set a SSL_CTX callback - */ -#ifdef USE_SSL - if(Curl_ssl->have_ssl_ctx) - data->set.ssl.fsslctx = va_arg(param, curl_ssl_ctx_callback); - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_SSL_CTX_DATA: - /* - * Set a SSL_CTX callback parameter pointer - */ -#ifdef USE_SSL - if(Curl_ssl->have_ssl_ctx) - data->set.ssl.fsslctxp = va_arg(param, void *); - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_SSL_FALSESTART: - /* - * Enable TLS false start. - */ - if(!Curl_ssl_false_start()) { - result = CURLE_NOT_BUILT_IN; - break; - } - - data->set.ssl.falsestart = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_CERTINFO: -#ifdef USE_SSL - if(Curl_ssl->have_certinfo) - data->set.ssl.certinfo = (0 != va_arg(param, long)) ? TRUE : FALSE; - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_PINNEDPUBLICKEY: - /* - * Set pinned public key for SSL connection. - * Specify file name of the public key in DER format. - */ -#ifdef USE_SSL - if(Curl_ssl->have_pinnedpubkey) - result = setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG], - va_arg(param, char *)); - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_PROXY_PINNEDPUBLICKEY: - /* - * Set pinned public key for SSL connection. - * Specify file name of the public key in DER format. - */ -#ifdef USE_SSL - if(Curl_ssl->have_pinnedpubkey) - result = setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY], - va_arg(param, char *)); - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_CAINFO: - /* - * Set CA info for SSL connection. Specify file name of the CA certificate - */ - result = setstropt(&data->set.str[STRING_SSL_CAFILE_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_CAINFO: - /* - * Set CA info SSL connection for proxy. Specify file name of the - * CA certificate - */ - result = setstropt(&data->set.str[STRING_SSL_CAFILE_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_CAPATH: - /* - * Set CA path info for SSL connection. Specify directory name of the CA - * certificates which have been prepared using openssl c_rehash utility. - */ -#ifdef USE_SSL - if(Curl_ssl->have_ca_path) - /* This does not work on windows. */ - result = setstropt(&data->set.str[STRING_SSL_CAPATH_ORIG], - va_arg(param, char *)); - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_PROXY_CAPATH: - /* - * Set CA path info for SSL connection proxy. Specify directory name of the - * CA certificates which have been prepared using openssl c_rehash utility. - */ -#ifdef USE_SSL - if(Curl_ssl->have_ca_path) - /* This does not work on windows. */ - result = setstropt(&data->set.str[STRING_SSL_CAPATH_PROXY], - va_arg(param, char *)); - else -#endif - result = CURLE_NOT_BUILT_IN; - break; - case CURLOPT_CRLFILE: - /* - * Set CRL file info for SSL connection. Specify file name of the CRL - * to check certificates revocation - */ - result = setstropt(&data->set.str[STRING_SSL_CRLFILE_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_PROXY_CRLFILE: - /* - * Set CRL file info for SSL connection for proxy. Specify file name of the - * CRL to check certificates revocation - */ - result = setstropt(&data->set.str[STRING_SSL_CRLFILE_PROXY], - va_arg(param, char *)); - break; - case CURLOPT_ISSUERCERT: - /* - * Set Issuer certificate file - * to check certificates issuer - */ - result = setstropt(&data->set.str[STRING_SSL_ISSUERCERT_ORIG], - va_arg(param, char *)); - break; - case CURLOPT_TELNETOPTIONS: - /* - * Set a linked list of telnet options - */ - data->set.telnet_options = va_arg(param, struct curl_slist *); - break; - - case CURLOPT_BUFFERSIZE: - /* - * The application kindly asks for a differently sized receive buffer. - * If it seems reasonable, we'll use it. - */ - arg = va_arg(param, long); - - if(arg > READBUFFER_MAX) - arg = READBUFFER_MAX; - else if(arg < 1) - arg = READBUFFER_SIZE; - else if(arg < READBUFFER_MIN) - arg = READBUFFER_MIN; - - /* Resize if new size */ - if(arg != data->set.buffer_size) { - char *newbuff = realloc(data->state.buffer, arg + 1); - if(!newbuff) { - DEBUGF(fprintf(stderr, "Error: realloc of buffer failed\n")); - result = CURLE_OUT_OF_MEMORY; - } - else - data->state.buffer = newbuff; - } - data->set.buffer_size = arg; - - break; - - case CURLOPT_NOSIGNAL: - /* - * The application asks not to set any signal() or alarm() handlers, - * even when using a timeout. - */ - data->set.no_signal = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_SHARE: - { - struct Curl_share *set; - set = va_arg(param, struct Curl_share *); - - /* disconnect from old share, if any */ - if(data->share) { - Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE); - - if(data->dns.hostcachetype == HCACHE_SHARED) { - data->dns.hostcache = NULL; - data->dns.hostcachetype = HCACHE_NONE; - } - -#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) - if(data->share->cookies == data->cookies) - data->cookies = NULL; -#endif - - if(data->share->sslsession == data->state.session) - data->state.session = NULL; - - data->share->dirty--; - - Curl_share_unlock(data, CURL_LOCK_DATA_SHARE); - data->share = NULL; - } - - /* use new share if it set */ - data->share = set; - if(data->share) { - - Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE); - - data->share->dirty++; - - if(data->share->specifier & (1<< CURL_LOCK_DATA_DNS)) { - /* use shared host cache */ - data->dns.hostcache = &data->share->hostcache; - data->dns.hostcachetype = HCACHE_SHARED; - } -#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) - if(data->share->cookies) { - /* use shared cookie list, first free own one if any */ - Curl_cookie_cleanup(data->cookies); - /* enable cookies since we now use a share that uses cookies! */ - data->cookies = data->share->cookies; - } -#endif /* CURL_DISABLE_HTTP */ - if(data->share->sslsession) { - data->set.general_ssl.max_ssl_sessions = data->share->max_ssl_sessions; - data->state.session = data->share->sslsession; - } - Curl_share_unlock(data, CURL_LOCK_DATA_SHARE); - - } - /* check for host cache not needed, - * it will be done by curl_easy_perform */ - } - break; - - case CURLOPT_PRIVATE: - /* - * Set private data pointer. - */ - data->set.private_data = va_arg(param, void *); - break; - - case CURLOPT_MAXFILESIZE: - /* - * Set the maximum size of a file to download. - */ - data->set.max_filesize = va_arg(param, long); - break; - -#ifdef USE_SSL - case CURLOPT_USE_SSL: - /* - * Make transfers attempt to use SSL/TLS. - */ - data->set.use_ssl = (curl_usessl)va_arg(param, long); - break; - - case CURLOPT_SSL_OPTIONS: - arg = va_arg(param, long); - data->set.ssl.enable_beast = arg&CURLSSLOPT_ALLOW_BEAST?TRUE:FALSE; - data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE); - break; - - case CURLOPT_PROXY_SSL_OPTIONS: - arg = va_arg(param, long); - data->set.proxy_ssl.enable_beast = arg&CURLSSLOPT_ALLOW_BEAST?TRUE:FALSE; - data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE); - break; - -#endif - case CURLOPT_FTPSSLAUTH: - /* - * Set a specific auth for FTP-SSL transfers. - */ - data->set.ftpsslauth = (curl_ftpauth)va_arg(param, long); - break; - - case CURLOPT_IPRESOLVE: - data->set.ipver = va_arg(param, long); - break; - - case CURLOPT_MAXFILESIZE_LARGE: - /* - * Set the maximum size of a file to download. - */ - data->set.max_filesize = va_arg(param, curl_off_t); - break; - - case CURLOPT_TCP_NODELAY: - /* - * Enable or disable TCP_NODELAY, which will disable/enable the Nagle - * algorithm - */ - data->set.tcp_nodelay = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_FTP_ACCOUNT: - result = setstropt(&data->set.str[STRING_FTP_ACCOUNT], - va_arg(param, char *)); - break; - - case CURLOPT_IGNORE_CONTENT_LENGTH: - data->set.ignorecl = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_CONNECT_ONLY: - /* - * No data transfer, set up connection and let application use the socket - */ - data->set.connect_only = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_FTP_ALTERNATIVE_TO_USER: - result = setstropt(&data->set.str[STRING_FTP_ALTERNATIVE_TO_USER], - va_arg(param, char *)); - break; - - case CURLOPT_SOCKOPTFUNCTION: - /* - * socket callback function: called after socket() but before connect() - */ - data->set.fsockopt = va_arg(param, curl_sockopt_callback); - break; - - case CURLOPT_SOCKOPTDATA: - /* - * socket callback data pointer. Might be NULL. - */ - data->set.sockopt_client = va_arg(param, void *); - break; - - case CURLOPT_OPENSOCKETFUNCTION: - /* - * open/create socket callback function: called instead of socket(), - * before connect() - */ - data->set.fopensocket = va_arg(param, curl_opensocket_callback); - break; - - case CURLOPT_OPENSOCKETDATA: - /* - * socket callback data pointer. Might be NULL. - */ - data->set.opensocket_client = va_arg(param, void *); - break; - - case CURLOPT_CLOSESOCKETFUNCTION: - /* - * close socket callback function: called instead of close() - * when shutting down a connection - */ - data->set.fclosesocket = va_arg(param, curl_closesocket_callback); - break; - - case CURLOPT_CLOSESOCKETDATA: - /* - * socket callback data pointer. Might be NULL. - */ - data->set.closesocket_client = va_arg(param, void *); - break; - - case CURLOPT_SSL_SESSIONID_CACHE: - data->set.ssl.primary.sessionid = (0 != va_arg(param, long)) ? - TRUE : FALSE; - data->set.proxy_ssl.primary.sessionid = data->set.ssl.primary.sessionid; - break; - -#ifdef USE_LIBSSH2 - /* we only include SSH options if explicitly built to support SSH */ - case CURLOPT_SSH_AUTH_TYPES: - data->set.ssh_auth_types = va_arg(param, long); - break; - - case CURLOPT_SSH_PUBLIC_KEYFILE: - /* - * Use this file instead of the $HOME/.ssh/id_dsa.pub file - */ - result = setstropt(&data->set.str[STRING_SSH_PUBLIC_KEY], - va_arg(param, char *)); - break; - - case CURLOPT_SSH_PRIVATE_KEYFILE: - /* - * Use this file instead of the $HOME/.ssh/id_dsa file - */ - result = setstropt(&data->set.str[STRING_SSH_PRIVATE_KEY], - va_arg(param, char *)); - break; - case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: - /* - * Option to allow for the MD5 of the host public key to be checked - * for validation purposes. - */ - result = setstropt(&data->set.str[STRING_SSH_HOST_PUBLIC_KEY_MD5], - va_arg(param, char *)); - break; -#ifdef HAVE_LIBSSH2_KNOWNHOST_API - case CURLOPT_SSH_KNOWNHOSTS: - /* - * Store the file name to read known hosts from. - */ - result = setstropt(&data->set.str[STRING_SSH_KNOWNHOSTS], - va_arg(param, char *)); - break; - - case CURLOPT_SSH_KEYFUNCTION: - /* setting to NULL is fine since the ssh.c functions themselves will - then rever to use the internal default */ - data->set.ssh_keyfunc = va_arg(param, curl_sshkeycallback); - break; - - case CURLOPT_SSH_KEYDATA: - /* - * Custom client data to pass to the SSH keyfunc callback - */ - data->set.ssh_keyfunc_userp = va_arg(param, void *); - break; -#endif /* HAVE_LIBSSH2_KNOWNHOST_API */ - -#endif /* USE_LIBSSH2 */ - - case CURLOPT_HTTP_TRANSFER_DECODING: - /* - * disable libcurl transfer encoding is used - */ - data->set.http_te_skip = (0 == va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_HTTP_CONTENT_DECODING: - /* - * raw data passed to the application when content encoding is used - */ - data->set.http_ce_skip = (0 == va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_NEW_FILE_PERMS: - /* - * Uses these permissions instead of 0644 - */ - data->set.new_file_perms = va_arg(param, long); - break; - - case CURLOPT_NEW_DIRECTORY_PERMS: - /* - * Uses these permissions instead of 0755 - */ - data->set.new_directory_perms = va_arg(param, long); - break; - - case CURLOPT_ADDRESS_SCOPE: - /* - * We always get longs when passed plain numericals, but for this value we - * know that an unsigned int will always hold the value so we blindly - * typecast to this type - */ - arg = va_arg(param, long); - if((arg < 0) || (arg > 0xf)) - return CURLE_BAD_FUNCTION_ARGUMENT; - data->set.scope_id = curlx_sltoui(arg); - break; - - case CURLOPT_PROTOCOLS: - /* set the bitmask for the protocols that are allowed to be used for the - transfer, which thus helps the app which takes URLs from users or other - external inputs and want to restrict what protocol(s) to deal - with. Defaults to CURLPROTO_ALL. */ - data->set.allowed_protocols = va_arg(param, long); - break; - - case CURLOPT_REDIR_PROTOCOLS: - /* set the bitmask for the protocols that libcurl is allowed to follow to, - as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs - to be set in both bitmasks to be allowed to get redirected to. Defaults - to all protocols except FILE and SCP. */ - data->set.redir_protocols = va_arg(param, long); - break; - - case CURLOPT_DEFAULT_PROTOCOL: - /* Set the protocol to use when the URL doesn't include any protocol */ - result = setstropt(&data->set.str[STRING_DEFAULT_PROTOCOL], - va_arg(param, char *)); - break; - - case CURLOPT_MAIL_FROM: - /* Set the SMTP mail originator */ - result = setstropt(&data->set.str[STRING_MAIL_FROM], - va_arg(param, char *)); - break; - - case CURLOPT_MAIL_AUTH: - /* Set the SMTP auth originator */ - result = setstropt(&data->set.str[STRING_MAIL_AUTH], - va_arg(param, char *)); - break; - - case CURLOPT_MAIL_RCPT: - /* Set the list of mail recipients */ - data->set.mail_rcpt = va_arg(param, struct curl_slist *); - break; - - case CURLOPT_SASL_IR: - /* Enable/disable SASL initial response */ - data->set.sasl_ir = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - - case CURLOPT_RTSP_REQUEST: - { - /* - * Set the RTSP request method (OPTIONS, SETUP, PLAY, etc...) - * Would this be better if the RTSPREQ_* were just moved into here? - */ - long curl_rtspreq = va_arg(param, long); - Curl_RtspReq rtspreq = RTSPREQ_NONE; - switch(curl_rtspreq) { - case CURL_RTSPREQ_OPTIONS: - rtspreq = RTSPREQ_OPTIONS; - break; - - case CURL_RTSPREQ_DESCRIBE: - rtspreq = RTSPREQ_DESCRIBE; - break; - - case CURL_RTSPREQ_ANNOUNCE: - rtspreq = RTSPREQ_ANNOUNCE; - break; - - case CURL_RTSPREQ_SETUP: - rtspreq = RTSPREQ_SETUP; - break; - - case CURL_RTSPREQ_PLAY: - rtspreq = RTSPREQ_PLAY; - break; - - case CURL_RTSPREQ_PAUSE: - rtspreq = RTSPREQ_PAUSE; - break; - - case CURL_RTSPREQ_TEARDOWN: - rtspreq = RTSPREQ_TEARDOWN; - break; - - case CURL_RTSPREQ_GET_PARAMETER: - rtspreq = RTSPREQ_GET_PARAMETER; - break; - - case CURL_RTSPREQ_SET_PARAMETER: - rtspreq = RTSPREQ_SET_PARAMETER; - break; - - case CURL_RTSPREQ_RECORD: - rtspreq = RTSPREQ_RECORD; - break; - - case CURL_RTSPREQ_RECEIVE: - rtspreq = RTSPREQ_RECEIVE; - break; - default: - rtspreq = RTSPREQ_NONE; - } - - data->set.rtspreq = rtspreq; - break; - } - - - case CURLOPT_RTSP_SESSION_ID: - /* - * Set the RTSP Session ID manually. Useful if the application is - * resuming a previously established RTSP session - */ - result = setstropt(&data->set.str[STRING_RTSP_SESSION_ID], - va_arg(param, char *)); - break; - - case CURLOPT_RTSP_STREAM_URI: - /* - * Set the Stream URI for the RTSP request. Unless the request is - * for generic server options, the application will need to set this. - */ - result = setstropt(&data->set.str[STRING_RTSP_STREAM_URI], - va_arg(param, char *)); - break; - - case CURLOPT_RTSP_TRANSPORT: - /* - * The content of the Transport: header for the RTSP request - */ - result = setstropt(&data->set.str[STRING_RTSP_TRANSPORT], - va_arg(param, char *)); - break; - - case CURLOPT_RTSP_CLIENT_CSEQ: - /* - * Set the CSEQ number to issue for the next RTSP request. Useful if the - * application is resuming a previously broken connection. The CSEQ - * will increment from this new number henceforth. - */ - data->state.rtsp_next_client_CSeq = va_arg(param, long); - break; - - case CURLOPT_RTSP_SERVER_CSEQ: - /* Same as the above, but for server-initiated requests */ - data->state.rtsp_next_client_CSeq = va_arg(param, long); - break; - - case CURLOPT_INTERLEAVEDATA: - data->set.rtp_out = va_arg(param, void *); - break; - case CURLOPT_INTERLEAVEFUNCTION: - /* Set the user defined RTP write function */ - data->set.fwrite_rtp = va_arg(param, curl_write_callback); - break; - - case CURLOPT_WILDCARDMATCH: - data->set.wildcardmatch = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_CHUNK_BGN_FUNCTION: - data->set.chunk_bgn = va_arg(param, curl_chunk_bgn_callback); - break; - case CURLOPT_CHUNK_END_FUNCTION: - data->set.chunk_end = va_arg(param, curl_chunk_end_callback); - break; - case CURLOPT_FNMATCH_FUNCTION: - data->set.fnmatch = va_arg(param, curl_fnmatch_callback); - break; - case CURLOPT_CHUNK_DATA: - data->wildcard.customptr = va_arg(param, void *); - break; - case CURLOPT_FNMATCH_DATA: - data->set.fnmatch_data = va_arg(param, void *); - break; -#ifdef USE_TLS_SRP - case CURLOPT_TLSAUTH_USERNAME: - result = setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_ORIG], - va_arg(param, char *)); - if(data->set.str[STRING_TLSAUTH_USERNAME_ORIG] && !data->set.ssl.authtype) - data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */ - break; - case CURLOPT_PROXY_TLSAUTH_USERNAME: - result = setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_PROXY], - va_arg(param, char *)); - if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] && - !data->set.proxy_ssl.authtype) - data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */ - break; - case CURLOPT_TLSAUTH_PASSWORD: - result = setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_ORIG], - va_arg(param, char *)); - if(data->set.str[STRING_TLSAUTH_USERNAME_ORIG] && !data->set.ssl.authtype) - data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */ - break; - case CURLOPT_PROXY_TLSAUTH_PASSWORD: - result = setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_PROXY], - va_arg(param, char *)); - if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] && - !data->set.proxy_ssl.authtype) - data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */ - break; - case CURLOPT_TLSAUTH_TYPE: - argptr = va_arg(param, char *); - if(!argptr || - strncasecompare(argptr, "SRP", strlen("SRP"))) - data->set.ssl.authtype = CURL_TLSAUTH_SRP; - else - data->set.ssl.authtype = CURL_TLSAUTH_NONE; - break; - case CURLOPT_PROXY_TLSAUTH_TYPE: - argptr = va_arg(param, char *); - if(!argptr || - strncasecompare(argptr, "SRP", strlen("SRP"))) - data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; - else - data->set.proxy_ssl.authtype = CURL_TLSAUTH_NONE; - break; -#endif - case CURLOPT_DNS_SERVERS: - result = Curl_set_dns_servers(data, va_arg(param, char *)); - break; - case CURLOPT_DNS_INTERFACE: - result = Curl_set_dns_interface(data, va_arg(param, char *)); - break; - case CURLOPT_DNS_LOCAL_IP4: - result = Curl_set_dns_local_ip4(data, va_arg(param, char *)); - break; - case CURLOPT_DNS_LOCAL_IP6: - result = Curl_set_dns_local_ip6(data, va_arg(param, char *)); - break; - - case CURLOPT_TCP_KEEPALIVE: - data->set.tcp_keepalive = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_TCP_KEEPIDLE: - data->set.tcp_keepidle = va_arg(param, long); - break; - case CURLOPT_TCP_KEEPINTVL: - data->set.tcp_keepintvl = va_arg(param, long); - break; - case CURLOPT_TCP_FASTOPEN: -#if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) - data->set.tcp_fastopen = (0 != va_arg(param, long))?TRUE:FALSE; -#else - result = CURLE_NOT_BUILT_IN; -#endif - break; - case CURLOPT_SSL_ENABLE_NPN: - data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_SSL_ENABLE_ALPN: - data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - -#ifdef USE_UNIX_SOCKETS - case CURLOPT_UNIX_SOCKET_PATH: - data->set.abstract_unix_socket = FALSE; - result = setstropt(&data->set.str[STRING_UNIX_SOCKET_PATH], - va_arg(param, char *)); - break; - case CURLOPT_ABSTRACT_UNIX_SOCKET: - data->set.abstract_unix_socket = TRUE; - result = setstropt(&data->set.str[STRING_UNIX_SOCKET_PATH], - va_arg(param, char *)); - break; -#endif - - case CURLOPT_PATH_AS_IS: - data->set.path_as_is = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_PIPEWAIT: - data->set.pipewait = (0 != va_arg(param, long)) ? TRUE : FALSE; - break; - case CURLOPT_STREAM_WEIGHT: -#ifndef USE_NGHTTP2 - return CURLE_NOT_BUILT_IN; -#else - arg = va_arg(param, long); - if((arg >= 1) && (arg <= 256)) - data->set.stream_weight = (int)arg; - break; -#endif - case CURLOPT_STREAM_DEPENDS: - case CURLOPT_STREAM_DEPENDS_E: - { -#ifndef USE_NGHTTP2 - return CURLE_NOT_BUILT_IN; -#else - struct Curl_easy *dep = va_arg(param, struct Curl_easy *); - if(!dep || GOOD_EASY_HANDLE(dep)) { - if(data->set.stream_depends_on) { - Curl_http2_remove_child(data->set.stream_depends_on, data); - } - Curl_http2_add_child(dep, data, (option == CURLOPT_STREAM_DEPENDS_E)); - } - break; -#endif - } - case CURLOPT_CONNECT_TO: - data->set.connect_to = va_arg(param, struct curl_slist *); - break; - case CURLOPT_SUPPRESS_CONNECT_HEADERS: - data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE; - break; - case CURLOPT_SSH_COMPRESSION: - data->set.ssh_compression = (0 != va_arg(param, long))?TRUE:FALSE; - break; - default: - /* unknown tag and its companion, just ignore: */ - result = CURLE_UNKNOWN_OPTION; - break; - } - - return result; -} - #ifdef USE_RECV_BEFORE_SEND_WORKAROUND static void conn_reset_postponed_data(struct connectdata *conn, int num) { @@ -3289,58 +924,6 @@ static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke) } } -/* - * This function finds the connection in the connection - * cache that has been unused for the longest time. - * - * Returns the pointer to the oldest idle connection, or NULL if none was - * found. - */ -struct connectdata * -Curl_oldest_idle_connection(struct Curl_easy *data) -{ - struct conncache *bc = data->state.conn_cache; - struct curl_hash_iterator iter; - struct curl_llist_element *curr; - struct curl_hash_element *he; - time_t highscore =- 1; - time_t score; - struct curltime now; - struct connectdata *conn_candidate = NULL; - struct connectbundle *bundle; - - now = Curl_tvnow(); - - Curl_hash_start_iterate(&bc->hash, &iter); - - he = Curl_hash_next_element(&iter); - while(he) { - struct connectdata *conn; - - bundle = he->ptr; - - curr = bundle->conn_list.head; - while(curr) { - conn = curr->ptr; - - if(!conn->inuse) { - /* Set higher score for the age passed since the connection was used */ - score = Curl_tvdiff(now, conn->now); - - if(score > highscore) { - highscore = score; - conn_candidate = conn; - } - } - curr = curr->next; - } - - he = Curl_hash_next_element(&iter); - } - - return conn_candidate; -} - static bool proxy_info_matches(const struct proxy_info* data, const struct proxy_info* needle) @@ -3366,15 +949,15 @@ find_oldest_idle_connection_in_bundle(struct Curl_easy *data, struct connectbundle *bundle) { struct curl_llist_element *curr; - time_t highscore = -1; - time_t score; + timediff_t highscore = -1; + timediff_t score; struct curltime now; struct connectdata *conn_candidate = NULL; struct connectdata *conn; (void)data; - now = Curl_tvnow(); + now = Curl_now(); curr = bundle->conn_list.head; while(curr) { @@ -3382,7 +965,7 @@ find_oldest_idle_connection_in_bundle(struct Curl_easy *data, if(!conn->inuse) { /* Set higher score for the age passed since the connection was used */ - score = Curl_tvdiff(now, conn->now); + score = Curl_timediff(now, conn->now); if(score > highscore) { highscore = score; @@ -3456,11 +1039,11 @@ static int call_disconnect_if_dead(struct connectdata *conn, */ static void prune_dead_connections(struct Curl_easy *data) { - struct curltime now = Curl_tvnow(); - time_t elapsed = Curl_tvdiff(now, data->state.conn_cache->last_cleanup); + struct curltime now = Curl_now(); + time_t elapsed = Curl_timediff(now, data->state.conn_cache->last_cleanup); if(elapsed >= 1000L) { - Curl_conncache_foreach(data->state.conn_cache, data, + Curl_conncache_foreach(data, data->state.conn_cache, data, call_disconnect_if_dead); data->state.conn_cache->last_cleanup = now; } @@ -4104,7 +1687,7 @@ static bool is_ASCII_name(const char *hostname) /* * Perform any necessary IDN conversion of hostname */ -static void fix_hostname(struct connectdata *conn, struct hostname *host) +static CURLcode fix_hostname(struct connectdata *conn, struct hostname *host) { size_t len; struct Curl_easy *data = conn->data; @@ -4144,9 +1727,11 @@ static void fix_hostname(struct connectdata *conn, struct hostname *host) /* change the name pointer to point to the encoded hostname */ host->name = host->encalloc; } - else - infof(data, "Failed to convert %s to ACE; %s\n", host->name, + else { + failf(data, "Failed to convert %s to ACE; %s\n", host->name, idn2_strerror(rc)); + return CURLE_URL_MALFORMAT; + } } #elif defined(USE_WIN32_IDN) char *ace_hostname = NULL; @@ -4156,12 +1741,24 @@ static void fix_hostname(struct connectdata *conn, struct hostname *host) /* change the name pointer to point to the encoded hostname */ host->name = host->encalloc; } - else - infof(data, "Failed to convert %s to ACE;\n", host->name); + else { + failf(data, "Failed to convert %s to ACE;\n", host->name); + return CURLE_URL_MALFORMAT; + } #else infof(data, "IDN support not present, can't parse Unicode domains\n"); #endif } + { + char *hostp; + for(hostp = host->name; *hostp; hostp++) { + if(*hostp <= 32) { + failf(data, "Host name '%s' contains bad letter", host->name); + return CURLE_URL_MALFORMAT; + } + } + } + return CURLE_OK; } /* @@ -4229,7 +1826,7 @@ static struct connectdata *allocate_conn(struct Curl_easy *data) connclose(conn, "Default to force-close"); /* Store creation time to help future close decision making */ - conn->created = Curl_tvnow(); + conn->created = Curl_now(); conn->data = data; /* Setup the association between this connection and the Curl_easy */ @@ -5142,8 +2739,8 @@ static CURLcode parse_proxy(struct Curl_easy *data, atsign = strchr(proxyptr, '@'); if(atsign) { CURLcode result = - parse_login_details(proxyptr, atsign - proxyptr, - &proxyuser, &proxypasswd, NULL); + Curl_parse_login_details(proxyptr, atsign - proxyptr, + &proxyuser, &proxypasswd, NULL); if(result) return result; proxyptr = atsign + 1; @@ -5534,10 +3131,11 @@ static CURLcode parse_url_login(struct Curl_easy *data, /* We could use the login information in the URL so extract it. Only parse options if the handler says we should. */ - result = parse_login_details(login, ptr - login - 1, - &userp, &passwdp, - (conn->handler->flags & PROTOPT_URLOPTIONS)? - &optionsp:NULL); + result = + Curl_parse_login_details(login, ptr - login - 1, + &userp, &passwdp, + (conn->handler->flags & PROTOPT_URLOPTIONS)? + &optionsp:NULL); if(result) goto out; @@ -5593,7 +3191,7 @@ static CURLcode parse_url_login(struct Curl_easy *data, } /* - * parse_login_details() + * Curl_parse_login_details() * * This is used to parse a login string for user name, password and options in * the following formats: @@ -5621,9 +3219,9 @@ static CURLcode parse_url_login(struct Curl_easy *data, * * Returns CURLE_OK on success. */ -static CURLcode parse_login_details(const char *login, const size_t len, - char **userp, char **passwdp, - char **optionsp) +CURLcode Curl_parse_login_details(const char *login, const size_t len, + char **userp, char **passwdp, + char **optionsp) { CURLcode result = CURLE_OK; char *ubuf = NULL; @@ -5752,7 +3350,13 @@ static CURLcode parse_remote_port(struct Curl_easy *data, portptr = strchr(conn->host.name, ']'); if(portptr) { *portptr++ = '\0'; /* zero terminate, killing the bracket */ - if(':' != *portptr) + if(*portptr) { + if (*portptr != ':') { + failf(data, "IPv6 closing bracket followed by '%c'", *portptr); + return CURLE_URL_MALFORMAT; + } + } + else portptr = NULL; /* no port number available */ } } @@ -6171,7 +3775,7 @@ static CURLcode resolve_server(struct Curl_easy *data, bool *async) { CURLcode result = CURLE_OK; - time_t timeout_ms = Curl_timeleft(data, NULL, TRUE); + timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE); /************************************************************* * Resolve the name of the server or proxy @@ -6588,13 +4192,24 @@ static CURLcode create_conn(struct Curl_easy *data, /************************************************************* * IDN-fix the hostnames *************************************************************/ - fix_hostname(conn, &conn->host); - if(conn->bits.conn_to_host) - fix_hostname(conn, &conn->conn_to_host); - if(conn->bits.httpproxy) - fix_hostname(conn, &conn->http_proxy.host); - if(conn->bits.socksproxy) - fix_hostname(conn, &conn->socks_proxy.host); + result = fix_hostname(conn, &conn->host); + if(result) + goto out; + if(conn->bits.conn_to_host) { + result = fix_hostname(conn, &conn->conn_to_host); + if(result) + goto out; + } + if(conn->bits.httpproxy) { + result = fix_hostname(conn, &conn->http_proxy.host); + if(result) + goto out; + } + if(conn->bits.socksproxy) { + result = fix_hostname(conn, &conn->socks_proxy.host); + if(result) + goto out; + } /************************************************************* * Check whether the host and the "connect to host" are equal. @@ -6837,7 +4452,7 @@ static CURLcode create_conn(struct Curl_easy *data, struct connectdata *conn_candidate; /* The cache is full. Let's see if we can kill a connection. */ - conn_candidate = Curl_oldest_idle_connection(data); + conn_candidate = Curl_conncache_oldest_idle(data); if(conn_candidate) { /* Set the connection's owner correctly, then kill it */ @@ -6972,7 +4587,7 @@ CURLcode Curl_setup_conn(struct connectdata *conn, /* set start time here for timeout purposes in the connect procedure, it is later set again for the progress meter purpose */ - conn->now = Curl_tvnow(); + conn->now = Curl_now(); if(CURL_SOCKET_BAD == conn->sock[FIRSTSOCKET]) { conn->bits.tcpconnect[FIRSTSOCKET] = FALSE; @@ -6989,7 +4604,7 @@ CURLcode Curl_setup_conn(struct connectdata *conn, Curl_verboseconnect(conn); } - conn->now = Curl_tvnow(); /* time this *after* the connect is done, we + conn->now = Curl_now(); /* time this *after* the connect is done, we set this here perhaps a second time */ #ifdef __EMX__ @@ -7062,13 +4677,17 @@ CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn) { struct SingleRequest *k = &data->req; - if(conn) - conn->bits.do_more = FALSE; /* by default there's no curl_do_more() to - * use */ + conn->bits.do_more = FALSE; /* by default there's no curl_do_more() to + use */ data->state.done = FALSE; /* *_done() is not called yet */ data->state.expect100header = FALSE; + /* if the protocol used doesn't support wildcards, switch it off */ + if(data->state.wildcardmatch && + !(conn->handler->flags & PROTOPT_WILDCARD)) + data->state.wildcardmatch = FALSE; + if(data->set.opt_no_body) /* in HTTP lingo, no body means using the HEAD request... */ data->set.httpreq = HTTPREQ_HEAD; @@ -7080,7 +4699,7 @@ CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn) HTTP. */ data->set.httpreq = HTTPREQ_GET; - k->start = Curl_tvnow(); /* start time */ + k->start = Curl_now(); /* start time */ k->now = k->start; /* current time is now */ k->header = TRUE; /* assume header */ diff --git a/libraries/curl/lib/url.h b/libraries/curl/lib/url.h index f13c8e664..5dd04fdff 100644 --- a/libraries/curl/lib/url.h +++ b/libraries/curl/lib/url.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -23,6 +23,10 @@ ***************************************************************************/ #include "curl_setup.h" +#define READBUFFER_SIZE CURL_MAX_WRITE_SIZE +#define READBUFFER_MAX CURL_MAX_READ_SIZE +#define READBUFFER_MIN 1024 + /* * Prototypes for library-wide functions provided by url.c */ @@ -51,14 +55,14 @@ int Curl_protocol_getsock(struct connectdata *conn, int Curl_doing_getsock(struct connectdata *conn, curl_socket_t *socks, int numsocks); - +CURLcode Curl_parse_login_details(const char *login, const size_t len, + char **userptr, char **passwdptr, + char **optionsptr); bool Curl_isPipeliningEnabled(const struct Curl_easy *handle); CURLcode Curl_addHandleToPipeline(struct Curl_easy *handle, struct curl_llist *pipeline); int Curl_removeHandleFromPipeline(struct Curl_easy *handle, struct curl_llist *pipeline); -struct connectdata * -Curl_oldest_idle_connection(struct Curl_easy *data); /* remove the specified connection from all (possible) pipelines and related queues */ void Curl_getoff_all_pipelines(struct Curl_easy *data, diff --git a/libraries/curl/lib/urldata.h b/libraries/curl/lib/urldata.h index 66e4596fd..94f692223 100644 --- a/libraries/curl/lib/urldata.h +++ b/libraries/curl/lib/urldata.h @@ -88,14 +88,6 @@ #include "timeval.h" -#ifdef HAVE_ZLIB_H -#include /* for content-encoding */ -#ifdef __SYMBIAN32__ -/* zlib pollutes the namespace with this definition */ -#undef WIN32 -#endif -#endif - #include #include "http_chunks.h" /* for the structs and enum stuff */ @@ -286,6 +278,7 @@ struct digestdata { char *qop; char *algorithm; int nc; /* nounce count */ + bool userhash; #endif }; @@ -463,16 +456,6 @@ struct hostname { #define KEEP_SENDBITS (KEEP_SEND | KEEP_SEND_HOLD | KEEP_SEND_PAUSE) -#ifdef HAVE_LIBZ -typedef enum { - ZLIB_UNINIT, /* uninitialized */ - ZLIB_INIT, /* initialized */ - ZLIB_GZIP_HEADER, /* reading gzip header */ - ZLIB_GZIP_INFLATING, /* inflating gzip stream */ - ZLIB_INIT_GZIP /* initialized in transparent gzip mode */ -} zlibInitState; -#endif - #ifdef CURLRES_ASYNCH struct Curl_async { char *hostname; @@ -560,18 +543,8 @@ struct SingleRequest { enum expect100 exp100; /* expect 100 continue state */ enum upgrade101 upgr101; /* 101 upgrade state */ - int auto_decoding; /* What content encoding. sec 3.5, RFC2616. */ - -#define IDENTITY 0 /* No encoding */ -#define DEFLATE 1 /* zlib deflate [RFC 1950 & 1951] */ -#define GZIP 2 /* gzip algorithm [RFC 1952] */ - -#ifdef HAVE_LIBZ - zlibInitState zlib_init; /* possible zlib init state; - undefined if Content-Encoding header. */ - z_stream z; /* State structure for zlib. */ -#endif - + struct contenc_writer_s *writer_stack; /* Content unencoding stack. */ + /* See sec 3.5, RFC2616. */ time_t timeofdoc; long bodywrites; @@ -719,6 +692,7 @@ struct Curl_handler { #define PROTOPT_PROXY_AS_HTTP (1<<11) /* allow this non-HTTP scheme over a HTTP proxy as HTTP proxies may know this protocol and act as a gateway */ +#define PROTOPT_WILDCARD (1<<12) /* protocol supports wildcard matching */ #define CONNCHECK_NONE 0 /* No checks */ #define CONNCHECK_ISDEAD (1<<0) /* Check if the connection is dead. */ @@ -1308,7 +1282,7 @@ struct UrlState { /* set after initial USER failure, to prevent an authentication loop */ bool ftp_trying_alternative; - + bool wildcardmatch; /* enable wildcard matching */ int httpversion; /* the lowest HTTP version*10 reported by any server involved in this request */ bool expect100header; /* TRUE if we added Expect: 100-continue */ @@ -1453,7 +1427,7 @@ enum dupstring { STRING_PROXY_SERVICE_NAME, /* Proxy service name */ #endif #if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \ - defined(USE_SPNEGO) + defined(USE_SPNEGO) || defined(HAVE_GSSAPI) STRING_SERVICE_NAME, /* Service name */ #endif STRING_MAIL_FROM, @@ -1672,7 +1646,7 @@ struct UserDefined { /* Common RTSP header options */ Curl_RtspReq rtspreq; /* RTSP request type */ long rtspversion; /* like httpversion, for RTSP */ - bool wildcardmatch; /* enable wildcard matching */ + bool wildcard_enabled; /* enable wildcard matching */ curl_chunk_bgn_callback chunk_bgn; /* called before part of transfer starts */ curl_chunk_end_callback chunk_end; /* called after part transferring diff --git a/libraries/curl/lib/vauth/digest.c b/libraries/curl/lib/vauth/digest.c index 185098ed6..131d9da8c 100644 --- a/libraries/curl/lib/vauth/digest.c +++ b/libraries/curl/lib/vauth/digest.c @@ -19,6 +19,7 @@ * KIND, either express or implied. * * RFC2831 DIGEST-MD5 authentication + * RFC7616 DIGEST-SHA256, DIGEST-SHA512-256 authentication * ***************************************************************************/ @@ -34,6 +35,7 @@ #include "curl_base64.h" #include "curl_hmac.h" #include "curl_md5.h" +#include "curl_sha256.h" #include "vtls/vtls.h" #include "warnless.h" #include "strtok.h" @@ -144,6 +146,15 @@ static void auth_digest_md5_to_ascii(unsigned char *source, /* 16 bytes */ snprintf((char *) &dest[i * 2], 3, "%02x", source[i]); } +/* Convert sha256 chunk to RFC7616 -suitable ascii string*/ +static void auth_digest_sha256_to_ascii(unsigned char *source, /* 32 bytes */ + unsigned char *dest) /* 65 bytes */ +{ + int i; + for(i = 0; i < 32; i++) + snprintf((char *) &dest[i * 2], 3, "%02x", source[i]); +} + /* Perform quoted-string escaping as described in RFC2616 and its errata */ static char *auth_digest_string_quoted(const char *source) { @@ -602,9 +613,22 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg, digest->algo = CURLDIGESTALGO_MD5SESS; else if(strcasecompare(content, "MD5")) digest->algo = CURLDIGESTALGO_MD5; + else if(strcasecompare(content, "SHA-256")) + digest->algo = CURLDIGESTALGO_SHA256; + else if(strcasecompare(content, "SHA-256-SESS")) + digest->algo = CURLDIGESTALGO_SHA256SESS; + else if(strcasecompare(content, "SHA-512-256")) + digest->algo = CURLDIGESTALGO_SHA512_256; + else if(strcasecompare(content, "SHA-512-256-SESS")) + digest->algo = CURLDIGESTALGO_SHA512_256SESS; else return CURLE_BAD_CONTENT_ENCODING; } + else if(strcasecompare(value, "userhash")) { + if(strcasecompare(content, "true")) { + digest->userhash = TRUE; + } + } else { /* Unknown specifier, ignore it! */ } @@ -635,7 +659,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg, } /* - * Curl_auth_create_digest_http_message() + * _Curl_auth_create_digest_http_message() * * This is used to generate a HTTP DIGEST response message ready for sending * to the recipient. @@ -654,20 +678,24 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg, * * Returns CURLE_OK on success. */ -CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, - const char *userp, - const char *passwdp, - const unsigned char *request, - const unsigned char *uripath, - struct digestdata *digest, - char **outptr, size_t *outlen) +static CURLcode _Curl_auth_create_digest_http_message( + struct Curl_easy *data, + const char *userp, + const char *passwdp, + const unsigned char *request, + const unsigned char *uripath, + struct digestdata *digest, + char **outptr, size_t *outlen, + void (*convert_to_ascii)(unsigned char *, unsigned char *), + void (*hash)(unsigned char *, const unsigned char *)) { CURLcode result; - unsigned char md5buf[16]; /* 16 bytes/128 bits */ - unsigned char request_digest[33]; - unsigned char *md5this; - unsigned char ha1[33]; /* 32 digits and 1 zero byte */ - unsigned char ha2[33]; /* 32 digits and 1 zero byte */ + unsigned char hashbuf[32]; /* 32 bytes/256 bits */ + unsigned char request_digest[65]; + unsigned char *hashthis; + unsigned char ha1[65]; /* 64 digits and 1 zero byte */ + unsigned char ha2[65]; /* 64 digits and 1 zero byte */ + char userh[65]; char cnoncebuf[33]; char *cnonce = NULL; size_t cnonce_sz = 0; @@ -692,6 +720,17 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, digest->cnonce = cnonce; } + if(digest->userhash) { + hashthis = (unsigned char *) aprintf("%s:%s", userp, digest->realm); + if(!hashthis) + return CURLE_OUT_OF_MEMORY; + + CURL_OUTPUT_DIGEST_CONV(data, hashthis); + hash(hashbuf, hashthis); + free(hashthis); + convert_to_ascii(hashbuf, (unsigned char *)userh); + } + /* If the algorithm is "MD5" or unspecified (which then defaults to MD5): @@ -703,26 +742,29 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, unq(nonce-value) ":" unq(cnonce-value) */ - md5this = (unsigned char *) - aprintf("%s:%s:%s", userp, digest->realm, passwdp); - if(!md5this) + hashthis = (unsigned char *) + aprintf("%s:%s:%s", digest->userhash ? userh : userp, + digest->realm, passwdp); + if(!hashthis) return CURLE_OUT_OF_MEMORY; - CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */ - Curl_md5it(md5buf, md5this); - free(md5this); - auth_digest_md5_to_ascii(md5buf, ha1); + CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */ + hash(hashbuf, hashthis); + free(hashthis); + convert_to_ascii(hashbuf, ha1); - if(digest->algo == CURLDIGESTALGO_MD5SESS) { + if(digest->algo == CURLDIGESTALGO_MD5SESS || + digest->algo == CURLDIGESTALGO_SHA256SESS || + digest->algo == CURLDIGESTALGO_SHA512_256SESS) { /* nonce and cnonce are OUTSIDE the hash */ tmp = aprintf("%s:%s:%s", ha1, digest->nonce, digest->cnonce); if(!tmp) return CURLE_OUT_OF_MEMORY; CURL_OUTPUT_DIGEST_CONV(data, tmp); /* Convert on non-ASCII machines */ - Curl_md5it(md5buf, (unsigned char *) tmp); + hash(hashbuf, (unsigned char *) tmp); free(tmp); - auth_digest_md5_to_ascii(md5buf, ha1); + convert_to_ascii(hashbuf, ha1); } /* @@ -738,27 +780,32 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, 5.1.1 of RFC 2616) */ - md5this = (unsigned char *) aprintf("%s:%s", request, uripath); + hashthis = (unsigned char *) aprintf("%s:%s", request, uripath); if(digest->qop && strcasecompare(digest->qop, "auth-int")) { /* We don't support auth-int for PUT or POST at the moment. - TODO: replace md5 of empty string with entity-body for PUT/POST */ - unsigned char *md5this2 = (unsigned char *) - aprintf("%s:%s", md5this, "d41d8cd98f00b204e9800998ecf8427e"); - free(md5this); - md5this = md5this2; + TODO: replace hash of empty string with entity-body for PUT/POST */ + char hashed[65]; + unsigned char *hashthis2; + + hash(hashbuf, (const unsigned char *)""); + convert_to_ascii(hashbuf, (unsigned char *)hashed); + + hashthis2 = (unsigned char *)aprintf("%s:%s", hashthis, hashed); + free(hashthis); + hashthis = hashthis2; } - if(!md5this) + if(!hashthis) return CURLE_OUT_OF_MEMORY; - CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */ - Curl_md5it(md5buf, md5this); - free(md5this); - auth_digest_md5_to_ascii(md5buf, ha2); + CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */ + hash(hashbuf, hashthis); + free(hashthis); + convert_to_ascii(hashbuf, ha2); if(digest->qop) { - md5this = (unsigned char *) aprintf("%s:%s:%08x:%s:%s:%s", + hashthis = (unsigned char *) aprintf("%s:%s:%08x:%s:%s:%s", ha1, digest->nonce, digest->nc, @@ -767,19 +814,19 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, ha2); } else { - md5this = (unsigned char *) aprintf("%s:%s:%s", + hashthis = (unsigned char *) aprintf("%s:%s:%s", ha1, digest->nonce, ha2); } - if(!md5this) + if(!hashthis) return CURLE_OUT_OF_MEMORY; - CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */ - Curl_md5it(md5buf, md5this); - free(md5this); - auth_digest_md5_to_ascii(md5buf, request_digest); + CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */ + hash(hashbuf, hashthis); + free(hashthis); + convert_to_ascii(hashbuf, request_digest); /* For test case 64 (snooped from a Mozilla 1.3a request) @@ -794,7 +841,7 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, characters. algorithm and qop with standard values only contain web-safe characters. */ - userp_quoted = auth_digest_string_quoted(userp); + userp_quoted = auth_digest_string_quoted(digest->userhash ? userh : userp); if(!userp_quoted) return CURLE_OUT_OF_MEMORY; @@ -858,6 +905,16 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, response = tmp; } + if(digest->userhash) { + /* Append the userhash */ + tmp = aprintf("%s, userhash=true", response); + free(response); + if(!tmp) + return CURLE_OUT_OF_MEMORY; + + response = tmp; + } + /* Return the output */ *outptr = response; *outlen = strlen(response); @@ -865,6 +922,58 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, return CURLE_OK; } +/* + * Curl_auth_create_digest_http_message() + * + * This is used to generate a HTTP DIGEST response message ready for sending + * to the recipient. + * + * Parameters: + * + * data [in] - The session handle. + * userp [in] - The user name. + * passdwp [in] - The user's password. + * request [in] - The HTTP request. + * uripath [in] - The path of the HTTP uri. + * digest [in/out] - The digest data struct being used and modified. + * outptr [in/out] - The address where a pointer to newly allocated memory + * holding the result will be stored upon completion. + * outlen [out] - The length of the output message. + * + * Returns CURLE_OK on success. + */ +CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data, + const char *userp, + const char *passwdp, + const unsigned char *request, + const unsigned char *uripath, + struct digestdata *digest, + char **outptr, size_t *outlen) +{ + switch(digest->algo) { + case CURLDIGESTALGO_MD5: + case CURLDIGESTALGO_MD5SESS: + return _Curl_auth_create_digest_http_message(data, userp, passwdp, + request, uripath, digest, + outptr, outlen, + auth_digest_md5_to_ascii, + Curl_md5it); + + case CURLDIGESTALGO_SHA256: + case CURLDIGESTALGO_SHA256SESS: + case CURLDIGESTALGO_SHA512_256: + case CURLDIGESTALGO_SHA512_256SESS: + return _Curl_auth_create_digest_http_message(data, userp, passwdp, + request, uripath, digest, + outptr, outlen, + auth_digest_sha256_to_ascii, + Curl_sha256it); + + default: + return CURLE_UNSUPPORTED_PROTOCOL; + } +} + /* * Curl_auth_digest_cleanup() * @@ -887,6 +996,7 @@ void Curl_auth_digest_cleanup(struct digestdata *digest) digest->nc = 0; digest->algo = CURLDIGESTALGO_MD5; /* default algorithm */ digest->stale = FALSE; /* default means normal, not stale */ + digest->userhash = FALSE; } #endif /* !USE_WINDOWS_SSPI */ diff --git a/libraries/curl/lib/vauth/digest.h b/libraries/curl/lib/vauth/digest.h index 5722dcece..8686c44a4 100644 --- a/libraries/curl/lib/vauth/digest.h +++ b/libraries/curl/lib/vauth/digest.h @@ -31,7 +31,11 @@ enum { CURLDIGESTALGO_MD5, - CURLDIGESTALGO_MD5SESS + CURLDIGESTALGO_MD5SESS, + CURLDIGESTALGO_SHA256, + CURLDIGESTALGO_SHA256SESS, + CURLDIGESTALGO_SHA512_256, + CURLDIGESTALGO_SHA512_256SESS }; /* This is used to extract the realm from a challenge message */ diff --git a/libraries/curl/lib/vauth/ntlm.c b/libraries/curl/lib/vauth/ntlm.c index 50d922208..1e0d4792e 100644 --- a/libraries/curl/lib/vauth/ntlm.c +++ b/libraries/curl/lib/vauth/ntlm.c @@ -543,8 +543,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data, else user = userp; - if(user) - userlen = strlen(user); + userlen = strlen(user); /* Get the machine's un-qualified host name as NTLM doesn't like the fully qualified domain name */ diff --git a/libraries/curl/lib/version.c b/libraries/curl/lib/version.c index ebd600635..79cc0bba4 100644 --- a/libraries/curl/lib/version.c +++ b/libraries/curl/lib/version.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -64,6 +64,18 @@ #define CURL_LIBSSH2_VERSION LIBSSH2_VERSION #endif +#ifdef HAVE_ZLIB_H +#include +#ifdef __SYMBIAN32__ +/* zlib pollutes the namespace with this definition */ +#undef WIN32 +#endif +#endif + +#ifdef HAVE_BROTLI +#include +#endif + void Curl_version_init(void); /* For thread safety purposes this function is called by global_init so that @@ -74,6 +86,18 @@ void Curl_version_init(void) curl_version_info(CURLVERSION_NOW); } +#ifdef HAVE_BROTLI +static size_t brotli_version(char *buf, size_t bufsz) +{ + uint32_t brotli_version = BrotliDecoderVersion(); + unsigned int major = brotli_version >> 24; + unsigned int minor = (brotli_version & 0x00FFFFFF) >> 12; + unsigned int patch = brotli_version & 0x00000FFF; + + return snprintf(buf, bufsz, "%u.%u.%u", major, minor, patch); +} +#endif + char *curl_version(void) { static bool initialized; @@ -105,6 +129,14 @@ char *curl_version(void) left -= len; ptr += len; #endif +#ifdef HAVE_BROTLI + len = snprintf(ptr, left, "%s", " brotli/"); + left -= len; + ptr += len; + len = brotli_version(ptr, left); + left -= len; + ptr += len; +#endif #ifdef USE_ARES /* this function is only present in c-ares, not in the original ares */ len = snprintf(ptr, left, " c-ares/%s", ares_version(NULL)); @@ -326,6 +358,9 @@ static curl_version_info_data version_info = { #endif #if defined(CURL_WITH_MULTI_SSL) | CURL_VERSION_MULTI_SSL +#endif +#if defined(HAVE_BROTLI) + | CURL_VERSION_BROTLI #endif , NULL, /* ssl_version */ @@ -337,6 +372,8 @@ static curl_version_info_data version_info = { NULL, /* libidn version */ 0, /* iconv version */ NULL, /* ssh lib version */ + 0, /* brotli_ver_num */ + NULL, /* brotli version */ }; curl_version_info_data *curl_version_info(CURLversion stamp) @@ -348,6 +385,9 @@ curl_version_info_data *curl_version_info(CURLversion stamp) #ifdef USE_SSL static char ssl_buffer[80]; #endif +#ifdef HAVE_BROTLI + static char brotli_buffer[80]; +#endif if(initialized) return &version_info; @@ -396,6 +436,12 @@ curl_version_info_data *curl_version_info(CURLversion stamp) version_info.libssh_version = ssh_buffer; #endif +#ifdef HAVE_BROTLI + version_info.brotli_ver_num = BrotliDecoderVersion(); + brotli_version(brotli_buffer, sizeof brotli_buffer); + version_info.brotli_version = brotli_buffer; +#endif + (void)stamp; /* avoid compiler warnings, we don't use this */ initialized = true; diff --git a/libraries/curl/lib/vtls/axtls.c b/libraries/curl/lib/vtls/axtls.c index 6b42708d8..9294f49ed 100644 --- a/libraries/curl/lib/vtls/axtls.c +++ b/libraries/curl/lib/vtls/axtls.c @@ -728,7 +728,7 @@ const struct Curl_ssl Curl_ssl_axtls = { Curl_axtls_connect, /* connect */ Curl_axtls_connect_nonblocking, /* connect_nonblocking */ Curl_axtls_get_internals, /* get_internals */ - Curl_axtls_close, /* close */ + Curl_axtls_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_axtls_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/cyassl.c b/libraries/curl/lib/vtls/cyassl.c index ba5ee1548..e06522304 100644 --- a/libraries/curl/lib/vtls/cyassl.c +++ b/libraries/curl/lib/vtls/cyassl.c @@ -1003,7 +1003,7 @@ const struct Curl_ssl Curl_ssl_cyassl = { Curl_cyassl_connect, /* connect */ Curl_cyassl_connect_nonblocking, /* connect_nonblocking */ Curl_cyassl_get_internals, /* get_internals */ - Curl_cyassl_close, /* close */ + Curl_cyassl_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_cyassl_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/darwinssl.c b/libraries/curl/lib/vtls/darwinssl.c index a98f43307..316904224 100644 --- a/libraries/curl/lib/vtls/darwinssl.c +++ b/libraries/curl/lib/vtls/darwinssl.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 2012 - 2014, Nick Zitzmann, . + * Copyright (C) 2012 - 2017, Nick Zitzmann, . * Copyright (C) 2012 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which @@ -22,7 +22,7 @@ ***************************************************************************/ /* - * Source file for all iOS and Mac OS X SecureTransport-specific code for the + * Source file for all iOS and macOS SecureTransport-specific code for the * TLS/SSL layer. No code but vtls.c should ever call or use these functions. */ @@ -50,12 +50,14 @@ #include #include -/* The Security framework has changed greatly between iOS and different OS X +/* The Security framework has changed greatly between iOS and different macOS versions, and we will try to support as many of them as we can (back to Leopard and iOS 5) by using macros and weak-linking. - IMPORTANT: If TLS 1.1 and 1.2 support are important for you on OS X, then - you must build this project against the 10.8 SDK or later. */ + In general, you want to build this using the most recent OS SDK, since some + features require curl to be built against the latest SDK. TLS 1.1 and 1.2 + support, for instance, require the macOS 10.8 SDK or later. TLS 1.3 + requires the macOS 10.13 or iOS 11 SDK or later. */ #if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) #if MAC_OS_X_VERSION_MAX_ALLOWED < 1050 @@ -64,6 +66,7 @@ #define CURL_BUILD_IOS 0 #define CURL_BUILD_IOS_7 0 +#define CURL_BUILD_IOS_11 0 #define CURL_BUILD_MAC 1 /* This is the maximum API level we are allowed to use when building: */ #define CURL_BUILD_MAC_10_5 MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 @@ -71,10 +74,11 @@ #define CURL_BUILD_MAC_10_7 MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 #define CURL_BUILD_MAC_10_8 MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 #define CURL_BUILD_MAC_10_9 MAC_OS_X_VERSION_MAX_ALLOWED >= 1090 +#define CURL_BUILD_MAC_10_13 MAC_OS_X_VERSION_MAX_ALLOWED >= 101300 /* These macros mean "the following code is present to allow runtime backward compatibility with at least this cat or earlier": - (You set this at build-time by setting the MACOSX_DEPLOYMENT_TARGET - environmental variable.) */ + (You set this at build-time using the compiler command line option + "-mmacos-version-min.") */ #define CURL_SUPPORT_MAC_10_5 MAC_OS_X_VERSION_MIN_REQUIRED <= 1050 #define CURL_SUPPORT_MAC_10_6 MAC_OS_X_VERSION_MIN_REQUIRED <= 1060 #define CURL_SUPPORT_MAC_10_7 MAC_OS_X_VERSION_MIN_REQUIRED <= 1070 @@ -84,11 +88,14 @@ #elif TARGET_OS_EMBEDDED || TARGET_OS_IPHONE #define CURL_BUILD_IOS 1 #define CURL_BUILD_IOS_7 __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#define CURL_BUILD_IOS_11 __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 #define CURL_BUILD_MAC 0 #define CURL_BUILD_MAC_10_5 0 #define CURL_BUILD_MAC_10_6 0 #define CURL_BUILD_MAC_10_7 0 #define CURL_BUILD_MAC_10_8 0 +#define CURL_BUILD_MAC_10_9 0 +#define CURL_BUILD_MAC_10_13 0 #define CURL_SUPPORT_MAC_10_5 0 #define CURL_SUPPORT_MAC_10_6 0 #define CURL_SUPPORT_MAC_10_7 0 @@ -838,6 +845,30 @@ CF_INLINE const char *TLSCipherNameForNumber(SSLCipherSuite cipher) return "TLS_RSA_PSK_WITH_NULL_SHA384"; break; #endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */ +#if CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 + /* New ChaCha20+Poly1305 cipher-suites used by TLS 1.3: */ + case TLS_AES_128_GCM_SHA256: + return "TLS_AES_128_GCM_SHA256"; + break; + case TLS_AES_256_GCM_SHA384: + return "TLS_AES_256_GCM_SHA384"; + break; + case TLS_CHACHA20_POLY1305_SHA256: + return "TLS_CHACHA20_POLY1305_SHA256"; + break; + case TLS_AES_128_CCM_SHA256: + return "TLS_AES_128_CCM_SHA256"; + break; + case TLS_AES_128_CCM_8_SHA256: + return "TLS_AES_128_CCM_8_SHA256"; + break; + case TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: + return "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"; + break; + case TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: + return "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"; + break; +#endif /* CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 */ } return "TLS_NULL_WITH_NULL_NULL"; } @@ -1171,6 +1202,15 @@ static CURLcode darwinssl_version_from_curl(SSLProtocol *darwinver, *darwinver = kTLSProtocol12; return CURLE_OK; case CURL_SSLVERSION_TLSv1_3: + /* TLS 1.3 support first appeared in iOS 11 and macOS 10.13 */ +#if CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 + /* We can assume __builtin_available() will always work in the + 10.13/11.0 SDK: */ + if(__builtin_available(macOS 10.13, iOS 11.0, *)) { + *darwinver = kTLSProtocol13; + return CURLE_OK; + } +#endif /* CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 */ break; } return CURLE_SSL_CONNECT_ERROR; @@ -1184,12 +1224,27 @@ set_ssl_version_min_max(struct connectdata *conn, int sockindex) struct ssl_connect_data *connssl = &conn->ssl[sockindex]; long ssl_version = SSL_CONN_CONFIG(version); long ssl_version_max = SSL_CONN_CONFIG(version_max); + long max_supported_version_by_os; + + /* macOS 10.5-10.7 supported TLS 1.0 only. + macOS 10.8 and later, and iOS 5 and later, added TLS 1.1 and 1.2. + macOS 10.13 and later, and iOS 11 and later, added TLS 1.3. */ +#if CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 + if(__builtin_available(macOS 10.13, iOS 11.0, *)) { + max_supported_version_by_os = CURL_SSLVERSION_MAX_TLSv1_3; + } + else { + max_supported_version_by_os = CURL_SSLVERSION_MAX_TLSv1_2; + } +#else + max_supported_version_by_os = CURL_SSLVERSION_MAX_TLSv1_2; +#endif /* CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 */ switch(ssl_version) { case CURL_SSLVERSION_DEFAULT: case CURL_SSLVERSION_TLSv1: ssl_version = CURL_SSLVERSION_TLSv1_0; - ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2; + ssl_version_max = max_supported_version_by_os; break; } @@ -1198,7 +1253,7 @@ set_ssl_version_min_max(struct connectdata *conn, int sockindex) ssl_version_max = ssl_version << 16; break; case CURL_SSLVERSION_MAX_DEFAULT: - ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2; + ssl_version_max = max_supported_version_by_os; break; } @@ -1247,7 +1302,7 @@ set_ssl_version_min_max(struct connectdata *conn, int sockindex) true); break; case CURL_SSLVERSION_TLSv1_3: - failf(data, "DarwinSSL: TLS 1.3 is not yet supported"); + failf(data, "Your version of the OS does not support TLSv1.3"); return CURLE_SSL_CONNECT_ERROR; } } @@ -1326,7 +1381,16 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn, case CURL_SSLVERSION_DEFAULT: case CURL_SSLVERSION_TLSv1: (void)SSLSetProtocolVersionMin(BACKEND->ssl_ctx, kTLSProtocol1); +#if CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 + if(__builtin_available(macOS 10.13, iOS 11.0, *)) { + (void)SSLSetProtocolVersionMax(BACKEND->ssl_ctx, kTLSProtocol13); + } + else { + (void)SSLSetProtocolVersionMax(BACKEND->ssl_ctx, kTLSProtocol12); + } +#else (void)SSLSetProtocolVersionMax(BACKEND->ssl_ctx, kTLSProtocol12); +#endif /* CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 */ break; case CURL_SSLVERSION_TLSv1_0: case CURL_SSLVERSION_TLSv1_1: @@ -2341,7 +2405,13 @@ darwinssl_connect_step2(struct connectdata *conn, int sockindex) infof(data, "TLS 1.2 connection using %s\n", TLSCipherNameForNumber(cipher)); break; -#endif +#endif /* CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS */ +#if CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 + case kTLSProtocol13: + infof(data, "TLS 1.3 connection using %s\n", + TLSCipherNameForNumber(cipher)); + break; +#endif /* CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11 */ default: infof(data, "Unknown protocol connection\n"); break; @@ -2932,7 +3002,7 @@ const struct Curl_ssl Curl_ssl_darwinssl = { Curl_darwinssl_connect, /* connect */ Curl_darwinssl_connect_nonblocking, /* connect_nonblocking */ Curl_darwinssl_get_internals, /* get_internals */ - Curl_darwinssl_close, /* close */ + Curl_darwinssl_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_darwinssl_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/gskit.c b/libraries/curl/lib/vtls/gskit.c index ba5faeff8..de496dd12 100644 --- a/libraries/curl/lib/vtls/gskit.c +++ b/libraries/curl/lib/vtls/gskit.c @@ -1375,7 +1375,7 @@ const struct Curl_ssl Curl_ssl_gskit = { Curl_gskit_connect, /* connect */ Curl_gskit_connect_nonblocking, /* connect_nonblocking */ Curl_gskit_get_internals, /* get_internals */ - Curl_gskit_close, /* close */ + Curl_gskit_close, /* close_one */ Curl_none_close_all, /* close_all */ /* No session handling for GSKit */ Curl_none_session_free, /* session_free */ diff --git a/libraries/curl/lib/vtls/gtls.c b/libraries/curl/lib/vtls/gtls.c index a844915ef..30b255b81 100644 --- a/libraries/curl/lib/vtls/gtls.c +++ b/libraries/curl/lib/vtls/gtls.c @@ -1827,7 +1827,7 @@ const struct Curl_ssl Curl_ssl_gnutls = { Curl_gtls_connect, /* connect */ Curl_gtls_connect_nonblocking, /* connect_nonblocking */ Curl_gtls_get_internals, /* get_internals */ - Curl_gtls_close, /* close */ + Curl_gtls_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_gtls_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/nss.c b/libraries/curl/lib/vtls/nss.c index c0b7e63ab..a3ef37a12 100644 --- a/libraries/curl/lib/vtls/nss.c +++ b/libraries/curl/lib/vtls/nss.c @@ -2365,7 +2365,7 @@ const struct Curl_ssl Curl_ssl_nss = { Curl_nss_connect, /* connect */ Curl_nss_connect_nonblocking, /* connect_nonblocking */ Curl_nss_get_internals, /* get_internals */ - Curl_nss_close, /* close */ + Curl_nss_close, /* close_one */ Curl_none_close_all, /* close_all */ /* NSS has its own session ID cache */ Curl_none_session_free, /* session_free */ diff --git a/libraries/curl/lib/vtls/openssl.c b/libraries/curl/lib/vtls/openssl.c index 4253160aa..9d3ea14ee 100644 --- a/libraries/curl/lib/vtls/openssl.c +++ b/libraries/curl/lib/vtls/openssl.c @@ -69,7 +69,9 @@ #include #include -#ifdef HAVE_OPENSSL_PKCS12_H +#ifndef OPENSSL_IS_BORINGSSL +/* BoringSSL does not support PKCS12 */ +#define HAVE_PKCS12_SUPPORT 1 #include #endif @@ -151,14 +153,13 @@ static unsigned long OpenSSL_version_num(void) /* * Whether SSL_CTX_set_keylog_callback is available. * OpenSSL: supported since 1.1.1 https://github.com/openssl/openssl/pull/2287 - * BoringSSL: supported since d28f59c27bac (committed 2015-11-19), the - * BORINGSSL_201512 macro from 2016-01-21 should be close enough. + * BoringSSL: supported since d28f59c27bac (committed 2015-11-19) * LibreSSL: unsupported in at least 2.5.1 (explicitly check for it since it * lies and pretends to be OpenSSL 2.0.0). */ #if (OPENSSL_VERSION_NUMBER >= 0x10101000L && \ !defined(LIBRESSL_VERSION_NUMBER)) || \ - defined(BORINGSSL_201512) + defined(OPENSSL_IS_BORINGSSL) #define HAVE_KEYLOG_CALLBACK #endif @@ -445,14 +446,14 @@ static CURLcode Curl_ossl_seed(struct Curl_easy *data) size_t len = sizeof(randb); size_t i, i_max; for(i = 0, i_max = len / sizeof(struct curltime); i < i_max; ++i) { - struct curltime tv = curlx_tvnow(); + struct curltime tv = Curl_now(); Curl_wait_ms(1); tv.tv_sec *= i + 1; tv.tv_usec *= (unsigned int)i + 2; - tv.tv_sec ^= ((curlx_tvnow().tv_sec + curlx_tvnow().tv_usec) * + tv.tv_sec ^= ((Curl_now().tv_sec + Curl_now().tv_usec) * (i + 3)) << 8; - tv.tv_usec ^= (unsigned int) ((curlx_tvnow().tv_sec + - curlx_tvnow().tv_usec) * + tv.tv_usec ^= (unsigned int) ((Curl_now().tv_sec + + Curl_now().tv_usec) * (i + 4)) << 16; memcpy(&randb[i * sizeof(struct curltime)], &tv, sizeof(struct curltime)); @@ -653,7 +654,7 @@ int cert_stuff(struct connectdata *conn, case SSL_FILETYPE_PKCS12: { -#ifdef HAVE_OPENSSL_PKCS12_H +#ifdef HAVE_PKCS12_SUPPORT FILE *f; PKCS12 *p12; EVP_PKEY *pri; @@ -837,12 +838,18 @@ int cert_stuff(struct connectdata *conn, EVP_PKEY_free(pktmp); } -#ifndef OPENSSL_NO_RSA +#if !defined(OPENSSL_NO_RSA) { /* If RSA is used, don't check the private key if its flags indicate * it doesn't support it. */ EVP_PKEY *priv_key = SSL_get_privatekey(ssl); - if(EVP_PKEY_id(priv_key) == EVP_PKEY_RSA) { + int pktype; +#ifdef HAVE_OPAQUE_EVP_PKEY + pktype = EVP_PKEY_id(priv_key); +#else + pktype = priv_key->type; +#endif + if(pktype == EVP_PKEY_RSA) { RSA *rsa = EVP_PKEY_get1_RSA(priv_key); if(RSA_flags(rsa) & RSA_METHOD_FLAG_NO_CHECK) check_privkey = FALSE; @@ -3060,12 +3067,12 @@ static CURLcode servercert(struct connectdata *conn, ASN1_TIME_print(mem, X509_get0_notBefore(BACKEND->server_cert)); len = BIO_get_mem_data(mem, (char **) &ptr); infof(data, " start date: %.*s\n", len, ptr); - rc = BIO_reset(mem); + (void)BIO_reset(mem); ASN1_TIME_print(mem, X509_get0_notAfter(BACKEND->server_cert)); len = BIO_get_mem_data(mem, (char **) &ptr); infof(data, " expire date: %.*s\n", len, ptr); - rc = BIO_reset(mem); + (void)BIO_reset(mem); BIO_free(mem); @@ -3636,7 +3643,7 @@ const struct Curl_ssl Curl_ssl_openssl = { Curl_ossl_connect, /* connect */ Curl_ossl_connect_nonblocking, /* connect_nonblocking */ Curl_ossl_get_internals, /* get_internals */ - Curl_ossl_close, /* close */ + Curl_ossl_close, /* close_one */ Curl_ossl_close_all, /* close_all */ Curl_ossl_session_free, /* session_free */ Curl_ossl_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/polarssl.c b/libraries/curl/lib/vtls/polarssl.c index fc0644f89..df29fa945 100644 --- a/libraries/curl/lib/vtls/polarssl.c +++ b/libraries/curl/lib/vtls/polarssl.c @@ -923,7 +923,7 @@ const struct Curl_ssl Curl_ssl_polarssl = { Curl_polarssl_connect, /* connect */ Curl_polarssl_connect_nonblocking, /* connect_nonblocking */ Curl_polarssl_get_internals, /* get_internals */ - Curl_polarssl_close, /* close */ + Curl_polarssl_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_polarssl_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/schannel.c b/libraries/curl/lib/vtls/schannel.c index 9ca1431bd..85c64cf44 100644 --- a/libraries/curl/lib/vtls/schannel.c +++ b/libraries/curl/lib/vtls/schannel.c @@ -1838,7 +1838,7 @@ const struct Curl_ssl Curl_ssl_schannel = { Curl_schannel_connect, /* connect */ Curl_schannel_connect_nonblocking, /* connect_nonblocking */ Curl_schannel_get_internals, /* get_internals */ - Curl_schannel_close, /* close */ + Curl_schannel_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_schannel_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/vtls.c b/libraries/curl/lib/vtls/vtls.c index bb8fda419..56e631771 100644 --- a/libraries/curl/lib/vtls/vtls.c +++ b/libraries/curl/lib/vtls/vtls.c @@ -549,7 +549,7 @@ int Curl_ssl_getsock(struct connectdata *conn, void Curl_ssl_close(struct connectdata *conn, int sockindex) { DEBUGASSERT((sockindex <= 1) && (sockindex >= -1)); - Curl_ssl->close(conn, sockindex); + Curl_ssl->close_one(conn, sockindex); } CURLcode Curl_ssl_shutdown(struct connectdata *conn, int sockindex) @@ -1059,6 +1059,7 @@ bool Curl_none_false_start(void) return FALSE; } +#ifndef CURL_DISABLE_CRYPTO_AUTH CURLcode Curl_none_md5sum(unsigned char *input, size_t inputlen, unsigned char *md5sum, size_t md5len UNUSED_PARAM) { @@ -1073,6 +1074,19 @@ CURLcode Curl_none_md5sum(unsigned char *input, size_t inputlen, Curl_MD5_final(MD5pw, md5sum); return CURLE_OK; } +#else +CURLcode Curl_none_md5sum(unsigned char *input UNUSED_PARAM, + size_t inputlen UNUSED_PARAM, + unsigned char *md5sum UNUSED_PARAM, + size_t md5len UNUSED_PARAM) +{ + (void)input; + (void)inputlen; + (void)md5sum; + (void)md5len; + return CURLE_NOT_BUILT_IN; +} +#endif static int Curl_multissl_init(void) { @@ -1108,7 +1122,7 @@ static void Curl_multissl_close(struct connectdata *conn, int sockindex) { if(multissl_init(NULL)) return; - Curl_ssl->close(conn, sockindex); + Curl_ssl->close_one(conn, sockindex); } static const struct Curl_ssl Curl_ssl_multi = { @@ -1133,7 +1147,7 @@ static const struct Curl_ssl Curl_ssl_multi = { Curl_multissl_connect, /* connect */ Curl_multissl_connect_nonblocking, /* connect_nonblocking */ Curl_multissl_get_internals, /* get_internals */ - Curl_multissl_close, /* close */ + Curl_multissl_close, /* close_one */ Curl_none_close_all, /* close_all */ Curl_none_session_free, /* session_free */ Curl_none_set_engine, /* set_engine */ diff --git a/libraries/curl/lib/vtls/vtls.h b/libraries/curl/lib/vtls/vtls.h index f1a11ea58..c5f9d4a3f 100644 --- a/libraries/curl/lib/vtls/vtls.h +++ b/libraries/curl/lib/vtls/vtls.h @@ -60,7 +60,7 @@ struct Curl_ssl { CURLcode (*connect_nonblocking)(struct connectdata *conn, int sockindex, bool *done); void *(*get_internals)(struct ssl_connect_data *connssl, CURLINFO info); - void (*close)(struct connectdata *conn, int sockindex); + void (*close_one)(struct connectdata *conn, int sockindex); void (*close_all)(struct Curl_easy *data); void (*session_free)(void *ptr); diff --git a/libraries/curl/packages/OS400/README.OS400 b/libraries/curl/packages/OS400/README.OS400 index 552a3cb77..3ee1c0fa5 100644 --- a/libraries/curl/packages/OS400/README.OS400 +++ b/libraries/curl/packages/OS400/README.OS400 @@ -241,7 +241,8 @@ _ If data compression has to be supported, ZLIB development environment must be installed. _ Likewise, if SCP and SFTP protocols have to be compiled in, LIBSSH2 developent environment must be installed. -_ Install the curl source directory in IFS. +_ Install the curl source directory in IFS. Do NOT install it in the + installation target directory (wich defaults to /curl). _ Enter shell (QSH) _ Change current directory to the curl installation directory _ Change current directory to ./packages/OS400 diff --git a/libraries/curl/packages/OS400/makefile.sh b/libraries/curl/packages/OS400/makefile.sh index 141d8778c..7c6bcd7c6 100644 --- a/libraries/curl/packages/OS400/makefile.sh +++ b/libraries/curl/packages/OS400/makefile.sh @@ -31,10 +31,11 @@ fi for TEXT in "${TOPDIR}/COPYING" "${SCRIPTDIR}/README.OS400" \ "${TOPDIR}/CHANGES" "${TOPDIR}/docs/THANKS" "${TOPDIR}/docs/FAQ" \ - "${TOPDIR}/docs/FEATURES" "${TOPDIR}/docs/SSLCERTS" \ + "${TOPDIR}/docs/FEATURES" "${TOPDIR}/docs/SSLCERTS.md" \ "${TOPDIR}/docs/RESOURCES" "${TOPDIR}/docs/VERSIONS" \ - "${TOPDIR}/docs/HISTORY" + "${TOPDIR}/docs/HISTORY.md" do MEMBER="`basename \"${TEXT}\" .OS400`" + MEMBER="`basename \"${MEMBER}\" .md`" MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${MEMBER}\"`.MBR" if action_needed "${MEMBER}" "${TEXT}" diff --git a/libraries/curl/packages/Symbian/group/libcurl.mmp b/libraries/curl/packages/Symbian/group/libcurl.mmp index 6388bbd73..942e23f72 100644 --- a/libraries/curl/packages/Symbian/group/libcurl.mmp +++ b/libraries/curl/packages/Symbian/group/libcurl.mmp @@ -39,7 +39,7 @@ SOURCE \ asyn-ares.c asyn-thread.c curl_gssapi.c http_ntlm.c curl_ntlm_wb.c \ curl_ntlm_core.c curl_sasl.c vtls/schannel.c curl_multibyte.c \ vtls/darwinssl.c conncache.c curl_sasl_sspi.c smb.c curl_endian.c \ - curl_des.c system_win32.c \ + curl_des.c system_win32.c sha256.c \ vauth/vauth.c vauth/cleartext.c vauth/cram.c vauth/digest.c \ vauth/digest_sspi.c vauth/krb5_gssapi.c vauth/krb5_sspi.c \ vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c vauth/spnego_gssapi.c \ diff --git a/libraries/curl/projects/Windows/VC10/lib/.gitignore b/libraries/curl/projects/Windows/VC10/lib/.gitignore index d2d7b7fb4..60208d7e0 100644 --- a/libraries/curl/projects/Windows/VC10/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC10/lib/.gitignore @@ -1,6 +1,6 @@ -/*.vcxproj -/*.filters -/*.user /*.ncb +/*.opensdf /*.sdf /*.suo +/*.user +/*.vcxproj diff --git a/libraries/curl/projects/Windows/VC10/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC10/lib/libcurl.tmpl index 7fbda8317..3e6131ff4 100644 --- a/libraries/curl/projects/Windows/VC10/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC10/lib/libcurl.tmpl @@ -1,6 +1,14 @@ + + DLL Debug - DLL wolfSSL + Win32 + + + DLL Debug - DLL wolfSSL + x64 + DLL Debug - DLL OpenSSL - DLL LibSSH2 Win32 @@ -41,6 +49,14 @@ DLL Debug x64 + + DLL Release - DLL wolfSSL + Win32 + + + DLL Release - DLL wolfSSL + x64 + DLL Release - DLL OpenSSL - DLL LibSSH2 Win32 @@ -113,6 +129,14 @@ LIB Debug - DLL Windows SSPI x64 + + LIB Debug - LIB wolfSSL + Win32 + + + LIB Debug - LIB wolfSSL + x64 + LIB Debug - LIB OpenSSL - LIB LibSSH2 Win32 @@ -169,6 +193,14 @@ LIB Release - DLL Windows SSPI x64 + + LIB Release - LIB wolfSSL + Win32 + + + LIB Release - LIB wolfSSL + x64 + LIB Release - LIB OpenSSL - LIB LibSSH2 Win32 @@ -304,21 +336,41 @@ false MultiByte + + StaticLibrary + false + MultiByte + StaticLibrary false MultiByte + + StaticLibrary + false + MultiByte + DynamicLibrary false MultiByte + + DynamicLibrary + false + MultiByte + DynamicLibrary false MultiByte + + DynamicLibrary + false + MultiByte + StaticLibrary false @@ -424,21 +476,41 @@ false MultiByte + + StaticLibrary + false + MultiByte + StaticLibrary false MultiByte + + StaticLibrary + false + MultiByte + DynamicLibrary false MultiByte + + DynamicLibrary + false + MultiByte + DynamicLibrary false MultiByte + + DynamicLibrary + false + MultiByte + @@ -505,15 +577,27 @@ + + + + + + + + + + + + @@ -577,38 +661,70 @@ + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 ..\..\..\..\build\Win32\VC10\$(Configuration)\ + ..\..\..\..\build\Win32\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win64\VC10\$(Configuration)\ + ..\..\..\..\build\Win64\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win32\VC10\$(Configuration)\ + ..\..\..\..\build\Win32\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win64\VC10\$(Configuration)\ + ..\..\..\..\build\Win64\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win32\VC10\$(Configuration)\ + ..\..\..\..\build\Win32\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win64\VC10\$(Configuration)\ + ..\..\..\..\build\Win64\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win32\VC10\$(Configuration)\ + ..\..\..\..\build\Win32\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win64\VC10\$(Configuration)\ + ..\..\..\..\build\Win64\VC10\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win32\VC10\$(Configuration)\ $(OutDir)lib\ false @@ -706,7 +822,9 @@ ..\..\..\..\build\Win64\VC10\$(Configuration)\ $(OutDir)lib\ $(ProjectName)d + $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d $(ProjectName)d $(ProjectName)d @@ -716,7 +834,9 @@ $(ProjectName)d $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d $(ProjectName)d $(ProjectName)d @@ -746,7 +866,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -764,6 +884,40 @@ MachineX86 + + + _DEBUG;%(PreprocessorDefinitions) + true + Win32 + $(OutDir)$(ProjectName).tlb + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories) + $(IntDir)$(TargetFileName).intermediate.manifest + true + $(TargetDir)$(TargetName).pdb + $(TargetDir)$(TargetName).lib + MachineX86 + + _DEBUG;%(PreprocessorDefinitions) @@ -780,7 +934,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -797,6 +951,39 @@ MachineX64 + + + _DEBUG;%(PreprocessorDefinitions) + true + X64 + $(OutDir)$(ProjectName).tlb + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories) + true + $(TargetDir)$(TargetName).pdb + $(TargetDir)$(TargetName).lib + MachineX64 + + NDEBUG;%(PreprocessorDefinitions) @@ -814,7 +1001,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -829,6 +1016,40 @@ MachineX86 + + + NDEBUG;%(PreprocessorDefinitions) + true + Win32 + $(OutDir)$(ProjectName).tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories) + $(IntDir)$(TargetFileName).intermediate.manifest + $(TargetDir)$(TargetName).lib + MachineX86 + true + $(TargetDir)$(TargetName).pdb + + NDEBUG;%(PreprocessorDefinitions) @@ -846,7 +1067,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -860,6 +1081,39 @@ MachineX64 + + + NDEBUG;%(PreprocessorDefinitions) + true + X64 + $(OutDir)$(ProjectName).tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories) + $(TargetDir)$(TargetName).lib + MachineX64 + true + $(TargetDir)$(TargetName).pdb + + Disabled @@ -868,7 +1122,27 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX86 + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 ProgramDatabase @@ -891,7 +1165,30 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX64 + + + + + X64 + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 ProgramDatabase @@ -912,7 +1209,27 @@ true MultiThreadedDLL true - Level3 + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -935,7 +1252,30 @@ true MultiThreadedDLL true - Level3 + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX64 + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -962,7 +1302,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -996,7 +1336,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1030,7 +1370,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1062,7 +1402,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1092,7 +1432,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1100,7 +1440,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1126,7 +1466,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1134,7 +1474,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1160,7 +1500,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1168,7 +1508,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) true @@ -1193,7 +1533,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1201,7 +1541,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) true @@ -1227,14 +1567,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1259,14 +1599,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1291,14 +1631,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -1322,14 +1662,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -1352,7 +1692,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1386,7 +1726,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1420,7 +1760,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1452,7 +1792,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1474,7 +1814,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1497,7 +1837,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1517,7 +1857,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1540,7 +1880,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1560,7 +1900,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1580,7 +1920,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1603,7 +1943,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1626,7 +1966,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1646,7 +1986,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1669,7 +2009,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1689,7 +2029,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1712,7 +2052,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1733,7 +2073,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1756,7 +2096,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1776,7 +2116,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1799,7 +2139,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1819,7 +2159,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1839,7 +2179,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1862,7 +2202,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1885,7 +2225,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1905,7 +2245,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1928,7 +2268,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1948,7 +2288,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1971,7 +2311,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1984,10 +2324,12 @@ CURL_LIB_C_FILES +CURL_LIB_VAUTH_C_FILES CURL_LIB_VTLS_C_FILES CURL_LIB_H_FILES +CURL_LIB_VAUTH_H_FILES CURL_LIB_VTLS_H_FILES diff --git a/libraries/curl/projects/Windows/VC10/src/.gitignore b/libraries/curl/projects/Windows/VC10/src/.gitignore index d2d7b7fb4..60208d7e0 100644 --- a/libraries/curl/projects/Windows/VC10/src/.gitignore +++ b/libraries/curl/projects/Windows/VC10/src/.gitignore @@ -1,6 +1,6 @@ -/*.vcxproj -/*.filters -/*.user /*.ncb +/*.opensdf /*.sdf /*.suo +/*.user +/*.vcxproj diff --git a/libraries/curl/projects/Windows/VC11/lib/.gitignore b/libraries/curl/projects/Windows/VC11/lib/.gitignore index d2d7b7fb4..60208d7e0 100644 --- a/libraries/curl/projects/Windows/VC11/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC11/lib/.gitignore @@ -1,6 +1,6 @@ -/*.vcxproj -/*.filters -/*.user /*.ncb +/*.opensdf /*.sdf /*.suo +/*.user +/*.vcxproj diff --git a/libraries/curl/projects/Windows/VC11/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC11/lib/libcurl.tmpl index 833c39f25..f1cfef898 100644 --- a/libraries/curl/projects/Windows/VC11/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC11/lib/libcurl.tmpl @@ -1,6 +1,14 @@ + + DLL Debug - DLL wolfSSL + Win32 + + + DLL Debug - DLL wolfSSL + x64 + DLL Debug - DLL OpenSSL - DLL LibSSH2 Win32 @@ -41,6 +49,14 @@ DLL Debug x64 + + DLL Release - DLL wolfSSL + Win32 + + + DLL Release - DLL wolfSSL + x64 + DLL Release - DLL OpenSSL - DLL LibSSH2 Win32 @@ -113,6 +129,14 @@ LIB Debug - DLL Windows SSPI x64 + + LIB Debug - LIB wolfSSL + Win32 + + + LIB Debug - LIB wolfSSL + x64 + LIB Debug - LIB OpenSSL - LIB LibSSH2 Win32 @@ -169,6 +193,14 @@ LIB Release - DLL Windows SSPI x64 + + LIB Release - LIB wolfSSL + Win32 + + + LIB Release - LIB wolfSSL + x64 + LIB Release - LIB OpenSSL - LIB LibSSH2 Win32 @@ -325,24 +357,48 @@ MultiByte v110 + + StaticLibrary + false + MultiByte + v110 + StaticLibrary false MultiByte v110 + + StaticLibrary + false + MultiByte + v110 + DynamicLibrary false MultiByte v110 + + DynamicLibrary + false + MultiByte + v110 + DynamicLibrary false MultiByte v110 + + DynamicLibrary + false + MultiByte + v110 + StaticLibrary false @@ -469,24 +525,48 @@ MultiByte v110 + + StaticLibrary + false + MultiByte + v110 + StaticLibrary false MultiByte v110 + + StaticLibrary + false + MultiByte + v110 + DynamicLibrary false MultiByte v110 + + DynamicLibrary + false + MultiByte + v110 + DynamicLibrary false MultiByte v110 + + DynamicLibrary + false + MultiByte + v110 + @@ -553,15 +633,27 @@ + + + + + + + + + + + + @@ -625,38 +717,70 @@ + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 ..\..\..\..\build\Win32\VC11\$(Configuration)\ + ..\..\..\..\build\Win32\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win64\VC11\$(Configuration)\ + ..\..\..\..\build\Win64\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win32\VC11\$(Configuration)\ + ..\..\..\..\build\Win32\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win64\VC11\$(Configuration)\ + ..\..\..\..\build\Win64\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win32\VC11\$(Configuration)\ + ..\..\..\..\build\Win32\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win64\VC11\$(Configuration)\ + ..\..\..\..\build\Win64\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win32\VC11\$(Configuration)\ + ..\..\..\..\build\Win32\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win64\VC11\$(Configuration)\ + ..\..\..\..\build\Win64\VC11\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win32\VC11\$(Configuration)\ $(OutDir)lib\ false @@ -754,7 +878,9 @@ ..\..\..\..\build\Win64\VC11\$(Configuration)\ $(OutDir)lib\ $(ProjectName)d + $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d $(ProjectName)d $(ProjectName)d @@ -764,7 +890,9 @@ $(ProjectName)d $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d $(ProjectName)d $(ProjectName)d @@ -794,7 +922,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -812,6 +940,40 @@ MachineX86 + + + _DEBUG;%(PreprocessorDefinitions) + true + Win32 + $(OutDir)$(ProjectName).tlb + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories) + $(IntDir)$(TargetFileName).intermediate.manifest + true + $(TargetDir)$(TargetName).pdb + $(TargetDir)$(TargetName).lib + MachineX86 + + _DEBUG;%(PreprocessorDefinitions) @@ -828,7 +990,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -845,6 +1007,39 @@ MachineX64 + + + _DEBUG;%(PreprocessorDefinitions) + true + X64 + $(OutDir)$(ProjectName).tlb + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories) + true + $(TargetDir)$(TargetName).pdb + $(TargetDir)$(TargetName).lib + MachineX64 + + NDEBUG;%(PreprocessorDefinitions) @@ -862,7 +1057,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -877,6 +1072,40 @@ MachineX86 + + + NDEBUG;%(PreprocessorDefinitions) + true + Win32 + $(OutDir)$(ProjectName).tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories) + $(IntDir)$(TargetFileName).intermediate.manifest + $(TargetDir)$(TargetName).lib + MachineX86 + true + $(TargetDir)$(TargetName).pdb + + NDEBUG;%(PreprocessorDefinitions) @@ -894,7 +1123,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -908,6 +1137,39 @@ MachineX64 + + + NDEBUG;%(PreprocessorDefinitions) + true + X64 + $(OutDir)$(ProjectName).tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories) + $(TargetDir)$(TargetName).lib + MachineX64 + true + $(TargetDir)$(TargetName).pdb + + Disabled @@ -916,7 +1178,27 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX86 + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 ProgramDatabase @@ -939,7 +1221,30 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX64 + + + + + X64 + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 ProgramDatabase @@ -960,7 +1265,27 @@ true MultiThreadedDLL true - Level3 + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -983,7 +1308,30 @@ true MultiThreadedDLL true - Level3 + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX64 + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1010,7 +1358,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1044,7 +1392,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1078,7 +1426,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1110,7 +1458,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1140,7 +1488,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1148,7 +1496,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1174,7 +1522,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1182,7 +1530,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1208,7 +1556,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1216,7 +1564,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) true @@ -1241,7 +1589,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1249,7 +1597,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) true @@ -1275,14 +1623,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1307,14 +1655,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1339,14 +1687,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -1370,14 +1718,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -1400,7 +1748,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1434,7 +1782,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1468,7 +1816,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1500,7 +1848,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1522,7 +1870,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1545,7 +1893,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1565,7 +1913,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1588,7 +1936,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1608,7 +1956,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1628,7 +1976,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1651,7 +1999,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1674,7 +2022,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1694,7 +2042,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1717,7 +2065,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1737,7 +2085,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1760,7 +2108,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1781,7 +2129,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1804,7 +2152,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1824,7 +2172,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1847,7 +2195,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1867,7 +2215,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1887,7 +2235,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1910,7 +2258,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1933,7 +2281,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1953,7 +2301,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1976,7 +2324,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1996,7 +2344,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -2019,7 +2367,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -2032,10 +2380,12 @@ CURL_LIB_C_FILES +CURL_LIB_VAUTH_C_FILES CURL_LIB_VTLS_C_FILES CURL_LIB_H_FILES +CURL_LIB_VAUTH_H_FILES CURL_LIB_VTLS_H_FILES diff --git a/libraries/curl/projects/Windows/VC11/src/.gitignore b/libraries/curl/projects/Windows/VC11/src/.gitignore index d2d7b7fb4..60208d7e0 100644 --- a/libraries/curl/projects/Windows/VC11/src/.gitignore +++ b/libraries/curl/projects/Windows/VC11/src/.gitignore @@ -1,6 +1,6 @@ -/*.vcxproj -/*.filters -/*.user /*.ncb +/*.opensdf /*.sdf /*.suo +/*.user +/*.vcxproj diff --git a/libraries/curl/projects/Windows/VC12/lib/.gitignore b/libraries/curl/projects/Windows/VC12/lib/.gitignore index d2d7b7fb4..60208d7e0 100644 --- a/libraries/curl/projects/Windows/VC12/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC12/lib/.gitignore @@ -1,6 +1,6 @@ -/*.vcxproj -/*.filters -/*.user /*.ncb +/*.opensdf /*.sdf /*.suo +/*.user +/*.vcxproj diff --git a/libraries/curl/projects/Windows/VC12/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC12/lib/libcurl.tmpl index 65098efd7..7fe5aa098 100644 --- a/libraries/curl/projects/Windows/VC12/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC12/lib/libcurl.tmpl @@ -1,6 +1,14 @@ + + DLL Debug - DLL wolfSSL + Win32 + + + DLL Debug - DLL wolfSSL + x64 + DLL Debug - DLL OpenSSL - DLL LibSSH2 Win32 @@ -41,6 +49,14 @@ DLL Debug x64 + + DLL Release - DLL wolfSSL + Win32 + + + DLL Release - DLL wolfSSL + x64 + DLL Release - DLL OpenSSL - DLL LibSSH2 Win32 @@ -113,6 +129,14 @@ LIB Debug - DLL Windows SSPI x64 + + LIB Debug - LIB wolfSSL + Win32 + + + LIB Debug - LIB wolfSSL + x64 + LIB Debug - LIB OpenSSL - LIB LibSSH2 Win32 @@ -169,6 +193,14 @@ LIB Release - DLL Windows SSPI x64 + + LIB Release - LIB wolfSSL + Win32 + + + LIB Release - LIB wolfSSL + x64 + LIB Release - LIB OpenSSL - LIB LibSSH2 Win32 @@ -325,24 +357,48 @@ MultiByte v120 + + StaticLibrary + false + MultiByte + v120 + StaticLibrary false MultiByte v120 + + StaticLibrary + false + MultiByte + v120 + DynamicLibrary false MultiByte v120 + + DynamicLibrary + false + MultiByte + v120 + DynamicLibrary false MultiByte v120 + + DynamicLibrary + false + MultiByte + v120 + StaticLibrary false @@ -469,24 +525,48 @@ MultiByte v120 + + StaticLibrary + false + MultiByte + v120 + StaticLibrary false MultiByte v120 + + StaticLibrary + false + MultiByte + v120 + DynamicLibrary false MultiByte v120 + + DynamicLibrary + false + MultiByte + v120 + DynamicLibrary false MultiByte v120 + + DynamicLibrary + false + MultiByte + v120 + @@ -553,15 +633,27 @@ + + + + + + + + + + + + @@ -625,38 +717,70 @@ + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 ..\..\..\..\build\Win32\VC12\$(Configuration)\ + ..\..\..\..\build\Win32\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win64\VC12\$(Configuration)\ + ..\..\..\..\build\Win64\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win32\VC12\$(Configuration)\ + ..\..\..\..\build\Win32\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win64\VC12\$(Configuration)\ + ..\..\..\..\build\Win64\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ false + false ..\..\..\..\build\Win32\VC12\$(Configuration)\ + ..\..\..\..\build\Win32\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win64\VC12\$(Configuration)\ + ..\..\..\..\build\Win64\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win32\VC12\$(Configuration)\ + ..\..\..\..\build\Win32\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win64\VC12\$(Configuration)\ + ..\..\..\..\build\Win64\VC12\$(Configuration)\ $(OutDir)lib\ + $(OutDir)lib\ ..\..\..\..\build\Win32\VC12\$(Configuration)\ $(OutDir)lib\ false @@ -754,7 +878,9 @@ ..\..\..\..\build\Win64\VC12\$(Configuration)\ $(OutDir)lib\ $(ProjectName)d + $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d $(ProjectName)d $(ProjectName)d @@ -764,7 +890,9 @@ $(ProjectName)d $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d + $(ProjectName)d $(ProjectName)d $(ProjectName)d $(ProjectName)d @@ -794,7 +922,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -812,6 +940,40 @@ MachineX86 + + + _DEBUG;%(PreprocessorDefinitions) + true + Win32 + $(OutDir)$(ProjectName).tlb + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories) + $(IntDir)$(TargetFileName).intermediate.manifest + true + $(TargetDir)$(TargetName).pdb + $(TargetDir)$(TargetName).lib + MachineX86 + + _DEBUG;%(PreprocessorDefinitions) @@ -828,7 +990,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -845,6 +1007,39 @@ MachineX64 + + + _DEBUG;%(PreprocessorDefinitions) + true + X64 + $(OutDir)$(ProjectName).tlb + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories) + true + $(TargetDir)$(TargetName).pdb + $(TargetDir)$(TargetName).lib + MachineX64 + + NDEBUG;%(PreprocessorDefinitions) @@ -862,7 +1057,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -877,6 +1072,40 @@ MachineX86 + + + NDEBUG;%(PreprocessorDefinitions) + true + Win32 + $(OutDir)$(ProjectName).tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories) + $(IntDir)$(TargetFileName).intermediate.manifest + $(TargetDir)$(TargetName).lib + MachineX86 + true + $(TargetDir)$(TargetName).pdb + + NDEBUG;%(PreprocessorDefinitions) @@ -894,7 +1123,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -908,6 +1137,39 @@ MachineX64 + + + NDEBUG;%(PreprocessorDefinitions) + true + X64 + $(OutDir)$(ProjectName).tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;WOLFSSL_DLL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) + $(OutDir)$(TargetName)$(TargetExt) + ..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories) + $(TargetDir)$(TargetName).lib + MachineX64 + true + $(TargetDir)$(TargetName).pdb + + Disabled @@ -916,7 +1178,27 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX86 + + + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 ProgramDatabase @@ -939,7 +1221,30 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX64 + + + + + X64 + + + Disabled + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 ProgramDatabase @@ -960,7 +1265,27 @@ true MultiThreadedDLL true - Level3 + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -983,7 +1308,30 @@ true MultiThreadedDLL true - Level3 + Level4 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)$(TargetName)$(TargetExt) + MachineX64 + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories) + NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_CYASSL;HAVE_CYASSL_OPTIONS_H;HAVE_CYASSL_ERROR_SSL_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1010,7 +1358,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1044,7 +1392,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1078,7 +1426,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1110,7 +1458,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1140,7 +1488,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1148,7 +1496,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1174,7 +1522,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1182,7 +1530,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1208,7 +1556,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1216,7 +1564,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) true @@ -1241,7 +1589,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1249,7 +1597,7 @@ 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) true @@ -1275,14 +1623,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1307,14 +1655,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(IntDir)$(TargetFileName).intermediate.manifest @@ -1339,14 +1687,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -1370,14 +1718,14 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) 0x0409 - ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies) + ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) %(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib @@ -1400,7 +1748,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1434,7 +1782,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1468,7 +1816,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1500,7 +1848,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1522,7 +1870,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1545,7 +1893,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1565,7 +1913,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1588,7 +1936,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1608,7 +1956,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1628,7 +1976,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1651,7 +1999,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1674,7 +2022,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1694,7 +2042,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1717,7 +2065,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1737,7 +2085,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1760,7 +2108,7 @@ true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level4 ProgramDatabase @@ -1781,7 +2129,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1804,7 +2152,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1824,7 +2172,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1847,7 +2195,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1867,7 +2215,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1887,7 +2235,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1910,7 +2258,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1933,7 +2281,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1953,7 +2301,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1976,7 +2324,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -1996,7 +2344,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -2019,7 +2367,7 @@ true MultiThreadedDLL true - Level3 + Level4 NDEBUG;%(PreprocessorDefinitions) @@ -2032,10 +2380,12 @@ CURL_LIB_C_FILES +CURL_LIB_VAUTH_C_FILES CURL_LIB_VTLS_C_FILES CURL_LIB_H_FILES +CURL_LIB_VAUTH_H_FILES CURL_LIB_VTLS_H_FILES diff --git a/libraries/curl/projects/Windows/VC12/src/.gitignore b/libraries/curl/projects/Windows/VC12/src/.gitignore index d2d7b7fb4..60208d7e0 100644 --- a/libraries/curl/projects/Windows/VC12/src/.gitignore +++ b/libraries/curl/projects/Windows/VC12/src/.gitignore @@ -1,6 +1,6 @@ -/*.vcxproj -/*.filters -/*.user /*.ncb +/*.opensdf /*.sdf /*.suo +/*.user +/*.vcxproj diff --git a/libraries/curl/projects/Windows/VC6/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC6/lib/libcurl.tmpl index 74c8c9c32..26cc2abba 100644 --- a/libraries/curl/projects/Windows/VC6/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC6/lib/libcurl.tmpl @@ -63,8 +63,8 @@ CFG=libcurl - Win32 LIB Debug # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 @@ -93,8 +93,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 @@ -123,8 +123,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 @@ -153,8 +153,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 @@ -165,8 +165,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no -# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no +# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no +# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no !ELSEIF "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" @@ -183,8 +183,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c MTL=midl.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 @@ -195,8 +195,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no -# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no +# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no +# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no !ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release" @@ -212,8 +212,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 @@ -242,8 +242,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 @@ -272,8 +272,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 @@ -302,8 +302,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 @@ -314,8 +314,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release -# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release +# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release +# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release !ELSEIF "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" @@ -332,8 +332,8 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c MTL=midl.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 @@ -344,8 +344,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release -# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release +# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release +# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release !ELSEIF "$(CFG)" == "libcurl - Win32 LIB Debug" @@ -360,8 +360,8 @@ LINK32=link.exe # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -385,8 +385,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -410,8 +410,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -435,8 +435,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -460,8 +460,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -485,8 +485,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -510,8 +510,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c -# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c +# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c +# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -535,8 +535,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -560,8 +560,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -585,8 +585,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -610,8 +610,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -635,8 +635,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -660,8 +660,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -685,8 +685,8 @@ LIB32=link.exe -lib # PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib" # PROP Target_Dir "" CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c -# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c +# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c +# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c RSC=rc.exe # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -729,12 +729,14 @@ LIB32=link.exe -lib # PROP Default_Filter "" CURL_LIB_C_FILES +CURL_LIB_VAUTH_C_FILES CURL_LIB_VTLS_C_FILES # End Group # Begin Group "Header Files" # PROP Default_Filter "" CURL_LIB_H_FILES +CURL_LIB_VAUTH_H_FILES CURL_LIB_VTLS_H_FILES # End Group # Begin Group "Resource Files" diff --git a/libraries/curl/projects/Windows/VC7.1/lib/.gitignore b/libraries/curl/projects/Windows/VC7.1/lib/.gitignore index 8b319a72b..a7353bf1f 100644 --- a/libraries/curl/projects/Windows/VC7.1/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC7.1/lib/.gitignore @@ -1,3 +1,3 @@ -/*.vcproj /*.ncb /*.suo +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC7.1/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC7.1/lib/libcurl.tmpl index f27782e53..ca12c0185 100644 --- a/libraries/curl/projects/Windows/VC7.1/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC7.1/lib/libcurl.tmpl @@ -27,7 +27,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -143,7 +143,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -202,7 +202,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -296,7 +296,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -399,7 +399,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -446,7 +446,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -494,7 +494,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -559,7 +559,7 @@ @@ -948,7 +948,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -1007,7 +1007,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -1054,7 +1054,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -1063,7 +1063,7 @@ @@ -1217,7 +1217,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> CURL_LIB_RC_FILES + + +CURL_LIB_VAUTH_C_FILES + + +CURL_LIB_VAUTH_H_FILES + + diff --git a/libraries/curl/projects/Windows/VC7.1/src/.gitignore b/libraries/curl/projects/Windows/VC7.1/src/.gitignore index 8b319a72b..a7353bf1f 100644 --- a/libraries/curl/projects/Windows/VC7.1/src/.gitignore +++ b/libraries/curl/projects/Windows/VC7.1/src/.gitignore @@ -1,3 +1,3 @@ -/*.vcproj /*.ncb /*.suo +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC7/lib/.gitignore b/libraries/curl/projects/Windows/VC7/lib/.gitignore index d884acc2f..bc5806a59 100644 --- a/libraries/curl/projects/Windows/VC7/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC7/lib/.gitignore @@ -1,2 +1,2 @@ -/*.vcproj /*.ncb +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC7/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC7/lib/libcurl.tmpl index aa31f80f9..0fdc25f77 100644 --- a/libraries/curl/projects/Windows/VC7/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC7/lib/libcurl.tmpl @@ -27,7 +27,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -131,7 +131,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -184,7 +184,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -266,7 +266,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -357,7 +357,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -398,7 +398,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -440,7 +440,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> @@ -499,7 +499,7 @@ @@ -840,7 +840,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -893,7 +893,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -934,7 +934,7 @@ PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" DebugInformationFormat="3" CompileAs="0"/> @@ -943,7 +943,7 @@ @@ -1079,7 +1079,7 @@ StringPooling="TRUE" RuntimeLibrary="2" EnableFunctionLevelLinking="TRUE" - WarningLevel="3" + WarningLevel="4" SuppressStartupBanner="TRUE" CompileAs="0"/> CURL_LIB_RC_FILES + + +CURL_LIB_VAUTH_C_FILES + + +CURL_LIB_VAUTH_H_FILES + + diff --git a/libraries/curl/projects/Windows/VC7/src/.gitignore b/libraries/curl/projects/Windows/VC7/src/.gitignore index d884acc2f..bc5806a59 100644 --- a/libraries/curl/projects/Windows/VC7/src/.gitignore +++ b/libraries/curl/projects/Windows/VC7/src/.gitignore @@ -1,2 +1,2 @@ -/*.vcproj /*.ncb +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC8/lib/.gitignore b/libraries/curl/projects/Windows/VC8/lib/.gitignore index 6cd62ca81..431cf47c1 100644 --- a/libraries/curl/projects/Windows/VC8/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC8/lib/.gitignore @@ -1,4 +1,4 @@ -/*.vcproj -/*.user /*.ncb /*.suo +/*.user +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC8/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC8/lib/libcurl.tmpl index b57c49f4e..417333b5f 100644 --- a/libraries/curl/projects/Windows/VC8/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC8/lib/libcurl.tmpl @@ -54,7 +54,7 @@ MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" DebugInformationFormat="3" /> CURL_LIB_RC_FILES + + +CURL_LIB_VAUTH_C_FILES + + +CURL_LIB_VAUTH_H_FILES + + diff --git a/libraries/curl/projects/Windows/VC8/src/.gitignore b/libraries/curl/projects/Windows/VC8/src/.gitignore index 6cd62ca81..431cf47c1 100644 --- a/libraries/curl/projects/Windows/VC8/src/.gitignore +++ b/libraries/curl/projects/Windows/VC8/src/.gitignore @@ -1,4 +1,4 @@ -/*.vcproj -/*.user /*.ncb /*.suo +/*.user +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC9/lib/.gitignore b/libraries/curl/projects/Windows/VC9/lib/.gitignore index 6cd62ca81..431cf47c1 100644 --- a/libraries/curl/projects/Windows/VC9/lib/.gitignore +++ b/libraries/curl/projects/Windows/VC9/lib/.gitignore @@ -1,4 +1,4 @@ -/*.vcproj -/*.user /*.ncb /*.suo +/*.user +/*.vcproj diff --git a/libraries/curl/projects/Windows/VC9/lib/libcurl.tmpl b/libraries/curl/projects/Windows/VC9/lib/libcurl.tmpl index f3ec143b8..4e5f1b80f 100644 --- a/libraries/curl/projects/Windows/VC9/lib/libcurl.tmpl +++ b/libraries/curl/projects/Windows/VC9/lib/libcurl.tmpl @@ -55,7 +55,7 @@ MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" - WarningLevel="3" + WarningLevel="4" DebugInformationFormat="3" /> CURL_LIB_RC_FILES + + +CURL_LIB_VAUTH_C_FILES + + +CURL_LIB_VAUTH_H_FILES + + diff --git a/libraries/curl/projects/Windows/VC9/src/.gitignore b/libraries/curl/projects/Windows/VC9/src/.gitignore index 6cd62ca81..431cf47c1 100644 --- a/libraries/curl/projects/Windows/VC9/src/.gitignore +++ b/libraries/curl/projects/Windows/VC9/src/.gitignore @@ -1,4 +1,4 @@ -/*.vcproj -/*.user /*.ncb /*.suo +/*.user +/*.vcproj diff --git a/libraries/curl/src/.gitignore b/libraries/curl/src/.gitignore index c7ffcdce5..0f6fcd47c 100644 --- a/libraries/curl/src/.gitignore +++ b/libraries/curl/src/.gitignore @@ -1,13 +1,10 @@ +*.a +*.nlm +*.res +config-win32.h curl curl_config.h curl_config.h.in -tool_hugehelp.c stamp-h2 -Makefile.vc8.dist -Makefile.vc9.dist +tool_hugehelp.c tool_version.h.dist -Makefile.vc10.dist -config-win32.h -*.a -*.res -*.nlm diff --git a/libraries/curl/src/CMakeLists.txt b/libraries/curl/src/CMakeLists.txt index de188be66..30c525c44 100644 --- a/libraries/curl/src/CMakeLists.txt +++ b/libraries/curl/src/CMakeLists.txt @@ -40,7 +40,7 @@ transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc. include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake) if(MSVC) - list(APPEND CURL_SOURCE curl.rc) + list(APPEND CURL_FILES curl.rc) endif() # CURL_FILES comes from Makefile.inc @@ -76,4 +76,15 @@ set_target_properties(${EXE_NAME} PROPERTIES #INCLUDE(ModuleInstall OPTIONAL) -install(TARGETS ${EXE_NAME} DESTINATION bin) +install(TARGETS ${EXE_NAME} EXPORT curl-target DESTINATION bin) +export(TARGETS ${EXE_NAME} + APPEND FILE ${PROJECT_BINARY_DIR}/curl-target.cmake + NAMESPACE CURL:: +) + +install(EXPORT curl-target + FILE curl-target.cmake + NAMESPACE CURL:: + DESTINATION ${CURL_INSTALL_CMAKE_DIR} +) + diff --git a/libraries/curl/src/Makefile.m32 b/libraries/curl/src/Makefile.m32 index e55427a5e..700cccfa8 100644 --- a/libraries/curl/src/Makefile.m32 +++ b/libraries/curl/src/Makefile.m32 @@ -22,8 +22,9 @@ ########################################################################### # -## Makefile for building curl.exe with MingW (GCC-3.2 or later) -## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4) +## Makefile for building curl.exe with MingW (GCC-3.2 or later or LLVM/Clang) +## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4), +## brotli (1.0.1) ## ## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...] ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn @@ -38,6 +39,10 @@ ifndef ZLIB_PATH ZLIB_PATH = ../../zlib-1.2.8 endif +# Edit the path below to point to the base of your Brotli sources. +ifndef BROTLI_PATH +BROTLI_PATH = ../../brotli-1.0.1 +endif # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH OPENSSL_PATH = ../../openssl-1.0.2a @@ -88,12 +93,19 @@ ifndef LIBCARES_PATH LIBCARES_PATH = $(PROOT)/ares endif -CC = $(CROSSPREFIX)gcc +ifeq ($(CURL_CC),) +CURL_CC := $(CROSSPREFIX)gcc +endif +ifeq ($(CURL_AR),) +CURL_AR := $(CROSSPREFIX)ar +endif + +CC = $(CURL_CC) CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W CFLAGS += -fno-strict-aliasing # comment LDFLAGS below to keep debug info LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s -AR = $(CROSSPREFIX)ar +AR = $(CURL_AR) RC = $(CROSSPREFIX)windres RCFLAGS = --include-dir=$(PROOT)/include -O COFF STRIP = $(CROSSPREFIX)strip -g @@ -177,6 +189,9 @@ endif ifeq ($(findstring -zlib,$(CFG)),-zlib) ZLIB = 1 endif +ifeq ($(findstring -brotli,$(CFG)),-brotli) +BROTLI = 1 +endif ifeq ($(findstring -idn2,$(CFG)),-idn2) IDN2 = 1 endif @@ -287,6 +302,16 @@ ifdef ZLIB CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H curl_LDADD += -L"$(ZLIB_PATH)" -lz endif +ifdef BROTLI + INCLUDES += -I"$(BROTLI_PATH)/include" + CFLAGS += -DHAVE_BROTLI + curl_LDADD += -L"$(BROTLI_PATH)/lib" + ifdef BROTLI_LIBS + curl_LDADD += $(BROTLI_LIBS) + else + curl_LDADD += -lbrotlidec + endif +endif ifdef IDN2 CFLAGS += -DUSE_LIBIDN2 curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2 diff --git a/libraries/curl/src/mkhelp.pl b/libraries/curl/src/mkhelp.pl index 270daa20a..757f024ce 100644 --- a/libraries/curl/src/mkhelp.pl +++ b/libraries/curl/src/mkhelp.pl @@ -102,11 +102,9 @@ while() { } close(READ); -$now = localtime; print < *pdata && ISSPACE(endpos[-1])) @@ -222,12 +233,10 @@ static int get_param_part(struct OperationConfig *config, char **str, } /* now point beyond the content-type specifier */ - endpos = type + strlen(type_major) + strlen(type_minor) + 1; - for(p = endpos; ISSPACE(*p); p++) - ; - while(*p && *p != ';' && *p != ',') - p++; - endct = p; + p = type + strlen(type_major) + strlen(type_minor) + 1; + for(endct = p; *p && *p != ';' && *p != endchar; p++) + if(!ISSPACE(*p)) + endct = p + 1; sep = *p; } else if(checkprefix("filename=", p)) { @@ -238,7 +247,7 @@ static int get_param_part(struct OperationConfig *config, char **str, for(p += 9; ISSPACE(*p); p++) ; tp = p; - filename = get_param_word(&p, &endpos); + filename = get_param_word(&p, &endpos, endchar); /* If not quoted, strip trailing spaces. */ if(filename == tp) while(endpos > filename && ISSPACE(endpos[-1])) @@ -261,7 +270,7 @@ static int get_param_part(struct OperationConfig *config, char **str, p++; } while(ISSPACE(*p)); tp = p; - hdrfile = get_param_word(&p, &endpos); + hdrfile = get_param_word(&p, &endpos, endchar); /* If not quoted, strip trailing spaces. */ if(hdrfile == tp) while(endpos > hdrfile && ISSPACE(endpos[-1])) @@ -289,7 +298,7 @@ static int get_param_part(struct OperationConfig *config, char **str, while(ISSPACE(*p)) p++; tp = p; - hdr = get_param_word(&p, &endpos); + hdr = get_param_word(&p, &endpos, endchar); /* If not quoted, strip trailing spaces. */ if(hdr == tp) while(endpos > hdr && ISSPACE(endpos[-1])) @@ -311,7 +320,7 @@ static int get_param_part(struct OperationConfig *config, char **str, for(p += 8; ISSPACE(*p); p++) ; tp = p; - encoder = get_param_word(&p, &endpos); + encoder = get_param_word(&p, &endpos, endchar); /* If not quoted, strip trailing spaces. */ if(encoder == tp) while(endpos > encoder && ISSPACE(endpos[-1])) @@ -319,29 +328,27 @@ static int get_param_part(struct OperationConfig *config, char **str, sep = *p; *endpos = '\0'; } + else if(endct) { + /* This is part of content type. */ + for(endct = p; *p && *p != ';' && *p != endchar; p++) + if(!ISSPACE(*p)) + endct = p + 1; + sep = *p; + } else { /* unknown prefix, skip to next block */ - char *unknown = get_param_word(&p, &endpos); + char *unknown = get_param_word(&p, &endpos, endchar); sep = *p; - if(endct) - endct = p; - else { - *endpos = '\0'; - if(*unknown) - warnf(config->global, "skip unknown form field: %s\n", unknown); - } + *endpos = '\0'; + if(*unknown) + warnf(config->global, "skip unknown form field: %s\n", unknown); } } - /* Terminate and strip content type. */ - if(type) { - if(!endct) - endct = type + strlen(type); - while(endct > type && ISSPACE(endct[-1])) - endct--; + /* Terminate content type. */ + if(endct) *endct = '\0'; - } if(ptype) *ptype = type; @@ -372,16 +379,123 @@ static int get_param_part(struct OperationConfig *config, char **str, return sep & 0xFF; } -/* Check if file is "-". If so, use a callback to read OUR stdin (to + +/* Mime part callbacks for stdin. */ +static size_t stdin_read(char *buffer, size_t size, size_t nitems, void *arg) +{ + standard_input *sip = (standard_input *) arg; + curl_off_t bytesleft; + (void) size; /* Always 1: ignored. */ + + if(sip->curpos >= sip->size) + return 0; /* At eof. */ + bytesleft = sip->size - sip->curpos; + if((curl_off_t) nitems > bytesleft) + nitems = (size_t) bytesleft; + if(sip->data) { + /* Return data from memory. */ + memcpy(buffer, sip->data + (size_t) sip->curpos, nitems); + } + else { + /* Read from stdin. */ + nitems = fread(buffer, 1, nitems, stdin); + } + sip->curpos += nitems; + return nitems; +} + +static int stdin_seek(void *instream, curl_off_t offset, int whence) +{ + standard_input *sip = (standard_input *) instream; + + switch(whence) { + case SEEK_CUR: + offset += sip->curpos; + break; + case SEEK_END: + offset += sip->size; + break; + } + if(offset < 0) + return CURL_SEEKFUNC_CANTSEEK; + if(!sip->data) { + if(fseek(stdin, (long) (offset + sip->origin), SEEK_SET)) + return CURL_SEEKFUNC_CANTSEEK; + } + sip->curpos = offset; + return CURL_SEEKFUNC_OK; +} + +static void stdin_free(void *ptr) +{ + standard_input *sip = (standard_input *) ptr; + + Curl_safefree(sip->data); + free(sip); +} + +/* Set a part's data from a file, taking care about the pseudo filename "-" as + * a shortcut to read stdin: if so, use a callback to read OUR stdin (to * workaround Windows DLL file handle caveat). - * Else use curl_mime_filedata(). */ + * If stdin is a regular file opened in binary mode, save current offset as + * origin for rewind and do not buffer data. Else read to EOF and keep in + * memory. In all cases, compute the stdin data size. + */ static CURLcode file_or_stdin(curl_mimepart *part, const char *file) { + standard_input *sip = NULL; + int fd = -1; + CURLcode result = CURLE_OK; + struct_stat sbuf; + if(strcmp(file, "-")) return curl_mime_filedata(part, file); - return curl_mime_data_cb(part, -1, (curl_read_callback) fread, - (curl_seek_callback) fseek, NULL, stdin); + sip = (standard_input *) malloc(sizeof *sip); + if(!sip) + return CURLE_OUT_OF_MEMORY; + + memset((char *) sip, 0, sizeof *sip); + set_binmode(stdin); + + /* If stdin is a regular file, do not buffer data but read it when needed. */ + fd = fileno(stdin); + sip->origin = ftell(stdin); + if(fd >= 0 && sip->origin >= 0 && !fstat(fd, &sbuf) && +#ifdef __VMS + sbuf.st_fab_rfm != FAB$C_VAR && sbuf.st_fab_rfm != FAB$C_VFC && +#endif + S_ISREG(sbuf.st_mode)) { + sip->size = sbuf.st_size - sip->origin; + if(sip->size < 0) + sip->size = 0; + } + else { /* Not suitable for direct use, buffer stdin data. */ + size_t stdinsize = 0; + + sip->origin = 0; + if(file2memory(&sip->data, &stdinsize, stdin) != PARAM_OK) + result = CURLE_OUT_OF_MEMORY; + else { + if(!stdinsize) + sip->data = NULL; /* Has been freed if no data. */ + sip->size = stdinsize; + if(ferror(stdin)) + result = CURLE_READ_ERROR; + } + } + + /* Set remote file name. */ + if(!result) + result = curl_mime_filename(part, file); + + /* Set part's data from callback. */ + if(!result) + result = curl_mime_data_cb(part, sip->size, + stdin_read, stdin_seek, stdin_free, sip); + if(result) + stdin_free(sip); + return result; } @@ -480,7 +594,8 @@ int formparse(struct OperationConfig *config, curl_mime *subparts; /* Starting a multipart. */ - sep = get_param_part(config, &contp, &data, &type, NULL, NULL, &headers); + sep = get_param_part(config, '\0', + &contp, &data, &type, NULL, NULL, &headers); if(sep < 0) { Curl_safefree(contents); return 3; @@ -539,7 +654,7 @@ int formparse(struct OperationConfig *config, /* since this was a file, it may have a content-type specifier at the end too, or a filename. Or both. */ ++contp; - sep = get_param_part(config, &contp, + sep = get_param_part(config, ',', &contp, &data, &type, &filename, &encoder, &headers); if(sep < 0) { if(subparts != *mimecurrent) @@ -649,8 +764,8 @@ int formparse(struct OperationConfig *config, if(*contp == '<' && !literal_value) { ++contp; - sep = get_param_part(config, &contp, - &data, &type, &filename, &encoder, &headers); + sep = get_param_part(config, '\0', &contp, + &data, &type, NULL, &encoder, &headers); if(sep < 0) { Curl_safefree(contents); return 21; @@ -678,7 +793,7 @@ int formparse(struct OperationConfig *config, if(literal_value) data = contp; else { - sep = get_param_part(config, &contp, + sep = get_param_part(config, '\0', &contp, &data, &type, &filename, &encoder, &headers); if(sep < 0) { Curl_safefree(contents); diff --git a/libraries/curl/src/tool_getparam.c b/libraries/curl/src/tool_getparam.c index b65c45732..12e3abd55 100644 --- a/libraries/curl/src/tool_getparam.c +++ b/libraries/curl/src/tool_getparam.c @@ -787,7 +787,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ url = config->url_get; else /* there was no free node, create one! */ - url = new_getout(config); + config->url_get = url = new_getout(config); if(!url) return PARAM_NO_MEM; @@ -1787,7 +1787,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ url = config->url_out; else /* there was no free node, create one! */ - url = new_getout(config); + config->url_out = url = new_getout(config); if(!url) return PARAM_NO_MEM; @@ -1912,23 +1912,23 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ /* we are uploading */ { struct getout *url; - if(!config->url_out) - config->url_out = config->url_list; - if(config->url_out) { + if(!config->url_ul) + config->url_ul = config->url_list; + if(config->url_ul) { /* there's a node here, if it already is filled-in continue to find an "empty" node */ - while(config->url_out && (config->url_out->flags & GETOUT_UPLOAD)) - config->url_out = config->url_out->next; + while(config->url_ul && (config->url_ul->flags & GETOUT_UPLOAD)) + config->url_ul = config->url_ul->next; } /* now there might or might not be an available node to fill in! */ - if(config->url_out) + if(config->url_ul) /* existing node */ - url = config->url_out; + url = config->url_ul; else /* there was no free node, create one! */ - url = new_getout(config); + config->url_ul = url = new_getout(config); if(!url) return PARAM_NO_MEM; diff --git a/libraries/curl/src/tool_help.c b/libraries/curl/src/tool_help.c index 486f65dc8..c6d329cdf 100644 --- a/libraries/curl/src/tool_help.c +++ b/libraries/curl/src/tool_help.c @@ -499,6 +499,7 @@ static const struct feat feats[] = { {"NTLM_WB", CURL_VERSION_NTLM_WB}, {"SSL", CURL_VERSION_SSL}, {"libz", CURL_VERSION_LIBZ}, + {"brotli", CURL_VERSION_BROTLI}, {"CharConv", CURL_VERSION_CONV}, {"TLS-SRP", CURL_VERSION_TLSAUTH_SRP}, {"HTTP2", CURL_VERSION_HTTP2}, diff --git a/libraries/curl/src/tool_hugehelp.c.cvs b/libraries/curl/src/tool_hugehelp.c.cvs index 5895900c2..6ec5e9149 100644 --- a/libraries/curl/src/tool_hugehelp.c.cvs +++ b/libraries/curl/src/tool_hugehelp.c.cvs @@ -9,7 +9,7 @@ * * 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 http://curl.haxx.se/docs/copyright.html. + * 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 @@ -25,5 +25,5 @@ void hugehelp(void) { - puts ( "This is a silly replacement for the actual file."); + puts("This is a silly replacement for the actual file."); } diff --git a/libraries/curl/src/tool_urlglob.c b/libraries/curl/src/tool_urlglob.c index df85d7129..f78d058cd 100644 --- a/libraries/curl/src/tool_urlglob.c +++ b/libraries/curl/src/tool_urlglob.c @@ -367,9 +367,11 @@ static CURLcode glob_parse(URLGlob *glob, char *pattern, size_t sublen = 0; while(*pattern && *pattern != '{') { if(*pattern == '[') { - /* Skip over potential IPv6 literals. */ - size_t skip; - if(peek_ipv6(pattern, &skip)) { + /* skip over IPv6 literals and [] */ + size_t skip = 0; + if(!peek_ipv6(pattern, &skip) && (pattern[1] == ']')) + skip = 2; + if(skip) { memcpy(buf, pattern, skip); buf += skip; pattern += skip; diff --git a/libraries/curl/src/tool_version.h b/libraries/curl/src/tool_version.h index 43daa7b0b..04f45671e 100644 --- a/libraries/curl/src/tool_version.h +++ b/libraries/curl/src/tool_version.h @@ -25,7 +25,7 @@ #define CURL_NAME "curl" #define CURL_COPYRIGHT LIBCURL_COPYRIGHT -#define CURL_VERSION "7.56.0" +#define CURL_VERSION LIBCURL_VERSION #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH diff --git a/libraries/curl/tests/.gitignore b/libraries/curl/tests/.gitignore index ef7ce119b..fbbc16485 100644 --- a/libraries/curl/tests/.gitignore +++ b/libraries/curl/tests/.gitignore @@ -1,17 +1,19 @@ -log +*pid +*.1.dist +configurehelp.pm curl_client_key curl_client_key.pub curl_client_knownhosts -curl_host_dsa_key -curl_host_dsa_key.pub +curl_host_rsa_key +curl_host_rsa_key.pub curl_sftp_cmds curl_sftp_config curl_ssh_config curl_sshd_config -*pid -stunnel.conf +ftps_stunnel.conf +https_stunnel.conf +log runtests.html runtests.pdf testcurl.html testcurl.pdf -configurehelp.pm diff --git a/libraries/curl/tests/Makefile.am b/libraries/curl/tests/Makefile.am index 3d1848992..d6e6cfe29 100644 --- a/libraries/curl/tests/Makefile.am +++ b/libraries/curl/tests/Makefile.am @@ -53,7 +53,7 @@ DIST_UNIT = unit endif SUBDIRS = certs data server libtest $(BUILD_UNIT) -DIST_SUBDIRS = $(SUBDIRS) $(DIST_UNIT) fuzz +DIST_SUBDIRS = $(SUBDIRS) $(DIST_UNIT) PERLFLAGS = -I$(srcdir) diff --git a/libraries/curl/tests/convsrctest.pl b/libraries/curl/tests/convsrctest.pl index ee442394c..11237448f 100644 --- a/libraries/curl/tests/convsrctest.pl +++ b/libraries/curl/tests/convsrctest.pl @@ -10,7 +10,7 @@ # # 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 http://curl.haxx.se/docs/copyright.html. +# 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 diff --git a/libraries/curl/tests/data/DISABLED b/libraries/curl/tests/data/DISABLED index 11d54b463..fcbf0ffc4 100644 --- a/libraries/curl/tests/data/DISABLED +++ b/libraries/curl/tests/data/DISABLED @@ -18,3 +18,5 @@ 1510 # Pipelining test that is causing false positives a little too often 1903 +# causes memory leaks for now: +1553 diff --git a/libraries/curl/tests/data/Makefile.inc b/libraries/curl/tests/data/Makefile.inc index 4243c2183..dc1cc03bc 100644 --- a/libraries/curl/tests/data/Makefile.inc +++ b/libraries/curl/tests/data/Makefile.inc @@ -45,16 +45,16 @@ test190 test191 test192 test193 test194 test195 test196 test197 test198 \ test199 test200 test201 test202 test203 test204 test205 test206 test207 \ test208 test209 test210 test211 test212 test213 test214 test215 test216 \ test217 test218 test219 test220 test221 test222 test223 test224 test225 \ -test226 test227 test228 test229 test231 test233 test234 \ +test226 test227 test228 test229 test230 test231 test233 test234 \ test235 test236 test237 test238 test239 test240 test241 test242 test243 \ - test245 test246 test247 test248 test249 test250 test251 test252 \ +test244 test245 test246 test247 test248 test249 test250 test251 test252 \ test253 test254 test255 test256 test257 test258 test259 test260 test261 \ test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ test298 test299 test300 test301 test302 test303 test304 test305 test306 \ -test307 test308 test309 test310 test311 test312 test313 \ +test307 test308 test309 test310 test311 test312 test313 test314 test315 \ test320 test321 test322 test323 test324 \ test325 \ test350 test351 test352 test353 test354 \ @@ -70,7 +70,7 @@ test536 test537 test538 test539 test540 test541 test542 test543 test544 \ test545 test546 test547 test548 test549 test550 test551 test552 test553 \ test554 test555 test556 test557 test558 test559 test560 test561 test562 \ test563 test564 test565 test566 test567 test568 test569 test570 test571 \ -test572 test573 test574 test575 test576 test578 test579 test580 \ +test572 test573 test574 test575 test576 test577 test578 test579 test580 \ test581 test582 test583 test584 test585 test586 test587 test588 test589 \ test590 test591 test592 test593 test594 test595 test596 test597 test598 \ test599 test600 test601 test602 test603 test604 test605 test606 test607 \ @@ -78,7 +78,8 @@ test608 test609 test610 test611 test612 test613 test614 test615 test616 \ test617 test618 test619 test620 test621 test622 test623 test624 test625 \ test626 test627 test628 test629 test630 test631 test632 test633 test634 \ test635 test636 test637 test638 test639 test640 test641 test642 \ -test643 test644 test645 test646 test647 test648 test649 test650 \ +test643 test644 test645 test646 test647 test648 test649 test650 test651 \ +test652 test653 \ \ test700 test701 test702 test703 test704 test705 test706 test707 test708 \ test709 test710 test711 test712 test713 test714 test715 \ @@ -101,7 +102,7 @@ test909 test910 test911 test912 test913 test914 test915 test916 test917 \ test918 test919 test920 test921 test922 test923 test924 test925 test926 \ test927 test928 test929 test930 test931 test932 test933 test934 test935 \ test936 test937 test938 test939 test940 test941 test942 test943 test944 \ -test945 test946 test947 test948 test949 \ +test945 test946 test947 test948 test949 test950 \ \ test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \ test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \ @@ -124,7 +125,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \ test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \ test1152 test1153 \ \ -test1160 test1161 \ +test1160 test1161 test1162 \ test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \ test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \ test1216 test1217 test1218 test1219 \ @@ -133,15 +134,15 @@ test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \ test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \ test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \ test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \ -test1260 test1261 test1262 \ +test1260 test1261 test1262 test1263 test1264 \ \ test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \ -test1288 test1289 \ +test1288 test1289 test1290 test1291 \ test1298 test1299 \ test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \ test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \ test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \ - test1325 test1326 test1327 test1328 test1329 test1330 test1331 \ +test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \ test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \ test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \ test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \ @@ -169,7 +170,7 @@ test1520 test1521 \ test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \ test1533 test1534 test1535 test1536 test1537 test1538 \ test1540 \ -test1550 test1551 \ +test1550 test1551 test1552 test1553 test1554 \ test1600 test1601 test1602 test1603 test1604 test1605 test1606 \ \ test1700 test1701 test1702 \ @@ -185,4 +186,5 @@ test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \ test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \ test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \ test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \ -test2056 test2057 +test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \ +test2064 test2065 test2066 test2067 test2068 test2069 diff --git a/libraries/curl/tests/data/test1034 b/libraries/curl/tests/data/test1034 index 6c1beb671..beab0d3c0 100644 --- a/libraries/curl/tests/data/test1034 +++ b/libraries/curl/tests/data/test1034 @@ -13,24 +13,17 @@ config file # # Server-side - -HTTP/1.0 503 Service Unavailable -Date: Thu, 09 Nov 2010 14:49:00 GMT -Server: test-server/fake swsclose -Content-Type: text/html -Funny-head: yesyes - - # # Client-side -http +none idn +http LC_ALL= @@ -54,17 +47,9 @@ url = "http://invalid-utf8- # -# Verify data after the test has been "shot" - -^User-Agent:.* - - -GET http://invalid-utf8-â.local/page/1034 HTTP/1.1 -Host: invalid-utf8-â.local -Accept: */* -Proxy-Connection: Keep-Alive - - + +3 + diff --git a/libraries/curl/tests/data/test1035 b/libraries/curl/tests/data/test1035 index 033a48a72..a316c51e1 100644 --- a/libraries/curl/tests/data/test1035 +++ b/libraries/curl/tests/data/test1035 @@ -12,24 +12,17 @@ FAILURE # # Server-side - -HTTP/1.0 503 Service Unavailable -Date: Thu, 09 Nov 2010 14:49:00 GMT -Server: test-server/fake swsclose -Content-Type: text/html -Funny-head: yesyes - - # # Client-side -http +none idn +http LC_ALL= @@ -52,12 +45,8 @@ http://too-long-IDN-name-cĂźrl-rĂźles-la-la-la-dee-da-flooby-nooby.local/page/10 ^User-Agent:.* - -GET http://too-long-IDN-name-cĂźrl-rĂźles-la-la-la-dee-da-flooby-nooby.local/page/1035 HTTP/1.1 -Host: too-long-IDN-name-cĂźrl-rĂźles-la-la-la-dee-da-flooby-nooby.local -Accept: */* -Proxy-Connection: Keep-Alive - - + +3 + diff --git a/libraries/curl/tests/data/test1133 b/libraries/curl/tests/data/test1133 index 2238b9c07..b8ed56b2d 100644 --- a/libraries/curl/tests/data/test1133 +++ b/libraries/curl/tests/data/test1133 @@ -23,10 +23,10 @@ blablabla http -HTTP RFC1867-type formposting with filename contains ',', ';', '"' +HTTP RFC1867-type formposting with filename/data contains ',', ';', '"' -http://%HOSTIP:%HTTPPORT/we/want/1133 -F "file=@\"log/test1133,a\\\"nd;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/test1133,a\"nd;.txt"' -F 'file3=@"log/test1133,a\"nd;.txt";type=m/f,"log/test1133,a\"nd;.txt"' +http://%HOSTIP:%HTTPPORT/we/want/1133 -F "file=@\"log/test1133,a\\\"nd;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/test1133,a\"nd;.txt"' -F 'file3=@"log/test1133,a\"nd;.txt";type=m/f,"log/test1133,a\"nd;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b' # We create this file before the command is invoked! @@ -47,7 +47,8 @@ POST /we/want/1133 HTTP/1.1 User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3 Host: %HOSTIP:%HTTPPORT Accept: */* -Content-Length: 969 +Content-Length: 1270 +Expect: 100-continue Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32 ------------------------------24e78000bd32 @@ -89,6 +90,13 @@ bar foo +Content-Disposition: form-data; name="a" + +{"field1":"value1","field2":"value2"} +Content-Disposition: form-data; name="b"; filename="param_b" +Content-Type: text/foo; charset=utf-8 + + \value1;type="whatever" ------------------------------24e78000bd32-- diff --git a/libraries/curl/tests/data/test1422 b/libraries/curl/tests/data/test1422 index 9b436cc4e..df9d750dd 100644 --- a/libraries/curl/tests/data/test1422 +++ b/libraries/curl/tests/data/test1422 @@ -16,7 +16,7 @@ Server: test-server/fake Content-Length: 0 Connection: close Content-Type: text/html -Content-Disposition: filename=name1422; charset=funny; option=strange +Content-Disposition: filename=name1422; charset=funny; option=str//nge diff --git a/libraries/curl/tests/data/test173 b/libraries/curl/tests/data/test173 index 754950105..865ef7ba2 100644 --- a/libraries/curl/tests/data/test173 +++ b/libraries/curl/tests/data/test173 @@ -53,11 +53,9 @@ POST /we/want/173 HTTP/1.1 User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6 Host: %HOSTIP:%HTTPPORT Accept: */* -Transfer-Encoding: chunked -Expect: 100-continue +Content-Length: 360 Content-Type: multipart/form-data; boundary=----------------------------5dbea401cd8c -168 ------------------------------5dbea401cd8c Content-Disposition: form-data; name="field1" @@ -76,9 +74,6 @@ line7 line8 ------------------------------5dbea401cd8c-- - -0 - diff --git a/libraries/curl/tests/data/test220 b/libraries/curl/tests/data/test220 index 2fb0b8a6a..7fd264345 100644 --- a/libraries/curl/tests/data/test220 +++ b/libraries/curl/tests/data/test220 @@ -57,11 +57,14 @@ http://%HOSTIP:%HTTPPORT/220 --compressed ^User-Agent:.* + +s/^Accept-Encoding: .*/Accept-Encoding: xxx/ + GET /220 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Accept-Encoding: deflate, gzip +Accept-Encoding: xxx diff --git a/libraries/curl/tests/data/test221 b/libraries/curl/tests/data/test221 index 95edb4990..3a85439d0 100644 --- a/libraries/curl/tests/data/test221 +++ b/libraries/curl/tests/data/test221 @@ -57,11 +57,14 @@ http://%HOSTIP:%HTTPPORT/221 --compressed ^User-Agent:.* + +s/^Accept-Encoding: .*/Accept-Encoding: xxx/ + GET /221 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Accept-Encoding: deflate, gzip +Accept-Encoding: xxx diff --git a/libraries/curl/tests/data/test222 b/libraries/curl/tests/data/test222 index a4594869e..865266e07 100644 --- a/libraries/curl/tests/data/test222 +++ b/libraries/curl/tests/data/test222 @@ -188,11 +188,14 @@ http://%HOSTIP:%HTTPPORT/222 --compressed ^User-Agent:.* + +s/^Accept-Encoding: .*/Accept-Encoding: xxx/ + GET /222 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Accept-Encoding: deflate, gzip +Accept-Encoding: xxx diff --git a/libraries/curl/tests/data/test223 b/libraries/curl/tests/data/test223 index 196e78c80..884967e3f 100644 --- a/libraries/curl/tests/data/test223 +++ b/libraries/curl/tests/data/test223 @@ -78,11 +78,14 @@ http://%HOSTIP:%HTTPPORT/223 --compressed ^User-Agent:.* + +s/^Accept-Encoding: .*/Accept-Encoding: xxx/ + GET /223 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Accept-Encoding: deflate, gzip +Accept-Encoding: xxx diff --git a/libraries/curl/tests/data/test224 b/libraries/curl/tests/data/test224 index 1c8ad2380..a56046873 100644 --- a/libraries/curl/tests/data/test224 +++ b/libraries/curl/tests/data/test224 @@ -93,11 +93,14 @@ http://%HOSTIP:%HTTPPORT/224 --compressed ^User-Agent:.* + +s/^Accept-Encoding: .*/Accept-Encoding: xxx/ + GET /224 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Accept-Encoding: deflate, gzip +Accept-Encoding: xxx diff --git a/libraries/curl/tests/data/test237 b/libraries/curl/tests/data/test237 index 9a40f1f6b..e9147dcd1 100644 --- a/libraries/curl/tests/data/test237 +++ b/libraries/curl/tests/data/test237 @@ -30,13 +30,9 @@ ftp://%HOSTIP:%FTPPORT/237 --disable-epsv # certain hosts with buggy resolver code, the resulting address (192.0.2.127) # is from an address block that is guaranteed never to be assigned (RFC3330). -# curl: (15) Can't resolve new host 1216.256.2.127:32639 -# 15 => CURLE_FTP_CANT_GET_HOST -# some systems just don't fail on the illegal host name/address but instead -# moves on and attempt to connect to... yes, to what? -# 7= CURLE_COULDNT_CONNECT +# 14 = CURLE_FTP_WEIRD_227_FORMAT -15, 7 +14 USER anonymous diff --git a/libraries/curl/tests/data/test298 b/libraries/curl/tests/data/test298 index 80913e84b..09b127fbf 100644 --- a/libraries/curl/tests/data/test298 +++ b/libraries/curl/tests/data/test298 @@ -25,7 +25,7 @@ ftp FTP CWD with --ftp-method nocwd ---ftp-method nocwd ftp://%HOSTIP:%FTPPORT/first/second/third/298 +--ftp-method nocwd ftp://%HOSTIP:%FTPPORT/first/second/th%69rd/298 diff --git a/libraries/curl/tests/data/test308 b/libraries/curl/tests/data/test308 index d20556a19..1a3c8ec53 100644 --- a/libraries/curl/tests/data/test308 +++ b/libraries/curl/tests/data/test308 @@ -12,6 +12,7 @@ FAILURE OpenSSL +!MultiSSL https diff --git a/libraries/curl/tests/data/test554 b/libraries/curl/tests/data/test554 index ce4a14dc4..24d9c0468 100644 --- a/libraries/curl/tests/data/test554 +++ b/libraries/curl/tests/data/test554 @@ -68,7 +68,7 @@ s/boundary=------------------------[a-z0-9]*/boundary=-------------------------- POST /554 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Content-Length: 718 +Content-Length: 744 Content-Type: multipart/form-data; boundary=---------------------------- ------------------------------ @@ -87,6 +87,7 @@ Content-Disposition: form-data; name="filename" postit2.c ------------------------------ Content-Disposition: form-data; name="submit" +Content-Type: text/plain send ------------------------------ @@ -98,7 +99,7 @@ blah blah POST /554 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Content-Length: 732 +Content-Length: 758 Content-Type: multipart/form-data; boundary=---------------------------- ------------------------------ @@ -117,6 +118,7 @@ Content-Disposition: form-data; name="filename" postit2.c ------------------------------ Content-Disposition: form-data; name="submit" +Content-Type: text/plain send ------------------------------ diff --git a/libraries/curl/tests/data/test587 b/libraries/curl/tests/data/test587 index 689a877db..0d9530e93 100644 --- a/libraries/curl/tests/data/test587 +++ b/libraries/curl/tests/data/test587 @@ -3,6 +3,7 @@ HTTP HTTP POST +flaky @@ -42,7 +43,7 @@ s/boundary=------------------------[a-z0-9]*/boundary=-------------------------- POST /587 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* -Content-Length: 718 +Content-Length: 744 Content-Type: multipart/form-data; boundary=---------------------------- ------------------------------ diff --git a/libraries/curl/tests/ftpserver.pl b/libraries/curl/tests/ftpserver.pl index 2aba4263a..ae8b4a017 100644 --- a/libraries/curl/tests/ftpserver.pl +++ b/libraries/curl/tests/ftpserver.pl @@ -3023,7 +3023,7 @@ while(1) { undef $ftplistparserstate; } if($ftptargetdir) { - undef $ftptargetdir; + $ftptargetdir = ""; } if($verbose) { @@ -3193,7 +3193,7 @@ while(1) { } # only perform this if we're not faking a reply - my $func = $commandfunc{$FTPCMD}; + my $func = $commandfunc{uc($FTPCMD)}; if($func) { &$func($FTPARG, $FTPCMD); $check = 0; diff --git a/libraries/curl/tests/fuzz/README b/libraries/curl/tests/fuzz/README index 8b5fcd011..c19e04fbe 100644 --- a/libraries/curl/tests/fuzz/README +++ b/libraries/curl/tests/fuzz/README @@ -1,21 +1,8 @@ Fuzz tests ========== -The goal is to add tests for *ALL* protocols supported in libcurl. +The fuzzing tests for curl have been moved to a separate repository: -Building the fuzz target -======================== -From the CURL root directory: +https://github.com/curl/curl-fuzzer -export CC=clang-5.0 -export CXX=clang++-5.0 -export CFLAGS="-fsanitize=address -fsanitize-address-use-after-scope -fsanitize-coverage=trace-pc-guard,trace-cmp" -export CXXFLAGS="-fsanitize=address -fsanitize-address-use-after-scope -fsanitize-coverage=trace-pc-guard,trace-cmp -stdlib=libc++" -./configure --disable-shared --enable-debug --enable-maintainer-mode -make -sj - -cd tests/fuzz - -(optional) export LIB_FUZZING_ENGINE= - -make check +More information on how to get started with curl fuzz testing can be found there. diff --git a/libraries/curl/tests/keywords.pl b/libraries/curl/tests/keywords.pl index c61df774c..33748bd37 100644 --- a/libraries/curl/tests/keywords.pl +++ b/libraries/curl/tests/keywords.pl @@ -10,7 +10,7 @@ # # 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 http://curl.haxx.se/docs/copyright.html. +# 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 diff --git a/libraries/curl/tests/libtest/.gitignore b/libraries/curl/tests/libtest/.gitignore index c33a6d29e..863e50e28 100644 --- a/libraries/curl/tests/libtest/.gitignore +++ b/libraries/curl/tests/libtest/.gitignore @@ -1,7 +1,10 @@ chkhostname -lib5[0-9][0-9] lib15[0-9][0-9] +lib1521.c lib19[0-9][0-9] lib2033 +lib5[0-9][0-9] +lib64[3-5] +lib650 libauthretry libntlmconnect diff --git a/libraries/curl/tests/libtest/Makefile.inc b/libraries/curl/tests/libtest/Makefile.inc index 065899276..9e1ba28a9 100644 --- a/libraries/curl/tests/libtest/Makefile.inc +++ b/libraries/curl/tests/libtest/Makefile.inc @@ -20,14 +20,14 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \ lib559 lib560 lib562 lib564 lib565 lib566 lib567 lib568 lib569 lib570 \ lib571 lib572 lib573 lib574 lib575 lib576 lib578 lib579 lib582 \ lib583 lib585 lib586 lib587 lib589 lib590 lib591 lib597 lib598 lib599 \ - lib643 lib644 lib645 lib650 \ + lib643 lib644 lib645 lib650 lib651 lib652 lib653 \ lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \ lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515 lib1517 \ lib1520 lib1521 \ lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \ lib1534 lib1535 lib1536 lib1537 lib1538 \ lib1540 \ - lib1550 lib1551 \ + lib1550 lib1551 lib1552 lib1553 lib1554 \ lib1900 \ lib2033 @@ -315,6 +315,15 @@ lib645_CPPFLAGS = $(AM_CPPFLAGS) -DLIB645 lib650_SOURCES = lib650.c $(SUPPORTFILES) lib650_CPPFLAGS = $(AM_CPPFLAGS) +lib651_SOURCES = lib651.c $(SUPPORTFILES) +lib651_CPPFLAGS = $(AM_CPPFLAGS) + +lib652_SOURCES = lib652.c $(SUPPORTFILES) +lib652_CPPFLAGS = $(AM_CPPFLAGS) + +lib653_SOURCES = lib653.c $(SUPPORTFILES) +lib653_CPPFLAGS = $(AM_CPPFLAGS) + lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL) lib1500_LDADD = $(TESTUTIL_LIBS) lib1500_CPPFLAGS = $(AM_CPPFLAGS) @@ -454,6 +463,17 @@ lib1550_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1517 lib1551_SOURCES = lib1551.c $(SUPPORTFILES) lib1551_CPPFLAGS = $(AM_CPPFLAGS) +lib1552_SOURCES = lib1552.c $(SUPPORTFILES) $(TESTUTIL) +lib1552_LDADD = $(TESTUTIL_LIBS) +lib1552_CPPFLAGS = $(AM_CPPFLAGS) + +lib1553_SOURCES = lib1553.c $(SUPPORTFILES) $(TESTUTIL) +lib1553_LDADD = $(TESTUTIL_LIBS) +lib1553_CPPFLAGS = $(AM_CPPFLAGS) + +lib1554_SOURCES = lib1554.c $(SUPPORTFILES) +lib1554_CPPFLAGS = $(AM_CPPFLAGS) + lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1900_LDADD = $(TESTUTIL_LIBS) lib1900_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/libraries/curl/tests/libtest/lib501.c b/libraries/curl/tests/libtest/lib501.c index 7a2341246..af65bd4d7 100644 --- a/libraries/curl/tests/libtest/lib501.c +++ b/libraries/curl/tests/libtest/lib501.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -44,6 +44,9 @@ int test(char *URL) test_setopt(curl, CURLOPT_HEADER, 1L); + /* just verify that setting this to -1 is fine */ + test_setopt(curl, CURLOPT_MAXREDIRS, -1L); + res = curl_easy_perform(curl); test_cleanup: diff --git a/libraries/curl/tests/libtest/lib554.c b/libraries/curl/tests/libtest/lib554.c index 936d0a10a..cc21d245b 100644 --- a/libraries/curl/tests/libtest/lib554.c +++ b/libraries/curl/tests/libtest/lib554.c @@ -117,7 +117,7 @@ static int once(char *URL, bool oldstyle) CURLFORM_END); if(formrc) - printf("curl_formadd(1) = %d\n", (int)formrc); + printf("curl_formadd(2) = %d\n", (int)formrc); /* Fill in the filename field */ formrc = curl_formadd(&formpost, @@ -134,7 +134,7 @@ static int once(char *URL, bool oldstyle) CURLFORM_END); if(formrc) - printf("curl_formadd(2) = %d\n", (int)formrc); + printf("curl_formadd(3) = %d\n", (int)formrc); /* Fill in a submit field too */ formrc = curl_formadd(&formpost, @@ -147,10 +147,11 @@ static int once(char *URL, bool oldstyle) #else CURLFORM_COPYCONTENTS, "send", #endif + CURLFORM_CONTENTTYPE, "text/plain", CURLFORM_END); if(formrc) - printf("curl_formadd(3) = %d\n", (int)formrc); + printf("curl_formadd(4) = %d\n", (int)formrc); formrc = curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "somename", @@ -160,7 +161,7 @@ static int once(char *URL, bool oldstyle) CURLFORM_END); if(formrc) - printf("curl_formadd(4) = %d\n", (int)formrc); + printf("curl_formadd(5) = %d\n", (int)formrc); curl = curl_easy_init(); if(!curl) { diff --git a/libraries/curl/tests/libtest/lib556.c b/libraries/curl/tests/libtest/lib556.c index f06c5299c..acb0f63d1 100644 --- a/libraries/curl/tests/libtest/lib556.c +++ b/libraries/curl/tests/libtest/lib556.c @@ -95,8 +95,8 @@ int test(char *URL) } while((res == CURLE_OK && iolen != 0) || (res == CURLE_AGAIN)); } - if(res != CURLE_OK || iolen != 0) - return TEST_ERR_FAILURE; + if(iolen != 0) + res = TEST_ERR_FAILURE; } test_cleanup: diff --git a/libraries/curl/tests/memanalyze.pl b/libraries/curl/tests/memanalyze.pl index 35d1c7ef7..8ba3f6dd5 100644 --- a/libraries/curl/tests/memanalyze.pl +++ b/libraries/curl/tests/memanalyze.pl @@ -6,7 +6,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2013, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -33,6 +33,9 @@ my $reallocs=0; my $strdups=0; my $wcsdups=0; my $showlimit; +my $sends=0; +my $recvs=0; +my $sockets=0; while(1) { if($ARGV[0] eq "-v") { @@ -258,6 +261,7 @@ while() { $filedes{$1}=1; $getfile{$1}="$source:$linenum"; $openfile++; + $sockets++; # number of socket() calls } elsif($function =~ /socketpair\(\) = (\d*) (\d*)/) { $filedes{$1}=1; @@ -314,6 +318,14 @@ while() { elsif($_ =~ /^GETNAME ([^ ]*):(\d*) (.*)/) { # not much to do } + # SEND url.c:1901 send(83) = 83 + elsif($_ =~ /^SEND ([^ ]*):(\d*) (.*)/) { + $sends++; + } + # RECV url.c:1901 recv(102400) = 256 + elsif($_ =~ /^RECV ([^ ]*):(\d*) (.*)/) { + $recvs++; + } # ADDR url.c:1282 getaddrinfo() = 0x5ddd elsif($_ =~ /^ADDR ([^ ]*):(\d*) (.*)/) { @@ -398,12 +410,16 @@ if($addrinfos) { if($verbose) { print "Mallocs: $mallocs\n", - "Reallocs: $reallocs\n", - "Callocs: $callocs\n", - "Strdups: $strdups\n", - "Wcsdups: $wcsdups\n", - "Frees: $frees\n", - "Allocations: ".($mallocs + $callocs + $reallocs + $strdups + $wcsdups)."\n"; + "Reallocs: $reallocs\n", + "Callocs: $callocs\n", + "Strdups: $strdups\n", + "Wcsdups: $wcsdups\n", + "Frees: $frees\n", + "Sends: $sends\n", + "Recvs: $recvs\n", + "Sockets: $sockets\n", + "Allocations: ".($mallocs + $callocs + $reallocs + $strdups + $wcsdups)."\n", + "Operations: ".($mallocs + $callocs + $reallocs + $strdups + $wcsdups + $sends + $recvs + $sockets)."\n"; print "Maximum allocated: $maxmem\n"; } diff --git a/libraries/curl/tests/runtests.1 b/libraries/curl/tests/runtests.1 index 45975c2a6..18ddce483 100644 --- a/libraries/curl/tests/runtests.1 +++ b/libraries/curl/tests/runtests.1 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH runtests.pl 1 "May 05, 2017" "Curl 7.56.0" "runtests" - +.TH runtests.pl 1 "2 Feb 2010" "Curl 7.20.0" "runtests" .SH NAME runtests.pl \- run one or more test cases .SH SYNOPSIS diff --git a/libraries/curl/tests/runtests.pl b/libraries/curl/tests/runtests.pl index 44fd0ae93..dcd9f8419 100644 --- a/libraries/curl/tests/runtests.pl +++ b/libraries/curl/tests/runtests.pl @@ -217,6 +217,7 @@ my $gopher_ipv6; # set if Gopher server has IPv6 support my $has_ipv6; # set if libcurl is built with IPv6 support my $has_unix; # set if libcurl is built with Unix sockets support my $has_libz; # set if libcurl is built with libz support +my $has_brotli; # set if libcurl is built with brotli support my $has_getrlimit; # set if system has getrlimit() my $has_ntlm; # set if libcurl is built with NTLM support my $has_ntlm_wb; # set if libcurl is built with NTLM delegation to winbind @@ -233,6 +234,7 @@ my $has_cares; # set if built with c-ares my $has_threadedres;# set if built with threaded resolver my $has_psl; # set if libcurl is built with PSL support my $has_ldpreload; # set if curl is built for systems supporting LD_PRELOAD +my $has_multissl; # set if curl is build with MultiSSL support # this version is decided by the particular nghttp2 library that is being used my $h2cver = "h2c"; @@ -561,8 +563,7 @@ sub runclientoutput { # Memory allocation test and failure torture testing. # sub torture { - my $testcmd = shift; - my $gdbline = shift; + my ($testcmd, $testnum, $gdbline) = @_; # remove memdump first to be sure we get a new nice and clean one unlink($memdump); @@ -576,17 +577,17 @@ sub torture { my $count=0; my @out = `$memanalyze -v $memdump`; for(@out) { - if(/^Allocations: (\d+)/) { + if(/^Operations: (\d+)/) { $count = $1; last; } } if(!$count) { - logmsg " found no allocs to make fail\n"; + logmsg " found no functions to make fail\n"; return 0; } - logmsg " $count allocations to make fail\n"; + logmsg " $count functions to make fail\n"; for ( 1 .. $count ) { my $limit = $_; @@ -601,7 +602,7 @@ sub torture { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time()); my $now = sprintf("%02d:%02d:%02d ", $hour, $min, $sec); - logmsg "Fail alloc no: $limit at $now\r"; + logmsg "Fail function no: $limit at $now\r"; } # make the memory allocation function number $limit return failure @@ -610,14 +611,28 @@ sub torture { # remove memdump first to be sure we get a new nice and clean one unlink($memdump); - logmsg "*** Alloc number $limit is now set to fail ***\n" if($gdbthis); + my $cmd = $testcmd; + if($valgrind && !$gdbthis) { + my @valgrindoption = getpart("verify", "valgrind"); + if((!@valgrindoption) || ($valgrindoption[0] !~ /disable/)) { + my $valgrindcmd = "$valgrind "; + $valgrindcmd .= "$valgrind_tool " if($valgrind_tool); + $valgrindcmd .= "--quiet --leak-check=yes "; + $valgrindcmd .= "--suppressions=$srcdir/valgrind.supp "; + # $valgrindcmd .= "--gen-suppressions=all "; + $valgrindcmd .= "--num-callers=16 "; + $valgrindcmd .= "${valgrind_logfile}=$LOGDIR/valgrind$testnum"; + $cmd = "$valgrindcmd $testcmd"; + } + } + logmsg "*** Function number $limit is now set to fail ***\n" if($gdbthis); my $ret = 0; if($gdbthis) { runclient($gdbline); } else { - $ret = runclient($testcmd); + $ret = runclient($cmd); } #logmsg "$_ Returned " . ($ret >> 8) . "\n"; @@ -631,6 +646,20 @@ sub torture { $fail = 2; } + if($valgrind) { + my @e = valgrindparse("$LOGDIR/valgrind$testnum"); + if(@e && $e[0]) { + if($automakestyle) { + logmsg "FAIL: torture $testnum - valgrind\n"; + } + else { + logmsg " valgrind ERROR "; + logmsg @e; + } + $fail = 1; + } + } + # verify that it returns a proper error code, doesn't leak memory # and doesn't core dump if(($ret & 255) || ($ret >> 8) >= 128) { @@ -655,7 +684,7 @@ sub torture { } } if($fail) { - logmsg " Failed on alloc number $limit in test.\n", + logmsg " Failed on function number $limit in test.\n", " invoke with \"-t$limit\" to repeat this single case.\n"; stopservers($verbose); return 1; @@ -2831,6 +2860,10 @@ sub checksystem { # ssl enabled $has_ssl=1; } + if($feat =~ /MultiSSL/i) { + # multiple ssl backends available. + $has_multissl=1; + } if($feat =~ /Largefile/i) { # large file support $has_largefile=1; @@ -2848,6 +2881,9 @@ sub checksystem { if($feat =~ /libz/i) { $has_libz = 1; } + if($feat =~ /brotli/i) { + $has_brotli = 1; + } if($feat =~ /NTLM/i) { # NTLM enabled $has_ntlm=1; @@ -3173,7 +3209,7 @@ sub fixarray { my @in = @_; for(@in) { - subVariables \$_; + subVariables(\$_); } return @in; } @@ -3284,6 +3320,11 @@ sub singletest { next; } } + elsif($1 eq "MultiSSL") { + if($has_multissl) { + next; + } + } elsif($1 eq "SSLpinning") { if($has_sslpinning) { next; @@ -3359,6 +3400,11 @@ sub singletest { next; } } + elsif($1 eq "brotli") { + if($has_brotli) { + next; + } + } elsif($1 eq "NTLM") { if($has_ntlm) { next; @@ -3452,6 +3498,11 @@ sub singletest { next; } } + elsif($1 eq "MultiSSL") { + if(!$has_multissl) { + next; + } + } elsif($1 eq "OpenSSL") { if(!$has_openssl) { next; @@ -3510,6 +3561,11 @@ sub singletest { next; } } + elsif($1 eq "brotli") { + if(!$has_brotli) { + next; + } + } elsif($1 eq "NTLM") { if(!$has_ntlm) { next; @@ -3638,7 +3694,7 @@ sub singletest { if(@setenv) { foreach my $s (@setenv) { chomp $s; - subVariables \$s; + subVariables(\$s); if($s =~ /([^=]*)=(.*)/) { my ($var, $content) = ($1, $2); # remember current setting, to restore it once test runs @@ -4003,7 +4059,8 @@ sub singletest { # run the command line we built if ($torture) { $cmdres = torture($CMDLINE, - "$gdb --directory libtest $DBGCURL -x $LOGDIR/gdbcmd"); + $testnum, + "$gdb --directory libtest $DBGCURL -x $LOGDIR/gdbcmd"); } elsif($gdbthis) { my $GDBW = ($gdbxwin) ? "-w" : ""; @@ -5310,8 +5367,6 @@ while(@ARGV) { if($xtra =~ s/(\d+)$//) { $tortalloc = $1; } - # we undef valgrind to make this fly in comparison - undef $valgrind; } elsif($ARGV[0] eq "-a") { # continue anyway, even if a test fail @@ -5377,7 +5432,7 @@ Usage: runtests.pl [options] [test selection(s)] -rf full run time statistics -s short output -am automake style output PASS/FAIL: [number] [name] - -t[N] torture (simulate memory alloc failures); N means fail Nth alloc + -t[N] torture (simulate function failures); N means fail Nth function -v verbose output -vc path use this curl only to verify the existing servers [num] like "5 6 9" or " 5 to 22 " to run those tests only diff --git a/libraries/curl/tests/server/.gitignore b/libraries/curl/tests/server/.gitignore index 8007bec8b..497783b82 100644 --- a/libraries/curl/tests/server/.gitignore +++ b/libraries/curl/tests/server/.gitignore @@ -1,7 +1,7 @@ +fake_ntlm getpart resolve rtspd sockfilt sws tftpd -fake_ntlm diff --git a/libraries/curl/tests/server/Makefile.inc b/libraries/curl/tests/server/Makefile.inc index c3ea664b6..208aa0fc8 100644 --- a/libraries/curl/tests/server/Makefile.inc +++ b/libraries/curl/tests/server/Makefile.inc @@ -4,14 +4,12 @@ CURLX_SRCS = \ ../../lib/mprintf.c \ ../../lib/nonblock.c \ ../../lib/strtoofft.c \ - ../../lib/timeval.c \ ../../lib/warnless.c CURLX_HDRS = \ ../../lib/curlx.h \ ../../lib/nonblock.h \ ../../lib/strtoofft.h \ - ../../lib/timeval.h \ ../../lib/warnless.h USEFUL = \ diff --git a/libraries/curl/tests/server/util.c b/libraries/curl/tests/server/util.c index 1bbd89a3c..fdbd71f0f 100644 --- a/libraries/curl/tests/server/util.c +++ b/libraries/curl/tests/server/util.c @@ -67,6 +67,8 @@ const struct in6_addr in6addr_any = {{ IN6ADDR_ANY_INIT }}; #endif /* w32api < 3.6 */ #endif /* ENABLE_IPV6 && __MINGW32__*/ +static struct timeval tvnow(void); + /* This function returns a pointer to STATIC memory. It converts the given * binary lump to a hex formatted string usable for output in logs or * whatever. @@ -100,7 +102,7 @@ void logmsg(const char *msg, ...) char buffer[2048 + 1]; FILE *logfp; int error; - struct curltime tv; + struct timeval tv; time_t sec; struct tm *now; char timebuf[20]; @@ -112,7 +114,7 @@ void logmsg(const char *msg, ...) return; } - tv = curlx_tvnow(); + tv = tvnow(); if(!known_offset) { epoch_offset = time(NULL) - tv.tv_sec; known_offset = 1; @@ -213,7 +215,7 @@ int wait_ms(int timeout_ms) #ifndef HAVE_POLL_FINE struct timeval pending_tv; #endif - struct curltime initial_tv; + struct timeval initial_tv; int pending_ms; int error; #endif @@ -231,7 +233,7 @@ int wait_ms(int timeout_ms) Sleep(timeout_ms); #else pending_ms = timeout_ms; - initial_tv = curlx_tvnow(); + initial_tv = tvnow(); do { #if defined(HAVE_POLL_FINE) r = poll(NULL, 0, pending_ms); @@ -245,7 +247,7 @@ int wait_ms(int timeout_ms) error = errno; if(error && (error != EINTR)) break; - pending_ms = timeout_ms - (int)curlx_tvdiff(curlx_tvnow(), initial_tv); + pending_ms = timeout_ms - (int)timediff(tvnow(), initial_tv); if(pending_ms <= 0) break; } while(r == -1); @@ -397,3 +399,102 @@ int strncasecompare(const char *first, const char *second, size_t max) return raw_toupper(*first) == raw_toupper(*second); } + +#if defined(WIN32) && !defined(MSDOS) + +static struct timeval tvnow(void) +{ + /* + ** GetTickCount() is available on _all_ Windows versions from W95 up + ** to nowadays. Returns milliseconds elapsed since last system boot, + ** increases monotonically and wraps once 49.7 days have elapsed. + ** + ** GetTickCount64() is available on Windows version from Windows Vista + ** and Windows Server 2008 up to nowadays. The resolution of the + ** function is limited to the resolution of the system timer, which + ** is typically in the range of 10 milliseconds to 16 milliseconds. + */ + struct timeval now; +#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) + ULONGLONG milliseconds = GetTickCount64(); +#else + DWORD milliseconds = GetTickCount(); +#endif + now.tv_sec = (long)(milliseconds / 1000); + now.tv_usec = (milliseconds % 1000) * 1000; + return now; +} + +#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC) + +static struct timeval tvnow(void) +{ + /* + ** clock_gettime() is granted to be increased monotonically when the + ** monotonic clock is queried. Time starting point is unspecified, it + ** could be the system start-up time, the Epoch, or something else, + ** in any case the time starting point does not change once that the + ** system has started up. + */ + struct timeval now; + struct timespec tsnow; + if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) { + now.tv_sec = tsnow.tv_sec; + now.tv_usec = tsnow.tv_nsec / 1000; + } + /* + ** Even when the configure process has truly detected monotonic clock + ** availability, it might happen that it is not actually available at + ** run-time. When this occurs simply fallback to other time source. + */ +#ifdef HAVE_GETTIMEOFDAY + else + (void)gettimeofday(&now, NULL); +#else + else { + now.tv_sec = (long)time(NULL); + now.tv_usec = 0; + } +#endif + return now; +} + +#elif defined(HAVE_GETTIMEOFDAY) + +static struct timeval tvnow(void) +{ + /* + ** gettimeofday() is not granted to be increased monotonically, due to + ** clock drifting and external source time synchronization it can jump + ** forward or backward in time. + */ + struct timeval now; + (void)gettimeofday(&now, NULL); + return now; +} + +#else + +static struct timeval tvnow(void) +{ + /* + ** time() returns the value of time in seconds since the Epoch. + */ + struct timeval now; + now.tv_sec = (long)time(NULL); + now.tv_usec = 0; + return now; +} + +#endif + +long timediff(struct timeval newer, struct timeval older) +{ + timediff_t diff = newer.tv_sec-older.tv_sec; + if(diff >= (LONG_MAX/1000)) + return LONG_MAX; + else if(diff <= (LONG_MIN/1000)) + return LONG_MIN; + return (long)(newer.tv_sec-older.tv_sec)*1000+ + (long)(newer.tv_usec-older.tv_usec)/1000; +} diff --git a/libraries/curl/tests/server/util.h b/libraries/curl/tests/server/util.h index a2a56badd..7b4ec1626 100644 --- a/libraries/curl/tests/server/util.h +++ b/libraries/curl/tests/server/util.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -25,6 +25,7 @@ char *data_to_hex(char *data, size_t len); void logmsg(const char *msg, ...); +long timediff(struct timeval newer, struct timeval older); #define TEST_DATA_PATH "%s/data/test%ld" diff --git a/libraries/curl/tests/testcurl.1 b/libraries/curl/tests/testcurl.1 index f2e92e8c2..ee07d64fe 100644 --- a/libraries/curl/tests/testcurl.1 +++ b/libraries/curl/tests/testcurl.1 @@ -20,8 +20,7 @@ .\" * .\" ************************************************************************** .\" -.TH testcurl.pl 1 "October 22, 2016" "Curl 7.56.0" "testcurl" - +.TH testcurl.pl 1 "24 Mar 2010" "Curl 7.20.1" "testcurl" .SH NAME testcurl.pl \- (automatically) test curl .SH SYNOPSIS diff --git a/libraries/curl/tests/unit/unit1399.c b/libraries/curl/tests/unit/unit1399.c index 91fd3dae1..897a34319 100644 --- a/libraries/curl/tests/unit/unit1399.c +++ b/libraries/curl/tests/unit/unit1399.c @@ -80,7 +80,7 @@ static void expect_timer_seconds(struct Curl_easy *data, int seconds) * be 3 seconds. */ UNITTEST_START struct Curl_easy data; - struct curltime now = Curl_tvnow(); + struct curltime now = Curl_now(); data.progress.t_nslookup = 0; data.progress.t_connect = 0; diff --git a/libraries/curl/winbuild/BUILD.WINDOWS.txt b/libraries/curl/winbuild/BUILD.WINDOWS.txt index 7b0d5ba86..7644a1b16 100644 --- a/libraries/curl/winbuild/BUILD.WINDOWS.txt +++ b/libraries/curl/winbuild/BUILD.WINDOWS.txt @@ -62,6 +62,12 @@ Then you can call nmake /f Makefile.vc with the desired options (see below). The builds will be in the top src directory, builds\ directory, in a directory named using the options given to the nmake call. +"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" +Set RTLIBCFG=static +nmake /f Makefile.vc mode=static VC=10 DEBUG=yes +nmake /f Makefile.vc mode=static VC=10 DEBUG=no + + nmake /f Makefile.vc mode= where is one or many of: diff --git a/libraries/curl/winbuild/LIBCURL_OBJS.inc b/libraries/curl/winbuild/LIBCURL_OBJS.inc index 773925f66..0ccbab941 100644 --- a/libraries/curl/winbuild/LIBCURL_OBJS.inc +++ b/libraries/curl/winbuild/LIBCURL_OBJS.inc @@ -101,6 +101,8 @@ LIBCURL_OBJS = \ ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/curl_des.obj \ ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/system_win32.obj \ ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/mime.obj \ + ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/sha256.obj \ + ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/setopt.obj \ ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/vauth/vauth.obj \ ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/vauth/cleartext.obj \ ..\builds\libcurl-vc10-x86-release-static-ipv6-sspi-winssl-obj-lib/vauth/cram.obj \ diff --git a/libraries/curl/winbuild/vc100.idb b/libraries/curl/winbuild/vc100.idb index f04a00732..ac5a61bf4 100644 Binary files a/libraries/curl/winbuild/vc100.idb and b/libraries/curl/winbuild/vc100.idb differ