aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorAlex Deymo <deymo@google.com>2016-06-28 14:49:26 -0700
committerAlex Deymo <deymo@google.com>2016-10-05 13:53:03 -0700
commitd15eaac64ca1a7244824d660ea84e8815a23d058 (patch)
tree0630dd6935f70bb2c0510d35cd575fb5965b699c /docs
parentc82860f685c499d45558e481609cad29fcffd2f8 (diff)
downloadexternal_curl-d15eaac64ca1a7244824d660ea84e8815a23d058.tar.gz
external_curl-d15eaac64ca1a7244824d660ea84e8815a23d058.tar.bz2
external_curl-d15eaac64ca1a7244824d660ea84e8815a23d058.zip
Update libcurl from 7.43 to 7.49.1
Bug: 29602883 Squashed commit of the following: commit f3066c00398854c5c6ff5c81a02d1c0429ba42c7 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri May 27 16:58:43 2016 +0200 RELEASE-NOTES: 7.49.1 commit 3b18f1567d23817736116b1d9aa3e6e5e5ed62f4 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun May 29 22:57:40 2016 +0200 loadlibrary: Only load system DLLs from the system directory Inspiration provided by: Daniel Stenberg and Ray Satiro Bug: https://curl.haxx.se/docs/adv_20160530.html Ref: Windows DLL hijacking with curl, CVE-2016-4802 commit 7f9d8d9e7452cc2a5c36fd2e94ee3b0b2844ab28 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 30 08:14:13 2016 +0200 ssh: fix version number check typo commit fef1924717aea8146036bac4b341e51b2e10628a Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun May 29 16:27:44 2016 -0400 curl_share_setopt.3: Add min ver needed for ssl session lock Bug: https://github.com/curl/curl/issues/826 Reported-by: Michael Wallner commit bcd72a98405316a432cf4429d59e90c13275f7cc Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 29 00:20:14 2016 +0200 ssh: fix build for libssh2 before 1.2.6 The statvfs functionality was added to libssh2 in that version, so we switch off that functionality when built with older libraries. Fixes #831 commit 369291218fe75bdc6a8d6fc71ba94ffc1520f03a Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 24 12:14:18 2016 +0200 mbedtls: fix includes so snprintf() works Regression from the previous *printf() rearrangements, this file missed to include the correct header to make sure snprintf() works universally. Reported-by: Moti Avrahami Bug: https://curl.haxx.se/mail/lib-2016-05/0196.html commit 24b8cdcabb84447e4a8491953b873be032c715b0 Author: Steve Holme <steve_holme@hotmail.com> Date: Mon May 23 12:13:41 2016 +0100 checksrc.pl: Added variants of strcat() & strncat() to banned function list Added support for checking the tchar, unicode and mbcs variants of strcat() and strncat() in the banned function list. commit 78d99b275946a0ba41dc5b8a44148988892f40e3 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 12:59:58 2016 +0200 smtp: minor ident (white space) fixes commit 962015081a2b173ae89d71fe574ae6a53d80722c Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 10:08:34 2016 +0200 THANKS: updated after script fixes Now giving credit properly to github user names, fixed some UTF-8 issues and added names discovered when contrithanks was improved. commit 581695693940ad81c3336844a2f88268a198366b Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 10:08:15 2016 +0200 THANKS-filter: more name cleanups commit 81ab42b9a6443ce4492c9f6f14cc84177b143922 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 10:07:48 2016 +0200 contrithanks.sh: exclude existing names case insensitively commit eb62c62aad1e11f318b69a9f66370d50fc986cb2 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 09:14:19 2016 +0200 contrithanks.sh: use same grep pattern and -a flag as contributors.sh commit 2d05f5d616940a1656cc9f5b50d9ba65c2fb158d Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 09:13:43 2016 +0200 contributors.sh: better grep pattern, use grep -a commit de8a6a6a4d4c8d4e178e1a8bb75c8ce59a0cccff Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 09:13:20 2016 +0200 THANKS-filter: fix more names commit 4cc626af3dfe15ef67d34781e0c2b3543e7c74d7 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 23 08:50:53 2016 +0200 contrithanks.sh: do the same github fix as contributors.sh from 1577bfa35ba commit 35d806245513c216863c371ca645a881213ff691 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon May 23 02:42:12 2016 -0400 contributors: Show GitHub username if real name unknown Prior to this change if a GitHub contributor's real name was unknown they would be omitted from the list. Bug: https://github.com/curl/curl/issues/824 commit d1c6da6965a2ac89a410fb8cc182b92dfc370467 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat May 21 16:05:54 2016 +0200 RELEASE-NOTES: synced with 3caaeffbe8ded4 commit 85b88c85fd739ab869de26c6bf62c169eaef846d Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri May 20 16:44:01 2016 -0400 openssl: cleanup must free compression methods - Free compression methods if OpenSSL 1.0.2 to avoid a memory leak. Bug: https://github.com/curl/curl/issues/817 Reported-by: jveazey@users.noreply.github.com commit 8e4cca04059718825c99b6a6e05c9d98bc72c3ae Author: Gisle Vanem <gvanem@yahoo.no> Date: Fri May 20 16:50:04 2016 +0200 curl_multibyte: fix compiler error While compiling lib/curl_multibyte.c with '-DUSE_WIN32_IDN' etc. I was getting: f:\mingw32\src\inet\curl\lib\memdebug.h(38): error C2054: expected '(' to follow 'CURL_EXTERN' f:\mingw32\src\inet\curl\lib\memdebug.h(38): error C2085: 'curl_domalloc': not in formal parameter list commit 70e55706b7ea2dc66589ecc9f01fec6d7e8d2117 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri May 20 16:44:34 2016 +0200 THANKS-filter: make Jan-E get proper credit commit 7cf41326f3c1d9872e3318ce9f74ba8f7e4e39e1 Author: Alexander Traud <pabstraud@compuserve.com> Date: Fri May 20 14:57:48 2016 +0200 libcurl.m4: Avoid obsolete warning Closes #821 commit b7a2ba8a4b24a3f8394210a783f63dd5b632cbec Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Fri May 20 00:06:40 2016 +0200 CURLOPT_CONNECT_TO.3: user must not free the list prematurely The connect-to list isn't copied so as long as the handle may be used for a transfer the list must be valid. Bug: https://github.com/curl/curl/pull/819 Reported-by: Michael Kaufmann commit f59e45381fd74766cc824dccf94d6fca08a55636 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu May 19 14:01:30 2016 +0200 RELEASE-NOTES: synced with 48114a8634242c commit 234359a35e616abed1df03bb136badc4707d8f07 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu May 19 11:39:59 2016 +0200 openssl: ERR_remove_thread_state() is deprecated in latest 1.1.0 See OpenSSL commit 21e001747d4a commit 34072e6b841eb4c6c6b64d8e961df761759a5c14 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu May 19 11:16:30 2016 +0200 http2: use HTTP/2 in the HTTP/1.1-alike header ... when generating them, not "2.0" as the protocol is called just HTTP/2 and nothing else. commit eca9b047ead3f083acc997afb0f487c832a94f87 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu May 19 03:13:07 2016 -0400 dist: include curl_multi_socket_all.3 Closes https://github.com/curl/curl/pull/816 commit 456a5917b84f83ffa8c2e4147bab3665d2539e86 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed May 18 17:47:38 2016 +0100 bump: Start work on 7.49.1 commit 1a9bd0a56b02f511e052fd435c2ba47d3a078d51 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed May 18 14:10:36 2016 +0200 curlbuild.h.dist: check __LP64__ as well to fix MIPS build The preprocessor check that sets up the 32bit defines for non-configure builds didn't work properly for MIPS systems as __mips__ is defined for both 32bit and 64bit. Now __LP64__ is also checked and indicates 64bit. Reported-by: Tomas Jakobsson Fixes #813 commit 4aed60b2fcd5530d9f5120dc4267df66d91831f9 Author: Marcel Raad <MarcelRaad@users.noreply.github.com> Date: Wed May 18 11:54:58 2016 +0200 schannel: fix compile break with MSVC XP toolset For the Windows XP toolset of Visual C++ 2013/2015, the old Windows SDK 7.1 is used. In this case, _USING_V110_SDK71_ is defined. Closes #812 commit 7b751afff720c902890e9325d343975976105ce9 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed May 18 10:35:15 2016 +0200 dist: include CHECKSRC.md Reported-by: Paul Howarth Bug: https://curl.haxx.se/mail/lib-2016-05/0116.html commit d04299a3f0dccc0a4f6ce3d66edcf31b543a29dc Author: Daniel Stenberg <daniel@haxx.se> Date: Wed May 18 09:17:27 2016 +0200 test/Makefile.am: include manpage-scan.pl and nroff-scan.pl in dist Reported-by: Ray Satiro Bug: https://curl.haxx.se/mail/lib-2016-05/0113.html commit 44e3f1b1994cf191fb12b54b34accd3d0d5ef3f3 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 14:50:19 2016 +0200 THANKS: 24 new names from 7.49.0 release notes commit 75de066af318eb800fcff13908f17e7f8e8c28ba Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 14:02:11 2016 +0200 RELEASE-NOTES: 7.49.0 commit 668279d7886e77b0bdea75ee1f491227cc038334 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 24 17:52:18 2016 +0200 mbedtls/polarssl: set "hostname" unconditionally ...as otherwise the TLS libs will skip the CN/SAN check and just allow connection to any server. curl previously skipped this function when SNI wasn't used or when connecting to an IP address specified host. CVE-2016-3739 Bug: https://curl.haxx.se/docs/adv_20160518A.html Reported-by: Moti Avrahami commit 655dc6765af2744ac83e7aa35d528ae848997e0b Author: Frank Gevaerts <frank@gevaerts.be> Date: Tue May 17 14:22:56 2016 +0200 CURLOPT_RESOLVE.3: fix typo Closes #811 commit d4ac13e8b1e25804616811596d43b5a19e2808fe Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 13:17:07 2016 +0200 docs: CURLOPT_RESOLVE overrides CURLOPT_IPRESOLVE commit 687af54a81c551b3d2cf05f18efcf2e00bac59e7 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 11:13:48 2016 +0200 KNOWN_BUGS: GnuTLS backend skips really long certificate fields Closes #762 commit 0e2daece7fc985fbd752e45b8a3b6f88f2bd8665 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 11:08:10 2016 +0200 CURLOPT_HTTPPOST.3: the data needs to be around while in use commit 479ecd7db082e813a050b7013603bb24bdf47ff0 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 09:34:33 2016 +0200 openssl: get_cert_chain: fix NULL dereference CID 1361815: Explicit null dereferenced (FORWARD_NULL) commit b5c90dd535eeafc3132e9279d7d0c6b537d96ac1 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 09:14:06 2016 +0200 openssl: get_cert_chain: avoid NULL dereference CID 1361811: Explicit null dereferenced (FORWARD_NULL) commit ca80fc55f8034ae162de943ec0326559059bbd88 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue May 17 09:06:32 2016 +0200 dprintf_formatf: fix (false?) Coverity warning CID 1024412: Memory - illegal accesses (OVERRUN). Claimed to happen when we run over 'workend' but the condition says <= workend and for all I can see it should be safe. Compensating for the warning by adding a byte margin in the buffer. Also, removed the extra brace level indentation in the code and made it so that 'workend' is only assigned once within the function. commit 442633b6389a8d3cc2f4a0a67861fad4cf7ca76b Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 16 09:05:03 2016 +0200 RELEASE-NOTES: synced with 2dcb5adc72d6 commit fdf5fa1ec78b6a022291aa52c4b8dbbde0ed8524 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 16 09:04:13 2016 +0200 THANKS-filter: fixed Jonathan Cardoso commit f727be5b9168b3b324e95cf4474a00e1703e5828 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun May 15 23:48:47 2016 -0400 ftp: fix incorrect out-of-memory code in Curl_pretransfer - Return value type must match function type. s/CURLM_OUT_OF_MEMORY/CURLE_OUT_OF_MEMORY/ Caught by Travis CI commit 115c262e43a0414adeb5b267facf65230a8adab5 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 15 00:37:36 2016 +0200 ftp wildcard: segfault due to init only in multi_perform The proper FTP wildcard init is now more properly done in Curl_pretransfer() and the corresponding cleanup in Curl_close(). The previous place of init/cleanup code made the internal pointer to be NULL when this feature was used with the multi_socket() API, as it was made within the curl_multi_perform() function. Reported-by: Jonathan Cardoso Machado Fixes #800 commit 2bff329fe002e3ef6c8060a250e9d8141be1af7f Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri May 13 16:01:35 2016 -0400 libcurl-tlibcurl-thread: Update OpenSSL links Because the old OpenSSL link now redirects to their master documentation (currently 1.1.0), which does not document the required actions for OpenSSL <= 1.0.2. commit 679c0c533feb0db3f6025ef2b2de30f6dc94bc53 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Fri May 13 09:25:54 2016 +0200 darwinssl.c: fix OS X codename typo in comment commit 0d07a7d8236f7b824de5de98267ddf15b9ee9c56 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri May 13 00:18:53 2016 +0200 RELEASE-NOTES: synced with 68701e51c1f7 Added 8 bug fixes and 5 more contrbutors commit 40513b6443a2382788d280fdea582bc5e683e924 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Mar 9 02:59:05 2016 -0500 mprintf: Fix processing of width and prec args Prior to this change a width arg could be erroneously output, and also width and precision args could not be used together without crashing. "%0*d%s", 2, 9, "foo" Before: "092" After: "09foo" "%*.*s", 5, 2, "foo" Before: crash After: " fo" Test 557 is updated to verify this and more commit e98d916b1fb32aa9efcdf5468f314667e7649c16 Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Fri May 13 00:02:21 2016 +0200 ConnectionExists: follow-up fix for proxy re-use Follow-up commit to 5823179 Closes #648 commit c0c7f7b3c4a18a328650bfe78a7465b18839a932 Author: Per Malmberg <per.malmberg@snowsoftware.com> Date: Thu May 12 12:16:16 2016 +0200 darwinssl: fix certificate verification disable on OS X 10.8 The new way of disabling certificate verification doesn't work on Mountain Lion (OS X 10.8) so we need to use the old way in that version too. I've tested this solution on versions 10.7.5, 10.8, 10.9, 10.10.2 and 10.11. Closes #802 commit d8dcc863c443467b5ddb0fc04f7882fdd6214957 Author: Cory Benfield <lukasaoz@gmail.com> Date: Wed May 11 12:35:05 2016 +0100 http2: Add space between colon and header value curl's representation of HTTP/2 responses involves transforming the response to a format that is similar to HTTP/1.1. Prior to this change, curl would do this by separating header names and values with only a colon, without introducing a space after the colon. While this is technically a valid way to represent a HTTP/1.1 header block, it is much more common to see a space following the colon. This change introduces that space, to ensure that incautious tools are safely able to parse the header block. This also ensures that the difference between the HTTP/1.1 and HTTP/2 response layout is as minimal as possible. Bug: https://github.com/curl/curl/issues/797 Closes #798 Fixes #797 commit 5dfc9472377fba79ae7387ca8abbd5ef09c8557f Author: Kamil Dudka <kdudka@redhat.com> Date: Thu May 12 08:36:21 2016 +0200 openssl: fix compile-time warning in Curl_ossl_check_cxn() ... introduced in curl-7_48_0-293-g2968c83: Error: COMPILER_WARNING: lib/vtls/openssl.c: scope_hint: In function ‘Curl_ossl_check_cxn’ lib/vtls/openssl.c:767:15: warning: conversion to ‘int’ from ‘ssize_t’ may alter its value [-Wconversion] commit e43046d2acdb834528447ca26bf001890cefcf62 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed May 11 21:21:15 2016 -0400 openssl: stricter connection check function - In the case of recv error, limit returning 'connection still in place' to EINPROGRESS, EAGAIN and EWOULDBLOCK. This is an improvement on the parent commit which changed the openssl connection check to use recv MSG_PEEK instead of SSL_peek. Ref: https://github.com/curl/curl/commit/856baf5#comments commit 3015848733b70e73457d6caba257a309e143e1d2 Author: Anders Bakken <agbakken@gmail.com> Date: Tue May 10 12:49:33 2016 -0700 TLS: SSL_peek is not a const operation Calling SSL_peek can cause bytes to be read from the raw socket which in turn can upset the select machinery that determines whether there's data available on the socket. Since Curl_ossl_check_cxn only tries to determine whether the socket is alive and doesn't actually need to see the bytes SSL_peek seems like the wrong function to call. We're able to occasionally reproduce a connect timeout due to this bug. What happens is that Curl doesn't know to call SSL_connect again after the peek happens since data is buffered in the SSL buffer and thus select won't fire for this socket. Closes #795 commit c255912dfd8fcaa06720bb736dc253434ed42be1 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 9 16:50:11 2016 +0200 TLS: move the ALPN/NPN enable bits to the connection Only protocols that actually have a protocol registered for ALPN and NPN should try to get that negotiated in the TLS handshake. That is only HTTPS (well, http/1.1 and http/2) right now. Previously ALPN and NPN would wrongly be used in all handshakes if libcurl was built with it enabled. Reported-by: Jay Satiro Fixes #789 commit b5354fc1f99756ab9cf8540d5feb67c6e0ecb46d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 8 15:48:26 2016 +0200 libcurl-thread.3: openssl 1.1.0 is safe, and so is boringssl commit 5d9516199c4e6c4e26e2c3913fb24d311f3c3e0e Author: Antonio Larrosa <larrosa@kde.org> Date: Thu May 5 19:50:15 2016 +0200 connect: fix invalid "Network is unreachable" errors Sometimes, in systems with both ipv4 and ipv6 addresses but where the network doesn't support ipv6, Curl_is_connected returns an error (intermittently) even if the ipv4 socket connects successfully. This happens because there's a for-loop that iterates on the sockets but the error variable is not resetted when the ipv4 is checked and is ok. This patch fixes this problem by setting error to 0 when checking the second socket and not having a result yet. Fixes #794 commit 90fa4d7fff229814c8698a6cb1a43f5af227ce86 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu May 5 14:34:27 2016 -0400 FAQ: refer to thread safety guidelines commit d02ab0afd3d640d51105f537aa17603ad1c3f2a0 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 2 23:15:05 2016 +0200 connections: non-HTTP proxies on different ports aren't reused either Reported-by: Oleg Pudeyev and fuchaoqun Fixes #648 commit 44577c9ad426222f0c49887521fecf1b1e7a3e17 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 2 11:24:11 2016 +0200 http: make sure a blank header overrides accept_decoding Reported-by: rcanavan Assisted-by: Isaac Boukris Closes #785 commit 2e77fc44fa39ac83ef5a3f54aa1bdbe40b0f04a7 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 2 11:18:59 2016 +0200 CHECKSRC.md: clarified, explained the whitelist file commit 80fbb64602d3142da9c8faa34e86bb79ea092062 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 2 09:09:16 2016 +0200 nroff-scan.pl: verify that references are made with \fI commit 814abf8a78a4a08e824c6060cb5a9d457076f6ef Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 2 09:09:36 2016 +0200 docs: unified man page references to use \fI commit abb9392f47f078f13f43eab1ee9591c39ecd76a5 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon May 2 08:36:54 2016 +0200 TODO: 17.14 --fail without --location should treat 3xx as a failure Closes #727 commit cfd22fe432a74ba872bc4d3cf32e25a6c9eff9ff Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 23:44:02 2016 +0200 RELEASE-NOTES: synced with 7987f5cb14d commit 516b948e1cd493f349d8ebd25567ad0c1e1dfe17 Author: Isaac Boukris <iboukris@gmail.com> Date: Sat Apr 23 15:52:04 2016 +0300 CURLOPT_ACCEPT_ENCODING.3: Follow-up clarification Mention possible content-length mismatch with sum of bytes reported by write callbacks when auto decoding is enabled. See #785 commit 4ed86b17332198915d0fcb22b71808782dc838d9 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 23:07:35 2016 +0200 test1140: run nroff-scan to verify man pages commit ee4eaef37334771515b434bb29c468961fce517d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 23:07:06 2016 +0200 nroff-scan.pl: verify the .BR references as well commit be8bb56607f76f5a0d130bb12595c73bd7a9c9dd Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 23:06:43 2016 +0200 CURLOPT_CONV_TO_NETWORK_FUNCTION.3: fix bad man page reference commit 287911ab351da110b56f739a86dd1cee2e2e46c7 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 23:06:15 2016 +0200 CURLOPT_BUFFERSIZE.3: fix reference to CURLOPT_MAX_RECV_SPEED_LARGE commit 61f2805e3d1b7a71a05a78b87f2e310b55d68d9e Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 23:05:55 2016 +0200 curl_easy_pause.3: fix man page reference commit a4305a67583eeeb52c9473de3d0d449b82d2ed56 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun May 1 16:07:04 2016 -0400 tool_cb_hdr: Fix --remote-header-name with schemeless URL - Move the existing scheme check from tool_operate. In the case of --remote-header-name we want to parse Content-disposition for a filename, but only if the scheme is http or https. A recent adjustment 0dc4d8e was made to account for schemeless URLs however it's not 100% accurate. To remedy that I've moved the scheme check to the header callback, since at that point the library has already determined the scheme. Bug: https://github.com/curl/curl/issues/760 Reported-by: Kai Noda commit bf412cbe0eafc775648fd131a73e4105408402ee Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 17:05:38 2016 +0200 tls: make setting pinnedkey option fail if not supported to make it obvious to users trying to use the feature with TLS backends not supporting it. Discussed in #781 Reported-by: Travis Burtrum commit 76c831213e77e0970662d6a224479de27155ebc0 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 16:41:35 2016 +0200 nroff-scan.pl: verifies nroff pages ... not used by any test yet but can be used stand-alone. commit 32dd6a5d71b8ffc7ff5dc3af2d0eaade5ec54683 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 16:41:04 2016 +0200 opts: fix broken/bad references commit 5259ac9abd43ea647e2fb2510abbf4a60275ecf3 Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Sun May 1 13:22:16 2016 +0200 docs: fix bugs in CURLOPT_HTTP_VERSION.3 and CURLOPT_PIPEWAIT.3 Closes #786 commit 7199a99bf4f8b914e59f9bf689bf51513f2af4ef Author: Daniel Stenberg <daniel@haxx.se> Date: Sun May 1 13:29:11 2016 +0200 CURLOPT_ACCEPT_ENCODING.3: clarified As discussed in #785 commit 677c1b453c35daf094ef8e9687cfbcc93844e17c Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Apr 30 00:15:44 2016 +0200 curl.1: --mail-rcpt can be used multiple times Reported-by: mgendre Closes #784 commit 3ef3eed84e0e8d779d7b85f7764a25ff887fee71 Author: Karlson2k <k2k@narod.ru> Date: Mon Feb 22 10:06:53 2016 +0300 tests: Use 'pathhelp' for paths conversions in secureserver.pl Closes #675 commit f4f19b838451966761a3e67b79ff08a3e2e3d2cc Author: Karlson2k <k2k@narod.ru> Date: Sun Feb 21 23:17:57 2016 +0300 tests: Use 'pathhelp' for paths conversions in sshserver.pl commit 059cad2a994286246386be181a8a4185e8cf32b8 Author: Karlson2k <k2k@narod.ru> Date: Wed Mar 16 00:14:47 2016 +0300 tests: Use 'pathhelp' for current path in runtests.pl commit 9e1429c09847bd15200ff837c3ed7e6f9988e39c Author: Karlson2k <k2k@narod.ru> Date: Tue Mar 15 23:07:19 2016 +0300 tests: pathhelp.pm to process paths on Msys/Cygwin commit 6c4a308a688c6f9bfd218d6c7faced84745d964a Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 29 15:46:40 2016 +0200 lib: include curl_printf.h as one of the last headers curl_printf.h defines printf to curl_mprintf, etc. This can cause problems with external headers which may use __attribute__((format(printf, ...))) markers etc. To avoid that they cause problems with system includes, we include curl_printf.h after any system headers. That makes the three last headers to always be, and we keep them in this order: curl_printf.h curl_memory.h memdebug.h None of them include system headers, they all do funny #defines. Reported-by: David Benjamin Fixes #743 commit c273bf8e8fb146190cfe7974eafc79fe65ae474d Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 29 15:33:46 2016 +0200 memdebug.h: remove inclusion of other headers Mostly because they're not needed, because memdebug.h is always included last of all headers so the others already included the correct ones. But also, starting now we don't want this to accidentally include any system headers, as the header included _before_ this header may add defines and other fun stuff that we won't want used in system includes. commit dd865137fafade1ee1ea2d4e8f39e27b915416ff Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Apr 29 15:24:10 2016 +0200 curl -J: make it work even without http:// scheme on URL It does open up a miniscule risk that one of the other protocols that libcurl could use would send back a Content-Disposition header and then curl would act on it even if not HTTP. A future mitigation for this risk would be to allow the callback to ask libcurl which protocol is being used. Verified with test 1312 Closes #760 commit ac019c3d473f88553eb15264a138498b6bde6089 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:52:37 2016 +0200 manpage-scan.pl: also verify the command line option docs This script now also scans src/tool_getparam.c, docs/curl.1 and src/tool_help.c and will warn if any of them lists a command line option not mentioned in one of the other places. commit a111f803aef53cfa339a924823343fd19a2a1147 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:50:52 2016 +0200 curl: show the long option version of -q in the -h list commit f01933f079e72b0bb5c7276dc211ee03cf628c2a Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:47:03 2016 +0200 curl: remove "--socks" as "--socks5" turned 8 In commit 2e42b0a2524 (Jan 2008) we made the option "--socks" deprecated and it has not been documented since. The more explicit socks options (like --socks4 or --socks5) should be used. commit 500177d9de72cec03d85a24423ead24a33ba8a40 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:46:31 2016 +0200 curl.1: document the deprecated --ftp-ssl option commit 2bd39a8a16f99a44612937466574c1ead7a5327c Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:38:28 2016 +0200 curl: remove --http-request It was mentioned as deprecated already in commit ae1912cb0d4 from 1999. It has not been documented in this millennium. commit a925bd58567a44ba47c7aabf2ace8240e81290e5 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:33:27 2016 +0200 curl: mention --ntlm-wb in -h list commit ab8392d34a70f514aa9277fe7d2e11165c81605c Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:31:53 2016 +0200 curl: -h output lacked --proxy-header commit 19c03ca2f367b99aa2ed11aed356eb13c105e737 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:26:52 2016 +0200 curl.1: document --ntlm-wb commit 2c6382994de9ae6834b7df86a0fd2e1306b38c14 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:23:44 2016 +0200 curl.1: document the long format of -q: --disable commit 48a27255cce7077c54f6e27770c7421689df084c Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:23:17 2016 +0200 curl.1: mention the deprecated --krb4 option commit 50dcd06fca6d95d0240ec66613d04be93402ca94 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:18:28 2016 +0200 curl.1: document --ftp-ssl-reqd Even if deprecated, document it so that people will find it as old scripts may still use it. commit 5b98227a56c3f383ab9febe06e735816f3419d42 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:13:55 2016 +0200 curl: use --telnet-option as documented The code said "telnet-options" but no documentation ever said so. It worked fine since the code is fine with a unique match of the first part. commit daf1a22df81eb90f484240b25d957111a2343418 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 23:08:42 2016 +0200 getparam: remove support for --ftpport It has been deprecated and undocumented since commit ad5ead8bed7 (Dec 2003). --ftp-port is the proper long option name. commit bac90204b3a5bc745a716c559dc9bd522fe3ddb6 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 22:32:05 2016 +0200 curl: make --disable work as long form of -q To make the aliases list reflect reality. commit 862768dcec82e1704c4606d28185d158b6d15e2c Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 22:28:37 2016 +0200 aliases: remove trailing space from capath string commit d511fd9c19603418e184670063654c3ef0f311ad Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 22:24:10 2016 +0200 cmdline parse: only single letter options have single-letter strings ... moved around options so that parsing the code to find all single-letter options easier. commit 55fa26fb7b7e44c989352ed25d40518abfdf94ae Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Apr 28 16:48:38 2016 -0400 CURLINFO_TLS_SSL_PTR.3: Clarify SSL pointer availability Bug: https://curl.haxx.se/mail/lib-2016-04/0126.html Reported-by: Bru Rom commit a5fe7027b7173015ef72d8477ede65ca573e8747 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 16:31:37 2016 +0200 curl_easy_getinfo.3: remove superfluous blank lines commit ca2a93176aedfacaf600ed2e45d1152195f454b4 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 16:27:51 2016 +0200 test1139: verifies libcurl option man page presence - checks that each option has its own man page present - checks that each option is mentioned in its corresponding index man page commit 3567c6611567b7afb5170c61b0cad28841b2a522 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 28 16:26:42 2016 +0200 curl_easy_getinfo.3: added missing mention of CURLINFO_TLS_SESSION ... although it is deprecated. commit c5498c5dae9493021afab86f8311bd850969520a Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Apr 28 02:57:12 2016 -0400 mbedtls: Fix session resume This also fixes PolarSSL session resume. Prior to this change the TLS session information wasn't properly saved and restored for PolarSSL and mbedTLS. Bug: https://curl.haxx.se/mail/lib-2016-01/0070.html Reported-by: Thomas Glanzmann Bug: https://curl.haxx.se/mail/lib-2016-04/0095.html Reported-by: Moti Avrahami commit 73323130a5d74b81f54f82ff8a8a582d86cc7e99 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Apr 27 15:31:38 2016 +0200 RELEASE-NOTES: synced with f4298fcc6d2 commit 1a26114061f097a84544c0796d81d5f0885ee1aa Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Tue Apr 26 23:51:50 2016 +0200 opts: Fix some syntax errors in example code fragments Fixes #779 commit c6ce372b239d13d143f85080a1c8c503f49a959f Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 26 23:55:31 2016 +0200 openssl: avoid BN_print a NULL bignum OpenSSL 1.1.0-pre seems to return NULL(?) for a whole lot of those numbers so make sure the function handles this. Reported-by: Linus Nordberg commit 5abce4f5941db07ede65dec1e5c61d042484fa14 Author: Marcel Raad <raad@teamviewer.com> Date: Mon Feb 15 08:58:36 2016 +0100 CONNECT_ONLY: don't close connection on GSS 401/407 reponses Previously, connections were closed immediately before the user had a chance to extract the socket when the proxy required Negotiate authentication. This regression was brought in with the security fix in commit 79b9d5f1a42578f Closes #655 commit 1e6ac00de13959b1d1945d4e024a287efc929c6a Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 26 15:17:07 2016 +0200 CURLINFO_TLS_SESSION.3: clarify TLS library support before 7.48.0 commit 62ffc7de90adfb6f3a882707a82983bbd0c7277e Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 26 00:28:40 2016 +0200 mbedtls.c: silly spellfix of a comment commit 6aee1e17934fd3dc9604df0a415710f6d1ab249c Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 26 00:07:40 2016 +0200 KNOWN_BUGS: 1.10 Strips trailing dot from host name Closes #716 commit 24ae676c66294f0f9051a7c6e6ddb060577d78fc Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 25 23:51:33 2016 +0200 test1322: verify stripping of trailing dot from host name While being debated (in #716) and a violation of RFC 7230 section 5.4, this test verifies that the existing functionality works as intended. It strips the dot from the host name and uses the host without dot throughout the internals. commit 83e671d225c5cdb982d3a89e9143975dcf532f46 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Apr 23 22:46:15 2016 +0200 multi: accidentally used resolved host name instead of proxy Regression introduced in 09b5a998 Bug: https://curl.haxx.se/mail/lib-2016-04/0084.html Reported-by: BoBo commit d212b90b1a4167bb9aa6b9f20c8f2332f11eb86e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 25 23:15:00 2016 +0200 symbols-in-versions: added new CURLSSLBACKEND_ symbols commit 8f2ae61d9e3604c19d5adfcbdfc106ed14d19409 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 25 23:10:13 2016 +0200 test148: fixed after the --ftp-create-dirs retry change follow-up commit to 3c1e84f569 as it made curl try a little harder commit a668d5bbe33d8c7acdda77af19060bb1716ef03c Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 25 11:35:12 2016 +0200 curl.h: clarify curl_sslbackend for openssl clones and renames commit cadb702ac30c58522ac60cbf06bf8d11a4394651 Author: Karlson2k <k2k@narod.ru> Date: Mon Apr 25 12:12:26 2016 +0300 url.c: fixed DEBUGASSERT() for WinSock workaround If buffer is allocated, but nothing is received during prereceive stage, than number of processed bytes must be zero. Closes #778 commit c13f42898f81ca023afa67f0db0c82b997f6406c Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 25 11:20:23 2016 +0200 KNOWN_BUGS: --interface for ipv6 binds to unusable IP address Closes #686 for now. commit 5f46d6f694c7b59ae6bec5561a202064bbaf5bcf Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 24 23:51:34 2016 +0200 TODO: 1.17 Add support for IRIs Adding support for IRIs is a mouthful, but is probably interesting at least for areas and countries where the use of such "URLs" are growing popularity. Closes #776 commit 9c6a48fcedf56d54ffdb8a5dee2da660c324d343 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 24 12:46:41 2016 +0200 THANKS-filter: Travis Burtrum commit c143ec0ac918d973ec1b718b5e82d4dd90da1534 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 24 12:27:22 2016 +0200 lib1517: checksrc compliance commit ec80fa3185eefcd26ed616eaff7aa60effce5702 Author: moparisthebest <admin@moparisthebest.com> Date: Thu Apr 21 21:21:45 2016 -0400 PolarSSL: Implement public key pinning commit 140f6df1c9f66333dc2d9500f1ec5ac0c56e677b Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Fri Apr 22 16:50:30 2016 +0200 os400: upgrade ILE/RPG binding commit ec429a02e4d6ec0d5328153131e291aa60dbf04b Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Fri Apr 22 16:49:02 2016 +0200 curl.h: CURLOPT_CONNECT_TO sets a struct slist *, not a string commit eaee7dfb7bf7263db19070a5d1c5bf8c329386cf Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 22 15:53:42 2016 +0200 contributors.sh: make --releasenotes implied It got too annoying to type =) commit 9d415a922c5ae1ee7ce70fa52e1ae0a4e8bca88a Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 22 15:46:34 2016 +0200 RELEASE-NOTES: synced with 3c1e84f5693d8093 commit 93430cb00430e45521bf043694cdfc707c01ba3d Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 22 15:25:13 2016 +0200 curl: make --ftp-create-dirs retry on failure The underlying libcurl option used for this feature is CURLOPT_FTP_CREATE_MISSING_DIRS which has the ability to retry the dir creation, but it was never set to do that by the command line tool. Now it does. Bug: https://curl.haxx.se/mail/archive-2016-04/0021.html Reported-by: John Wanghui Help-by: Leif W commit 521b69dde4bc36b97bc7830824b8d32cf6777db3 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 21 23:14:13 2016 +0200 KNOWN_BUGS: fixed "5.6 Improper use of Autoconf cache variables" As of commit d9f3b365a3 commit 1b1c7b55c63ca4b5b53b9f8faff6cb626d5570ad Author: Irfan Adilovic <i.adilovic@nfotex.com> Date: Sun Apr 17 22:05:15 2016 +0200 configure: ac_cv_ -> curl_cv_ for write-only vars These configure vars are modified in a curl-specific way but never evaluated or loaded from cache, even though they are designated as _cv_. We could either implement proper AC_CACHE_CHECKs for them, or remove them completely. Fixes #603 as ac_cv_func_gethostbyname is no longer clobbered, and AC_CHECK_FUNC(gethostbyname...) will no longer spuriously succeed after the first configure run with caching. `ac_cv_func_strcasecmp` is curious, see #770. `eval "ac_cv_func_$func=yes"` can still cause problems as it works in tandem with AC_CHECK_FUNCS and then potentially modifies its result. It would be best to rewrite this test to use a new CURL_CHECK_FUNCS macro, which works the same as AC_CHECK_FUNCS but relies on caching the values of curl_cv_func_* variables, without modifiying ac_cv_func_*. commit 4c09479d6298cdd15668d084fb925deab9cd8f05 Author: Irfan Adilovic <i.adilovic@nfotex.com> Date: Sun Apr 17 21:58:15 2016 +0200 configure: ac_cv_ -> curl_cv_ for r/w vars These configure vars are modified in a curl-specific way and modified by the configure process, but are never loaded from cache, even though they are designated as _cv_. We should implement proper AC_CACHE_CHECKs for them eventually. commit 8f363a559b17328934000ae9d0c2b733586b7cb0 Author: Irfan Adilovic <i.adilovic@nfotex.com> Date: Sun Apr 17 17:01:13 2016 +0200 configure: ac_cv_func_clock_gettime -> curl_... This variable must not be cached in its current form, as any cached information will prevent the next configure run from determining the correct LIBS needed for the function. Thus, rename prefix `ac_cv_` to just `curl_`. commit c9db2a9b5a077e1f15ce6ba728a9fcffae34d825 Author: Irfan Adilovic <i.adilovic@nfotex.com> Date: Fri Apr 15 16:37:20 2016 +0200 configure: ac_cv_ -> curl_cv_ for all cached vars This was automated by: sed -b -i -f <(ack -A1 AC_CACHE_CHECK | \ ack -o 'ac_cv_.*?\b' | \ sort -u | xargs -n1 bash -c \ 'echo "s/$0/curl_cv_${0#ac_cv_}/g"') \ $(git ls-files) This only changed the prefix for 16 variables actually checked with AC_CACHE_CHECK. commit 06e5a532303f3d53ea72903964cf2a17c6431ea6 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 21 10:24:23 2016 +0200 openssl: builds with OpenSSL 1.1.0-pre5 The RSA, DSA and DH structs are now opaque and require use of new APIs Fixes #763 commit 9c4d5c0bc22586f7ad9365f256952b1b862f8b47 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Apr 20 18:07:05 2016 +0100 url.c: Prefer we don't use explicit NULLs in conditions Fixed commit fa5fa65a30 to not use NULLs in if condition. commit b9be5347b632ee24c93003db39bd9883cdbf6139 Author: Isaac Boukris <iboukris@gmail.com> Date: Sat Apr 16 11:49:09 2016 +0300 NTLM: check for NULL pointer before deferencing At ConnectionExists, both check->proxyuser and check->proxypasswd could be NULL, so make sure to check first. Fixes #765 commit 636970d11edbffae693c47109a500ef9e451624c Author: Karlson2k <k2k@narod.ru> Date: Thu Mar 17 20:04:20 2016 +0300 tests: added test1517 ... for checking ability to receive full HTTP response when POST request is used with slow read callback function. This test checks for bug #657 and verifies the work-around from 72d5e144fbc6. Closes #720 commit 916d86e9ecfd95888a20b4d8315bf8899a1f26c0 Author: Karlson2k <k2k@narod.ru> Date: Fri Feb 19 22:38:20 2016 +0300 sendf.c: added ability to call recv() before send() as workaround WinSock destroys recv() buffer if send() is failed. As result - server response may be lost if server sent it while curl is still sending request. This behavior noticeable on HTTP server short replies if libcurl use several send() for request (usually for POST request). To workaround this problem, libcurl use recv() before every send() and keeps received data in intermediate buffer for further processing. Fixes: #657 Closes: #668 commit 9b8c22af77364dcdbca2f3a75601c20a5c79fa2f Author: Kamil Dudka <kdudka@redhat.com> Date: Tue Apr 19 09:38:44 2016 +0200 connect: make sure that rc is initialized in singleipconnect() This commit fixes a Clang warning introduced in curl-7_48_0-190-g8f72b13: Error: CLANG_WARNING: lib/connect.c:1120:11: warning: The right operand of '==' is a garbage value 1118| } 1119| 1120|-> if(-1 == rc) 1121| error = SOCKERRNO; 1122| } commit 99200bf300cf34988b0575acbc68bd1c747c3549 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:48:36 2016 +0200 make/checksrc: use $srcdir, not $top_srcdir commit 8508d3c1ea2127075c22011a6a6d08a2220da536 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:43:13 2016 +0200 src/checksrc.whitelist: removed commit 7a81cf54eb54ddfd45a756316fd425f8555ed721 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:42:55 2016 +0200 tool_operate: switch to inline checksrc ignore commit e37d9bee05cd6d292c84ef17aa28921640393f6b Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:30:43 2016 +0200 lib/checksrc.whitelist: not needed anymore ... as checksrc now skips comments commit 5a5e04d4a5bccf33d673b7df572bbbcec4306676 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:41:15 2016 +0200 vtls.h: remove a space before semicolon ... that the new checksrc detected commit 24121339200d7a16d759acf4ce054248cebfa0e8 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:32:14 2016 +0200 darwinssl: removed commented out code commit 5cf2c12553c10afe900d764de1c2af56f2aea71e Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:31:33 2016 +0200 http_chunks: removed checksrc disable ... since checksrc now skips comments commit 2d544104959b8c787c16b79eb818b98c9d59ead9 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:31:11 2016 +0200 imap: inlined checksrc disable instead of whitelist edit commit ccc4558ce3f409acbb083c81bf508c937a2ad864 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 08:30:13 2016 +0200 checksrc: taught to skip comments ... but output non-stripped version of the line, even if that then can make the script identify the wrong position in the line at times. Showing the line stripped (ie without comments) is just too surprising. commit e9e42a08e945b75b8750a04652a0f5b1038aed9a Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 07:59:35 2016 +0200 opts/Makefile.am: list all docs file one by one ... to make it easier to add lines in patches that won't just break all other patches trying to add lines too. commit b8869ab0336c56e4b1ca104e32743bb65437a197 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 00:48:56 2016 +0200 curl_easy_setopt.3: mention CURLOPT_TCP_FASTOPEN commit 69f02834b0a06154b4edfbb3320fd44da4886103 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 19 00:39:27 2016 +0200 RELEASE-NOTES: synced with 03de4e4b219 (since we just merged two major features) commit d48a87f137c51197a8bd00a8b0c5cafe5ee2bcbb Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Sun Apr 3 13:08:28 2016 +0100 connect: implement TCP Fast Open for Linux Closes #660 commit ec2efbbe76a6f2c2c2c7d2152e50d95b051d3cf0 Author: Alessandro Ghedini <alessandro@cloudflare.com> Date: Tue Feb 16 12:21:34 2016 +0000 tool: add --tcp-fastopen option commit fede41982d60eafc1dd6b5b900af9454d9835039 Author: Alessandro Ghedini <alessandro@cloudflare.com> Date: Tue Feb 16 12:21:22 2016 +0000 connect: implement TCP Fast Open for OS X commit 7d651b2638ff30c5ba3bd2b3b783baf2fccc68da Author: Alessandro Ghedini <alessandro@cloudflare.com> Date: Tue Feb 16 12:21:03 2016 +0000 url: add CURLOPT_TCP_FASTOPEN option commit 2575aa75a1cbabf94755a210fa9cdefccd5656ba Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 20:10:52 2016 +0200 checksrc: pass on -D so the whitelists are found correctly commit 6ce931dc188a2cd7ad9e13cdf1dbcd6a8f3352ac Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 15:53:24 2016 +0200 configure: remove check for libresolve 'strncasecmp' was once provided by libresolv (no trailing e) for SunOS, but this check is broken and most likely adds nothing useful. Removing now. Reported-by: Irfan Adilovic Discussed in #770 commit 5783715e63d2955a0a4c986630f66e981d79c21a Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 15:50:57 2016 +0200 scripts/make: use $(EXEEXT) for executables Reported-by: bodop Fixes #771 commit f4652556a47a089f9d8d1e6e6567fecadcc41e5c Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 15:04:17 2016 +0200 includes: avoid duplicate memory callback typdefs even harder commit 1beb89235bbf4a2c450c620aef52792ea1aec7ed Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 14:58:11 2016 +0200 checksrc/makefile.am: use $top_srcdir to find source files ... to properly support out of source tree builds. commit d6ab13ee1582c120abcf3ce3b777bad2e37ac10b Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 12:38:22 2016 +0200 RELEASE-NOTES: synced with 26ec93dd6aeba8dfb5 commit 459837a0d01e596436065004cc8bb402bb3c6f68 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 18 00:02:29 2016 +0200 opts: fix option references missing (section) commit 91ae08be70964e1e8a167bf11f62744f8bf932a7 Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Mon Jan 25 14:37:24 2016 +0100 news: CURLOPT_CONNECT_TO and --connect-to Makes curl connect to the given host+port instead of the host+port found in the URL. commit 61e819fa758ff2066657dd86258fbed9e4842648 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 17 17:16:21 2016 +0200 makefile.vc6: use d suffix on debug object To allow both release and debug builds in parallel. Reported-by: Rod Widdowson Fixes #769 commit 3929ff667f43c84c55941ae2f3cd85ca6aae00c3 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Apr 12 00:37:44 2016 -0400 http2: Use size_t type for data drain count Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit 740224cb8ad57a997335476350edc77e0d0494db Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Mar 3 01:24:27 2016 -0500 http2: Improve header parsing - Error if a header line is larger than supported. - Warn if cumulative header line length may be larger than supported. - Allow spaces when parsing the path component. - Make sure each header line ends in \r\n. This fixes an out of bounds. - Disallow header continuation lines until we decide what to do. Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit 009f646d0785d5a2664604dcb2d89dcb9aaac285 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Mar 3 00:47:46 2016 -0500 http2: Add Curl_http2_strerror for HTTP/2 error codes Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit 9057183fd10c15a2fea4756ad523bdf2a418e78b Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Wed Feb 24 22:10:37 2016 +0900 http2: Don't increment drain when one header field is received Sicne we write header field in temporary location, not in the memory that upper layer provides, incrementing drain should not happen. Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit e37d2d737b1c5d6aab419a1d7e1e264768c33d5b Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Tue Feb 23 23:33:04 2016 +0900 http2: Ensure that http2_handle_stream_close is called This commit ensures that streams which was closed in on_stream_close callback gets passed to http2_handle_stream_close. Previously, this might not happen. To achieve this, we increment drain property to forcibly call recv function for that stream. To more accurately check that we have no pending event before shutting down HTTP/2 session, we sum up drain property into http_conn.drain_total. We only shutdown session if that value is 0. With this commit, when stream was closed before reading response header fields, error code CURLE_HTTP2_STREAM is returned even if HTTP/2 level error is NO_ERROR. This signals the upper layer that stream was closed by error just like TCP connection close in HTTP/1. Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit 5909a12a2cf5437a6b7889d579d9dab9139fb65c Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Mon Feb 22 21:20:38 2016 +0900 http2: Process paused data first before tear down http2 session This commit ensures that data from network are processed before HTTP/2 session is terminated. This is achieved by pausing nghttp2 whenever different stream than current easy handle receives data. This commit also fixes the bug that sometimes processing hangs when multiple HTTP/2 streams are multiplexed. Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit 6187c4915af7663e66bd354e9691a75a3f9ee6c6 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Feb 20 00:05:47 2016 +0900 http2: Check session closure early in http2_recv Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit d1e3a4118c318cda35a1d13d497f9d662fb96683 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Wed Feb 17 21:36:59 2016 +0900 http2: Add handling stream level error Previously, when a stream was closed with other than NGHTTP2_NO_ERROR by RST_STREAM, underlying TCP connection was dropped. This is undesirable since there may be other streams multiplexed and they are very much fine. This change introduce new error code CURLE_HTTP2_STREAM, which indicates stream error that only affects the relevant stream, and connection should be kept open. The existing CURLE_HTTP2 means connection error in general. Ref: https://github.com/curl/curl/issues/659 Ref: https://github.com/curl/curl/pull/663 commit e54b357afa6392988bfc4a244c8afc098d81d3e1 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 11 16:00:15 2016 +0200 http2: drain the socket better... ... but ignore EAGAIN if the stream has ended so that we don't end up in a loop. This is a follow-up to c8ab613 in order to avoid the problem d261652 was made to fix. Reported-by: Jay Satiro Clues-provided-by: Tatsuhiro Tsujikawa Discussed in #750 commit c156ddf3bf36e5062a252b0999d9ea7391f79777 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 11 00:06:37 2016 +0200 KNOWN_BUGS: added info for "Hangs with PolarSSL" commit f92d85532a32966949d69a022685e069d01560c2 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 10 23:52:40 2016 +0200 KNOWN_BUGS: 1.9 HTTP/2 frames while in the connection pool kill reuse Closes #750 commit 0595e31596ce1d63a22f2cc069a2ad2cc828560a Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Apr 9 23:44:53 2016 +0200 build: include scripts/ in the dist commit 2cf9741af35ed3ab0246999b16ee4eda58c2ad72 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 9 20:47:05 2016 +0100 CURLOPT_SOCKS5_GSSAPI_SERVICE: Merged with CURLOPT_PROXY_SERVICE_NAME As these two options provide identical functionality, the former for SOCK5 proxies and the latter for HTTP proxies, merged the two options together. As such CURLOPT_SOCKS5_GSSAPI_SERVICE is marked as deprecated as of 7.49.0. commit c7f67a579102ea8b3d448386ca87545063cd0623 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 9 17:19:21 2016 +0100 urldata: Use bool for socks5_gssapi_nec as it is a flag This value is set to TRUE or FALSE so should be a bool and not a long. commit 5571db99daff8776455e0cd26911a43616888e7c Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 9 17:17:37 2016 +0100 url: Ternary operator code style changes commit 82832c3ec23fbe34604715e284515023bdf32bf0 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 9 17:04:46 2016 +0100 CODE_STYLE: Added ternary operator example to 'Space around operators' Following conversation on the libcurl mailing list. commit 631fd545485701f7579de7f2a62941197a534885 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 9 05:57:10 2016 +0100 sasl: Fixed compilation errors from commit 9d89a0387 ...when GSS-API or Windows SSPI are not used. commit 7bf48a20328fc8ad5bedca0a6b79318fab29b7b8 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 9 05:33:03 2016 +0100 url: Corrected comments following 9d89a0387 commit 1c5c057b423b464623b460ebdf3acb363c7a237e Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 21:45:08 2016 +0100 docs: Added clarification following commit 9d89a0387 commit cb1a7cb8fc34a211da132d5715d27e65345984fe Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 20:36:29 2016 +0100 Makefile: Fixed echo of checksrc check commit 22a32b61a4dd6508d841f1d4bd43582aea0d889f Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 20:32:40 2016 +0100 checksrc: Fix issue with the autobuilds not picking up the whitelist commit 5cb2ad3c61b3d4ea3b77706ff771a18039d595b0 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 20:22:14 2016 +0100 checksrc: Added missing vauth and vtls directories commit 02fab3975fe035e248ae6cc25ca5c4e46146de61 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 18:59:33 2016 +0100 ftp/imap/pop3/smtp: Allow the service name to be overridden Allow the service name to be overridden for DIGIST-MD5 and Kerberos 5 authentication in FTP, IMAP, POP3 and SMTP. commit c6274ba9e4f73efa070cc40f98df692130569a4c Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 18:41:41 2016 +0100 http_negotiate: Calculate service name and proxy service name locally Calculate the service name and proxy service names locally, rather than in url.c which will allow for us to support overriding the service name for other protocols such as FTP, IMAP, POP3 and SMTP. commit 560ac54387370f911dba1a1afec6c8ac6015109c Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 8 17:04:25 2016 +0100 ROADMAP: Updated following the move of the authentication code commit 5ece26fcaaf2c64e2e022d1974f1597a3f120711 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Fri Apr 8 16:49:49 2016 +0200 KNOWN_BUGS: openldap hangs. TODO: binary SASL. commit 415187f6323ec367896dcec51047c251d21b3355 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 8 13:25:20 2016 +0200 KNOWN_BUGS: 5.6 Improper use of Autoconf cache variables Closes #603 commit 8baaf9a842502217da32c71b26b82d43858b9f82 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 8 13:23:28 2016 +0200 KNOWN_BUGS: 11.2 error buffer not set... Closes #544 commit 84b0f05496507a95bcea2dda3cd7199b33b57410 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 8 13:21:52 2016 +0200 KNOWN_BUGS: 11.1 Curl leaks .onion hostnames in DNS Closes #543 commit 732b03554d0cefa26263205c4431b8020a73bb43 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 8 13:03:37 2016 +0200 KNOWN_BUGS: 1.8 DNS timing is wrong for HTTP redirects Closes #522 commit fe8be9caf1e40aef0c639f1c3f4f44679f1c16bf Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 8 10:57:25 2016 +0200 TODO: HTTP/2 "prior knowledge" is implemented! commit 60f180f4eb4b627330d68c026358c3601a0d3d11 Author: Damien Vielpeau <damien.vielpeau@withings.com> Date: Thu Apr 7 15:58:11 2016 +0200 mbedtls: fix MBEDTLS_DEBUG builds commit 0243a8d525c4febd8362a11d035eb330d680b9bb Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 7 16:10:10 2016 +0200 mbedtls: implement and provide *_data_pending() ... as otherwise we might get stuck thinking there's no more data to handle. Reported-by: Damien Vielpeau Fixes #737 commit 1dc0fc76b6b8230387edff92e9e0d9cf8bea4e6d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 7 15:32:18 2016 +0200 mbedtls: follow-up for the previous commit commit b8d6cf8c0b5229a4f750aa3cfc11294707ede04b Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 7 15:19:35 2016 +0200 mbedtls.c: name space pollution fix, Use 'Curl_' commit 3623e75684b0491e9422eaf3d645239bb574b36e Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 7 15:16:01 2016 +0200 mbedtls.c: changed private prefix to mbed_ mbedtls_ is the prefix used by the mbedTLS library itself so we should avoid using that for our private functions. commit cf4d30bd8b012bf6ca950fe260748f198e53e24d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 7 15:11:05 2016 +0200 mbedtls.h: fix compiler warnings commit 4650701918075dfa98d39c2c01b17438e627d954 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Apr 7 08:06:56 2016 +0200 Revert "winbuild: trying to set some files eol=crlf for git" This reverts commit 9c08b4f1e7eced5a4d3782a3e0daa484c9d77d21. Didn't help. Caused problems. Fixes #756 commit f560997da191921948823607c8ca3b9a8702c1a2 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Apr 6 14:41:38 2016 +0200 curl.1: use example.com more Make (most) example snippets use the example.com domain instead of the random ones picked and used before. Some of those were probably legitimate sites and some not. example.com is designed for this purpose. commit d3848fbc3a8c88d9fa638744ecb391155ba84c5a Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Wed Apr 6 14:08:15 2016 +0200 HTTP2: Add a space character after the status code The space character after the status code is mandatory, even if the reason phrase is empty (see RFC 7230 section 3.1.2) Closes #755 commit 078a26aeb91fe168582726d040590ee793578703 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Apr 6 11:57:48 2016 +0200 URLs: change http to https in many places Closes #754 commit 8f49307ce0d72846b1181155dfe88ec5e6a5f37a Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Apr 6 11:29:36 2016 +0200 winbuild: trying to set some files eol=crlf for git Thinking it might help to apply patches etc with git. commit 8c2a67f18361a425e3c85628860db945a64af500 Author: Theodore Dubois <tbodt@users.noreply.github.com> Date: Tue Apr 5 14:14:47 2016 -0700 curl.1: change example for -F It's a bad idea to send your passwords anywhere, especially over HTTP. Modified example to send a picture instead. Fixes #752 commit be23fc54eb1c95439287a00c18e5cc763a9ab17a Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Apr 6 09:20:18 2016 +0200 KNOWN_BUGS: reorganized and cleaned up Now sorted into categories and organized in the same style we do the TODO document. It will make each issue linked properly on the https://curl.haxx.se/docs/knownbugs.html web page. The sections should make it easier to find issues and issues related to areas of the reader's specific interest. commit d561d4ff14dae5dfad74a939ffd066af36f17fba Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Apr 6 02:43:13 2016 -0400 KNOWN_BUGS: #95 curl in Windows can't handle Unicode arguments commit 22b5897673867088dc800d3e7860cf4c08a4c627 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Apr 6 01:23:02 2016 +0100 KNOWN_BUGS: Use https://curl.haxx.se URL for github based issues commit 95445548034b34adc4e486a0499920c40b1bb080 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Apr 6 01:00:01 2016 +0100 CHECKSRC.md: Corrected some typos commit 6c11eca7891aa01793f434cb07da219ec428fff0 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Apr 6 00:26:12 2016 +0100 RELEASE-NOTES: Corrected last updated Included a summary of the checksrc.bat updates and combined two krb5 changes as they should have been implemented at the same time. commit d337b55a2e8d9e69158af193aa432a38f88a35d5 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Apr 6 00:21:07 2016 +0100 vauth: Corrected a number of typos in comments Reported-by: Michael Osipov commit 2e3544e7c310a33a16dbe8313a756c4b8f624266 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Apr 5 18:56:35 2016 -0400 KNOWN_BUGS: #94 IMAP custom requests use the LIST handler Bug: https://github.com/curl/curl/issues/536 Reported-by: eXeC64@users.noreply.github.com commit a3949926440ca076bc5ec939f30dd5d12e78b22f Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 5 23:40:37 2016 +0200 KNOWN_BUGS: remove 68, 70 and 72. Due to their age (we don't fully know if they actually remain) and lack of detail - very few people will bother to find out what they're about or work on them. If people truly still suffer from any of these, I assume they will be reported again and then we'll deal with them. 72. "Pausing pipeline problems." https://curl.haxx.se/mail/lib-2009-07/0214.html 70. Problem re-using easy handle after call to curl_multi_remove_handle https://curl.haxx.se/mail/lib-2009-07/0249.html 68. "More questions about ares behavior". https://curl.haxx.se/mail/lib-2009-08/0012.html commit 688c63928581562b535fc9d985f93456f0a741c5 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 5 23:39:42 2016 +0200 KNOWN_BUGS: remove 92 and 88, fixed commit 649411a7f31ae1783ef342127c22698ef300e87c Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 5 20:27:38 2016 +0200 http2: fix connection reuse when PING comes after last DATA It turns out the google GFE HTTP/2 servers send a PING frame immediately after a stream ends and its last DATA has been received by curl. So if we don't drain that from the socket, it makes the socket readable in subsequent checks and libcurl then (wrongly) assumes the connection is dead when trying to reuse the connection. Reported-by: Joonas Kuorilehto Discussed in #750 commit 6bb3a0fdde8e67781c11c75ea676ae35eb91963d Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Apr 5 16:36:45 2016 +0200 multi: remove trailing space in debug output commit 9bffcc4b477a4d6e258e1804273238782359f139 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 4 09:01:27 2016 +0200 RELEASE-NOTES: synced with 86e97b642fb commit 2b006f818bcc36891eda5b6220e3147eeea87bd7 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 4 08:36:21 2016 +0200 CHECKSRC.md: mention cmdline options, fix the bullet list commit 949afeb32a2d09aecde8d2b1230fd6ba3c297a2e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Apr 4 00:11:32 2016 +0200 docs/CHECKSRC.md: initial version commit 1206a7d4d4fd67ee864af766288aa0295f3268bc Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 22:09:07 2016 +0100 checksrc.bat: Added support for the examples commit ab98ca73281e13e84bf7ca4e9e99cbe7e414029e Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 23:06:44 2016 +0200 lib/src: fix the checksrc invoke ... now works correctly when invoke from the root makefile commit 842ea278f4ecee6886ec5aa545ac30eb22b02ff5 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 23:06:23 2016 +0200 nw: please the stricter checksrc commit dffe559c1f0eceb25cdb3610c77940ddaf886527 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 21:57:04 2016 +0100 checksrc.bat: Re-enabled the tests directory by default Following the recent changes to the source in the tests directory, re-enabled tests for the default scan. commit 5a5e4cb407f9b4c4c6d2e270731e89c4eaee8d45 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 21:53:32 2016 +0100 checksrc.bat: Added tests/server directory support In addition to commit 83b174b3f0 and following the recent changes. commit ee0eed3c132325138d3985f36b79afba26bf1c52 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 21:51:47 2016 +0100 tests: Fixed header files to comply with our code style commit 15868c516c97915dbf687ce940b4a623a3ff5fd4 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 22:51:29 2016 +0200 make checksrc: run it in docs/examples too by default commit 985170dbcdcb6d269687d7b88c7013a035b2cc3c Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 22:51:52 2016 +0200 docs/examples: remove spurious white spaces all over ... to please the new, slightly picker, checksrc.pl commit b2106891e95292b5d99cf09122fec5d165404da4 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 22:42:31 2016 +0200 tests: fix make checksrc in servers/ commit 3d6704e98e9c256ad2c7628f470c1b91d26add11 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 22:37:23 2016 +0200 tests: 'make checksrc' now checks server/ too commit 2ee00f3f8fe82cc16e6fc7f0a7a34be09edf78bf Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 20:32:08 2016 +0200 root/make: have checksrc run in include/curl too commit c451be1f1979d61b0fa87d79cd9c3d2580dce16d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 22:35:43 2016 +0200 tests/server: comply with our code style commit 849ebe26064e18cc71d64499abbdf0890352e60b Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 20:28:34 2016 +0200 code: style updates commit cde7bc26caffce7c7756258383ae48d08a68822a Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 20:28:20 2016 +0200 checksrc: check for more malplaced spaces commit 5d6e2874bc44c9204ada50e0d951b2ecea53d636 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 16:21:10 2016 +0200 unit: make unit test source code checksrc compliant commit dd8862b62862bf28456bf061e774d28ae3d02653 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 16:20:43 2016 +0200 checksrc: run checksrc in tests when 'make checksrc' in root commit 3bbc57bf0886b476b390c51d26b82be2ddafed4d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 16:10:57 2016 +0200 checksrc: remove debug crap commit a6e67f8e4bba9c06af292fab791dbe4846215e53 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 16:04:20 2016 +0200 lib557: allow too long lines commit fcf2241b00e9137b23860bab5ba75eaf89b5345f Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 16:03:40 2016 +0200 checksrc: allow ignore of specific warnings within a file (section) commit 990580ba6d0764de3412c76f2e98b733d14abafa Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 11:56:10 2016 +0200 checksrc: add warning names, explain on help output commit 57afd1b0181d8fc18170167b78fdf5dfa5b5e923 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 20:55:19 2016 +0100 checksrc.bat: Disable tests by default until warnings are fixed commit cc4a5c967655bce26652f3381a3af4ce2689e07b Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 20:52:38 2016 +0100 checksrc.bat: Added support for the tests directory commit bb153359565fb898d5a269e70926ec15f58102ed Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 20:26:03 2016 +0100 vauth: Removed the need for a separate GSS-API based SPN function commit 874e69879953d1ec8879b24e5df9908def959f0f Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 17:55:17 2016 +0100 curl_sasl: Fixed potential null pointer utilisation Although this should never happen due to the relationship between the 'mech' and 'resp' variables, and the way they are allocated together, it does cause problems for code analysis tools: V595 The 'mech' pointer was utilized before it was verified against nullptr. Check lines: 376, 381. curl_sasl.c 376 Bug: https://github.com/curl/curl/issues/745 Reported-by: Alexis La Goutte commit 4ad5c6d7c5d79ea3a6d1ebd99342d8c6e0498a28 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 17:32:10 2016 +0100 spnego: Small code tidy up * Prefer dereference of string pointer rather than strlen() * Free challenge pointer in one place * Additional comments commit 46c954b4864e6ce0336ba8f2d97d5dd50376c42c Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 17:30:51 2016 +0100 krb5: Small code tidy up * Prefer dereference of string pointer rather than strlen() * Free challenge pointer in one place * Additional comments commit 1659a7b2ccaad358299070210492c08f5b0a67ab Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 17:17:20 2016 +0100 krb5_gssapi: Only process challenge when present This wouldn't cause a problem because of the way the function is called, but prior to this change, we were processing the challenge message when the credentials were NULL rather than when the challenge message was populated. This also brings this part of the Kerberos 5 code in line with the Negotiate code. commit 5cba2519f5e51c32feba348ae91840ffce148562 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 17:02:44 2016 +0100 krb5: Fixed missing client response when mutual authentication enabled Although mutual authentication is currently turned off and can only be enabled by changing libcurl source code, authentication using Kerberos 5 has been broken since commit 79543caf90 in this use case. commit bc320cee5d2ad33c132e8057d4b9bf7d2992c9f6 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 11:45:02 2016 +0100 krb5_sspi: Only process challenge when present This wouldn't cause a problem because of the way the function is called, but prior to this change, we were processing the challenge message when the credentials were NULL rather than when the challenge message was populated. This also brings this part of the Kerberos 5 code in line with the Negotiate code. commit a306bea71e4cec0b67e6401ed7c135ca8dd88d17 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 11:25:12 2016 +0100 krb5_sspi: Only generate the output token when its not allocated Prior to this change, we were generating the output token when the credentials were NULL rather than when the output token was NULL. This also brings this part of the Kerberos 5 code in line with the Negotiate code. commit f7b95c2a0a1d64ad5deedc7488b40e441f2a7e45 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 11:15:03 2016 +0100 krb5: Only generate a SPN when its not known Prior to this change, we were generating the SPN in the SSPI code when the credentials were NULL and in the GSS-API code when the context was empty. It is better to decouple the SPN generation from these checks and only generate it when the SPN itself is NULL. This also brings this part of the Kerberos 5 code in line with the Negotiate code. commit 3f62b373b8f0a4ae17027cc4db2e183a5ccd107c Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 11:57:34 2016 +0200 tests/libtest: follow our code style guidelines better ... checksrc of all test code is pending. commit e3f2e4642b91c67dfae7500597536e1133453027 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 11:57:21 2016 +0200 checksrc.whitelist: remove fopen() uses commit 875299bd1c3e087e938f7311dd5dd7e964704daa Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 11:57:04 2016 +0200 formdata: use appropriate fopen() macros commit 11a930c8b7947ff60baf15035fef2d9283ad99b8 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 11:29:14 2016 +0200 checksrc: improve the fopen() parser somewhat The quote scanner was too fragile, now look for a comma instead to find the mode argument. commit 2bc9a062e11235b76e01a8f5da8e289da2888bd4 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Apr 3 10:46:36 2016 +0200 unit1604: fix snprintf follow-up to 0326b06 sizeof(pointer) is no good for the buffer size! Reported-by: Viktor Szakats commit 40fbc3962b6cb0b3f34e6a94472e373bf4925cca Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Apr 3 00:02:19 2016 +0100 unittests: Fixed compilation warnings warning: implicit declaration of function 'sprintf_was_used' [-Wimplicit-function-declaration] Follow up to the modications made to tests/libtest in commit 55452ebdff as we prefer not to use sprintf() now. commit de14edb769ca64822d093851ac7b33ada55a607b Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Apr 2 17:59:25 2016 +0200 curl.1: -w filename_effective was introduced in 7.26.0 We never made a 7.25.1 release commit 27e185ab67b8d2cf09e26f8133d715081ead8a8a Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Apr 2 17:26:54 2016 +0200 7.49.0: next release version commit 7f82ff88931d9042dba04fcec4f8be7f5ff304ac Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 1 20:42:25 2016 +0200 http2: make use of the nghttp2 error callback It offers extra info from nghttp2 in certain error cases. Like for example when trying prior-knowledge http2 on a server that doesn't speak http2 at all. The error message is passed on as a verbose message to libcurl. Discussed in #722 The error callback was added in nghttp2 1.9.0 commit 2fb7b7b77f9dd73d3e943652830746e207f0874f Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 2 06:41:29 2016 +0100 spnego: Renamed the context's SPN variable To be consistent with the Kerberos 5 context and other authentication code. commit 7f505c4b559c4619478ef3361b19b61532498fce Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 2 06:25:30 2016 +0100 krb5_gssapi: Renamed the status variables For consistency with the spnego code. commit 6cfc900767e6a17adc65d5451d97ca080afd882d Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 2 06:15:29 2016 +0100 krb5: Moved host from Curl_auth_create_gssapi_user_message() to be argument For consistency with the spnego and oauth2 code moved the setting of the host name outside of the Curl_auth_create_gssapi_user_messag() function. This will allow us to more easily override it in the future. commit e749aa011b87b0d0437e72e97124610579225198 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Apr 2 00:30:33 2016 +0100 test1119: Fixed missing CURL_DID_MEMORY_FUNC_TYPEDEFS symbol commit d1292c2b1eb139511a734a451eca5458dfc157c5 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 22:20:58 2016 +0100 RELEASE-NOTES: Removed "http_negotiate: Corrected host and proxy host name" As this was introduced in the recent vauth changes and not a prior release. commit ca98e63a15ec8d59f5b80c094d88274bf57367d1 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 1 23:15:29 2016 +0200 RELEASE-NOTES: synced with 0aa8da10bbdafa commit ff5844b33d681271060399ea153de260aa6f63de Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 21:48:35 2016 +0100 http_negotiate: Corrected host and proxy host name being wrong way round I had accidentally used the proxy server name for the host and the host server name for the proxy in commit ad5e9bfd5d and 6d6f9ca1d9. Whilst Windows SSPI was quite happy with this, GSS-API wasn't. Thanks-to: Michael Osipov commit af4c678d846cf4458e862432363ef0ca2c38c3de Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 20:39:34 2016 +0100 build: Changed the Visual Studio projects warning level from 3 to 4 After squashing most of our compiler warnings, up'ed the default warning level from 3 to 4 in order to increase the likelyhood of catching future warnings. commit 709fcbd1ce9d467139abb7a1ae538558cbb173ab Author: ehlertjd@gmail.com <ehlertjd@gmail.com> Date: Fri Apr 1 09:13:39 2016 -0500 IMAP: check pointer before dereferencing it may be null in the CURLOPT_CONNECT_ONLY case Fixes #747 commit af83964464b8a1c553e9d7bb83ff39614612ae79 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 20:00:05 2016 +0100 .gitignore: Added new VC14 SQLite based program database files commit 4faef5341dd63f3fcfd9a57ac81b15495508adbe Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 19:12:39 2016 +0100 curl_memory.h: Fixed typo in comment From commit 7218b52c49. commit be4788d6801a4329a85795dbaec2046ad125a4c7 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 19:07:49 2016 +0100 spnego: Corrected some typos in comments Corrected typos from commit ad5e9bfd5d and 6d6f9ca1d9. commit a261898224059c1aec6b9c49206ff298a666760b Author: Steve Holme <steven.holme@cubic.com> Date: Fri Apr 1 13:21:12 2016 +0100 memdebug: Ensure curl/curl.h is included before curl_memory.h Follow up to commit 7db9782dd6. commit 94e2ba72b9d57ab9167b1d92ad91dbeea91e2546 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 1 13:57:15 2016 +0200 upload: missing rewind call could make libcurl hang When an upload is done, there are two places where that can be detected and only one of them would rewind the input stream - which sometimes is necessary for example when doing NTLM HTTP POSTs and more. This could then end up libcurl hanging. Figured-out-by: Isaac Boukris Reported-by: Anatol Belski Fixes #741 commit 3612fdef7f76ffb2bcb3190015222a9fc4b57325 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 1 13:14:57 2016 +0200 curl.h: define CURL_DID_MEMORY_FUNC_TYPEDEFS So that we only do the extra typedefs in curl_memory.h when we really need to and avoid double typedefs. follow-up commit to 7218b52c49aeb1 Thanks-to: Steve Holme commit a2ec0a93e44489faf6b669a8dd73051f04e0a778 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Apr 1 10:14:06 2016 +0200 curl/mprintf.h: remove support for _MPRINTF_REPLACE The define is not in our name space and is therefore not protected by our API promises. It was only really used by libcurl internals but was mostly erased from there already in 8aabbf5 (March 2015). This is supposedly the final death blow to that define from everywhere. As a side-effect, making sure _MPRINTF_REPLACE is gone and not used, I made the lib tests in tests/libtest/ use curl_printf.h for its redefine magic and then subsequently the use of sprintf() got banned in the tests as well (as it is in libcurl internals) and I then replaced them all with snprintf(). In the unlikely event that any users is actually using this define and gets sad by this change, it is very easily copied to the user's own code. commit bebb45447ebad973c2bb7acb081e46c78cbc6e27 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 09:08:40 2016 +0200 curl_memory.h: avoid the curl/curl.h include Discussed in #743 commit e0e68da43a9c2e14db517267aabe667e653240fe Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Apr 1 07:24:39 2016 +0100 url: Corrected get protocol family for FTP and LDAP Fixed copy/paste error from commit a5aec58726. commit 05ea0fb00fdd0288381a051047415192bf706f1b Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Mar 31 21:05:29 2016 -0400 strerror: don't bit shift a signed integer Bug: https://github.com/curl/curl/issues/744 Reported-by: Alexis La Goutte commit a00c1d2614257e48666028095df704a457b09144 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 22:04:09 2016 +0200 http2: more documentation for prior knowledge commit 9968c9ba2941199d4b01facf58eebbcfe64b35cb Author: Diego Bes <dbesprosvan@ahoffeld-pc.tango.corp> Date: Fri Mar 18 15:25:56 2016 -0700 http2: support "prior knowledge", no upgrade from HTTP/1.1 Supports HTTP/2 over clear TCP - Optimize switching to HTTP/2 by removing calls to init and setup before switching. Switching will eventually call setup and setup calls init. - Supports new version to “force” the use of HTTP/2 over clean TCP - Add common line parameter “--http2-prior-knowledge” to the Curl command line tool. commit 1b9fe1058f2824dabb70523958ef93385ee21b5d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 15:12:22 2016 +0200 imap: remove duplicated function The list and search response functions were identical! Merged into one now. Detected by PVS Studio. Reported-by: Alexis La Goutte commit 924a99943eb8b21b41dbb99d268fd99911c96f1a Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 10:22:42 2016 +0200 SOCKS5_gssapi_negotiate: don't assume little-endian ints The code copied one byte from a 32bit integer, which works fine as long as the byte order is the same. Not a fine assumption. Reported by PVS Studio. Reported-by: Alexis La Goutte commit 2ffdc04526f879e433d71fb3f880a04141f20709 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 10:03:04 2016 +0200 http: remove ((expression)) double parentheses commit 5f00509899599e9c71cc51211235eab3378adfdb Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 10:00:55 2016 +0200 Curl_add_buffer_send: avoid possible NULL dereference ... as we check for a NULL pointer below, we move the derefence to after the check. Detected by PVS Studio. Reported-by: Alexis La Goutte commit 0e100364b32a50227fb96a74f7259bc3519d594b Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 31 09:53:36 2016 +0200 file: remove duplicate checks of the same variable ... as it doesn't change in between. Deteced by PVS Studio. Reported-by: Alexis La Goutte commit 730702c412b13fc319c946307e2180943006b54a Author: Marcel Raad <MarcelRaad@users.noreply.github.com> Date: Wed Mar 30 17:23:02 2016 +0200 openssl: Fix compilation warnings When compiling with OpenSSL 1.1.0 (so that the HAVE_X509_GET0_SIGNATURE && HAVE_X509_GET0_EXTENSIONS pre-processor block is active), Visual C++ 14 complains: warning C4701: potentially uninitialized local variable 'palg' used warning C4701: potentially uninitialized local variable 'psig' used commit f19408608af9015406fa78e62dca542cb9246894 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 30 00:17:02 2016 +0200 multi: turn Curl_done into file local multi_done ... as it now is used by multi.c only. commit 1dbdd4c73d2cb45ab3dc0c542a3ffa7acec0f40a Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 23:56:22 2016 +0200 multi: multi_reconnect_request is the former Curl_reconnect_request now a file local function in multi.c commit 54bdde3abf87dd283c509a6a511fb15d236ed65c Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 23:53:48 2016 +0200 multi: move Curl_do and Curl_do_done to multi.c and make static ... called multi_do and multi_do_done as they're file local now. commit 538daa860eadebebb0662f43cfda4cb24ce95f04 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Mar 29 19:06:55 2016 -0400 wolfssl: Use ECC supported curves extension https://github.com/wolfSSL/wolfssl/issues/366 commit b21e6c430469b1d30346b5c607aeaba525c57f1f Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Mar 29 18:50:12 2016 -0400 build-wolfssl: Allow a broader range of ciphers (Visual Studio) This is an update to the build-time options used to build wolfSSL in Visual Studio for greater compatibility, and make it behave similar to the way OpenSSL 1.0.2 behaves. Starting in wolfSSL v3.6.6 static ciphers and SSLv3 are disabled by default at build time, but we can use both. - Enable static cipher suites TLS_ECDH_ and TLS_RSA_. - Enable SSLv3 hello. Though in libcurl we disable it by default at runtime, we make it available so the user can manually select it if necessary. commit 16c0271e59d2cd52809c3b8e849de2e02e4ad99f Author: Isaac Boukris <iboukris@gmail.com> Date: Tue Mar 29 17:13:46 2016 +0300 GSS: make Curl_gss_log_error more verbose Also display the GSS_C_GSS_CODE (major code) when specified instead of only GSS_C_MECH_CODE (minor code). In addition, the old code was printing a colon twice after the prefix and also miscalculated the length of the buffer in between calls to gss_display_status (the length of ": " was missing). Also, gss_buffer is not guaranteed to be NULL terminated and thus need to restrict reading by its length. Closes #738 commit 51346007176a5853b6aec459fd3923158da1b207 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 10:46:08 2016 +0100 build: use roffit 0.11 feature ... load file specified as argument. commit 38f41d854efbd8bfc6ea843e56c30b274a4d337e Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 16:08:38 2016 +0200 http2: set correct scheme in handler structs [regression] Since commit a5aec58 the handler schemes need to match for the connections to be reused and for HTTP/2 multiplexing to work, reusing connections is very important! Closes #736 commit 0c8a009f926175bb3e0a56353e24de29945e015b Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 15:19:21 2016 +0200 hostip.c: minor white space edit for style commit d4129a9809c31a6183b6979d8748a7a1c72c72ce Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Sun Mar 27 18:03:46 2016 +0200 TODO: use secure protocol in recently added URL Closes #733 commit b91d45b37829aaac880388951c9be1a658191089 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 10:23:33 2016 +0200 HTTP2.md: mention libressl and boringssl too commit 229e968cb2200e4a0f5436ebb1b714ae4d143c45 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 08:53:40 2016 +0200 docs/HTTP-COOKIES: converted to markdown commit b380db567f0b5bc740de5adcb6960983b1472acc Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 29 08:27:23 2016 +0200 HTTP2: s/polarssl/mbedtls commit 08134f908f20b87ef8facfcd7fdf0e8441f301ec Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Mar 28 18:18:09 2016 -0400 wolfssl: Add ALPN support commit 268b5dd0707aa339e10b239c7132de270f3424de Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Mar 28 16:46:26 2016 -0400 tool_operate: remove mixed declaration This is a follow up to the previous commit. commit 5ce5578a62872de98869f5e2e493bcf912201b11 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 28 20:28:23 2016 +0200 curl: warn for --capath use if not supported by libcurl Closes #492 commit a1230e510f58bf010afad10197e29d04c4961823 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 28 10:59:39 2016 +0200 TODO: 2.5 Edge-triggered sockets should work commit 5ba6ff20052c4a91118e219ca96a80211709dcfd Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 28 00:03:42 2016 +0200 Makefile.am: skip the scripts dir Skipping the scripts dir is primarily done for 'make install' so that it does not attempt to install the zsh completion script as we've not yet found a proper way to do/run that at install time. By leaving the script dir's Makefile in place, a user can still opt to run make install manually in there. Closes #620 commit 46ceb719a987feec81ada692bfbe292c3efd8c2d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 27 23:50:36 2016 +0200 CURLMOPT_SOCKETFUNCTION.3: describe the 'what' argument commit 2b9150d11712456695c63c123462f6d4647b30f4 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 27 23:34:25 2016 +0200 curl_multi_socket_action.3: mark the options properly ... to make them appear as links on the html version. commit 0d993b30fca279408c5d67b4b02900439fa5ee42 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 27 18:52:42 2016 +0100 RELEASE-NOTES: Synced with f0bdd72c10 commit 7909621c8000254aacf85c74da0ddf33597f454b Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 27 17:58:50 2016 +0100 http_ntlm: Renamed from curl_ntlm.[c|h] Renamed the header and source files for this module as they are HTTP specific and as such, they should use the naming convention as other HTTP authentication source files do - this revert commit 260ee6b7bf. Note: We could also rename curl_ntlm_wb.[c|h], however, the Winbind code needs separating from the HTTP protocol and migrating into the vauth directory, thus adding support for Winbind to the SASL based protocols such as IMAP, POP3 and SMTP. commit bfb9ec2cf8d8853eb1ac715b6e6d6c327cfb4b52 Author: marquis-de-muesli <marquis.de.muesli@gmail.com> Date: Thu Feb 25 02:10:24 2016 +0100 docs: curlinfo_filetime sftp support, new curlopt_quote "statvfs" Closes #677 commit 2e0317af62b012b95aad0d8224d7ca92bbf17551 Author: marquis-de-muesli <marquis.de.muesli@gmail.com> Date: Tue Feb 23 23:37:14 2016 +0100 SSH: new CURLOPT_QUOTE command "statvfs" usage: "statvfs path" returns remote file system statistics commit d41b421f593d382113e6a138efa99a2487fe3218 Author: marquis-de-muesli <marquis.de.muesli@gmail.com> Date: Tue Feb 23 23:18:31 2016 +0100 SSH: support CURLINFO_FILETIME commit 158b365f6b7d9269998ece24519e68df584cf1a7 Author: Karlson2k <k2k@narod.ru> Date: Mon Feb 22 12:30:37 2016 +0300 sshserver.pl: use quotes for given options Fixed failed redirection of stderr with some options. At least on Msys2, perl fails to redirect stderr if $value contains newline or other weird characters. commit 88efe12a2842e91bf06daa78eca64990a4b7c7b0 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Mar 26 14:41:35 2016 -0400 url: don't use bad offset in tld_check_name to show error libidn's tld_check_lz returns an error offset of the first character that it failed to process, however that offset is not a byte offset and may not even be in the locale encoding therefore we can't use it to show the user the character that failed to process. Bug: https://github.com/curl/curl/issues/731 Reported-by: Karlson2k commit 718a783db2960f2c8a53336f5e2b6d5192499e6b Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 20:09:15 2016 +0000 http_negotiate: Combine GSS-API and SSPI source files As the GSS-API and SSPI based source files are no longer library/API specific, following the extraction of that authentication code to the vauth directory, combine these files rather than maintain two separate versions. commit c6d968ec6b0c9436b5132de73ae8c8c5611d2ac4 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 18:51:46 2016 +0000 vauth: Moved the Negotiate authentication code to the new vauth directory Part 2 of 2 - Moved the GSS-API based Negotiate authentication code. commit 7d5bec8e1c79ad20f86c598f49ea79e3ba71d74f Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 16:02:42 2016 +0000 vauth: Moved the Negotiate authentication code to the new vauth directory Part 1 of 2 - Moved the SSPI based Negotiate authentication code. commit 1ac29866073a6aaad55d46f2851b954884788cbc Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 26 11:35:07 2016 +0000 warnless.h: Removed spurious character from commit 696bc6b9c9 Not picked up by checksrc or Visual Studio but my own code review, this would haven broken Intel based Unix builds - Perhaps I should learn to type on my laptop's keyboard before committing! commit 9c0345fbfb3ed29fa29067714aaccb58005d5f31 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 26 11:14:07 2016 +0000 schannel: Fixed compilation warning from commit f8d88a4913 warning C4244: '=': conversion from 'int' to 'unsigned short', possible loss of data commit 9382cfdd883d7d42fe85561125cc000c3cc99d5a Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 26 11:09:01 2016 +0000 warnless?: Added some integer based conversion functions commit 116f7b6364d99e69afac9bc759bd53f759ff873b Author: Dusty Mabe <dusty@dustymabe.com> Date: Fri Mar 25 12:40:48 2016 -0400 docs/TODO: Add feature request for metalink in HTTP headers Closes #729 Closes #728 commit ca9ec2404e994c8a52ca561488879a10268a92da Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Mar 25 18:23:07 2016 +0000 build: Corrected typos from commit 70e56939aa commit 53c8ecace81055b80005784f544fd9950dab4b61 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 11:28:42 2016 +0000 vauth: Refactored function names after move to new vauth directory Renamed all the SASL functions that moved to the new vauth directory to include the correct module name. commit 963dca79f5a6e7c27ee608d2dbe23f25abfd50f4 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 11:19:57 2016 +0000 vauth: Updated the copyright year after recent changes As most of this work was performed in 2015 but not pushed until 2016 updated the copyright year to reflect the public facing changes. commit 5de2d72b2f23b929227014e8c553fd6f46abede4 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 15:24:44 2015 +0100 vauth: Moved the OAuth 2.0 authentication code to the new vauth directory commit 3de8cae4d92feb1f9f7daf5cd705568f65d4c6f6 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 14:50:02 2015 +0100 vauth: Moved the NTLM authentication code to the new vauth directory commit 230b5035a72288608d48feeb4f7550766ac84a24 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 14:15:09 2015 +0100 vauth: Moved the Kerberos V5 authentication code to the new vauth directory commit 17bedd4de1323009b6183b9ba486532eb8b154b6 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Mar 25 12:17:34 2016 +0000 digest.c: Fixed checksrc warnings commit 07adbd6c3e2bcd1d96b78a26bd583719fd0b1d89 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 13:30:58 2015 +0100 vauth: Moved the DIGEST authentication code to the new vauth directory commit 37731b2aae0237c0b3778378e3d7e695a53ef488 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 13:02:27 2015 +0100 vauth: Moved the CRAM-MD5 authentication code to the new vauth directory commit 48940783727aa8cd7471baaf65d2542e242cf11b Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 12:27:38 2015 +0100 vauth: Moved the ClearText authentication code to the new vauth directory commit 29ed2c3a186de99c888cfdea3005616ebfd74441 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 11:48:24 2015 +0100 vauth: Moved Curl_sasl_build_spn() to create the initial vauth source files commit 5866c030520421a75c5ebb8042479c975b0ab914 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 11:19:24 2015 +0100 checksrc.bat: Added support for checking the new vauth directory commit 578799abd32473ab2ec8c43ca9fee7747c16ea60 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 12 11:14:14 2015 +0100 build: Updated all makefiles and project files for the new vauth directory Updated the makefiles and Visual Studio project files to support moving the authentication code to the new lib/vauth directory that was started in commit 0d04e859e1. commit 2497b11b6dd4f99b34f1a00b1cdf7c426285f435 Author: JDepooter <joel.depooter@gmail.com> Date: Sun Mar 20 23:59:57 2016 -0700 schannel: Add ALPN support Add ALPN support for schannel. This allows cURL to negotiate HTTP/2.0 connections when built with schannel. Closes #724 commit e08462ecc028f70d22de3dfe4f55b25a0bd4a5f1 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Mar 24 06:35:23 2016 +0000 http: Minor update based on CODE_STYLE guidelines commit 759d380b09c9811c290017f590da9af5af49d442 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 23 23:03:08 2016 +0100 multi: fix "Operation timed out after" timer Use the local, reasonably updated, 'now' value when creating the message string to output for the timeout condition. Fixes #619 commit 493898512fbf6c09d0bd7798b83845c775dc0e76 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 23 14:59:41 2016 +0100 openssl: boringssl provides the same numbering as openssl ... so we don't need extra boringssl precautions for for HAVE_ERR_REMOVE_THREAD_STATE_NOARG. Pointed-out-by: David Benjamin commit bbe748a3bc4e717e80b9981cc9395433f7c336c7 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 23 10:04:48 2016 +0100 openssl: fix ERR_remove_thread_state() for boringssl/libressl The removed arg is only done in OpenSSL Bug: https://twitter.com/xtraemeat/status/712564874098917376 commit a3a93efb786338ce309b9d4e271440b6866a5592 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 23 09:35:23 2016 +0100 bump: work on 7.48.1 commit b6fc83fd4406ecab8aa1a7477d7a391a89af808a Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 23 09:32:30 2016 +0100 RELEASE-PROCEDURE: mention the github release tag edit ... and update the coming release dates a bit commit 8d8c5cbc8920a41ea06f170715729ffb2e0bb101 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Mar 23 06:50:03 2016 +0000 checksrc.bat: Updated the help to be consistent with generate.bat Follow up to commit a8c7f0fcbf prior to release. commit 88a0944aec30e94575e4cce5bf344233e6729bfd Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 08:19:52 2016 +0100 RELEASE-NOTES: curl 7.48.0 commit c4f74db91e2072619881bc99960b3502d12c9698 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 08:21:44 2016 +0100 THANKS: 15 new contributors from 7.48.0 release commit c5de87b5a053804019f34c89543c7bdf458694cf Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Mar 23 01:16:21 2016 -0400 CURLINFO_TLS_SSL_PTR.3: Warn about limitations Bug: https://github.com/curl/curl/issues/685 commit 4f2e4da5eba7fea72a27fc43661728274246ddd4 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 10:43:55 2016 +0100 Revert "sshserver: remove use of AuthorizedKeysFile2" It seems we may have some autobuild problems after this commit went in. Trying to see if a revert helps to get them back. This reverts commit 2716350d1f3edc8e929f6ceeee05051090f6d642. commit 9646741b26465e14041968363b410f92fa0392c6 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 10:35:22 2016 +0100 maketgz: add -j to make dist ... makes it a lot faster commit e69433750f6f47fbbf8e6507347be3f3aa917d76 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 10:33:44 2016 +0100 libcurl-thread.3: minor nroff format fix commit 39a2a35c2fafdbec207bf071d9c36e7e6ba79092 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 10:33:24 2016 +0100 CURLINFO_TLS_SSL_PTR.3: minor nroff format fix commit 21424f9892e6f9ebc48708573c2fd402ca4e1344 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 22 08:19:08 2016 +0100 CODE_STYLE: indend example code ... to make it look nicer in markdown outputa commit 2fbd4edf002b96e0014f2af089bb6221abb273fe Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Mar 22 03:03:11 2016 -0400 build-wolfssl: Update VS properties for wolfSSL v3.9.0 - Do not use wolfSSL's sample user-setting files. wolfSSL starting in v3.9.0 has added their own sample user settings that are applied by default, but we don't use them because we have our own settings. - Do not use wolfSSL's Visual Studio Unicode character setting. wolfSSL Visual Studio projects use the Unicode character set however our settings and options imitate mingw build which does not use the Unicode character set. This does not appear to have any effect at the moment but better safe than sorry. These changes are backwards compatible with earlier versions. commit 8766f6bf76d0a3ecccf75c49f3f316d7ccf65bb8 Author: Steve Holme <steve_holme@hotmail.com> Date: Tue Mar 22 06:16:06 2016 +0000 hostip6: Fixed compilation warnings when verbose strings disabled warning C4189: 'data': local variable is initialized but not referenced ...and some minor formatting/spacing changes. commit 59e20594a2fc5982968f0faba52bbc35f4f530a3 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 21 00:53:02 2016 +0100 sshserver: remove use of AuthorizedKeysFile2 Support for the (undocumented) AuthorizedKeysFile2 was removed in OpenSSH 5.9, released in September 2011 Closes #715 commit 43894cb08615fd85f4bfa20b0331c9855a86eeaf Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 20 17:51:06 2016 +0000 connect/ntlm/http: Fixed compilation warnings when verbose strings disabled warning C4189: 'data': local variable is initialized but not referenced commit be2d1f9d22cd01a453d2558f9e89416aa6dfd0e8 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 20 17:35:31 2016 +0000 openssl: Fixed compilation warning when /Wall enabled warning C4706: assignment within conditional expression commit 1146ae7ef046cca2852101ff4d80016d55080695 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 20 11:51:11 2016 +0000 CODE_STYLE: Use boolean conditions Rather than use TRUE, FALSE, NULL, 0 or != 0 in if/while conditions. Additionally, corrected some example code to adhere to the recommended coding style. commit 59249b71c1ea2e993c88a6d6f53d47203cd4077a Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 20 11:14:58 2016 +0000 inet_pton.c: Fixed compilation warnings warning: conversion to 'unsigned char' from 'int' may alter its value commit 5a581ba75b5a3ee858a3edf7394557fb7872b99b Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Mar 19 22:46:09 2016 +0100 RELEASE-NOTES: synced with 80851028efc2fa9 commit a53ffe0392da40514feb37fbefb270d407b63f4d Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Mar 19 22:37:21 2016 +0100 mbedtls: fix compiler warning vtls/mbedtls.h:67:36: warning: implicit declaration of function ‘mbedtls_sha256’ [-Wimplicit-function-declaration] commit 26c4a319ecfeeb1fc241674c3aabb51b58a3fa4e Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 19 20:37:12 2016 +0000 easy: Minor coding standard and style updates Following commit c5744340db. Additionally removes the need for a second 'result code' variable as well. commit abe7ff94c0f83570f8bb7e4bb19fe4cbc17c1412 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Mar 19 15:29:52 2016 -0400 easy: Remove poll failure check in easy_transfer .. because curl_multi_wait can no longer signal poll failure. follow-up to 77e1726 Bug: https://github.com/curl/curl/issues/707 commit 666a070d5599e6dcdf8e988abe66f23328d93f5e Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 19 17:57:43 2016 +0000 build: Added missing Visual Studio filter files for VC10 onwards As these files don't need to contain references to the source files, although typically do, added basic files which only include three filters and don't require the project file generator to be modified. These files allow the source code to be viewed in the Solution Explorer in versions of Visual Studio from 2010 onwards in the same manner as previous versions did rather than one large view of files. commit 9b3e65bff281381e715eda92a6d43efdadce71ae Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 19 17:15:53 2016 +0000 ftp/imap/pop3/smtp: Fixed compilation warning when /Wall enabled warning C4706: assignment within conditional expression commit 01777f955568093ac0b5374f9f01fba1ab6ff82b Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 19 11:05:06 2016 +0000 config-w32.h: Fixed compilation warning when /Wall enabled warning C4668: 'USE_IPV6' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif' commit 389541c7003c222c302878cc9dacedf6cff4aa46 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 19 11:01:36 2016 +0000 imap.c: Fixed compilation warning with /Wall enabled warning C4701: potentially uninitialized local variable 'size' used Technically this can't happen, as the usage of 'size' is protected by 'if(parsed)' and 'parsed' is only set after 'size' has been parsed. Anyway, lets keep the compiler happy. commit 2f50a09da1874fbca8afee67270da1f305db5716 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 19 00:06:36 2016 +0000 KNOWN_BUGS: #93 Issue with CURLFORM_CONTENTLEN in arrays on 32-bit platforms commit ba3832666667f33f1d7ccd7e17452d39f60ff74c Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Mar 18 21:59:53 2016 +0100 bump: the coming release is 7.48.0 commit 630f6824c1d731775f319a4fd1707534b9b9638e Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Mar 18 16:26:05 2016 +0100 configure: use cpp -P when needed Since gcc 5, the processor output can get split up on multiple lines that made the configure script fail to figure out values from definitions. The fix is to use cpp -P, and this fix now first checks if cpp -P is necessary and then if cpp -P works before it uses that to extract defined values. Fixes #719 commit aeb8aaeec65037f71d39731ca9c33f360479df22 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Mar 18 07:19:31 2016 +0000 formdata.c: Fixed compilation warning formdata.c:390: warning: cast from pointer to integer of different size Introduced in commit ca5f9341ef this happens because a char*, which is 32-bits wide in 32-bit land, is being cast to a curl_off_t which is 64-bits wide where 64-bit integers are supported by the compiler. This doesn't happen in 64-bit land as a pointer is the same size as a curl_off_t. This fix doesn't address the fact that a 64-bit value cannot be used for CURLFORM_CONTENTLEN when set in a form array and compiled on a 32-bit platforms, it does at least suppress the compilation warning. commit 08121dab71b99b7e8ca61a2a4e826a1a59b99fe1 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Mar 18 08:14:05 2016 +0100 FAQ: 2.5 Install libcurl for both 32bit and 64bit? commit 89f25ebd45aa76967cd48f75a2b23945357a4fd0 Author: Gisle Vanem <gvanem@yahoo.no> Date: Thu Mar 17 10:42:33 2016 +0100 openssl: adapt to API breakage in ERR_remove_thread_state() The OpenSSL API change that broke this is "Convert ERR_STATE to new multi-threading API": openssl commit 8509dcc. Closes #713 commit 51f61f35be897062afa366908bdb41b13f39b2d8 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 17 00:55:46 2016 +0100 version: init moved to private name space, added protos follow-up to 80015cdd52145 commit c44b0ddc3b123213bc3ad8f550abdc05ba3248bc Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 16 11:02:33 2016 +0100 openssl: verbose: show matching SAN pattern ... to allow users to see which specfic wildcard that matched when such is used. Also minor logic cleanup to simplify the code, and I removed all tabs from verbose strings. commit ed099e490d20365d233b7df4e10bf42420bc366d Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Mar 16 19:13:42 2016 -0400 version: thread safety commit 757cce7f79e5077f318e8e5f8cb231612bf555f0 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Mar 16 07:13:16 2016 +0000 transfer: Removed redundant HTTP authentication include files It would also seem that share.h is not required here either as there are no references to the Curl_share structure or functions. commit bccf2d6a4467a13a6dbe22fa048a39743254fb88 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Mar 16 06:59:42 2016 +0000 easy: Removed redundant HTTP authentication include files commit 7a2e158df8f3e662bd4fb0f3d4f91c8c1eb08a17 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Mar 15 16:00:36 2016 -0400 CURLOPT_SSLENGINE.3: Only for OpenSSL built with engine support Bug: https://curl.haxx.se/mail/lib-2016-03/0150.html Reported-by: Oliver Graute commit 4643a83e6303f3fdacdd9014de4fa56081d0a531 Author: Steve Holme <steve_holme@hotmail.com> Date: Tue Mar 15 06:47:13 2016 +0000 curl_sasl: Minor code indent fixes commit 350529ae0597e918906caf30e27f0a3549452646 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 15:39:16 2016 +0100 runtests: mention when run event-based commit c3dfb5bdb2c8a300b8c867e240c3a3c482058fdc Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 15:37:03 2016 +0100 easy: add check to malloc() when running event-based ... to allow torture tests then too. commit d677ca9ca78cac733762864cb3c9dba7c42e2323 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 15:36:40 2016 +0100 memdebug: skip logging the limit countdown, fflush when reached commit ba115d8daa58a5115eb731fdfa0f9d38431b0e3d Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 14:31:14 2016 +0100 CODE_STYLE: Space around operators As just discussed on the mailing list, also document how we prefer spacing in expressions. commit c4ea366d572b4ab58cc9d2bd3fdc69a71f00dc17 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 10:50:53 2016 +0100 curl: glob_range: no need to check unsigned variable for negative cppcheck warned: [src/tool_urlglob.c:283]: (style) Checking if unsigned variable 'step_n' is less than zero. commit b3c0c612436e45edbdb5a32613cb391fc20e93ce Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 10:40:02 2016 +0100 CODE_STYLE: add example for indent style as well commit 696ae4315c88cee13fc5335e957adccc41e85648 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 10:36:51 2016 +0100 CODE_STYLE: mention braces for functions too commit a1a59b8e6ae3f2827929c63a0b90e1406eeb37d6 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 10:31:36 2016 +0100 docs/Makefile.am: include CODE_STYLE in tarball too commit 53a70f3c1476b0a6c22e927a4384977e1107815e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 10:31:00 2016 +0100 CONTRIBUTE: moved out code style to a separate document commit c40c903f481bfcd4390d70f59d8c13505418c6a5 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 10:28:54 2016 +0100 CODE_STYLE: initial version Ripped out from CONTRIBUTE into its own document, but also extended from there. commit cd495b535e02bc0bb8f000c7073115b1f13d9bca Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 09:55:38 2016 +0100 curl_sasl.c: minor code indent fixes commit 68fa9f65218613b7c387ae3a8ac5aa9e833a0910 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 09:44:14 2016 +0100 multi: simplified singlesocket Since sh_getentry() now checks for invalid sockets itself and by narrowing the scope of the remove_sock_from_hash variable. commit 2a0a6f75b130138f6109e844d3e19a9e54789b7d Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 14 09:18:01 2016 +0100 multi: introduce sh_getentry() for looking up sockets in the sockhash Simplify the code by using a single entry that looks for a socket in the socket hash. As indicated in #712, the code looked for CURL_SOCKET_BAD at some point and that is ineffective/wrong and this makes it easier to avoid that. commit c1abcd7c5d1142729fb3e465854ecf19a1ca8ede Author: Jaime Fullaondo <truthbk> Date: Sun Mar 13 01:19:20 2016 -0500 multi hash: ensure modulo performed on curl_socket_t Closes #712 commit 94f60e63c0ed7f45932a8c0ab8805b7ab8c44e76 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 17:59:06 2016 +0000 base64: Minor coding standard and style updates commit 648c401799adb0eb4b185aa37c74ae7057cd6b13 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 17:14:57 2016 +0000 base64: Use 'CURLcode result' for curl result codes commit e0cc669c632c707816efd01984b3c45c495600a1 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 17:09:58 2016 +0000 negotiate: Use 'CURLcode result' for curl result codes commit b1b4d79260ce9b7e05e7f63ca2a0f3ad1fae61a0 Author: Maksim Kuzevanov <m.kuzevanov@corp.mail.ru> Date: Mon Mar 7 19:37:49 2016 +0300 multi_runsingle: avoid loop in CURLM_STATE_WAITPROXYCONNECT Closes #703 commit 242e4316c15eaac7c7c4004bd8aaef87ca9403a6 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 13 11:01:53 2016 +0100 TODO: Use the RFC6265 test suite commit 58c65ef3dde2124972f652a86218b0ceb44015eb Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 13 01:01:33 2016 +0000 checksrc.bat: Added the ability to scan src and lib source independently commit 04026b49c318c08b5de3c73e41ef6392b58e3c07 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 12 17:25:15 2016 +0000 digest: Use boolean based success code for Curl_sasl_digest_get_pair() Rather than use a 0 and 1 integer base result code use a TRUE / FALSE based success code. commit 4c2b1e9792f1bb6ec7dd4dcafcd829b35ba53f56 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 12 13:20:03 2016 +0000 digest: Corrected some typos in comments commit c8ca9fbc8cca216536a58d664617f30c2a3e3bf6 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 12 11:59:52 2016 +0000 krb5: Corrected some typos in function descriptions commit 9dd5b95bf86e8dba8c185d166322b996578efacf Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 12 11:56:10 2016 +0000 ntlm: Corrected some typos in function descriptions commit 1bfdc6a353765dd8fdd735786c5d60d73ac74842 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Mar 11 07:46:09 2016 +0000 url: Corrected indentation when calling idna_to_ascii_lz() commit d5116130730dcaf230a61541db176f175acf03ea Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Mar 11 07:24:39 2016 +0000 idn_win32: Use boolean based success codes Rather than use 0 and 1 integer base result codes use a FALSE / TRUE based success code. commit 975bb866a552d7f84fe00c037f8d3f018fb1dcbc Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 23:32:45 2016 +0100 idn_win32.c: warning: Trailing whitespace commit dc537626ef19e783ed83093077250c95a0bcf553 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Mar 10 21:52:09 2016 +0000 idn_win32.c: Fixed compilation warning from commit 9e7fcd4291 warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data commit 7063d11710fcd71ca0ae896c0583fef7533ac8a9 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 14:10:05 2016 +0100 THANKS-filter: unify Michael König commit 0f434acf7dac7729ebf675c479e2ef23f40d7e28 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 14:09:44 2016 +0100 RELEASE-NOTES: synced with 863c5766dd commit 0fc627c5c6ebe4b5a59aa342d0e0364689f1d0e3 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 13:52:22 2016 +0100 ftp: remove a check for NULL(!) ... as it implies we need to check for that on all the other variable references as well (as Coverity otherwise warns us for missing NULL checks), and we're alredy making sure that the pointer is never NULL. commit 1a43881c8d1eb811531639a63f919aeeebf1cf86 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 11:20:56 2016 +0100 cookies: first n/v pair in Set-Cookie: is the cookie, then parameters RFC 6265 section 4.1.1 spells out that the first name/value pair in the header is the actual cookie name and content, while the following are the parameters. libcurl previously had a more liberal approach which causes significant problems when introducing new cookie parameters, like the suggested new cookie priority draft. The previous logic read all n/v pairs from left-to-right and the first name used that wassn't a known parameter name would be used as the cookie name, thus accepting "Set-Cookie: Max-Age=2; person=daniel" to be a cookie named 'person' while an RFC 6265 compliant parser should consider that to be a cookie named 'Max-Age' with an (unknown) parameter 'person'. Fixes #709 commit 0742160bf3cabebce89f508cde4a46f2b5f45349 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 10:40:10 2016 +0100 krb5: improved type handling to avoid clang compiler warnings commit 261dd3d5ff81ce2ec61896f51255928ec7c8586d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 10 09:36:49 2016 +0100 url.c: fix clang warning: no newline at end of file commit e70924910ba08fda3e8bf2945705b33689614ba4 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 9 10:57:42 2016 +0100 curl_multi_wait: never return -1 in 'numfds' Such a return value isn't documented but could still happen, and the curl tool code checks for it. It would happen when the underlying Curl_poll() function returns an error. Starting now we mask that error as a user of curl_multi_wait() would have no way to handle it anyway. Reported-by: Jay Satiro Closes #707 commit afe68b697bb3115d00e9a6e1281a3b96eebd1d9d Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 9 11:09:39 2016 +0100 HTTP2.md: add CURL_HTTP_VERSION_2TLS and updated alt-svc link commit 91d8d0c5cab418fd694057d34859afdc7d27025a Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Mar 9 08:35:17 2016 +0100 curl_multi_wait.3: add example commit dca0868397dd35197c9118fb7c8f56608a55e4b7 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 5 20:10:11 2016 +0000 imap/pop3/smtp: Fixed connections upgraded with TLS are not reused Regression since commit 710f14edba. Bug: https://github.com/curl/curl/issues/422 Reported-by: Justin Ehlert commit c3a313755990a80d38b56df2a7748cb9c07780fe Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Mar 8 13:23:35 2016 -0500 opt-docs: fix heading macros ..SH should be .SH Bug: https://github.com/curl/curl/issues/705 Reported-by: Eric S. Raymond commit d6a8405eb4b5df826c0f4cc230ec01546e69d58c Author: Tim Rühsen <tim.ruehsen@gmx.de> Date: Wed Mar 2 11:07:16 2016 +0100 cookie: do not refuse cookies for localhost Closes #658 commit bdf868a00570e5eaeb76877b3500d93c6b65062d Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 8 00:07:14 2016 +0100 ftp_done: clear tunnel_state when secondary socket closes Introducing a function for closing the secondary connection to make this bug less likely to happen again. Reported-by: daboul Closes #701 commit 59d712a6ba393c5b3444eb63476cd10dc3f93a7e Author: Gisle Vanem <gvanem@yahoo.no> Date: Tue Mar 8 14:19:01 2016 +0100 openssl: use the correct OpenSSL/BoringSSL/LibreSSL in messages commit 90f7ec25f6ea1cdde55f233da3fb48b5087b0c98 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 8 08:15:47 2016 +0100 HTTP2.md: HTTP/2 by default for curl's HTTPS connections commit e1d61661fb4e187c9721a408fb5d483dbfd5aa70 Author: Anders Bakken <agbakken@gmail.com> Date: Mon Mar 7 11:38:26 2016 -0800 pipeline: Sanity check pipeline pointer before accessing it. I got a crash with this stack: curl/lib/url.c:2873 (Curl_removeHandleFromPipeline) curl/lib/url.c:2919 (Curl_getoff_all_pipelines) curl/lib/multi.c:561 (curl_multi_remove_handle) curl/lib/url.c:415 (Curl_close) curl/lib/easy.c:859 (curl_easy_cleanup) Closes #704 commit bd71d19e326dfbc58645776cd430a8ad3abb62e2 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Mar 8 00:02:52 2016 +0100 HTTP2.md: mention the disable ALPN and NPN options commit 3f7e59ce03413da07f1b8413b009646d37dfeafb Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 7 23:21:50 2016 +0100 TODO: 17.12 keep running, read instructions from pipe/socket And delete trailing whitespace And rename section 17 to "command line tool" from "client" Closes #702 commit 8e8e7d024c37c171769c480225ac59ec39691b65 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 7 11:09:56 2016 +0100 README.md: linkified It also makes it less readable as plain text, so let's keep this primarily for github use. Removed the top ascii art logo, as it looks weird when markdownified. commit 7604eba37e4820849eaa15aba88c5021bf12a593 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Mar 7 11:03:55 2016 +0100 README.md: markdown version of README Attempt to make it look more appealing on github commit c0ff90cfed06049907eda8210533715807c664bb Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun Mar 6 22:57:47 2016 -0500 mprintf: update trio project link commit 044de1e2393903e7cdf05af3d269178b791775b9 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 23:33:18 2016 +0100 CURLOPT_ACCEPTTIMEOUT_MS.3: added example commit 4e7ca7a573481e76497ad34b6463a6c1099477db Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 23:30:42 2016 +0100 CURLOPT_ACCEPT_ENCODING.3: added example commit 0e527066850cc05bbf46e60e71965f1c4bffb468 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 23:28:35 2016 +0100 CURLOPT_APPEND.3: added example commit e7ca7027f7960d02fd800e9ea9cd93d6ce16c4c2 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 23:14:02 2016 +0100 CURLOPT_NOPROGRESS.3: added example, conform to stardard style commit 420f9ab15de55c7f4181f72758d704670a2a5ad3 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Mar 6 20:02:58 2016 +0000 build-openssl/checksrc.bat: Fixed prepend vs append of Perl path Fixed inconsistency from commit 1eae114065 and 0ad6c72227 of the order in which Perl was added to the PATH. commit f60248c5738d003bd95de4b7aaf17da858b8f97c Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 17:42:37 2016 +0100 opts: added two examples commit 01f0062184a803f22fe3302d071082f0c499f57e Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 17:20:16 2016 +0100 CURLOPT_SSL_CTX_FUNCTION.3: use .NF for example commit b12622568275d33e7b3e918c7320dfa090e59207 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 16:58:34 2016 +0100 CURLOPT_SSL_CTX_FUNCTION.3: added example and removed erroneous reference to test case lib509 commit 9897fe880dee3ac0cc0630bc575ccd4cfc58551b Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 16:54:58 2016 +0100 curlx.c: use more curl style code commit 5f54ecfdf2992c6af75a3789b5343eb20df00ccd Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Mar 6 16:22:49 2016 +0100 test46: change cookie expiry date Since two of the cookies would now otherwise expire and cause the test to fail after commit 20de9b4f09 Discussed in #697 commit 6d798e285f5033f017909360f8e3bef29c1854e1 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Mar 2 03:25:22 2016 +0100 makefile.m32: add missing libs for static -winssl-ssh2 builds Bug: https://github.com/curl/curl/pull/693 commit 6df5611f0512f7434e7665d28774dc06f535e62c Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Mar 5 21:35:16 2016 -0500 mbedtls: fix user-specified SSL protocol version Prior to this change when a single protocol CURL_SSLVERSION_ was specified by the user that version was set only as the minimum version but not as the maximum version as well. commit 50691d7d2f4f00fe38e97362000f875dea64d501 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 5 21:49:09 2016 +0000 .gitignore: Added *.VC.opendb and *.vcxproj.user files for VC14 commit 88cfe803c4957b0b1801c3743939f243164fb686 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 5 21:04:43 2016 +0000 build-openssl.bat: Fixed cannot find perl if installed but not in path commit eedf9448f71aae82bf796dbc20d6572dacdb06db Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Mar 5 21:03:40 2016 +0000 checksrc.bat: Fixed cannot find perl if installed but not in path commit 339edf23c259006b04316740e1c826477925b05d Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Mar 2 03:00:37 2016 +0100 makefile.m32: fix to allow -ssh2-winssl combination In makefile.m32, option -ssh2 (libssh2) automatically implied -ssl (OpenSSL) option, with no way to override it with -winssl. Since both libssh2 and curl support using Windows's built-in SSL backend, modify the logic to allow that combination. commit 080cb75f47ee7ca55955cb739e32a616fae4d3f7 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Mar 5 13:35:17 2016 -0500 cookie: Don't expire session cookies in remove_expired Prior to this change cookies with an expiry date that failed parsing and were converted to session cookies could be purged in remove_expired. Bug: https://github.com/curl/curl/issues/697 Reported-by: Seth Mos commit 28c4b369275752756a5f1ad0c618cdc2e3427dcc Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Mar 3 21:14:36 2016 +0100 cookie: remove redundant check ... as it was already checked previously within the function. Reported-by: Dmitry-Me Closes #695 commit 9f80db2f0ac2bb64c10bc6407c22dddc25c8d8d0 Author: Anders Bakken <agbakken@gmail.com> Date: Tue Mar 1 14:52:38 2016 -0800 url: if Curl_done is premature then pipeline not in use Prevent a crash if 2 (or more) requests are made to the same host and pipelining is enabled and the connection does not complete. Bug: https://github.com/curl/curl/pull/690 commit 09ac972e7cd3ccddaf54ba971152e61982fa659a Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Tue Mar 1 20:50:13 2016 +0100 makefile.m32: allow to pass .dll/.exe-specific LDFLAGS using envvars `CURL_LDFLAG_EXTRAS_DLL` and `CURL_LDFLAG_EXTRAS_EXE` respectively. This is useful f.e. to pass ASLR-related extra options, that are required to make this feature work when using the mingw toolchain. Ref: https://github.com/curl/curl/pull/670#issuecomment-190863985 Closes https://github.com/curl/curl/pull/689 commit aba34046974210502af4f9d686d032648a7f9a87 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 29 20:32:08 2016 +0100 formpost: fix memory leaks in AddFormData error branches Reported-by: Dmitry-Me Fixes #688 commit 82b25ce35cee69eb689873846f1bde5512c4baf2 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun Feb 28 16:05:38 2016 -0500 getinfo: Fix syntax error when mbedTLS The assignment of the mbedTLS TLS session info in the parent commit was incorrect. Change the assignment to a pointer to the session structure. commit cfef9d130d6e7bed56628c211ab863dbf43bd833 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Feb 27 19:01:00 2016 -0500 getinfo: Add support for mbedTLS TLS session info .. and preprocessor check TLS session info is defined for all backends. commit eba7f1bd7c9273ed4b1888422374d36df5784aa0 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Feb 26 13:02:34 2016 +0100 ROADMAP: clarify on the TLS proxy, mention HTTP cookies to work on commit cb3de43c086c757ce2cd1623852a071ed919ef43 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 25 23:45:17 2016 +0100 file: try reading from files with no size Some systems have special files that report as 0 bytes big, but still contain data that can be read (for example /proc/cpuinfo on Linux). Starting now, a zero byte size is considered "unknown" size and will be read as far as possible anyway. Reported-by: Jesse Tan Closes #681 commit 1065498cc7a489d34f315e27e6a13c23210a65e8 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Feb 25 01:55:38 2016 -0500 configure: warn on invalid ca bundle or path - Warn if --with-ca-bundle file does not exist. - Warn if --with-ca-path directory does not contain certificates. - Improve help messages for both. Example configure output: ca cert bundle: /some/file (warning: certs not found) ca cert path: /some/dir (warning: certs not found) Bug: https://github.com/curl/curl/issues/404 Reported-by: Jeffrey Walton commit 3138068c9a96f2bacde651750c44b38270515f5c Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 24 13:47:57 2016 +0100 Curl_read: check for activated HTTP/1 pipelining, not only requested ... as when pipelining is used, we read things into a unified buffer and we don't do that with HTTP/2. This could then easily make programs that set CURLMOPT_PIPELINING = CURLPIPE_HTTP1|CURLPIPE_MULTIPLEX to get data intermixed or plain broken between HTTP/2 streams. Reported-by: Anders Bakken commit cd68994bf0455f927e330c2c8af84b2ef8053764 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Wed Feb 24 13:19:10 2016 +0100 os400: Fix ILE/RPG definition of CURLOPT_TFTP_NO_OPTIONS commit 12b270a314ca63e2942ad95152d56b2f62e36f20 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Feb 23 19:03:03 2016 -0500 getinfo: CURLINFO_TLS_SSL_PTR supersedes CURLINFO_TLS_SESSION The two options are almost the same, except in the case of OpenSSL: CURLINFO_TLS_SESSION OpenSSL session internals is SSL_CTX *. CURLINFO_TLS_SSL_PTR OpenSSL session internals is SSL *. For backwards compatibility we couldn't modify CURLINFO_TLS_SESSION to return an SSL pointer for OpenSSL. Also, add support for the 'internals' member to point to SSL object for the other backends axTLS, PolarSSL, Secure Channel, Secure Transport and wolfSSL. Bug: https://github.com/curl/curl/issues/234 Reported-by: dkjjr89@users.noreply.github.com Bug: https://curl.haxx.se/mail/lib-2015-09/0127.html Reported-by: Michael König commit be6d6051b56dde67a212f682704457a27eb9f2eb Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Feb 23 13:05:41 2016 +0100 multi_remove_handle: keep the timeout list until after disconnect The internal Curl_done() function uses Curl_expire() at times and that uses the timeout list. Better clean up the list once we're done using it. This caused a segfault. Reported-by: 蔡文凱 Bug: https://curl.haxx.se/mail/lib-2016-02/0097.html commit 60acecbd7c2b8e592d1656f76f5fceb89119553c Author: Kamil Dudka <kdudka@redhat.com> Date: Tue Feb 23 10:31:52 2016 +0100 tests/sshserver.pl: use RSA instead of DSA for host auth DSA is no longer supported by OpenSSH 7.0, which causes all SCP/SFTP test cases to be skipped. Using RSA for host authentication works with both old and new versions of OpenSSH. Reported-by: Karlson2k Closes #676 commit 2b2dadf79ba230d930b12a9322d29ea780bb456e Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Aug 24 00:15:01 2015 -0400 TFTP: add option to suppress TFTP option requests (Part 2) - Add tests. - Add an example to CURLOPT_TFTP_NO_OPTIONS.3. - Add --tftp-no-options to expose CURLOPT_TFTP_NO_OPTIONS. Bug: https://github.com/curl/curl/issues/481 commit bf508d4dc842efe9cb4bf104b66ff3ef01c58016 Author: Michael Koenig <michael.koenig@lancom.de> Date: Mon Aug 17 17:54:47 2015 +0200 TFTP: add option to suppress TFTP option requests (Part 1) Some TFTP server implementations ignore the "TFTP Option extension" (RFC 1782-1784, 2347-2349), or implement it in a flawed way, causing problems with libcurl. Another switch for curl_easy_setopt "CURLOPT_TFTP_NO_OPTIONS" is introduced which prevents libcurl from sending TFTP option requests to a server, avoiding many problems caused by faulty implementations. Bug: https://github.com/curl/curl/issues/481 commit edb3ffc2451118b393ac24ab957f81b328828426 Author: Karlson2k <k2k@narod.ru> Date: Sun Feb 21 15:48:10 2016 +0300 runtests: Fixed usage of %PWD on MinGW64 Closes #672 commit f30ca72815ff468a2216f43d289b81d52cb2d66d Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Feb 20 16:23:05 2016 -0500 CURLOPT_DEBUGFUNCTION.3: Fix example commit 0f5ec91825aaabcb9574f2d5dbc13bd4a21a90fd Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Sat Feb 20 20:21:48 2016 +0100 src/Makefile.m32: add CURL_{LD,C}FLAGS_EXTRAS support Sync with lib/Makefile.m32 which already uses those variables. Bug: https://github.com/curl/curl/pull/670 commit e8372aec88d698c0c1fab9cc67017b766f06ffb6 Author: Dan Fandrich <dan@coneharvesters.com> Date: Sat Feb 20 11:34:15 2016 +0100 Enabled test 1437 after the bug fix in commit 3fa220a6 commit c66546bcf8a345f42b3479a2b2bc5cee9a41551c Author: Emil Lerner <neex.emil@gmail.com> Date: Fri Feb 19 03:47:27 2016 +0300 curl_sasl: Fix memory leak in digest parser If any parameter in a HTTP DIGEST challenge message is present multiple times, memory allocated for all but the last entry should be freed. Bug: https://github.com/curl/curl/pull/667 commit d6ee6348978cd97c0b399d58cf693d5e7558f776 Author: Dan Fandrich <dan@coneharvesters.com> Date: Fri Feb 19 10:45:09 2016 +0100 Added test 1437 to verify a memory leak Reported-by: neex@users.noreply.github.com commit f4d38977c6546b43c26b24173ea847624deed191 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Feb 18 21:07:57 2016 -0500 CURLOPT_COOKIEFILE.3: HTTP headers must be Set-Cookie style Bug: https://github.com/curl/curl/issues/666 Reported-by: baumanj@users.noreply.github.com commit 3b243fadac3ce474eca7d07b461bae6d5d2490b5 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Feb 18 19:01:19 2016 -0500 curl.1: HTTP headers for --cookie must be Set-Cookie style Bug: https://github.com/curl/curl/issues/666 Reported-by: baumanj@users.noreply.github.com commit 9791519110406d7b2bdfbd683ad576da1af4d0d9 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 18 15:32:00 2016 +0100 curl.1: add a missing dash commit 47c1b8fec3ed0ea5b330cc0543130d22c8247842 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 18 11:59:17 2016 +0100 CONTRIBUTING.md: fix links commit 2e13b9b979786e53caa9a9a24f5325a713b4f8df Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 18 11:55:59 2016 +0100 ISSUE_TEMPLATE: github issue template First version, try this out! commit 72c8a40c9d1ac5b245e24712c5a2e5ffc80013bb Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 18 11:52:25 2016 +0100 CONTRIBUTING.md: move into .github To hide github specific files somewhat from the rest. commit dfa9ac6572012d7545148205e0a746daf445655a Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 18 09:14:48 2016 +0100 opts: add references commit 4ebd3e04d69ac9f6be7cd7736651a20ea4b16fc8 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 15:01:38 2016 +0100 examples/make: add 'checksrc' target commit d7dde7ce719d0469ea020a6d4e63b85a4642dd7b Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 15:01:21 2016 +0100 10-at-a-time: typecast the argument passed to sleep() commit 855056a3880b8e59c29524e1df1aeedd30cfde84 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 15:00:54 2016 +0100 externalsocket.c: fix compiler warning for fwrite return type commit b30972b7d881f91e3fa1fc9c7cc86f9c4b664562 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 15:00:34 2016 +0100 anyauthput.c: fix compiler warnings commit c63243e629771d37269396b896a4e655d2a0a32b Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 15:00:18 2016 +0100 simplessl.c: warning: while with space commit 112e33f8329cf5f0cbd62c4c13b442119425c9ad Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 14:51:31 2016 +0100 curlx.c: i2s_ASN1_IA5STRING() clashes with an openssl function Reported-By: Gisle Vanem commit 4ea06572ad3daa7c68898eb9564ea2a684a6200c Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 17 08:25:40 2016 +0100 http2: don't decompress gzip decoding automatically At one point during the development of HTTP/2, the commit 133cdd29ea0 introduced automatic decompression of Content-Encoding as that was what the spec said then. Now however, HTTP/2 should work the same way as HTTP/1 in this regard. Reported-by: Kazuho Oku Closes #661 commit ec28ae2e6b3be8edaaf2677bdb449ff635865439 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Tue Feb 16 14:44:57 2016 -0500 http: Don't break the header into chunks if HTTP/2 nghttp2 callback deals with TLS layer and therefore the header does not need to be broken into chunks. Bug: https://github.com/curl/curl/issues/659 Reported-by: Kazuho Oku commit f6ff9bff450380e123169cba899484b2628d757c Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Tue Feb 16 00:22:54 2016 +0100 openssl: use macro to guard the opaque EVP_PKEY branch commit 673aa5dc534f7f2d7b2e004b10b5882428621191 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Sat Feb 13 17:09:12 2016 +0100 openssl: avoid direct PKEY access with OpenSSL 1.1.0 by using API instead of accessing an internal structure. This is required starting OpenSSL 1.1.0-pre3. Closes #650 commit 9b8c9669a4287b5bb7d17181a9e2bcabbbe6937d Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 15 10:20:05 2016 +0100 RELEASE-NOTES: synced with ede0bfc079da commit ffb466eb55b666ba333ad4dc2f7253d828720aa1 Author: Clint Clayton <clintclayton@me.com> Date: Sun Feb 14 13:22:19 2016 -0800 CURLOPT_CONNECTTIMEOUT_MS.3: Fix example to use milliseconds option Change the example in the docs for CURLOPT_CONNECTTIMEOUT_MS to use CURLOPT_CONNECTTIMEOUT_MS instead of CURLOPT_CONNECTTIMEOUT. Closes #653 commit da2ddee7be65bc6272d6fe33aa1c7b2dbb3b54c0 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Feb 14 15:54:47 2016 +0100 opt-docs: add more references commit beaa0a1c33f200f9937453bc802e069ff16d4689 Author: David Byron <dbyron@dbyron.com> Date: Mon Jul 20 20:27:12 2015 -0700 SCP: use libssh2_scp_recv2 to support > 2GB files on windows libssh2_scp_recv2 is introduced in libssh2 1.7.0 - to be released "any day now. Closes #451 commit 6b6ad72f7ea4f19e45621777a88ec656e2af5c20 Author: Shine Fan <sfanxiang@gmail.com> Date: Sun Feb 14 10:54:45 2016 +0800 gtls: fix for builds lacking encrypted key file support Bug: https://github.com/curl/curl/pull/651 commit 6170f24cecd10cb382a95fc570641ba65118ca75 Author: Dan Fandrich <dan@coneharvesters.com> Date: Sat Feb 13 22:49:45 2016 +0100 test1604: Add to Makefile.inc so it gets run commit ea67d15628be36a91ec482dafd006821fcadf4e7 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Feb 12 23:48:54 2016 -0500 generate.bat: Fix comment bug by removing old comments Remove NOTES section, it's no longer needed since we aren't setting the errorlevel and more importantly the recently updated URL in the comments is causing some unusual behavior that breaks the script. Closes https://github.com/curl/curl/issues/649 commit 341ccbd17920d0fdfb2af4655e04a366b0db9b75 Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Feb 12 18:39:57 2016 +0100 curl.1: --disable-{eprt,epsv} are ignored for IPv6 hosts The behavior has been clarified in CURLOPT_FTP_USE_{EPRT,EPSV}.3 man pages since curl-7_12_3~131. This patch makes it clear in the curl.1 man page, too. Bug: https://bugzilla.redhat.com/1305970 commit 674026043bc97a7d8d789ad52c7192948f26e07a Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Feb 12 16:45:25 2016 +0100 dist: ship buildconf.bat too As the winbuild/* stuff uses it! commit be7c14e96a9ff5619f9cf8d8edec873a8a86da51 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 11 23:52:43 2016 +0100 curlx_tvdiff: handle 32bit time_t overflows On 32bit systems, make sure we don't overflow and return funky values for very large time differences. Reported-by: Anders Bakken Closes #646 commit 85c993d28afc125cf2016414bd7694d9c39b00f7 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 11 10:21:09 2016 +0100 examples: fix some compiler warnings commit 67a2f86ac1777d61a37a5691302247a152dd24e9 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 11 10:20:48 2016 +0100 simplessl.c: fix my breakage commit 7b4f3bc764248120e5c3e9e21e034bdbef625711 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 11 09:42:38 2016 +0100 examples: adhere to curl code style All plain C examples now (mostly) adhere to the curl code style. While they are only examples, they had diverted so much and contained all sorts of different mixed code styles by now. Having them use a unified style helps users and readability. Also, as they get copy-and-pasted widely by users, making sure they're clean and nice is a good idea. 573 checksrc warnings were addressed. commit d33f048b8e9b35a468dc12de276f6d013657227d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 11 08:44:59 2016 +0100 examples/cookie_interface.c: add cleanup call cleaning up handles is a good idea as we leak memory otherwise Also, line wrapped before 80 columns. commit 6a8918e27b30b199721b74952baa70c4a8d6c7aa Author: Kamil Dudka <kdudka@redhat.com> Date: Thu Feb 4 10:44:52 2016 +0100 nss: search slash in forward direction in dup_nickname() It is wasteful to search it backwards if we look for _any_ slash. commit ffed55c0d51eb6c81644a087841e9bc26022bfe5 Author: Kamil Dudka <kdudka@redhat.com> Date: Thu Feb 4 10:41:15 2016 +0100 nss: do not count enabled cipher-suites We only care if at least one cipher-suite is enabled, so it does not make any sense to iterate till the end and count all enabled cipher-suites. commit c5df98c27ed2c14f1b844b06dc9db32969be3330 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 10 13:49:42 2016 +0100 contributors.sh: make 79 the max column width (from 80) commit 76554f64a3e52a7cd684cb7e7ceca0a87613fe8c Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 10 13:49:34 2016 +0100 RELEASE-NOTES: synced with c276aefee3995 commit 5fa04394a61785e1c2ad29b8bc1b5ddf8d62082d Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 10 10:46:57 2016 +0100 mbedtls.c: re-indent to better match curl standards commit 469d5c4384a8435b51f91181824403b287ab3976 Author: Rafael Antonio <rafa@distrobit.net> Date: Mon Feb 1 23:13:10 2016 +0100 mbedtls: fix memory leak when destroying SSL connection data Closes #626 commit 8d124b3cc64aa30a69b981dc3967195a0c6f7ff6 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Feb 9 23:37:14 2016 +0100 mbedtls: fix ALPN usage segfault Since we didn't keep the input argument around after having called mbedtls, it could end up accessing the wrong memory when figuring out the ALPN protocols. Closes #642 commit 087b2ddd0d0d1e69f9425baafe14c89d4fbc821f Author: Timotej Lazar <timotej.lazar@araneo.org> Date: Tue Feb 9 19:40:24 2016 +0100 opts: update references to renamed options commit 2fa3dbd1c22131735ca564d0c9dc08c11ca5633c Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Feb 9 03:29:19 2016 -0500 KNOWN_BUGS: Update #92 - Windows device prefix commit baf37034e545c10c0b243351e9ba058e4aa2a05e Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Feb 9 03:28:58 2016 -0500 tool_doswin: Support for literal path prefix \\?\ For example something like --output \\?\C:\foo commit 0b874e3073056b8c255a2ed5932e9c6a20fd98c0 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Feb 9 08:44:26 2016 +0100 configure: state "BoringSSL" in summary when that was detected commit 4154752615503812418ab77444c4ab1f8e5c0f68 Author: David Benjamin <davidben@google.com> Date: Mon Feb 8 23:19:31 2016 -0500 openssl: remove most BoringSSL #ifdefs. As of https://boringssl-review.googlesource.com/#/c/6980/, almost all of BoringSSL #ifdefs in cURL should be unnecessary: - BoringSSL provides no-op stubs for compatibility which replaces most #ifdefs. - DES_set_odd_parity has been in BoringSSL for nearly a year now. Remove the compatibility codepath. - With a small tweak to an extend_key_56_to_64 call, the NTLM code builds fine. - Switch OCSP-related #ifdefs to the more generally useful OPENSSL_NO_OCSP. The only #ifdefs which remain are Curl_ossl_version and the #undefs to work around OpenSSL and wincrypt.h name conflicts. (BoringSSL leaves that to the consumer. The in-header workaround makes things sensitive to include order.) This change errs on the side of removing conditionals despite many of the restored codepaths being no-ops. (BoringSSL generally adds no-op compatibility stubs when possible. OPENSSL_VERSION_NUMBER #ifdefs are bad enough!) Closes #640 commit bb352d09969766de5d60b4e88700b44b70977ada Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Feb 8 17:40:53 2016 -0500 KNOWN_BUGS: Windows device prefix is required for devices commit 7f2c6e4f4ef550f6e94758e0d574878bd1e02819 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Feb 8 15:09:42 2016 -0500 tool_urlglob: Allow reserved dos device names (Windows) Allow --output to reserved dos device names without the device prefix for backwards compatibility. Example: --output NUL can be used instead of --output \\.\NUL Bug: https://github.com/curl/curl/commit/4520534#commitcomment-15954863 Reported-by: Gisle Vanem commit 9d7ebec355209da9bb0d4f37097f4f339a516926 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 8 15:48:18 2016 +0100 cookies: allow spaces in cookie names, cut of trailing spaces It turns out Firefox and Chrome both allow spaces in cookie names and there are sites out there using that. Turned out the code meant to strip off trailing space from cookie names didn't work. Fixed now. Test case 8 modified to verify both these changes. Closes #639 commit f2e87626570160bcfea7544a75245f2204af15f2 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Mon Feb 8 14:52:18 2016 +0100 Merge branch 'master' of github.com:curl/curl commit 50f25b380bdf92d511f97d0092312f6da2910be5 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Mon Feb 8 14:50:53 2016 +0100 os400: sync ILE/RPG definitions with latest public header files. commit 974a5f834eaad9ad91132f7375d7a5094009df59 Author: Ludwig Nussel <ludwig.nussel@suse.de> Date: Fri Mar 27 08:22:39 2015 +0100 SSLCERTS: update wrt SSL CA certificate store commit 0d60d51f39b820b4f7ea8957affec4f5e82ef2c5 Author: Ludwig Nussel <ludwig.nussel@suse.de> Date: Tue Mar 24 13:25:17 2015 +0100 configure: --with-ca-fallback: use built-in TLS CA fallback When trying to verify a peer without having any root CA certificates set, this makes libcurl use the TLS library's built in default as fallback. Closes #569 commit 0ff234fa1831def5cd84ccc18279f883bff5362e Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Feb 4 15:07:02 2016 +0100 Proxy-Connection: stop sending this header by default RFC 7230 says we should stop. Firefox already stopped. Bug: https://github.com/curl/curl/issues/633 Reported-By: Brad Fitzpatrick Closes #633 commit a7d419f41f1691ba3badaf9c1b60e7ff3cb60a4e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 8 10:47:44 2016 +0100 bump: work toward the next release commit 845793cb778b09e240730a4521ffde6906bc55fd Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 8 10:46:01 2016 +0100 THANKS: 2 contributors from the 7.47.1 release commit 5ad62dc5a1302e41fe1844f9492329b4e2ae00fa Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 8 10:35:35 2016 +0100 RELEASE-PROCEDURE: remove the github upload part ... as we're HTTPS on the main site now, there's no point in that extra step commit 4b73647e3d711c74954108a11ccec387f1647b20 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Feb 8 10:26:24 2016 +0100 RELEASE-NOTES: curl 7.47.1 time! commit 2bc89b12cca81ee64258eb2fc3dfd3d16f4e8cea Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun Feb 7 04:49:07 2016 -0500 tool_operhlp: Check for backslashes in get_url_file_name Extract the filename from the last slash or backslash. Prior to this change backslashes could be part of the filename. This change needed for the curl tool built for Cygwin. Refer to the CYGWIN addendum in advisory 20160127B. Bug: https://curl.haxx.se/docs/adv_20160127B.html commit 58e18c516b7af386564efe48dd0bb1c8a42d47a1 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Feb 7 16:20:23 2016 +0100 RELEASE-NOTES: synced with d6a8869ea34 commit 6363beb7d430cf6f9e4ca9a2a0a48c8cb13dcba7 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Feb 6 19:10:49 2016 -0500 openssl: Fix signed/unsigned mismatch warning in X509V3_ext sk_X509_EXTENSION_num may return an unsigned integer, however the value will fit in an int. Bug: https://github.com/curl/curl/commit/dd1b44c#commitcomment-15913896 Reported-by: Gisle Vanem commit c48c483baa2fdacaa2b3b965406c8c39dfb3447e Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Feb 7 00:27:28 2016 +0100 TODO: 17.11 -w output to stderr commit 1913b6ba97f4e36faaf430b5b1775587b707e1ca Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Fri Feb 5 21:15:43 2016 +0100 idn_win32: Better error checking .. also fix a conversion bug in the unused function curl_win32_ascii_to_idn(). And remove wprintfs on error (Jay). Bug: https://github.com/curl/curl/pull/637 commit 699d82b7961aad1f28db9c35a7e47f2b6d579a84 Author: Gisle Vanem <gvanem@yahoo.no> Date: Sat Feb 6 17:04:37 2016 -0500 examples/asiohiper: Avoid function name collision on Windows closesocket => close_socket Winsock already has the former. Bug: https://curl.haxx.se/mail/lib-2016-02/0016.html commit 3cb63adbc3cea42b242c1ccb2d2c2837ccafb108 Author: Gisle Vanem <gvanem@yahoo.no> Date: Sat Feb 6 17:02:53 2016 -0500 examples/htmltitle: Use _stricmp on Windows Bug: https://curl.haxx.se/mail/lib-2016-02/0017.html commit 3a964f7bea0bf78b83535587fd63085cb56d7bd1 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Feb 6 18:39:41 2016 +0100 COPYING: clarify that Daniel is not the sole author ... done on request and as it is a fair point. commit ffef98f6c7991b951f519a895f61dea3c3bad440 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Feb 5 13:37:39 2016 -0500 unit1604: Fix unit setup return code commit 658d7c7a171f089ffc762d9061a47e8a70ee85b3 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Feb 5 02:22:24 2016 -0500 tool_doswin: Use type SANITIZEcode in sanitize_file_name commit bbe29637ca748b3aad919d215065366b35bfea7b Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Feb 5 01:44:27 2016 -0500 tool_doswin: Improve sanitization processing - Add unit test 1604 to test the sanitize_file_name function. - Use -DCURL_STATICLIB when building libcurltool for unit testing. - Better detection of reserved DOS device names. - New flags to modify sanitize behavior: SANITIZE_ALLOW_COLONS: Allow colons SANITIZE_ALLOW_PATH: Allow path separators and colons SANITIZE_ALLOW_RESERVED: Allow reserved device names SANITIZE_ALLOW_TRUNCATE: Allow truncating a long filename - Restore sanitization of banned characters from user-specified outfile. Prior to this commit sanitization of a user-specified outfile was temporarily disabled in 2b6dadc because there was no way to allow path separators and colons through while replacing other banned characters. Now in such a case we call the sanitize function with SANITIZE_ALLOW_PATH which allows path separators and colons to pass through. Closes https://github.com/curl/curl/issues/624 Reported-by: Octavio Schroeder commit d4da5a13c7db99635d43da382306d11e1668f194 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Feb 3 05:09:25 2016 +0100 URLs: change more http to https commit 2853b9c2e3f0b329d42f1abbe5159e0a239968af Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Feb 4 18:11:07 2016 -0500 sasl_sspi: Fix memory leak in domain populate Free an existing domain before replacing it. Bug: https://github.com/curl/curl/issues/635 Reported-by: silveja1@users.noreply.github.com commit afc8cfe050e8d3e2bdeddfc117cdd9f21d020bc4 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Feb 3 18:34:16 2016 +0100 URLs: follow GitHub project rename (also Travis CI) Closes #632 commit 3ad6955cc31ca0f3d0a2964ee501cb66b4983e8d Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 3 15:33:47 2016 +0100 CHANGES.o: fix references to curl.haxx.nu I removed the scheme prefix from the URLs references this host name, as we don't own/run that anymore but the name is kept for historic reasons. commit d2f9a262c58ce3d37a9541680c04edc341fab787 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 3 15:33:30 2016 +0100 HISTORY: add some info about when we used which host names commit 1b976237e1cf9bc9eb5a1d657de51e017cf8a7c6 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Feb 3 04:16:52 2016 +0100 URLs: change more http to https commit bedff5714ee7b2a15777fa57b78e566abfc2dc1d Author: Dan Fandrich <dan@coneharvesters.com> Date: Wed Feb 3 01:45:21 2016 +0100 URLs: Change more haxx.se URLs from http: to https: commit 4b6a09c569055122a03852b43e16e30f41f40656 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 3 00:32:07 2016 +0100 RELEASE-NOTES: synced with 4af40b364 commit 5b4d9f8d0045a3338ea0f18bc961551bbc031926 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Feb 3 00:19:02 2016 +0100 URLs: change all http:// URLs to https:// commit bde00e6b15c55a08d2bba16974a1fa070e5c552a Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Feb 2 22:49:05 2016 +0100 configure: update the copyright year range in output commit dfec3b261232aed2c9268b1a5372e55269f21488 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Feb 2 22:43:54 2016 +0100 dotdot: allow an empty input string too It isn't used by the code in current conditions but for safety it seems sensible to at least not crash on such input. Extended unit test 1395 to verify this too as well as a plain "/" input. commit 08dbe9c9045a87986377c744a7621e279d4f75c3 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Feb 2 00:24:30 2016 +0100 HTTPS: update a bunch of URLs from HTTP to HTTPS commit 5f48bb7936e7cc2ff1e1170dbb7826c3b7dee93e Author: Sergei Nikulov <sergey.nikulov@gmail.com> Date: Thu Jan 28 15:57:28 2016 +0300 AppVeyor: updated to handle OpenSSL/WinSSL builds Closes #621 commit 3424174c2e6e9dbb085daa75a94123071dc393f5 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Feb 1 04:11:46 2016 -0500 tool_operate: Don't sanitize --output path (Windows) Due to path separators being incorrectly sanitized in --output pathnames, eg -o c:\foo => c__foo This is a partial revert of 3017d8a until I write a proper fix. The remote-name will continue to be sanitized, but if the user specified an --output with string replacement (#1, #2, etc) that data is unsanitized until I finish a fix. Bug: https://github.com/bagder/curl/issues/624 Reported-by: Octavio Schroeder commit fb19bdeaf42afe78926e75d8256793ca35165b13 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Jan 29 03:28:48 2016 -0500 curl.1: Explain remote-name behavior if file already exists .. also warn about letting the server pick the filename. commit 63d93011da45b428fdd4c003c173ef6361dc1143 Author: Gisle Vanem <gvanem@yahoo.no> Date: Fri Jan 29 00:11:41 2016 -0500 urldata: Error on missing SSL backend-specific connect info commit ebfd788ff65c75076ea5aac6b53011bc99a81390 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 28 16:36:29 2016 +0100 bump: towards the next (7.47.1 ?) commit df5c6e356c72ebe9c8d7b1f12c989bcda48fa498 Author: Sergei Nikulov <sergey.nikulov@gmail.com> Date: Wed Jan 27 15:22:39 2016 +0300 cmake: fixed when OpenSSL enabled on Windows and schannel detected Closes #617 commit ed0cc250f8e208f1005438900d357af1b2aeca80 Author: Sergei Nikulov <sergey.nikulov@gmail.com> Date: Wed Jan 27 16:01:05 2016 +0300 urldata: moved common variable out of ifdef Closes https://github.com/bagder/curl/pull/618 commit 0c0e3592d7ec19d672566a8d3fb1bde97417527f Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Wed Jan 27 11:04:18 2016 +0100 tool_doswin: silence unused function warning tool_doswin.c:185:14: warning: 'msdosify' defined but not used [-Wunused-function] Closes https://github.com/bagder/curl/pull/616 commit 677756e504437c12ea69954c2da20eb7cebfeccb Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jan 27 09:35:55 2016 +0100 getredirect.c: fix variable name Reported-by: Bernard Spil commit 86c11aa2dd0ea88afbadeff52c573bc19a046275 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jan 27 08:30:04 2016 +0100 examples/Makefile.inc: specify programs without .c! commit 05d79d22378c2b683c4ef5aaf38c905ad38633ad Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jan 26 23:45:02 2016 +0100 THANKS: 6 new contributors from 7.47.0 release notes commit ce81bb1e78fb21dd58cd4b367fd71014c4ea7f0f Author: Isaac Boukris <iboukris@gmail.com> Date: Wed Jan 13 11:05:51 2016 +0200 NTLM: Fix ConnectionExists to compare Proxy credentials Proxy NTLM authentication should compare credentials when re-using a connection similar to host authentication, as it authenticate the connection. Example: curl -v -x http://proxy:port http://host/ -U good_user:good_pwd --proxy-ntlm --next -x http://proxy:port http://host/ [-U fake_user:fake_pwd --proxy-ntlm] CVE-2016-0755 Bug: http://curl.haxx.se/docs/adv_20160127A.html commit d3af01e024bdcc697c857c8eb21b99913107ee9e Author: Ray Satiro <raysatiro@yahoo.com> Date: Tue Jan 26 23:23:15 2016 +0100 curl: avoid local drive traversal when saving file (Windows) curl does not sanitize colons in a remote file name that is used as the local file name. This may lead to a vulnerability on systems where the colon is a special path character. Currently Windows/DOS is the only OS where this vulnerability applies. CVE-2016-0754 Bug: http://curl.haxx.se/docs/adv_20160127B.html commit 2e01f7a7d3fb7f66240c25f05c1ab9d83934aa10 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jan 26 23:34:10 2016 +0100 RELEASE-NOTES: 7.47.0 commit a480955372a8b6307e97d22114abfc1d6abd7a13 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 25 11:11:29 2016 +0100 FAQ: language fix in 4.19 commit a1cb851c8c28a853319693c051670be880696be3 Author: paulehoffman <phoffman@proper.com> Date: Sun Jan 24 14:27:08 2016 -0800 FAQ: Update to point to GitHub Current FAQ didn't make it clear where the main repo is. Closes #612 commit 583a9ca03dac1771fadba4c0041f9bd6b78e24c5 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jan 24 20:30:07 2016 +0100 maketgz: generate date stamp with LC_TIME=C bug: http://curl.haxx.se/mail/lib-2016-01/0123.html commit fcfb09419162cdcbeaca17f3615761a98fc8b89a Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jan 24 20:29:51 2016 +0100 curl_multi_socket_action.3: line wrap commit 12569259c9e072fc04d4b10bae16ccf118d6494b Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 21 23:57:52 2016 +0100 RELEASE-NOTES: synced with d58ba66eeceb commit 0e96a35977a630699563d6796fa5572e21cbc5e0 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Jan 21 21:05:55 2016 +0000 TODO: "Create remote directories" for SMB commit 963539de7e8436a11e41b90f6779b0cceb7926eb Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Jan 18 03:48:10 2016 -0500 mbedtls: Fix pinned key return value on fail - Switch from verifying a pinned public key in a callback during the certificate verification to inline after the certificate verification. The callback method had three problems: 1. If a pinned public key didn't match, CURLE_SSL_PINNEDPUBKEYNOTMATCH was not returned. 2. If peer certificate verification was disabled the pinned key verification did not take place as it should. 3. (related to #2) If there was no certificate of depth 0 the callback would not have checked the pinned public key. Though all those problems could have been fixed it would have made the code more complex. Instead we now verify inline after the certificate verification in mbedtls_connect_step2. Ref: http://curl.haxx.se/mail/lib-2016-01/0047.html Ref: https://github.com/bagder/curl/pull/601 commit 3bd595dbe448bef3f3c2b50e8c246fc37cfc3aba Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Jan 18 03:10:10 2016 -0500 tests: Add a test for pinnedpubkey fail even when insecure Because disabling the peer verification (--insecure) must not disable the public key pinning check (--pinnedpubkey). commit f4ceb337b69527a44446e2dd502b24840eeadafe Author: Daniel Schauenberg <d@unwiredcouch.com> Date: Sat Jan 16 23:04:46 2016 -0500 CURLINFO_RESPONSE_CODE.3: add example commit 9ec42dde248f4d6abc2f6c4683a7522bbc0253c3 Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Jan 15 10:27:33 2016 +0100 ssh: make CURLOPT_SSH_PUBLIC_KEYFILE treat "" as NULL The CURLOPT_SSH_PUBLIC_KEYFILE option has been documented to handle empty strings specially since curl-7_25_0-31-g05a443a but the behavior was unintentionally removed in curl-7_38_0-47-gfa7d04f. This commit restores the original behavior and clarifies it in the documentation that NULL and "" have both the same meaning when passed to CURLOPT_SSH_PUBLIC_KEYFILE. Bug: http://curl.haxx.se/mail/lib-2016-01/0072.html commit 2278ccb3816b84cbed3c3cedcd89c3ac8108a5af Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 14 22:09:09 2016 +0100 RELEASE-NOTES: synced with 35083ca60ed035a commit d7ea1c01ed838c78f90d48e988b0f49761f1706f Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 14 21:25:30 2016 +0100 openssl: improved error detection/reporting ... by extracting the LIB + REASON from the OpenSSL error code. OpenSSL 1.1.0+ returned a new func number of another cerfificate fail so this required a fix and this is the better way to catch this error anyway. commit fa7b7ff986cb6f3f87e691229dff92816b5708fa Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 14 16:38:14 2016 +0100 openssl: for 1.1.0+ they now provide a SSLeay() macro of their own commit dc96a5d086253b4231c860800d80545594d67a95 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jan 13 09:11:12 2016 +0100 CURLOPT_RESOLVE.3: minor language polish commit bdafd7cc1b6866d4c27faa4ecbb53b6b7aa2dee0 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jan 12 10:30:54 2016 +0100 configure: assume IPv6 works when cross-compiled The configure test uses AC_TRY_RUN to figure out if an ipv6 socket works, and testing like that doesn't work for cross-compiles. These days IPv6 support is widespread so a blind guess is probably more likely to be 'yes' than 'no' now. Further: anyone who cross-compiles can use configure's --disable-ipv6 to explicitly disable IPv6 and that also works for cross-compiles. Made happen after discussions in issue #594 commit 87693106c8a809fcb88df8b5f0e51b6020077307 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jan 12 00:03:05 2016 +0100 TODO: "Try to URL encode given URL" Closes #514 commit 9dd674247d7e55ce1fe0c6d501a03398b7c5989b Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jan 10 01:00:06 2016 +0100 ConnectionExists: only do pipelining/multiplexing when asked When an HTTP/2 upgrade request fails (no protocol switch), it would previously detect that as still possible to pipeline on (which is acorrect) and do that when PIPEWAIT was enabled even if pipelining was not explictily enabled. It should only pipelined if explicitly asked to. Closes #584 commit 5fbb57c6d1291156237a7094589f27a988c56696 Author: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com> Date: Sat Jan 9 00:50:38 2016 +0200 lib: Prefix URLs with lower-case protocol names/schemes Before this patch, if a URL does not start with the protocol name/scheme, effective URLs would be prefixed with upper-case protocol names/schemes. This behavior might not be expected by library users or end users. For example, if `CURLOPT_DEFAULT_PROTOCOL` is set to "https". And the URL is "hostname/path". The effective URL would be "HTTPS://hostname/path" instead of "https://hostname/path". After this patch, effective URLs would be prefixed with a lower-case protocol name/scheme. Closes #597 Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com> commit 89aea068cd9e89267114112d0f33c6cc1d15b8b7 Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Mon Jan 11 22:22:25 2016 +0000 scripts: don't generate and install zsh completion when cross-compiling commit 5b0b98a2ce4174029639bb1a46bc021a968b4565 Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Sun Dec 27 18:08:53 2015 +0100 scripts: fix zsh completion generation The script should use the just-built curl, not the system one. This fixes zsh completion generation when no system curl is installed. commit 45ee4a8492c7608688fb7f2650f75654dde2dbc9 Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Sun Dec 27 18:12:46 2015 +0100 zsh.pl: fail if no curl is found Instead of generation a broken completion file. commit 13fd15e10b371cea0bb94d31748896fa9b3595cc Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Fri Jan 8 14:54:56 2016 +0100 IDN host names: Remove the port number before converting to ACE Closes #596 commit 2f1ed732c709e71193b3a5876506f7396d2e994e Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun Jan 10 02:56:26 2016 -0500 runtests: Add mbedTLS to the SSL backends .. and enable SSLpinning tests for mbedTLS, BoringSSL and LibreSSL. commit b854bdd654a58b897cd04bae0f171f14f362f41f Author: Thomas Glanzmann <thomas@glanzmann.de> Date: Wed Jan 6 07:00:11 2016 +0100 mbedtls: implement CURLOPT_PINNEDPUBLICKEY commit 92e53836b4cd6a1d1ab0d41518826a7a93b92754 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Jan 9 09:51:05 2016 +0900 url: Fix compile error with --enable-werror commit 3178923f6437c068eb90da40e347e8d609154ef3 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Thu Jan 7 22:10:09 2016 +0900 http2: Ensure that http2_handle_stream_close is called Previously, when HTTP/2 is enabled and used, and stream has content length known, Curl_read was not called when there was no bytes left to read. Because of this, we could not make sure that http2_handle_stream_close was called for every stream. Since we use http2_handle_stream_close to emit trailer fields, they were effectively ignored. This commit changes the code so that Curl_read is called even if no bytes left to read, to ensure that http2_handle_stream_close is called for every stream. Discussed in https://github.com/bagder/curl/pull/564 commit 5b73942054a7b3d3724719e75a46961bcbcebfc9 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Jan 8 23:06:59 2016 +0100 http2: handle the received SETTINGS frame This regression landed in 5778e6f5 and made libcurl not act on received settings and instead stayed with its internal defaults. Bug: http://curl.haxx.se/mail/lib-2016-01/0031.html Reported-by: Bankde commit bcd69738bfb0b6cb95e0881d1afb99e89a39199b Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Jan 8 14:39:54 2016 +0100 Revert "multiplex: allow only once HTTP/2 is actually used" This reverts commit 46cb70e9fa81c9a56de484cdd7c5d9d0d9fbec36. Bug: http://curl.haxx.se/mail/lib-2016-01/0031.html commit 52cd1daf4d0c629d9771805e7ac41e6e4dbfb99f Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Fri Jan 8 03:04:19 2016 -0500 http2: Fix PUSH_PROMISE headers being treated as trailers Discussed in https://github.com/bagder/curl/pull/564 commit a79f1614c52370ab8e86b209208b95d3f6687a32 Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Thu Jan 7 18:00:00 2016 +0100 connection reuse: IDN host names fixed Use the ACE form of IDN hostnames as key in the connection cache. Add new tests. Closes #592 commit 07f374e2057b28218efadf9979c5ad1ddd7d0bdf Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 7 13:48:05 2016 +0100 tests: mark IPv6 FTP and FTPS tests with the FTP keyword commit 5d09ca3b4f07ff56e3abdff10386bd8722fcb6d4 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Jan 7 01:49:31 2016 -0500 mbedtls: Fix ALPN support - Fix ALPN reply detection. - Wrap nghttp2 code in ifdef USE_NGHTTP2. Prior to this change ALPN and HTTP/2 did not work properly in mbedTLS. commit 68e5fb4bc7cae81a0aef927fe5037ad0ac211f83 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Jan 6 22:10:49 2016 -0500 http2: Fix client write for trailers on stream close Check that the trailer buffer exists before attempting a client write for trailers on stream close. Refer to comments in https://github.com/bagder/curl/pull/564 commit 18b1de456410f7e2951b5968308d8c7a484a2f7f Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jan 7 00:11:16 2016 +0100 COPYING: update general copyright year range commit 417ed4152930bd92ccc9ec496b617d6ba25008ef Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jan 5 12:09:33 2016 +0100 ConnectionExists: add missing newline in infof() call Mistake from commit a464f33843ee1 commit 2e4e88b2931a049c8482b9e6960ad1a139ea5a55 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jan 5 11:32:30 2016 +0100 multiplex: allow only once HTTP/2 is actually used To make sure curl doesn't allow multiplexing before a connection is upgraded to HTTP/2 (like when Upgrade: h2c fails), we must make sure the connection uses HTTP/2 as well and not only check what's wanted. Closes #584 Patch-by: c0ff commit 1ae2347171120a49bcc202fee72f381981d0e994 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Jan 4 17:44:39 2016 -0500 curl_global_init.3: Add Windows-specific info for init via DLL - Add to both curl_global_init.3 and libcurl.3 the caveat for Windows that initializing libcurl via a DLL's DllMain or static initializer could cause a deadlock. Bug: https://github.com/bagder/curl/issues/586 Reported-by: marc-groundctl@users.noreply.github.com commit 39a204801f340d754e3edcf865df37ff3301799b Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 4 18:59:29 2016 +0100 FAQ: clarify who to mail about ECCN clarifications commit f781d8ca6173a4281c9efb735b9f0006131c180e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 4 18:49:10 2016 +0100 progressfunc.c: spellfix description commit 66db536bf9eba7ba7940bbbfb80225e048f9a72f Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 4 15:35:16 2016 +0100 docs/examples/multi-app.c: fix bad desc formatting commit e2645a283be263ef644a71fece2d9c28708e1d86 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 4 15:34:05 2016 +0100 examples: added descriptions commit 8cbbad6cf4d9504a5b726ce556141716bfcf1201 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 4 15:12:22 2016 +0100 example/simple.c: add description commit 68d30238e3aa7838954666213db7f42cb7450bf5 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jan 4 15:12:08 2016 +0100 getredirect.c: a new example commit 21fc68a46da9ae87f81485d9047e354ad49c6829 Author: Marc Hoersken <info@marc-hoersken.de> Date: Sun Dec 27 18:18:20 2015 +0100 RELEASE-NOTES: add 5e0e81a9c4e35f04ca commit c9afb65d227d1d3b156da2ac2f907c2446eb104a Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Dec 26 23:13:32 2015 +0100 RELEASE-NOTES: synced with 2aec4359db1088b10d commit 4efbdc78133ec208005e3d8053251421be59a8ea Author: Marc Hoersken <info@marc-hoersken.de> Date: Sat Dec 26 17:25:59 2015 +0100 test 1515: add data check commit 5d7cc1524a4c93a7d2a2bdb6d363b9b49099079e Author: Marc Hoersken <info@marc-hoersken.de> Date: Sat Dec 26 17:25:42 2015 +0100 test 1515: add MSYS support by passing a relative path MSYS would otherwise turn a /-style path into a C:\-style path. commit d3b8497f3673924c5b6a3a92195076f73d530345 Author: Marc Hoersken <info@marc-hoersken.de> Date: Sat Dec 26 11:01:13 2015 +0100 test 539: use datacheck mode text for ASCII-mode LISTings While still using datacheck mode binary for the inline reply data. commit ee177329f86b68a19e890709e4788a1e0dc2d36f Author: Marc Hoersken <info@marc-hoersken.de> Date: Sat Dec 26 10:59:22 2015 +0100 runtests.pl: check up to 5 data parts with different text modes Move the text-mode conversion for reply/replycheck from the verify section into the load section and add support for 4 more check parts. commit 723a070f96e0fdd29852d3cdc7e7d6dc3cbf5d0d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Dec 24 23:35:54 2015 +0100 CURLOPT_RANGE: for HTTP servers, range support is optional commit 022431e46f0f082be63583a0498eaf1412aa816a Author: Marc Hoersken <info@marc-hoersken.de> Date: Thu Dec 24 14:56:47 2015 +0100 tests 1048 and 1050: use datacheck mode text for ASCII-mode LISTings commit 916e54c4afde47ba007c0ffa8aad80a175de288f Author: Marc Hoersken <info@marc-hoersken.de> Date: Thu Dec 24 14:48:36 2015 +0100 tests 706 and 707: use datacheck mode text for ASCII-mode LISTings commit cc1982e4777f89bfc68f20def8e4b18a4598df48 Author: Marc Hoersken <info@marc-hoersken.de> Date: Thu Dec 24 14:22:26 2015 +0100 tests 400,403,406: use datacheck mode text for ASCII-mode LISTings commit ff961c204c88e9d3ab420e8dfe2168e2ac30e5a3 Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 15:04:02 2015 +0100 sockfilt.c: fix calculation of sleep timeout on Windows Not converting to double caused small timeouts to be skipped. commit 18425a7df40089c08f769d102b46949e118358cb Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 15:03:40 2015 +0100 tests first.c: fix calculation of sleep timeout on Windows Not converting to double caused small timeouts to be skipped. commit c36b3af81c8604d140e32e1ee11a73b271850f18 Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 15:02:43 2015 +0100 test 573: add more debug output commit 7ea735404b31e3a3f17b31ac615edde83890a3c2 Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 14:19:36 2015 +0100 ftplistparser.c: fix handling of file LISTings using Windows EOL Previously file.txt[CR][LF] would have been returned as file.tx (without the last t) if filetype is symlink. Now the t is included and the internal item_length includes the zero byte. Spotted using test 576 on Windows. commit fc253bbd6b76c82e69a62a2886fd4ffc5bb8edae Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 13:35:36 2015 +0100 test 16: fix on Linux (and Windows) by using plain ASCII characters Follow up on b064ff0c351bb287557228575ef4c1d079b866fb, thanks Daniel. commit 84a4d639efcd995ec8fce25b473e0e0e0aa6edec Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 13:04:00 2015 +0100 tftpd server: add Windows support by writing files in binary mode commit 645a6b3d63216cbf7dbdb3df284a0597004d505a Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 12:49:40 2015 +0100 tests 252-255: use datacheck mode text for ASCII-mode LISTings commit 2aef1e62044401cf38ee7f67a61cf6c0dd009225 Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 23 12:41:52 2015 +0100 test 16: fix on Windows by converting data file from ANSI to UTF-8 commit d84d36cec808816c978ab860a84ee8e400519090 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 23 12:07:50 2015 +0100 Makefile.inc: s/curl_SOURCES/CURL_FILES This allows the root Makefile.am to include the Makefile.inc without causing automake to warn on it (variables named *_SOURCES are magic). curl_SOURCES is then instead assigned properly in src/Makefile.am only. Closes #577 commit 6de5e0ce7fd90c35063e07072f6f91d238ec9565 Author: Anders Bakken <agbakken@gmail.com> Date: Mon Dec 21 10:13:15 2015 -0800 ConnectionExists: with *PIPEWAIT, wait for connections Try harder to prevent libcurl from opening up an additional socket when CURLOPT_PIPEWAIT is set. Accomplished by letting ongoing TCP and TLS handshakes complete first before the decision is made. Closes #575 commit 176d322c2e3170a7eaf91e9f5dcf4293f8b49b20 Author: Anders Bakken <agbakken@gmail.com> Date: Mon Dec 21 10:12:35 2015 -0800 Add .dir-locals and set c-basic-offset to 2. This makes it easier for emacs users to automatically get the right 2-space indentation when they edit curl source files. c++-mode is in there as well because Emacs can't easily know if something is a C or C++ header. Closes #574 commit 5c2e495d52b78617cfe90561f0a234415c8b97f6 Author: Johannes Schindelin <johannes.schindelin@gmx.de> Date: Thu Sep 17 20:03:34 2015 +0200 configure: detect IPv6 support on Windows This patch was "nicked" from the MINGW-packages project by Daniel. https://github.com/Alexpux/MINGW-packages/commit/9253d0bf58a1486e91f7efb5316e7fdb48fa4007 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> commit 495402525b0b1ad40ff41c319375ff5298781d3d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Dec 20 23:43:46 2015 +0100 configure: allow static builds on mingw This patch is adopted from the MINGW-packages project. It makes it possible to build curl both shared and static again. URL: https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-curl commit bd07d9236a7cc841d752689d6ccca7f3a6370fd2 Author: Marc Hoersken <info@marc-hoersken.de> Date: Thu Dec 17 16:04:33 2015 +0100 test 1326: fix file check since curl is outputting binary data commit e966d9ba3843b94463496454b09f6f190289f0ac Author: Marc Hoersken <info@marc-hoersken.de> Date: Thu Dec 17 15:12:19 2015 +0100 test 1326: fix getting stuck on Windows due to incomplete request The request needs to be read and send in binary mode in order to use CRLF instead of LF. Adding --upload-file - causes curl to read stdin in binary mode. commit 9a9c559bc8c30506debf11f3cc67a8028bc18b66 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Dec 17 13:21:31 2015 +0100 RELEASE-NOTES: command line option recount commit 6a8765328ddd6ebdc9fcb4e3b2fa2a9832006fcf Author: Dan Fandrich <dan@coneharvesters.com> Date: Wed Dec 16 22:13:02 2015 +0100 scripts/Makefile: build zsh script even in an out-of-tree build commit e5e5ed736064e3ea72ddba9da3c5d62530393113 Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 16 15:33:36 2015 +0100 sockfilt.c: added some debug output to select_ws commit 6d17a02f35d68c23f635adecd690ae13e31258dd Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 16 15:33:13 2015 +0100 sockfilt.c: keep lines shorter than 80 chars commit 6c3e2c116b5021a97e0c3e0cfebee5f8091e4d8c Author: Marc Hoersken <info@marc-hoersken.de> Date: Wed Dec 16 15:32:31 2015 +0100 sockfilt.c: do not wait on unreliable file or pipe handle The previous implementation caused issues on modern MSYS2 runtimes. commit 7d9819eafad9223ab965a0e5d7282b3ea6b68a85 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 16 10:25:31 2015 +0100 cyassl: deal with lack of *get_peer_certificate The function is only present in wolfssl/cyassl if it was built with --enable-opensslextra. With these checks added, pinning support is disabled unless the TLS lib has that function available. Also fix the mistake in configure that checks for the wrong lib name. Closes #566 commit 74b684c51e5a67276d027e489bd00e7027c5c130 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 16 10:06:09 2015 +0100 wolfssl: handle builds without SSLv3 support commit 817b980c7be4c017bb9ebbac64f3bb1e4f250520 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sun Dec 13 19:32:58 2015 +0900 http2: Support trailer fields This commit adds trailer support in HTTP/2. In HTTP/1.1, chunked encoding must be used to send trialer fields. HTTP/2 deprecated any trandfer-encoding, including chunked. But trailer fields are now always available. Since trailer fields are relatively rare these days (gRPC uses them extensively though), allocating buffer for trailer fields is done when we detect that HEADERS frame containing trailer fields is started. We use Curl_add_buffer_* functions to buffer all trailers, just like we do for regular header fields. And then deliver them when stream is closed. We have to be careful here so that all data are delivered to upper layer before sending trailers to the application. We can deliver trailer field one by one using NGHTTP2_ERR_PAUSE mechanism, but current method is far more simple. Another possibility is use chunked encoding internally for HTTP/2 traffic. I have not tested it, but it could add another overhead. Closes #564 commit 1823e7380c7e98312699874389f97d610d68d202 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 15 23:12:32 2015 +0100 RELEASE-NOTES: synced with 6c2c019654e658a commit 52621f7c32dcf5887a419928558fe9cb3301a5bf Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Dec 14 16:43:08 2015 -0500 x509asn1: Fix host altname verification - In Curl_verifyhost check all altnames in the certificate. Prior to this change only the first altname was checked. Only the GSKit SSL backend was affected by this bug. Bug: http://curl.haxx.se/mail/lib-2015-12/0062.html Reported-by: John Kohl commit 7b0c20193e83858b92d6799bd5bd045bdb05b181 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Dec 14 13:29:13 2015 +0100 curl --expect100-timeout: added This is the new command line option to set the value for the existing libcurl option CURLOPT_EXPECT_100_TIMEOUT_MS commit 2b43f25a7c4693f57348a30860249bc27564f399 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 15 00:36:08 2015 +0100 cyassl: fix compiler warning on type conversion commit 7897da1433b8e49576a550b7bb48ec4b9e98cdfd Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 15 00:02:20 2015 +0100 curlver: the pending release will become 7.47.0 commit 9bcd900e800cd179e55c523e13d6f16c60755d35 Author: Anders Bakken <agbakken@gmail.com> Date: Mon Dec 14 13:21:32 2015 -0800 setstropt: const-correctness Closes #565 commit 7c0d11e9409512d5482bafa86533bea9ec4ade14 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Dec 14 10:13:21 2015 +0100 ROADMAP: implemented HTTP2 for HTTPS-only commit 3fce56793df96146806cb7fd8d40216573d1c728 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Dec 14 10:10:35 2015 +0100 HTTP2.md: spell fix and remove TODO now implemented commit 6a652f05ab4b8fd37abe73911492fb52f1031e85 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Dec 14 09:49:19 2015 +0100 libressl: the latest openssl x509 funcs are not in libressl commit 6eeaa5d5b2638300eb612bf6db77a2331f86a956 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Dec 13 09:24:08 2015 +0100 curl: use 2TLS by default Make this the default for the curl tool (if built with HTTP/2 powers enabled) unless a specific HTTP version is requested on the command line. This should allow more users to get HTTP/2 powers without having to change anything. commit e2356d4df72f5d27fe84356edbaa4632c29204e4 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Dec 13 09:23:36 2015 +0100 http: add libcurl option to allow HTTP/2 for HTTPS only ... and stick to 1.1 for HTTP. This is in line with what browsers do and should have very little risk. commit 64fb59518411fddc4f49734f8faf0dbc888005b3 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Dec 10 19:20:22 2015 +0100 openssl: adapt to openssl >= 1.1.0 X509 opaque structs Closes #491 commit dfcb67590961b4afeb57d72a01bb4a2d150b4793 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Dec 10 17:31:00 2015 +0100 openssl: avoid BIO_reset() warnings since it returns a value commit 3d2750eb531f2c3b6da9b61f8c6b5da1829a3bd2 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Dec 10 17:30:31 2015 +0100 openssl: adapt to 1.1.0+ name changes commit a9f7805bc53ca0112bcb7133ebc1d5f9486ff8d5 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 9 00:34:39 2015 +0100 scripts/makefile: add standard header commit b2559131036031e0727d77db00fe71f4e0f2f41e Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 9 00:32:42 2015 +0100 scripts/Makefile: fix GNUism and survive no perl Closes #555 Reported-by: Thomas Klausner commit 76357aca649ca5887e45a3b878af90ca5adec0ad Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 9 00:27:04 2015 +0100 fix b6d5cb40d7038fe commit 6d44412b2711b32d54c4f21190f40b34b35b9543 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Dec 5 00:40:10 2015 +0900 http2: Fix hanging paused stream When NGHTTP2_ERR_PAUSE is returned from data_source_read_callback, we might not process DATA frame fully. Calling nghttp2_session_mem_recv() again will continue to process DATA frame, but if there is no incoming frames, then we have to call it again with 0-length data. Without this, on_stream_close callback will not be called, and stream could be hanged. Bug: http://curl.haxx.se/mail/lib-2015-11/0103.html Reported-by: Francisco Moraes commit e85c5a872f56dffc332426360298c624c2469a6a Author: Christian Stewart <christian@paral.in> Date: Tue Dec 8 10:04:52 2015 -0500 build: fix compilation error with CURL_DISABLE_VERBOSE_STRINGS With curl disable verbose strings in http.c the compilation fails due to the data variable being undefined later on in the function. Closes #558 commit b8a13aa34a1069c19e17c4772d5f4dd9c7dc6703 Author: Gisle Vanem <gvanem@yahoo.no> Date: Mon Dec 7 19:05:42 2015 -0500 config-win32: Fix warning HAVE_WINSOCK2_H undefined commit 7f184bed573f1b6974960309fd5cdf3103ffa758 Author: Gisle Vanem <gvanem@yahoo.no> Date: Mon Dec 7 18:43:35 2015 -0500 openssl: BoringSSL doesn't have CONF_modules_free commit 808b15c4e99ac9404ddaf8a24a7306ce0f9f3fdd Author: Gisle Vanem <gvanem@yahoo.no> Date: Mon Dec 7 14:27:29 2015 -0500 lwip: Fix compatibility issues with later versions The name of the header guard in lwIP's <lwip/opt.h> has changed from '__LWIP_OPT_H__' to 'LWIP_HDR_OPT_H' (bug #35874 in May 2015). Other fixes: - In curl_setup.h, the problem with an old PSDK doesn't apply if lwIP is used. - In memdebug.h, the 'socket' should be undefined first due to lwIP's lwip_socket() macro. - In curl_addrinfo.c lwIP's getaddrinfo() + freeaddrinfo() macros need special handling because they were undef'ed in memdebug.h. - In select.c we can't use preprocessor conditionals inside select if MSVC and select is a macro, as it is with lwIP. http://curl.haxx.se/mail/lib-2015-12/0023.html http://curl.haxx.se/mail/lib-2015-12/0024.html commit 666aca777eee7bf514760f79f76ca4818e5a84c8 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Mon Dec 7 10:09:33 2015 +0100 os400: define CURL_VERSION_PSL in ILE/RPG binding commit b12f0e3bcd8a6723201524aa3d9e962b8b72ab98 Author: Gisle Vanem <gvanem@yahoo.no> Date: Thu Dec 3 01:02:50 2015 -0500 version: Add flag CURL_VERSION_PSL for libpsl commit f3904a7858a8c0c720e9da85eb3f56e3ed4973dd Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Dec 7 02:43:24 2015 -0500 formdata: Check if length is too large for memory - If the size of the length type (curl_off_t) is greater than the size of the size_t type then check before allocating memory to make sure the value of length will fit in a size_t without overflow. If it doesn't then return CURLE_BAD_FUNCTION_ARGUMENT. Bug: https://github.com/bagder/curl/issues/425#issuecomment-154518679 Reported-by: Steve Holme commit a2b98e2ce5c8ad9b5b4df26b5a366c7e641eefd0 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Dec 3 23:31:24 2015 +0000 tests: Corrected copy and pasted comments from commit e643c5c908 commit aaa28427f2bbb378b1c1dde2838753886edfa5fa Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Dec 3 09:53:53 2015 +0100 curl: remove keepalive #ifdef checks done on libcurl's behalf They didn't match the ifdef logic used within libcurl anyway so they could indeed warn for the wrong case - plus the tool cannot know how the lib actually performs at that level. commit becc5d0247648cdfd249f8d30130b20448b4170d Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Dec 2 23:45:29 2015 +0000 test947: Corrected typo in test name commit f6e009f3bf9bfbb9b90356c946ccd5afc196e57e Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Dec 2 23:10:02 2015 +0000 tests: Disable the OAUTHBEARER tests when using a non-default port number Tests 842, 843, 844, 845, 887, 888, 889, 890, 946, 947, 948 and 949 fail if a custom port number is specified via the -b option of runtests.pl. Suggested by: Kamil Dudka Bug: http://curl.haxx.se/mail/lib-2015-12/0003.html commit 93f96bfabd740986005351b62935290dba9f1e9e Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Dec 2 23:24:47 2015 +0100 bump: towards next release for all we know now, it might be called 7.46.1 commit 1cd1aa4dd200a25a7ae1ce81b225c7c5726ef6f5 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 1 23:10:16 2015 +0100 RELEASE-NOTES: updated contributor count for 7.46.0 commit f9fe8f80a305e08b72e9d3b8e1335466c37ab743 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 1 22:53:24 2015 +0100 THANKS: new contributors from the 7.46.0 release commit a42cdab2a6217c2564aa7981eebe53079079927d Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 1 22:51:50 2015 +0100 THANKS-filter: single Tim Rühsen spelling commit f35dae4aba88207db97e5bce8eb6d9daee469cd5 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Dec 1 09:09:04 2015 +0100 docs/examples: gitignore some more built examples commit 8dcdd02029a50666794773b5a54e83b7e46db1e0 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 30 08:22:32 2015 +0100 RELEASE-NOTES; this bug was never released commit 56515422c77b0ca5afd9523afc85c4762a5a65d0 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 30 08:03:28 2015 +0100 RELEASE-NOTES: synced with e55f15454efacb0 commit 6f70f329d9e431146903ee5e2bd8118a3215e2d0 Author: Flavio Medeiros <flaviomotamedeiros@gmail.com> Date: Sun Nov 29 11:12:16 2015 -0300 Curl_read_plain: clean up ifdefs that break statements Closes #546 commit b013830da599526e2a14012fbb83dd6e30c2879e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 30 00:12:46 2015 +0100 http2: convert some verbose output into debug-only output commit d69a5acbebc0b04306a19470ca9f302a720fe148 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 30 00:11:42 2015 +0100 http2 push: add missing inits of new stream - set the correct stream_id for pushed streams - init maxdownload and size properly commit 47bed7e931e3a41e1d54df3ab300e0161364a941 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 30 00:10:35 2015 +0100 http2 push: set weight for new stream give the new stream the old one's stream_weight internally to avoid sending a PRIORITY frame unless asked for it commit 6b68705098c6ef592022a8ce42946135f8900d7a Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 27 23:24:59 2015 +0100 curl_setup.h: undef freeaddrinfo in c-ares block to fix build Fixes warnings 78c25c854a added. commit 2a37849e59237080eeec9c6b929a943448c62b0a Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 27 23:29:30 2015 +0100 nonblock: fix setting non-blocking mode for Amiga IoctlSocket() apparently wants a pointer to a long, passed as a char * in its third parameter. This bug was introduced already back in commit c5fdeef41d from October 1 2001! Bug: http://curl.haxx.se/mail/lib-2015-11/0088.html Reported-by: Norbert Kett commit 6344774835b511667cb02b72f21e114baafa618c Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 27 23:24:07 2015 +0100 zsh install: fix DESTDIR support Reported-by: Mohammad AlSaleh commit cb21fa7c441ea0dc35e99004ef9dd1ec2e07e24f Author: Dan Fandrich <dan@coneharvesters.com> Date: Fri Nov 27 10:51:22 2015 +0100 lib: Only define curl_dofreeaddrinfo if struct addrinfo is available commit 151092b83a34447ac3784a643f32760af3d37ac4 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Nov 27 06:59:02 2015 +0000 tool_paramhlp: Fixed display of URL index in password prompt for --next Commit f3bae6ed73 added the URL index to the password prompt when using --next. Unfortunately, because the size_t specifier (%zu) is not supported by all sprintf() implementations we use the curl_off_t format specifier instead. The display of an incorrect value arises on platforms where size_t and curl_off_t are of a different size. commit 53b8b951a41d08c3541e723c169f4b4888557d8f Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Nov 25 11:38:10 2015 +0100 timecond: do not add if-modified-since without timecondition The RTSP code path didn't skip adding the if-modified-since for certain RTSP code paths, even if CURLOPT_TIMECONDITION was set to CURL_TIMECOND_NONE. Also, an unknown non-zero CURLOPT_TIMECONDITION value no longer equals CURL_TIMECOND_IFMODSINCE. Bug: http://stackoverflow.com/questions/33903982/curl-timecond-none-doesnt-work-how-to-remove-if-modified-since-header commit eed3738fa2ecd1df1d852e5c676e1ffbeca1e973 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Nov 25 11:29:00 2015 +0100 RELEASE-NOTES: synced with 99d17a5e2ba77e58 commit b7a198ca47ca45abe4d8af7dc58203325e699ac6 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Nov 25 10:49:22 2015 +0100 examples/README: cut out the incomplete list ... and add a generic explanation for them instead. Each example file should contain its own description these days. commit f575c1ec712c79ace74bf83a9c5a31233df78548 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Nov 24 23:33:37 2015 +0100 test1513: make sure the callback is only called once commit 0e418f53124834260c5d9c7c583822dacbc6fa5d Author: Daniel Shahaf <d.s@daniel.shahaf.name> Date: Fri Nov 20 04:56:10 2015 +0000 build: Install zsh completion Fixes #534 Closes #537 commit 670939d0eebf1ff233ba23d004f4a5e4eeff23b9 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Nov 24 19:51:59 2015 +0100 done: make sure the final progress update is made It would previously be skipped if an existing error was returned, but would lead to a previous value being left there and later used. CURLINFO_TOTAL_TIME for example. Still it avoids that final progress update if we reached DONE as the result of a callback abort to avoid another callback to be called after an abort-by-callback. Reported-by: Lukas Ruzicka Closes #538 commit 9a7021804aa8762fd295d51216ae4a8b617abe42 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Nov 24 10:11:06 2015 +0100 curl: expanded the -XHEAD warning text ... to also mention the specific options used. commit 201164a0de6bc9e7d0d1cb651f817da40291e8ee Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Nov 24 09:32:42 2015 +0100 Revert "cleanup: general removal of TODO (and similar) comments" This reverts commit 64e959ffe37c436503f9fed1ce2d6ee6ae50bd9a. Feedback-by: Dan Fandrich URL: http://curl.haxx.se/mail/lib-2015-11/0062.html commit 1232fcaafab3d2aa0d24b5fd15a8f3ac37b1c03e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 23 16:11:57 2015 +0100 CURLOPT_HEADERFUNCTION.3: fix typo Refer to _HEADERDATA not _WRITEDATA. Reported-by: Michał Piechowski commit b5156bb71eb55ed5760eedb607967c5bac05c65d Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 23 10:58:12 2015 +0100 TODO: TCP Fast Open commit be5317616aa1b3923b5b48ba24370f6a311c52c2 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Nov 22 11:55:10 2015 +0000 examples: Added website parse-able descriptions to the e-mail examples commit dc6526482f33893be24fb5595e774a88f0b22830 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 21 17:59:14 2015 +0000 TODO: Added another 'multi-interface' idea commit 718da389de4805391298db1623d1a7aff2c3befd Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 21 11:41:20 2015 +0000 smb.c: Fixed compilation warnings smb.c:134:3: warning: conversion to 'short unsigned int' from 'int' may alter its value smb.c:146:42: warning: conversion to 'unsigned int' from 'long long unsigned int' may alter its value smb.c:146:65: warning: conversion to 'unsigned int' from 'long long unsigned int' may alter its value commit f1f059af18d80ef6b075378d0a504783e3eb13c6 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 21 02:54:44 2015 +0000 schannel: Corrected copy/paste error in commit 8d17117683 commit ad7faf45f2f0ede138499c6bf0828d9834bfcf98 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 21 02:43:17 2015 +0000 schannel: Use GetVersionEx() when VerifyVersionInfo() isn't available Regression from commit 7a8e861a5 as highlighted in the msys autobuilds. commit 9f3f360a8c9f7d202c79d5b068db6c90e3da2557 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 21 01:47:02 2015 +0000 examples: Fixed compilation warnings pop3-multi.c:96:5: warning: implicit declaration of function 'memset' imap-multi.c:96:5: warning: implicit declaration of function 'memset' http2-download.c:226:5: warning: implicit declaration of function 'memset' http2-upload.c:290:5: warning: implicit declaration of function 'memset' http2-upload.c:290:5: warning: implicit declaration of function 'memset' commit 8d0b628e9b18ef09b0651672682e7eac71132434 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 21 00:04:57 2015 +0000 Makefile.inc: Fixed test run error test845 not present in tests/data/Makefile.inc commit 06e58a59be050ec3881200faa48e36a1b9e8d316 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 20 09:37:11 2015 +0100 TODO: remove duplicated title commit 68dfccdc60381ebafe8fc135d4598db5e581c6c5 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 20 08:39:59 2015 +0100 TODO: added two more libcurl ideas Moved some ideas from "next major" to just ordinary ideas since we can always add new things while keeping the old without doing a "next major". commit bc2c92f50b554059757647b5dbc9c952707d1279 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Nov 20 07:04:19 2015 +0000 tests: Re-enabled tests 889 and 890 following POP3 fix commit 8c065f09fc2046d3f8a7ec6aeff9bf28a513d562 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Nov 20 07:01:01 2015 +0000 pop3: Differentiate between success and continuation responses commit 97f002986bbf7ff76d32a273a63fe0929aed55db Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Nov 20 06:41:53 2015 +0000 pop3: Added clarity on some server response codes commit 3e8a790f5a52bab99e7061060f10aaa8167446a8 Author: Daniel Shahaf <d.s@daniel.shahaf.name> Date: Thu Nov 19 22:23:11 2015 +0000 build: Fix theoretical infinite loops Add error-checking to 'cd' in a few cases where omitting the checks might result in an infinite loop. Closes #535 commit 211d2d68f197b0a5336b852cff9578d7860eb375 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Thu Nov 19 13:53:47 2015 +0100 curl.h: s/#defien/#define/ commit 4088f5833140a09c70a07397b86a08afd83d6baa Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Thu Nov 19 13:52:06 2015 +0100 os400: synchronize ILE/RPG header file commit 30b3f5cc3d0d50f6e0615c9babed2125999f20ab Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Thu Nov 19 13:35:29 2015 +0100 os400: Provide options for libssh2 use in compile scripts. Adjust README. commit cb219e944c89f261f93fab3ab507b6466e44a3e0 Author: danielsh@apache.org <danielsh@apache.org> Date: Wed Nov 18 21:52:32 2015 +0000 zsh completion: Preserve single quotes in output When an option's help string contains literal single quotes, those single quotes would be stripped from the option's description in the completion output (unless the zsh RC_QUOTES option were set while the completion function was being sourced, which is not the default). This patch makes the completion output contain single quotes where the --help output does. Closes #532 commit fbbac923585ae60658d5acab6678993ebc21b427 Author: MaxGiting <git@kingkreations.co.uk> Date: Wed Nov 18 23:00:24 2015 -0500 FAQ: Grammar changes Closes https://github.com/bagder/curl/pull/533 commit db7e27f98cde6669cd1cab2b95452d4db1e74713 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Nov 17 09:47:58 2015 +0100 http2: http_done: don't free already-freed push headers The push headers are freed after the push callback has been invoked, meaning this code should only free the headers if the callback was never invoked and thus the headers weren't freed at that time. Reported-by: Davey Shafik commit a35d9326fe862a80b13234d49d4c469aaf5c5cf3 Author: Anders Bakken <agbakken@gmail.com> Date: Mon Nov 16 12:50:41 2015 -0800 getconnectinfo: Don't call recv(2) if socket == -1 Closes #528 commit e3dfe607ad32cf9821aeecd54661c5f41de43fcb Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 16 08:26:22 2015 +0100 CURLMOPT_PUSHFUNCTION.3: *_byname() returns only the first header ... if there are more than one using the same name commit 9cdf39628272bcc9ee30e16ffe510fe2e91e9e2d Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 16 08:22:08 2015 +0100 http2: minor comment typo commit 760428dd0fc15f758ef8070dd9dc9e8a3f520117 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Nov 15 23:15:00 2015 +0100 sasl; fix checksrc warnings commit 773c20f85106dbe563c8e3d632bdf946e8f3f0cc Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Nov 15 20:18:44 2015 +0000 RELEASE-NOTES: Adjusted for the recent OAuth 2.0 activity commit 4d8dc58646f1c0d1d5a06dfc2357c2ef4317579c Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Nov 15 20:14:46 2015 +0000 tests: Disabled 889 and 890 until we support POP3 continuation responses As POP3 final and continuation responses both begin with a + character, and both the finalcode and contcode variables in SASLprotoc are set as such, we cannot tell the difference between them when we are expecting an optional continuation from the server such as the following: + something else from the server +OK final response Disabled these tests until such a time we can tell the responses apart. commit f564683e6e960bb295dd95b52c9703d2dc247dfc Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Nov 15 17:39:05 2015 +0000 tests: Corrected typos from commit ba4d8f7eba commit f0300008e5dc081096dcda59f94e2786fb62fcec Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Nov 15 17:36:59 2015 +0000 tests: Added OAUTHBEARER failure response tests commit 9954cfd4dd2ffff06179938a71a12bec08e30a80 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 5 18:35:47 2015 +0100 oauth2: Support OAUTHBEARER failures sent as continuation responses According to RFC7628 a failure message may be sent by the server in a base64 encoded JSON string as a continuation response. Currently only implemented for OAUTHBEARER and not XAUTH2. commit e8b8ccbac440625e51283fe824ce070d6f75ca46 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Nov 15 19:12:06 2015 +0100 RELEASE-NOTES: synced with 808a17ee675 commit 0038abd0c3cc7611f6e97098796b808d19216b0a Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 14 11:19:57 2015 +0000 tests: Renamed existing OAuth 2.0 (XOAUTH) tests commit f367a25465feaf1414496286a75986bd7565a4e1 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 14 11:16:04 2015 +0000 tests: Added OAuth 2.0 (OAUTHBEARER) tests commit c805947db89a01382adbbd72262cbd338299de17 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 5 18:09:40 2015 +0100 oauth2: Added support for OAUTHBEARER SASL mechanism to IMAP, POP3 and SNMP OAUTHBEARER is now the official "registered" SASL mechanism name for OAuth 2.0. However, we don't want to drop support for XOAUTH2 as some servers won't support the new mechanism yet. commit 6d59e7a686798a9b730f6bd8d627bba99180edc6 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 23:40:40 2015 +0100 RELEASE-NOTES: recounted curl_easy_setopt() options commit 686ef22275f179b46778f128d30d4aa6a607d0ce Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 23:19:19 2015 +0100 typecheck-gcc.h: add missing slist-using options CURLOPT_RESOLVE and CURLOPT_PROXYHEADER were missing Also sorted the list. commit 3b6a643b38b7232995377ff3b700083ad53761a2 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 23:12:18 2015 +0100 typecheck-gcc.h: added CURLOPT_CLOSESOCKETDATA ... and sorted curl_is_cb_data_option alphabetically commit fc4d14c351d476ea893a4d2770cda80d5eabee37 Author: Sebastian Pohlschmidt <pohly05@users.noreply.github.com> Date: Fri Nov 13 16:07:11 2015 -0500 openssl: Free modules on cleanup Curl_ossl_init calls OPENSSL_load_builtin_modules() but Curl_ossl_cleanup doesn't make a call to free these modules. Bug: https://github.com/bagder/curl/issues/526 commit 07672e4d691a210e0a9cc980a0f4b8b1103ee404 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Nov 13 20:42:35 2015 +0000 symbols-in-versions: Added new CURLOPTTYPE_STRINGPOINT alias ...following commit aba281e762 to fix test 1119. commit beb6f6a38ab91e6c85a1fcb5b05de4362af33eff Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 16:59:09 2015 +0100 curl: mark two more options strings for --libcurl output commit 081bf7c206caccf0faa0bc6136a95282f9843fed Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 16:53:17 2015 +0100 typecheck-gcc.h: add some missing string types Also sorted that list alphabetically commit dce1d9fc650dd522bbdea1adba10334c2d12b10d Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 16:50:10 2015 +0100 curl.h: introducing the STRINGPOINT alias As an alias for OBJECTPOINT. Provided to allow us to grep for all string options easier. commit cbd906efdd5ae96120395fa21887714008f4ed21 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 16:15:26 2015 +0100 cleanup: general removal of TODO (and similar) comments They tend to never get updated anyway so they're frequently inaccurate and we never go back to revisit them anyway. We document issues to work on properly in KNOWN_BUGS and TODO instead. commit 769774c72f32fd802e3136832f6f0e30259c22bc Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 16:12:18 2015 +0100 ftplistparser: remove empty function commit 5263e1b8fb1e847c5828f44aaaf5c2f599e18680 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 15:55:52 2015 +0100 openssl: remove #if check for 0.9.7 for ENGINE_load_private_key commit e6a528b6255074b5a7eb9c7667257ccfa0e31935 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 15:52:39 2015 +0100 openssl: all supported versions have X509_STORE_set_flags Simplify by removing #ifdefs and macros commit 7de1fbda9d0a6c74ffeec70c0946167c40f4e7b4 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 15:51:46 2015 +0100 openssl: remove 0.9.3 check commit 7f6f0ee2e00825e4be50ff877e83acf8a218081b Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 15:49:49 2015 +0100 openssl: remove #ifdefs for < 0.9.5 support We only support >= 0.9.7 commit 619589cc7f67da8924310340b4d20c037d18397e Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 13 15:48:04 2015 +0100 lib/vtls/openssl: remove unused traces of yassl ifdefs commit 126c74559a6e3af247e86f1c53d05e1183a432f6 Author: dfandrich <dan@coneharvesters.com> Date: Thu Nov 12 23:45:56 2015 +0100 unit1603: Demote hash mismatch failure to a warning The hashes can vary between architectures (e.g. Sparc differs from x86_64). This is not a fatal problem but just reduces the coverage of these white-box tests, as the assumptions about into which hash bucket each key falls are no longer valid. commit 726ee0eaafb2630b659d43474c69ff1beae91fa0 Author: dfandrich <dan@coneharvesters.com> Date: Thu Nov 12 20:40:26 2015 +0100 unit1603: Added unit tests for hash functions commit 9e7b2b315120e1448011c40a84fc10110c4f9b85 Author: dfandrich <dan@coneharvesters.com> Date: Thu Nov 12 19:30:59 2015 +0100 unit1602: Fixed failure in torture test commit 62027569298997a1fdee8d4da07c7ed176c69873 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Nov 12 19:45:24 2015 +0000 sasl: Re-introduced XOAUTH2 in the default enabled authentication mechanism Following the fix in commit d6d58dd558 it is necessary to re-introduce XOAUTH2 in the default enabled authentication mechanism, which was removed in commit 7b2012f262, otherwise users will have to specify AUTH=XOAUTH2 in the URL. Note: OAuth 2.0 will only be used when the bearer is specified. commit 24d5bf8c8291a9ada1e8376ad83f2519c9ffd1b1 Author: Stefan Bühler <buehler@teamviewer.com> Date: Thu Nov 12 11:10:32 2015 +0100 sasl_sspi: fix identity memory leak in digest authentication commit b57cc5f8fca696ea9c053bcbe2d798c688070b5e Author: Stefan Bühler <buehler@teamviewer.com> Date: Thu Nov 12 11:09:21 2015 +0100 sasl_sspi: fixed unicode build for digest authentication Closes #525 commit 6684d2bf51efff4e9612013f47f2495ff30d59a9 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 5 17:32:37 2015 +0100 oauth2: Re-factored OAuth 2.0 state variable commit be68047b7dd893b3981dad8895d84fcec2b1d022 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 5 17:29:49 2015 +0100 sasl: Don't choose OAuth 2.0 if mechanism not advertised Regression from commit 9e8ced9890 which meant if --oauth2-bearer was specified but the SASL mechanism wasn't supported by the server then the mechanism would be chosen. commit 1a573b60c7adea587aa483d7cfe87c51a4d34d1b Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Nov 12 15:32:48 2015 +0100 runtests: more compact "System characteristics" output - no point in repeating curl features that is already listed as features from the curl -V output - remove the port numbers/unix domain path from the output unless verbose is used, as that is rarely interesting to users. commit 6082ab7df62f6acdbd6bf8d5e75ef3037dd5c5b2 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Nov 12 14:50:13 2015 +0100 runtests: rename conditional curl-features to $has_[name] commit aec13fdf3ab0d43f124618406cff17c7cdad4799 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Sep 5 17:08:54 2015 +0100 oauth2: Introduced support for host and port details Added support to the OAuth 2.0 message function for host and port, in order to accommodate the official OAUTHBEARER SASL mechanism which is to be added shortly. commit f5b893987e5e2d53c2e5e3f13e5a4f27187a68b7 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Nov 11 22:19:39 2015 +0000 curl_setup.h: Removed duplicate CURL_DISABLE_RTSP when HTTP_ONLY defined commit 6e3cc40a3eb2aa629193b4c87bf8a55f35adc2a4 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Nov 11 22:18:24 2015 +0000 cmake: Add missing feature macros in config header (Part 2) In addition to commit a215381c94 added the RTSP, RTMP and SMB protocols. commit 43adc4d12b57df936ab12069def34dd3136a916f Author: Douglas Creager <dcreager@google.com> Date: Tue Nov 10 14:46:49 2015 -0500 cmake: Add missing feature macros in config header The curl_config.h file can be generated either from curl_config.h.cmake or curl_config.h.in, depending on whether you're building using CMake or the autotools. The CMake template header doesn't include entries for all of the protocols that you can disable, which (I think) means that you can't actually disable those protocols when building via CMake. Closes #523 commit 434b579b027978879fba54a1032c7d4a55ab75ac Author: Douglas Creager <dcreager@google.com> Date: Tue Nov 10 15:05:18 2015 -0500 BoringSSL: Work with stricter BIO_get_mem_data() BoringSSL implements `BIO_get_mem_data` as a function, instead of a macro, and expects the output pointer to be a `char **`. We have to add an explicit cast to grab the pointer as a `const char **`. Closes #524 commit 02abd24c6cc8794e3f0ac3753362ee4b11cf96d3 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Nov 10 09:10:46 2015 +0100 http2: rectify the http2 version #if check We need 1.0.0 or later. Also verified by configure. commit 01213db6824e730b61bceb32227b4edcaca63446 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Nov 4 07:20:21 2015 +0000 oauth2: Don't use XAUTH2 in OAuth 2.0 function name commit c08779f4226150ba24d3627b8261ab98673fe715 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Sep 4 07:11:09 2015 +0100 oauth2: Don't use XOAUTH2 in OAuth 2.0 variables commit 34d310017e04b420669b14842360688dfcac9be3 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Sep 4 06:56:26 2015 +0100 oauth2: Use OAuth 2.0 rather than XOAUTH2 in comments When referring to OAuth 2.0 we should use the official name rather the SASL mechanism name. commit 35c3550d97f1d9209648bc6d61bcb9dbe816ebf3 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 9 10:54:55 2015 +0100 imap: avoid freeing constant string The fix in 1a614c6c3 was wrong and would leed to free() of a fixed string. Pointed-out-by: Kamil Dudka commit 539015bfc41c87e41cb762ce5b48a434a3660d00 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 9 09:05:43 2015 +0100 ROADMAP: remove two items already done commit d72af7c658deae23d3f0de3165bfa51db11689d1 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 9 08:56:28 2015 +0100 RELEASE-NOTES: synced with 2200bf62054 commit b96f8f205b3b49ae50051227bac37f0b06a7b0f6 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Nov 9 02:56:40 2015 -0500 acinclude: Remove check for 16-bit curl_off_t Because it's illogical to check for a 16-bit curl_off_t. Ref: https://github.com/bagder/curl/issues/425#issuecomment-154964205 commit 6d10c95695547acca5fbcde3198ef791dd3e7376 Author: Dan Fandrich <dan@coneharvesters.com> Date: Sun Nov 8 16:50:25 2015 +0100 tool: Fixed a memory leak on OOM introduced in 19cb0c4a commit 536fbb8de5ba511c4c96df9f302895273fe0f9dc Author: Justin Ehlert <ehlertjd@gmail.com> Date: Tue Oct 13 08:55:05 2015 -0500 imap: Don't check for continuation when executing a CUSTOMREQUEST Bug: https://github.com/bagder/curl/issues/486 Closes https://github.com/bagder/curl/pull/487 commit 4128c6d5f7f889a7fe74f07949127b47c68f920b Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Nov 7 23:21:29 2015 +0100 imap: checksrc: remove space after while before paren commit 4efc7ad3fa3163867d08fc2df0654cd529b866dc Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Nov 7 23:20:50 2015 +0100 checksrc.whitelist: "missing space after close paren" ... when it was within a string! commit b4239a51d844092957ed07e0ada70f267854f59f Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 7 22:11:04 2015 +0000 opts: Corrected TLS protocols list to include POP3S rather than POP3 commit 8b4f0eeb5573da96ed63a9b9fd66a240f09225a4 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 7 11:59:32 2015 +0000 imap: Quote other 'atom-specials' and not just the space character Closes #517 commit 7099b6b788e84bfdab86f470a8b68c075c1c0e2f Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Nov 7 11:20:34 2015 +0000 imap: Fixed double quote in LIST command when mailbox contains spaces commit 2728a8ec3d4514695f23f8ab8ef5e2d1f036bc54 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 6 23:44:27 2015 +0100 imap: fix compiler warning imap.c:657:13: error: assignment discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers] commit 57e6353e13a1faef145e974fa6babeaf48b35ea7 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Nov 6 21:49:26 2015 +0000 imap: Don't call imap_atom() when no mailbox specified in LIST command commit a89eb67ef20c8c91caf3ec2d624b669f58a45080 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 6 15:03:00 2015 +0100 curl.1: remove the overlap --range example ... it is just weird to include by default even if it still works. commit 341971abd47da22de1c5ddde2aef138738c785d8 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Nov 6 10:52:19 2015 +0100 tftp tests: verify sent options too The tftpd test server now logs all received options and thus all TFTP test cases need to match them exactly. Extended test 283 to use and verify --tftp-blksize. commit 26acacb0e0e591b820098f0d52f57e91fd3df738 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Nov 6 00:30:16 2015 -0500 getinfo: CURLINFO_ACTIVESOCKET: fix bad socket value - Set user info param to the socket returned by Curl_getconnectinfo, regardless of if the socket is bad. Effectively this means the user info param now will receive CURL_SOCKET_BAD instead of -1 on bad socket. - Remove incorrect comments. CURLINFO_ACTIVESOCKET is documented to write CURL_SOCKET_BAD to user info param but prior to this change it wrote -1. Bug: https://github.com/bagder/curl/pull/518 Reported-by: Marcel Raad commit ad5a6897c6061f06cd6bbca4dda68ebcddc506b4 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Thu Nov 5 15:20:43 2015 +0100 curl_ntlm_core: fix 2 curl_off_t constant overflows. commit cf7b89f7b00e8cc69fc2ee7161cdf0e77a4982c9 Author: Patrick Monnerat <patrick.monnerat@dh.com> Date: Thu Nov 5 14:41:22 2015 +0100 os400: adjust specific code to support new options. commit 778d93d6af33706e5ca4b025a5bfb22c92c2dcd6 Author: Lauri Kasanen <cand@gmx.com> Date: Mon Nov 2 21:18:03 2015 +0100 rawstr: Speed up Curl_raw_toupper by 40% Rationale: when starting up a curl-using app, all cookies from the jar are checked against each other. This was causing a startup delay in the Fifth browser. All tests pass. Signed-off-by: Lauri Kasanen <cand@gmx.com> commit e5aa9a577acc776c68df9333016129a435fbc48a Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 2 12:48:03 2015 +0100 http redirects: %-encode bytes outside of ascii range Apparently there are sites out there that do redirects to URLs they provide in plain UTF-8 or similar. Browsers and wget %-encode such headers when doing a subsequent request. Now libcurl does too. Added test 1138 to verify. Closes #473 commit c51153e2d606c78c0e87a4f6a80aeedbef798510 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 2 10:16:21 2015 +0100 RELEASE-NOTES: synced with cba5bc585410 commit 28610b103ea6aca5e09e3f1647e8458074ca6984 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Nov 2 08:40:57 2015 +0100 symbols-in-version: add all CURL_HTTPPOST_* symbols commit 40d9b72ce39353881576bf8f5c159b6af760fa71 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Oct 24 00:52:25 2015 +0200 formadd: support >2GB files on windows Closes #425 commit 27839475b6f8da6bb7d666d1b81a7c23e788e6d0 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Oct 31 22:48:21 2015 +0100 curl.h: s/HTTPPOST_/CURL_HTTPOST_ Fixes a name space pollution at the cost of programs using one of these defines will no longer compile. However, the vast majority of libcurl programs that do multipart formposts use curl_formadd() to build this list. Closes #506 commit fa22bf7b0a1266f2438961673df25a5bbb6d6bf8 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Oct 29 22:59:27 2015 +0100 mbedtls: fix "Structurally dead code" CID 1332129 commit daccbc3c5db2aefe4f81af73938b74727f3f0f95 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Oct 29 22:57:09 2015 +0100 mbedtls: fix "Logically dead code" CID 1332128 commit 00caa59fde9c5cb060b166e3d3dcbe308bb7411f Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Oct 29 14:59:11 2015 +0100 Revert "openssl: engine: remove double-free" This reverts commit 370ee919b37cc9a46c36428b2bb1527eae5db2bd. Issue #509 has all the details but it was confirmed that the crash was not due to this, so the previous commit was wrong. commit 9a1dd08f59c6a2a30126d51072ad2fdaa16707f8 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 28 13:17:54 2015 +0100 curl.1: -E: s/private certificate/client certificate ... as the certificate is strictly speaking not private. Reported-by: John Levon commit e9c1beaa4f11d3394a540a49251d06fba832eaa5 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Oct 27 13:45:25 2015 +0100 openssl: engine: remove double-free After a successful call to SSL_CTX_use_PrivateKey(), we must not call EVP_PKEY_free() on the key. Reported-by: nased0 Closes #509 commit 9fc667024a7089e699a444041e47634684409284 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Oct 27 02:39:00 2015 -0400 socks: Fix incorrect port numbers in failed connect messages commit 4213adf9398843a72f6af698a7ede31ce18d7a8c Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Oct 26 16:31:03 2015 +0100 DISTRO-DILEMMA: removed Out of date and not kept accurate. It was sort of a problem of the past anyway. commit 54cb23eae6fff0e99ba80a4014993faa0edc6d1b Author: xiangbin li <lxbdanny@gmail.com> Date: Sun Oct 25 12:35:16 2015 +0100 MacOSX-Framework: sdk regex fix for sdk 10.10 and later closes #507 commit 8ef19e30373551ba55a8a4a51d29810bbe68ab94 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Oct 24 03:31:57 2015 -0400 build: Fix support for PKG_CONFIG - Allow the user to use PKG_CONFIG but not PKGCONFIG. Background: Last week in 14d5a86 a change was made to allow the user to set the PKGCONFIG variable. Today in 72d99f2 I supplemented that to allow the more common PKG_CONFIG as an alternative if PKGCONFIG is not set. Neither of those changes worked as expected because PKGCONFIG is occasionally reset in configure and by the CURL_CHECK_PKGCONFIG macro. Instead in this commit I take the approach that the user may set PKG_CONFIG only. commit a09cf638dffb6f6be4656ac559ea1d5363ccc04a Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Oct 23 17:17:54 2015 -0400 build: Fix mingw ssl gdi32 order - If mingw ssl make sure -lgdi32 comes after ssl libs - Allow PKG_CONFIG to set pkg-config location and options Bug: https://github.com/bagder/curl/pull/501 Reported-by: Kang Lin commit 7ec354e062f73803f3a045a89f3a7f8f1b8575a0 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 23 16:40:44 2015 +0200 RELEASE-NOTES: synced with 03b6e078163f commit 08c392b12e48cf7ea23292cc7975e4c9dedca129 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 23 16:14:29 2015 +0200 polarssl/mbedtls: fix name space pollution Global private symbols MUST start with Curl_! commit 7dc12831d907bdc2ce86292a5468effa0880ebf9 Author: Dmitry S. Baikov <dsbaikov@gmail.com> Date: Fri Oct 23 15:46:03 2015 -0700 mbedTLS: THREADING_SUPPORT compilation fix Closes #505 commit 314ddc7fe74bce25b86536ae95755f7fc1f17169 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 23 15:24:56 2015 +0200 test1137: verify --ignore-content-length for FTP commit 87aebd689568571616d0e4af8cc7029864bc762a Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 23 15:24:31 2015 +0200 curl.1: --ignore-content-length now works for FTP too commit 56632a652a6c394fc8b6432dad839bb7ef6fe7eb Author: Kurt Fankhauser <kurtbutfrank@gmail.com> Date: Fri Oct 23 14:57:30 2015 +0200 ftp: allow CURLOPT_IGNORE_CONTENT_LENGTH to ignore size This allows FTP transfers with growing (or shrinking) files without causing a transfer error. Closes #480 commit 8b3392f989f6e8889d18ccb760e595261dbed91d Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 23 09:23:46 2015 +0200 CURLOPT_STREAM_WEIGHT.3: call argument 'weight' too ... and add a little example of what the weight actually means. "Relative proportion of bandwidth". commit b91ffbdb9774b36147727c52495d35b55469c5d4 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 23 09:16:00 2015 +0200 http2: add stream options to dist and curl_easy_setopt.3 commit 565ebb55e6d4ef9c0bbdbf56c7a091fb08ec9a88 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 21 22:47:24 2015 +0200 http2: s/priority/weight commit 2da5d3d73abcd123e9658892f3e765c164695fe3 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 21 15:45:07 2015 +0200 http2: on_frame_recv: trust the conn/data input Removed wrong assert()s The 'conn' passed in as userdata can be used and there can be other sessionhandles ('data') than the single one this checked for. commit b4d071f44edce0e433f9dfdba667a703013709e0 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 13 16:07:05 2015 +0200 http2: added three stream prio/deps options CURLOPT_STREAM_DEPENDS CURLOPT_STREAM_DEPENDS_E CURLOPT_STREAM_PRIORITY commit 766d0d45243ec98b74f83c07a64995ecd96965e1 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Oct 22 18:40:53 2015 +0200 RELEASE-NOTES: synced with ace68fdc0cfed83d commit 254f89ea67007a7763f59642e192a5ce7910f2d2 Author: m-gardet <m.gardet@overkiz.com> Date: Wed Oct 21 09:30:31 2015 +0200 mbedtls:new profile with RSA min key len = 1024. Closes #502 commit c81d4b05574aeb358981f77ce28a0c65e5b34d29 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 21 13:46:03 2015 +0200 checksrc: add crude // detection commit c84a2738964847aa2e8f4309f1b36413c6ad1df2 Author: Gisle Vanem <gvanem@yahoo.no> Date: Wed Oct 21 12:59:43 2015 -0400 build: fix for MSDOS/djgpp - Add a VPATH-statement for the vtls/*.c files. - Due to 'vtls/*.c', remove that subdir part from $(OBJECTS). commit daf015d933066fdffdcb2a8a1aabac1e851cbaa1 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Oct 20 13:33:01 2015 +0200 copyrights: update Gisle Vanem's email commit e4a7f0de700e73dd83000ee1759a9c5ef1887f54 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Oct 20 08:12:44 2015 +0200 vtls: fix compiler warning for TLS backends without sha256 ... noticed with mbedTLS. commit b499a7b67ed288800ef68300736e68dd0dce2eef Author: Jonas Minnberg <sasq64@gmail.com> Date: Mon Oct 19 14:25:34 2015 +0200 vtls: added support for mbedTLS closes #496 commit a2bacc46bae9a78a9d59db027b058dd5297faeef Author: Javier G. Sogo <jgsogo@gmail.com> Date: Mon Oct 19 16:09:14 2015 +0200 cmake: Fix for add_subdirectory(curl) use-case - Use CURL_BINARY_DIR instead of CMAKE_BINARY_DIR. When including CURL using add_subdirectory the variables CMAKE_BINARY_DIR and CURL_BINARY_DIR hold different paths. Closes https://github.com/bagder/curl/pull/488 Closes https://github.com/bagder/curl/pull/498 commit 2e49cde07398a21657babcd681f2b43c1a771d1d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Oct 18 23:48:07 2015 +0200 RELEASE-NOTES: synced with 4c773bcb474e commit b96cbcb18f3d4b843d686839d4e33bc50ff4f53d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Oct 18 23:25:26 2015 +0200 tests/FILEFORMAT: mention PSL as a valid feture to check for For example in test 1136 commit 8f3cd028e5af500e3e4169a2a948c1a6a2997b01 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Oct 18 23:20:08 2015 +0200 teste1136: only run when PSL is enabled commit 69297c9cad33f0b47f4c39482235e36b3df52b56 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Oct 18 00:43:37 2015 +0200 curl: slist_wc: remove curl_memory.h inclusion ... that's for the library only. commit 3c99c571eccc20512ffe582dd283d9a72f3cf43b Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Oct 18 00:11:13 2015 +0200 configure: add PSL to the list of features ... to make test 1014 work again after e77b5b7453. commit a535604a95c37eab4eae4f99fa04a53d0e0c3217 Author: Daniel Hwang <danielleehwang@gmail.com> Date: Sat Oct 17 23:57:58 2015 +0200 tool: Generate easysrc with last cache linked-list Using a last cache linked-list improves the performance of easysrc generation. Bug: https://github.com/bagder/curl/issues/444 Ref: https://github.com/bagder/curl/issues/429 Closes #452 commit 81c033e231bb0ad19cdd89e5437d4298f2ffafdd Author: Tim Rühsen <tim.ruehsen@gmx.de> Date: Tue Sep 29 11:33:01 2015 +0200 cookies: Add support for Mozilla's Publix Suffix List Use libpsl to check the domain value of Set-Cookie headers (and cookie jar entries) for not being a Publix Suffix. The configure script checks for "libpsl" by default. Disable the check with --without-libpsl. Ref: https://publicsuffix.org/ Ref: https://github.com/publicsuffix/list Ref: https://github.com/rockdaboot/libpsl commit 782788a79b25c9d302dfbd54c168d9f40cbd141c Author: Richard Hosking <richard@hovis.net> Date: Fri Oct 16 21:29:29 2015 +0100 curlbuild.h: Fix non-configure compiling to mips and sh4 targets commit b3f5a879a628d3f0cf79f18149148f67caf7e61b Author: Anders Bakken <agbakken@gmail.com> Date: Fri Oct 16 11:51:12 2015 -0700 http2: Don't pass unitialized name+len pairs to nghttp2_submit_request bug introduced by 18691642931e5c7ac8af83ac3a84fbcb36000f96. Closes #493 commit 4a28ed3ca7bf279d5336472a735c7d0ddb6d7532 Author: Dan Fandrich <dan@coneharvesters.com> Date: Fri Oct 16 21:43:56 2015 +0200 test1601: fix compilation with --enable-debug and --disable-crypto-auth commit 0ba8935ecda8d9341f67e1d32b1e0c2956f80235 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 16 22:42:30 2015 +0200 multi: fix off-by-one finit[] array size introduced in c6aedf680f6. It needs to be CURLM_STATE_LAST big since it must hande the range 0 .. CURLM_STATE_MSGSENT (18) and CURLM_STATE_LAST is 19 right now. Reported-by: Dan Fandrich Bug: http://curl.haxx.se/mail/lib-2015-10/0069.html commit 088095454b229639775954469e3e667ae967d91e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Oct 5 20:39:10 2015 +0200 fread_func: move callback pointer from set to state struct ... and assign it from the set.fread_func_set pointer in the Curl_init_CONNECT function. This A) avoids that we have code that assigns fields in the 'set' struct (which we always knew was bad) and more importantly B) it makes it impossibly to accidentally leave the wrong value for when the handle is re-used etc. Introducing a state-init functionality in multi.c, so that we can set a specific function to get called when we enter a state. The Curl_init_CONNECT is thus called when switching to the CONNECT state. Bug: https://github.com/bagder/curl/issues/346 Closes #346 commit a9677bc4c21fd05ca81ec9e69bd992a4b43f5faa Author: Dan Fandrich <dan@coneharvesters.com> Date: Wed Oct 14 22:00:09 2015 +0200 test1531: case the size to fix the test on non-largefile builds commit 7035608578d2d316d8a346c2ae2be734a7338119 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Oct 13 12:56:42 2015 +0200 acinclude: remove PKGCONFIG override ... and allow it to get set by a caller easier. Reported-by: Rainer Jung Bug: http://curl.haxx.se/mail/lib-2015-10/0035.html commit 9c6ee897d45fd3c56d1655403dec588652407a1d Author: Dan Fandrich <dan@coneharvesters.com> Date: Mon Oct 12 23:47:10 2015 +0200 docs/INSTALL: Updated example minimal binary sizes commit f0cfe2fee966a509babffaafab129993695ef3c5 Author: Erik Johansson <erik@ejohansson.se> Date: Fri Oct 9 21:02:13 2015 +0200 openssl: Fix set up of pkcs12 certificate verification chain sk_X509_pop will decrease the size of the stack which means that the loop would end after having added only half of the certificates. Also make sure that the X509 certificate is freed in case SSL_CTX_add_extra_chain_cert fails. commit eb5299e51f9e018e31c9e21194f7847dbce6c816 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 9 23:51:54 2015 +0200 ntlm: error out without 64bit support as the code needs it It makes it a clearer message for developers reaching that point without the necessary support. Thanks-by: Jay Satiro Closes #78 commit dc2388a65c51244a7b5adbbb4c24ef3dc3361c5d Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 9 16:13:54 2015 +0200 curl_global_init: set the memory function pointers correct follow-up from 6f8ecea0 commit 688a88cdde14cdfa1e693ba59ddc7f38a54fc6ca Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Oct 9 16:04:11 2015 +0200 curl_global_init_mem: set function pointers before doing init ... as in the polarssl TLS backend for example it uses memory functions. commit 7f205605529c03811016ac04a23c3696cbd7dc84 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Oct 8 02:48:44 2015 -0400 http2: Fix http2_recv to return -1 if recv returned -1 If the underlying recv called by http2_recv returns -1 then that is the value http2_recv returns to the caller. commit 8d822aef8ae6f613e6a2f93240e518c283e36e45 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Thu Oct 8 19:28:30 2015 +0300 curl_easy_recv.3: CURLINFO_LASTSOCKET => CURLINFO_ACTIVESOCKET Closes #479 commit 426f5fd49307bf73911c75d550d55057e357f7e1 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Thu Oct 8 19:26:47 2015 +0300 curl_easy_send.3: CURLINFO_LASTSOCKET => CURLINFO_ACTIVESOCKET commit c24caac014831ae19a10e8e3365da54ef42eff4f Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Thu Oct 8 18:14:18 2015 +0300 CURLOPT_CONNECT_ONLY.3: CURLINFO_LASTSOCKET => CURLINFO_ACTIVESOCKET commit 11dbc2a5aceff0c6b665bdd5ce21624f984a7a16 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Oct 8 13:47:52 2015 +0200 CURLOPT_CERTINFO.3: fix reference to CURLINFO_CERTINFO commit f8fa4421d870164f74bc5d8eb3a12cd8e1ca2b9d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Oct 8 12:30:22 2015 +0200 ntlm: get rid of unconditional use of long long ... since some compilers don't have it and instead use other types, such as __int64. Reported by: gkinseyhpw Closes #478 commit b2b5a4ebac5223c071cf78cf3dcb54234c58f909 Author: Anders Bakken <agbakken@gmail.com> Date: Wed Oct 7 12:40:23 2015 -0700 des: Fix header conditional for Curl_des_set_odd_parity Follow up to 613e502. commit 57be9e575512f4a9ffef4f0841fb633e34200b54 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 7 14:56:07 2015 +0200 configure: build silently by default 'make V=1' will make the build verbose like before commit 3048a67775e85364e558c12af4b822e5107ec41b Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 7 14:52:32 2015 +0200 bump: start climbing toward 7.46.0 commit 23d41e90567ad163b502a861d382a1a1bd9e1fa0 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 7 14:46:49 2015 +0200 RELEASE-PROCEDURE: add the github HTTPS download step commit c15b086c662e094122ac2bc5d365e84e9ae639b7 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Oct 7 10:12:39 2015 +0200 THANKS: 19 new contributors from the 7.45.0 announcement commit 04967cdb966517cb356d9b5402fdd81a2ffc1a42 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Oct 5 19:36:31 2015 +0200 RELEASE-NOTES: synced with 69ea57970080 commit 976b192904cdb812f5a531dd67fa42f749e8d70b Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Oct 1 16:39:40 2015 -0400 getinfo: Fix return code for unknown CURLINFO options - If a CURLINFO option is unknown return CURLE_UNKNOWN_OPTION. Prior to this change CURLE_BAD_FUNCTION_ARGUMENT was returned on unknown. That return value is contradicted by the CURLINFO option documentation which specifies a return of CURLE_UNKNOWN_OPTION on unknown. commit 6d3d8702fed9cc711894134531d2b65a64f02856 Author: rouzier <rouzier@gmail.com> Date: Sun Oct 4 14:30:07 2015 -0400 hiperfifo: fix the pointer passed to WRITEDATA Closes https://github.com/bagder/curl/pull/471 commit 19084c8fe0ad09ee19c6b6993001d524ab2c990d Author: Maksim Stsepanenka <mstsepanenka@gmail.com> Date: Fri Oct 2 02:43:57 2015 -0400 tool_setopt: fix c_escape truncated octal Closes https://github.com/bagder/curl/pull/469 commit 4e5b34a575460cfe46c434b7a9a0361307e8755e Author: Orange Tsai <orange@chroot.org> Date: Thu Oct 1 23:17:58 2015 +0800 gopher: don't send NUL byte Closes #466 commit 2d8524a9eacf1cc842b32f4832590b92ea2aa98e Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Sep 29 22:08:57 2015 -0400 runtests: Fix pid check in checkdied Because the 'not' operator has a very low precedence and as a result the entire statement was erroneously negated and could never be true. commit c055dbb6418a374ffc513efd26eedd5560bd38be Author: Thorsten Schöning <tschoening@am-soft.de> Date: Wed Sep 30 00:03:35 2015 +0200 win32: make recent Borland compilers use long long commit 5ab2a6e58608a4b2769d7adafb87646ccf427758 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Sep 29 10:57:42 2015 +0200 RELEASE-NOTES: synced with 69b89050d4 commit 266676355cfbaf3282f3626544451a5674095f09 Author: Michael Kalinin <kalinin@company.dnevnik.ru> Date: Tue Sep 22 02:49:54 2015 -0400 openssl: Fix algorithm init - Change algorithm init to happen after OpenSSL config load. Additional algorithms may be available due to the user's config so we initialize the algorithms after the user's config is loaded. Bug: https://github.com/bagder/curl/issues/447 Reported-by: Denis Feklushkin commit 8aa1e8979018c21b09610e8cdf8600c758cbe04d Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sun Sep 27 23:44:31 2015 -0400 docs: fix unescaped '\n' in man pages Closes https://github.com/bagder/curl/pull/459 commit 4b7d8a928289a0c6c59be2e1cd620e5f4b97aa9d Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 27 23:20:13 2015 +0200 http2: set TCP_NODELAY unconditionally For a single-stream download from localhost, we managed to increase transfer speed from 1.6MB/sec to around 400MB/sec, mostly because of this single fix. commit dd414b0883db23a0de6d13ba48ef27cdf6527b95 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 27 19:40:20 2015 +0200 http2: avoid superfluous Curl_expire() calls ... only call it when there is data arriving for another handle than the one that is currently driving it. Improves single-stream download performance quite a lot. Thanks-to: Tatsuhiro Tsujikawa Bug: http://curl.haxx.se/mail/lib-2015-09/0097.html commit dbe1059fe3437b04b2a08bdf8b8459fee8701500 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 27 20:48:35 2015 +0200 readwrite_data: set a max number of loops ... as otherwise a really fast pipe can "lock" one transfer for some protocols, like with HTTP/2. commit 86cf0cd6cd528a14d7bd33c40bd3f4ea246e1ca6 Author: Sergei Nikulov <sergey.nikulov@gmail.com> Date: Thu Sep 17 16:34:47 2015 +0300 CI: Added AppVeyor-CI for curl Closes #439 commit 9b3585b3f7faf7c11f0b4efcfdc5761abbe0bf8d Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Sep 26 23:36:25 2015 +0200 FTP: fix uploading ASCII with unknown size ... don't try to increase the supposed file size on newlines if we don't know what file size it is! Patch-by: lzsiga commit b6b902e74c1eee39e160d9864cf33f64b2dfba95 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Sep 26 17:24:34 2015 +0900 build: fix failures with -Wcast-align and -Werror Closes #457 commit 3bea9e99a84594992e849d086be178af80b38ac1 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Sep 26 17:23:35 2015 +0900 curl-confopts.m4: Add missing ')' ... for CURL_CHECK_OPTION_RT Closes #456 commit 2e988d8b7a64968759caf1dfe04018948ed108cc Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Sep 25 02:37:42 2015 -0400 curl_easy_getinfo.3: Add brief description for each CURLINFO commit 2bccb0593c903c6f51094555a2c9d585634c2cf6 Author: Jakub Zakrzewski <jzakrzewski@e2ebridge.com> Date: Wed Sep 16 17:33:23 2015 +0200 CMake: Ensure discovered include dirs are considered ...during header checks. Otherwise some following header tests (incorrectly) fail. Closes #436 commit 89ea3214f0d6bf49c08375983ca2cfe30b938f14 Author: Jakub Zakrzewski <jzakrzewski@e2ebridge.com> Date: Wed Sep 16 17:27:13 2015 +0200 CMake: Put "winsock2.h" before "windows.h" during configure checks "windows.h" includes "winsock.h" what causes many redefinition errors if "winsock2.h" is included afterwards and can cause build to fail. commit 90f8520aacbdfd05d4ce44118f2f271e86b025d0 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Sep 23 13:53:38 2015 +0200 tests: disable 1510 due to CI-problems on github commit 048fdf3abf0c9ff85d0631ff089537a90815dc9b Author: Mike Crowe <mac@mcrowe.com> Date: Wed Sep 23 13:31:29 2015 +0200 gnutls: Report actual GnuTLS error message for certificate errors If GnuTLS fails to read the certificate then include whatever reason it provides in the failure message reported to the client. Signed-off-by: Mike Crowe <mac@mcrowe.com> commit f91c2d955989ad76f8f95c06f38b34762279feb6 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Sep 22 22:21:58 2015 +0200 RELEASE-NOTES: synced with 6b56901b56e commit 995d03abdd32aa79fab9cf39b1b85de2f7ff7628 Author: Mike Crowe <mac@mcrowe.com> Date: Mon Sep 21 11:34:55 2015 +0200 gnutls: Support CURLOPT_KEYPASSWD The gnutls vtls back-end was previously ignoring any password set via CURLOPT_KEYPASSWD. Presumably this was because gnutls_certificate_set_x509_key_file did not support encrypted keys. gnutls now has a gnutls_certificate_set_x509_key_file2 function that does support encrypted keys. Let's determine at compile time whether the available gnutls supports this new function. If it does then use it to pass the password. If it does not then emit a helpful diagnostic if a password is set. This is preferable to the previous behaviour of just failing to read the certificate without giving a reason in that case. Signed-off-by: Mike Crowe <mac@mcrowe.com> commit 29bd0a0b06b5421b332f5208a665e021d5adf409 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Sep 22 17:21:37 2015 +0200 CURLINFO_TLS_SESSION: always return backend info ... even for those that don't support providing anything in the 'internals' struct member since it offers a convenient way for applications to figure this out. commit 6b62a8dedb06fa946530bcbad9bf23ded0108d0f Author: Daniel Hwang <danielleehwang@gmail.com> Date: Mon Sep 21 21:06:42 2015 -0700 tool: remove redundant libcurl check The easysrc generation is run only when --libcurl is initialized. Ref: https://github.com/bagder/curl/issues/429 Closes #448 commit 62978722136692cb41f4eaca935b51e86722afa2 Author: Richard van den Berg <richard.vandenberg@ncsc.nl> Date: Tue Sep 22 13:45:41 2015 +0200 CURLOPT_PROXY.3: A proxy given as env variable gets no special treatment Closes #449 commit 48c66cbc92c78fa2704478149c72c2e7ce219199 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Sep 22 10:53:55 2015 +0200 TODO: 5.7 More compressions Like for example brotli, as being implemented in Firefox now. commit 4643c88d679893b47230e058b9cb8d6008d03ec0 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Sep 21 02:21:38 2015 -0400 tool_operate: Don't call easysrc cleanup unless --libcurl - Review of 4d95491. The author changed it so easysrc only initializes when --libcurl but did not do the same for the call to easysrc cleanup. Ref: https://github.com/bagder/curl/issues/429 commit d115a8c143b10bd7fbd5c2fcb84a2fbb4898ffd4 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Sun Sep 20 16:08:15 2015 +0200 CURLOPT_PINNEDPUBLICKEY.3: replace test.com with example.com closes #443 commit 302d2620a838749e7d837974265f73b53da1c7c9 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 20 13:34:16 2015 +0200 KNOWN_BUGS: 91 "curl_easy_perform hangs with imap and PolarSSL" Closes #334 commit d23923cd4dc574e0bb69d25cfdd574f18002367a Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 20 13:31:22 2015 +0200 KNOWN_BUGS: add link to #85 commit 0f1c6fbbf75a6935e65702a0c10dae964a39c3cc Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 20 13:12:44 2015 +0200 tests: disable 1801 until fixed It is unreliable and causes CI problems on github Closes #380 commit 4a5feb0c327e91a6c0f22d4bee142e6a4578d2f9 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 20 13:00:19 2015 +0200 RELEASE-NOTES: synced with 4d95491636ee commit d31da2281b6447e7b538558dd6b5fbbe2c612345 Author: Daniel Lee Hwang <danielleehwang@gmail.com> Date: Sat Sep 19 23:16:23 2015 -0700 tool: generate easysrc only on --libcurl Code should only be generated when --libcurl is used. Bug: https://github.com/bagder/curl/issues/429 Reported-by: @greafhe, Jay Satiro Closes #429 Closes #442 commit 625c0ad5c6d69595987ee290327e254d2d677dc5 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Sep 19 22:40:40 2015 -0400 vtls: Change designator name for server's pubkey hash - Change the designator name we use to show the base64 encoded sha256 hash of the server's public key from 'pinnedpubkey' to 'public key hash'. Though the server's public key hash is only shown when comparing pinned public key hashes, the server's hash may not match one of the pinned. commit 8027ea3b4bb5e3b83c9bfc467222b5a9259e44dd Author: Isaac Boukris <iboukris@gmail.com> Date: Wed Sep 16 03:52:36 2015 +0300 NTLM: Reset auth-done when using a fresh connection With NTLM a new connection will always require authentication. Fixes #435 commit 55fee407c95adfde3f5449ef5b88c8c76af7b44a Author: Daniel Hwang <danielleehwang@gmail.com> Date: Sat Sep 12 14:35:12 2015 -0700 ssl: add server cert's "sha256//" hash to verbose Add a "pinnedpubkey" section to the "Server Certificate" verbose Bug: https://github.com/bagder/curl/issues/410 Reported-by: W. Mark Kubacki Closes #430 Closes #410 commit 7dee5fd34f0fcc24f978bf58ef6acf8230c8dbbe Author: Jakub Zakrzewski <jzakrzewski@e2ebridge.com> Date: Thu Sep 17 18:36:07 2015 +0200 openldap: only part of LDAP query results received Introduced with commit 65d141e6da5c6003a1592bbc87ee550b0ad75c2f Closes #440 commit c1238e31bc926e517684512b961109b3f2711d4d Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Mon Sep 14 12:26:12 2015 +0200 openssl: don't output certinfo data commit 52cd07f27ff0269a183a10991d94d047280c3eb6 Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Sat Sep 12 15:30:44 2015 +0200 openssl: refactor certificate parsing to use OpenSSL memory BIO Fixes #427 commit 652db4024ead91197ab0abecea417a9d7d4110bc Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Sep 18 17:10:05 2015 +0200 nss: prevent NSS from incorrectly re-using a session Without this workaround, NSS re-uses a session cache entry despite the server name does not match. This causes SNI host name to differ from the actual host name. Consequently, certain servers (e.g. github.com) respond by 400 to such requests. Bug: https://bugzilla.mozilla.org/1202264 commit b3e87c27688e296015fef0536e39573ca3491a86 Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Sep 18 17:07:22 2015 +0200 nss: check return values of NSS functions commit 090d6dc23f4710bf6deae5a48288d631a96c9bff Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 17 08:50:51 2015 +0200 CURLOPT_PINNEDPUBLICKEY.3: mention error code commit 258b00face4f9433604a7a30e4734b76f7da39ef Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 17 08:48:43 2015 +0200 openssl: build with < 0.9.8 ... without sha256 support and no define saying so. Reported-by: Rajkumar Mandal commit e588d975dcea431bd4d90355e0b9b48a7d2e68d3 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 17 08:48:15 2015 +0200 libcurl-errors.3: add two missing error codes CURLE_SSL_PINNEDPUBKEYNOTMATCH and CURLE_SSL_INVALIDCERTSTATUS commit 00ac69f67df581724984a318e3f991f8087ee88b Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Sep 14 03:16:04 2015 -0400 CURLOPT_PINNEDPUBLICKEY.3: Improve pubkey extraction example - Show how a certificate can be obtained using OpenSSL. Bug: https://github.com/bagder/curl/pull/430 Reported-by: Daniel Hwang commit d211e6cda98801bc27db18feafa151c47cd91bb6 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Sep 13 16:32:59 2015 +0200 http2: removed unused function commit be87ba335f9ea91dcfd5a8a3e19b253d3a737509 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Sep 12 23:37:52 2015 +0200 CURLINFO_ACTIVESOCKET.3: mention it replaces *LASTSOCKET commit 94b76a3fe2ade5dbae978d02c086e07f6217fd27 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Sep 12 23:22:33 2015 +0200 opts: add CURLINFO_* man pages to dist commit 8a00e3f5e8b63eaaf86b70ed1fcdff3b70eb6c46 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Sep 12 23:13:08 2015 +0200 opts: 19 more CURLINFO_* options made into stand-alone man pages commit a0e484aa3b9bf164f7ca44ea6e79e3836169cc05 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Sep 12 12:54:58 2015 +0200 RELEASE-NOTES: synced with fad9604613 commit 6517bd77ba7cb0dc9f5e678712d6fd70bd8b32fd Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Sep 11 18:49:28 2015 +0200 curl: customrequest_helper: deal with NULL custom method commit 0623f90fdd7681729e1dfad07db21501dca040be Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Fri Sep 11 17:52:01 2015 +0300 CURLOPT_FNMATCH_FUNCTION.3: fix typo s => is Closes #428 commit 798cd0176728dcf6082d7f0f93929003406c5add Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Aug 29 23:56:28 2015 +0200 curl: point out unnecessary uses of -X in verbose mode It uses 'Note:' as a prefix as opposed to the common 'Warning:' to take down the tone a bit. It adds a warning for using -XHEAD on other methods becasue that may lead to a hanging connection. commit b4cda170fbc57d9443b8ef31f066620a8efdc9c2 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Sep 10 02:17:33 2015 -0400 curl_sspi: fix possibly undefined CRYPT_E_REVOKED Bug: https://github.com/bagder/curl/pull/411 Reported-by: Viktor Szakats commit 1b256af4b2776cea1002b54023a543bcbecfa344 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Sep 9 02:46:48 2015 -0400 buildconf.bat: fix syntax error commit 203515eccaa8c9ce337ef0f6575bfe11c7cceb97 Author: Benjamin Kircher <kircher@otris.de> Date: Tue Sep 8 16:22:39 2015 +0200 winbuild: run buildconf.bat if necessary commit 73a9f086a76248e070d0413b74566be7e0a142fc Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Tue Sep 8 21:17:50 2015 -0400 docs: fix argument type for CURLINFO_SPEED_*, CURLINFO_SIZE_* long => double commit 6fbbc62ef2a55e5c15d176f35acc474fa84a7c46 Author: Sergei Nikulov <sergey.nikulov@gmail.com> Date: Thu Sep 3 15:20:32 2015 +0300 cmake: IPv6 : disable Unix header check on Windows platform Closes #409 commit c1eaabb6b3d52dddf8381a4529b6be36c5d12524 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Sep 8 13:42:48 2015 +0200 parse_proxy: reject illegal port numbers If the port number in the proxy string ended weirdly or the number is too large, skip it. Mostly as a means to bail out early if a "bare" IPv6 numerical address is used without enclosing brackets. Also mention the bracket requirement for IPv6 numerical addresses to the man page for CURLOPT_PROXY. Closes #415 Reported-by: Marcel Raad commit 458a40703d2f87845beef09be8eb235fffce1683 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Sep 8 09:29:03 2015 +0200 FTP: do_more: add check for wait_data_conn in upload case In some timing-dependnt cases when a 4xx response immediately followed after a 150 when a STOR was issued, this function would wrongly return 'complete == true' while 'wait_data_conn' was still set. Closes #405 Reported-by: Patricia Muscalu commit fe6dd154129c01a54735ffbbf9256d945a2ca5a3 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sun Sep 6 19:42:33 2015 +0300 CURLOPT_TLSAUTH_TYPE.3: update description Closes #414 Closes #413 commit b9bb0e0dac2c909eaad1e43e748c927bea25a126 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sat Sep 5 11:45:25 2015 +0300 CURLOPT_PATH_AS_IS.3: fix typo leavit => leaveit closes #412 commit 659383babe349d28ff52a062134df361219c8298 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sat Sep 5 11:34:01 2015 +0300 CURLINFO_SSL_VERIFYRESULT.3: add short description commit cd7473c300c446be4939f0b674bc0222fd4537c0 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sat Sep 5 11:30:51 2015 +0300 CURLINFO_SSL_ENGINES.3: add short description commit 349bdeef1b6d9011b6159ca2048034812843fc2e Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sat Sep 5 11:23:59 2015 +0300 CURLINFO_CONTENT_LENGTH_UPLOAD.3: replace "receive" with "get" for consistency commit c00ccda7292c0d76971fa8b29b97d796b844fb27 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sat Sep 5 11:19:40 2015 +0300 CURLINFO_REDIRECT_TIME.3: remove redundant '!' commit b1d843f51d42e4d7d89cbd719f5365c2e8f307f6 Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Sep 4 16:10:44 2015 +0200 Revert "has: generate the curl/has.h header" This reverts commit a60bde79f9adeb135d5c642a07f0d783fbfbbc25 I have pushed by mistake. Apologies for my incompetent use of the git repo! commit 149bab3278dbee441b4bdf807aaccbac3b96cc33 Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Sep 4 14:35:36 2015 +0200 nss: do not directly access SSL_ImplementedCiphers[] It causes dynamic linking issues at run-time after an update of NSS. Bug: https://lists.fedoraproject.org/pipermail/devel/2015-September/214117.html commit d0721307da0d3026dd600af03c9d38b0cc4ba90a Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 00:04:10 2015 +0200 has: generate the curl/has.h header changed macro name, moved and renamed script to become docs/libcurl/has.pl, generate code that is checksrc compliant commit 968ef7cde276307d8e106c337344aff7bfe6a8bb Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 23:35:41 2015 +0200 gitignore: ignore more generated VC Makefiles commit e9fbbb3c277f7b8238cfafb33f3e5449249d0824 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 23:34:53 2015 +0200 projects/Windows/.gitignore: ignore generated files for release commit 322d9438b989e9a8eca1930522422238ea205a03 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 22:23:50 2015 +0200 http2: don't pass on Connection: headers RFC 7540 section 8.1.2.2 states: "An endpoint MUST NOT generate an HTTP/2 message containing connection-specific header fields; any message containing connection-specific header fields MUST be treated as malformed" Closes #401 commit 9563dc99f4763b278115368888126f88d5aedd89 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 19:52:23 2015 +0200 curl.1: update RFC references commit 31b2d2603e9af24cef423a2ba4e9292111b54c08 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 17:33:16 2015 +0200 CURLOPT_POSTREDIR.3: update RFC number and section commit b68b51c093c866e2933b477e0bf73de7e5857424 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Sep 3 17:27:40 2015 +0200 CURLOPT_FOLLOWLOCATION.3: mention methods for redirects and some general cleaning up commit dac90e46e0193f70081528b6a3083a13c92ca89f Author: Marcel Raad <MarcelRaad@users.noreply.github.com> Date: Thu Sep 3 11:32:39 2015 +0200 inet_pton.c: Fix MSVC run-time check failure (2) This fixes another run-time check failure because of a narrowing cast on Visual C++. Closes #408 commit 1738824e455f325eabc1ccbe23348948d50ce65d Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Sep 3 02:35:11 2015 -0400 docs: Warn about any-domain cookies and multiple transfers - Warn that cookies without a domain are sent to any domain: CURLOPT_COOKIELIST, CURLOPT_COOKIEFILE, --cookie - Note that imported Set-Cookie cookies without a domain are no longer exported: CURLINFO_COOKIELIST, CURLOPT_COOKIEJAR, --cookie-jar commit 19518e0caf51523a23604d74250ec4d5bc5522d4 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Sep 2 06:52:12 2015 +0100 tool_sdecls.h: Fixed compilation warning from commit 4a889441d3 tool_sdecls.h:139 warning: comma at end of enumerator list commit 89ddac15e9dbf3da036ad928c0a373055e0276f1 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Sep 2 00:00:53 2015 +0200 opts: 8 more CURLINFO* options as stand-alone man pages commit f5c4e32e46697ac5d3dbe4e8340a7cbda61f1d00 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 31 23:17:53 2015 +0200 RELEASE-NOTES: synced with c764cb4add1a8 commit 04da21421883539e3944b01e266319d851fae7d3 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 31 16:03:53 2015 +0200 man-pages: more SEE ALSO links commit c76642829d385389b907b02c0d0aa9cfa70a45b8 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 31 15:27:58 2015 +0200 opts: more CURLINFO_* options as stand-alone man pages commit 41359ca452f8be5242e7d6714ba84aafaefcf354 Author: Steve Holme <steve_holme@hotmail.com> Date: Mon Aug 31 11:49:31 2015 +0100 sasl: Only define Curl_sasl_digest_get_pair() when CRYPTO_AUTH enabled Introduced in commit 59f3f92ba6 this function is only implemented when CURL_DISABLE_CRYPTO_AUTH is not defined. As such we shouldn't define the function in the header file either. commit 141bc45f56b7e897a9f348abea892c89e4ccb01c Author: Steve Holme <steve_holme@hotmail.com> Date: Mon Aug 31 11:45:47 2015 +0100 sasl: Updated SPN variables and comments for consistency In places the "host name" and "realm" variable was referred to as "instance" whilst in others it was referred to as "host". commit 337218ebc3988faedb4fd7c78b4b235c39333e6e Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Aug 30 23:20:31 2015 +0200 configure: check for HMAC_Update in openssl Turns out HMAC_Init is now deprecated in openssl master (and I spelled HMAC_Init_ex wrong in previous commit) commit 89343bb7531230179116f86cb8a4a5e8544e9abd Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 30 20:50:52 2015 +0100 win32: Use DES_set_odd_parity() from OpenSSL/BoringSSL by default Set HAVE_DES_SET_ODD_PARITY when using OpenSSL/BoringSSL as native Windows builds don't use the autoconf tools. commit 8c52d088f06f8f46fc4c4b2eac950ed0d414a51b Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 30 20:45:30 2015 +0100 des: Fixed compilation warning from commit 613e5022fe curl_ntlm_core.c:150: warning 'Curl_des_set_odd_parity' undefined; assuming extern returning int commit 2da7cf6c1a2c23c4b6d477e1bc84cab5fac513fb Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 30 15:09:43 2015 +0100 buildconf.bat: Fixed double blank line in 'curl manual' warning output commit 53f26acefa1257271f5195e83f9d393b0c144dca Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 30 11:51:55 2015 +0100 makefiles: Added our standard copyright header But kept the original author, when they were specified in a comment, as the initial copyright holder. commit de5ff37dac1de209e5846c4a527bc66a4f3aa122 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Aug 29 23:23:58 2015 -0400 CURLOPT_FILETIME.3: CURLINFO_FILETIME has its own manpage now commit e0077118f863f101fd0450127f1269dac9fce8f5 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Aug 29 13:55:00 2015 +0200 CURLINFO_RESPONSE_CODE.3: added short description commit 8f1e3b4a49a54f9920ca6e5a8f632ebd32c81b2b Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Aug 28 22:58:00 2015 +0200 opts: 7 initial CURLINFO_* options as stand-alone man pages commit 91599a4a37abdf7822dea27226b8de530c330fbf Author: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com> Date: Fri Aug 28 19:53:41 2015 +0300 libcurl.m4: Put braces around empty if body Put braces around empty "if" body in libcurl.m4 check to avoid warning: suggest braces around empty body in an 'if' statement and make it work with -Werror builds. Closes #402 commit 1c037a55936c0038ccf567b8e10c3bf5d936b070 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Tue Aug 25 08:31:02 2015 +0300 curl_easy_escape.3: escape '\n' Closes #398 commit da7d73d63825c7fcd2efb39231c6ee49de90d3d5 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Tue Aug 25 06:49:01 2015 +0300 curl_easy_{escape,setopt}.3: fix example remove redundant '}' commit 513d1619e64592fe3b178d1c8998f3893d2b718a Author: Sergei Nikulov <sergey.nikulov@gmail.com> Date: Tue Aug 25 14:56:55 2015 +0300 cmake: added Windows SSL support Closes #399 commit 4dc66987ecab7a5ed535c84ba588f2bac12db58e Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Aug 25 09:20:56 2015 +0200 curl: point out the conflicting HTTP methods if used It isn't always clear to the user which options that cause the HTTP methods to conflict so by spelling them out it should hopefully be easier to understand why curl complains. commit ccf03e55e6d10eddc678b1462ef062f0ac312a03 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Aug 25 00:04:03 2015 +0200 curl: clarify that users can only specify one _METHOD_ commit 80d2c417605eb903163b744d43a2825c466680e3 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Sun Aug 23 14:43:04 2015 +0300 curl_easy_{escape,unescape}.3: "char *" vs. "const char *" Closes #395 commit a662f600aefafd53ca73853e388829252d2c9186 Author: Patrick Monnerat <pm@datasphere.ch> Date: Mon Aug 24 14:20:34 2015 +0200 os400: include new options in wrappers and update ILE/RPG binding. commit 763abb28aa953e174c6dec32a2c657d33128bdac Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 24 12:56:20 2015 +0200 KNOWN_BUGS: #2, not reading a HEAD response-body is not a bug ... since HTTP is forbidden to return any such. commit e2c986b9f2ae884a2984e5c7def6ce210c003ce5 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 24 12:53:38 2015 +0200 KNOWN_BUGS: #78 zero-length files is already fixed! commit 146557f8ab9add41ee33d79549ea5dd1da78b081 Author: Razvan Cojocaru <rcojocaru@bitdefender.com> Date: Fri Aug 21 10:29:05 2015 +0200 getinfo: added CURLINFO_ACTIVESOCKET This patch addresses known bug #76, where on 64-bit Windows SOCKET is 64 bits wide, but long is only 32, making CURLINFO_LASTSOCKET unreliable. Signed-off-by: Razvan Cojocaru <rcojocaru@bitdefender.com> commit baa8538194f9f99e7a4ba531b10efe521deda61e Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 24 11:31:45 2015 +0200 http2: remove dead code Leftovers from when we removed the private socket hash. Coverity CID 1317365, "Logically dead code" commit 7c271bfaf796a4aa6cbed258f4485cc725a063df Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 24 11:29:22 2015 +0200 ntlm: mark deliberate switch case fall-through Coverity CID 1317367, "Missing break in switch" commit f78469bd760cec81a4c5e4fcd337593afc8cd98f Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 24 11:26:30 2015 +0200 http2: on_frame_recv: get a proper 'conn' for the debug logging "Explicit null dereferenced (FORWARD_NULL)" Coverity CID 1317366 commit eb10ff6bba4548b4b5f91d07336255f704cd9614 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 24 00:21:08 2015 +0200 RELEASE-NOTES: synced with 2acaf3c804 commit 75c781b955cae28a6343330ac2c519907b81bd32 Author: Dan Fandrich <dan@coneharvesters.com> Date: Sun Aug 23 20:57:17 2015 +0200 tool: fix memory leak with --proto-default option commit d0f4a9080871197d636c16d9ea305922b38ee7ca Author: Nathaniel Waisbrot <code@waisbrot.net> Date: Sat Aug 22 21:49:26 2015 -0400 CURLOPT_DEFAULT_PROTOCOL: added - Add new option CURLOPT_DEFAULT_PROTOCOL to allow specifying a default protocol for schemeless URLs. - Add new tool option --proto-default to expose CURLOPT_DEFAULT_PROTOCOL. In the case of schemeless URLs libcurl will behave in this way: When the option is used libcurl will use the supplied default. When the option is not used, libcurl will follow its usual plan of guessing from the hostname and falling back to 'http'. commit decebf36625c9b18aa3427e62d4642d6baef314c Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Aug 22 21:19:34 2015 -0400 runtests: Allow for spaces in server-verify curl custom path commit 938a27af0106c530e69692901760aceb477a91c6 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Aug 22 23:56:55 2015 +0200 NTLM: recent boringssl brought DES_set_odd_parity back ... so improve the #ifdefs for using our local implementation. commit b005f905434243a5565cb1fa20cc72c76ca6fbb4 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Aug 22 00:05:03 2015 +0200 configure: detect latest boringssl Since boringssl brought back DES_set_odd_parity again, it cannot be used to differentiate from boringssl. Using the OPENSSL_IS_BORINGSSL define seems better anyway. URL: https://android.googlesource.com/platform/external/curl/+/f551028d5caab29d4b4a4ae8c159c76c3cfd4887%5E!/ Original-patch-by: Bertrand Simonnet Closes #393 commit 4d52bb72088fc0a046d44f1f57d76a0cf36d227c Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Aug 21 23:58:24 2015 +0200 configure: change functions to detect openssl (clones) ... since boringssl moved the former ones and the check started to fail. URL: https://android.googlesource.com/platform/external/curl/+/f551028d5caab29d4b4a4ae8c159c76c3cfd4887%5E!/ Original-patch-by: Bertrand Simonnet commit d647b775057ee28f03d0ad51cccf667870cc642e Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Fri Aug 21 14:50:45 2015 +0200 openssl: handle lack of server cert when strict checking disabled If strict certificate checking is disabled (CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST are disabled) do not fail if the server doesn't present a certificate at all. Closes #392 commit d116e84f918b5215e7e39e9df69bdb344986990c Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Aug 21 13:30:08 2015 +0200 ftp: clear the do_more bit when the server has connected The multi state machine would otherwise go into the DO_MORE state after DO, even for the case when the FTP state machine had already performed those duties, which caused libcurl to get stuck in that state and fail miserably. This occured for for active ftp uploads. Reported-by: Patricia Muscalu commit 775b8799209680aaf731fb90142def5ea0921351 Author: Jactry Zeng <jactry92@gmail.com> Date: Fri Aug 21 12:10:59 2015 +0800 travis.yml: Add OS X testbot. commit 846770a29cc273405433094e1bf3e944a6c607c2 Author: Rémy Léone <remy.leone@gmail.com> Date: Mon Aug 17 18:08:55 2015 +0200 travis: Upgrading to container based build http://docs.travis-ci.com/user/migrating-from-legacy Closes #388 commit 9257d0d6ad7d69a851d101e49648fa1e0258851b Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Aug 20 23:12:21 2015 +0200 RELEASE-NOTES: synced with 14ff86256b13e commit 7a872d352455ffb27b100adb4a23fd2c7290c7a5 Author: Erik Janssen <erik.janssen@axis.com> Date: Thu Aug 20 23:07:03 2015 +0200 rtsp: stop reading empty DESCRIBE responses Based-on-patch-by: Jim Hollinger commit 9e33ce15e4a0b2fd11053c35bc5d1b244134d61e Author: Erik Janssen <erik.janssen@axis.com> Date: Thu Aug 20 23:02:28 2015 +0200 rtsp: support basic/digest authentication commit 7d6b0b7333a146fb4304e3ed189d98c63f20bcc6 Author: Sam Roth <s-roth@onu.edu> Date: Tue Aug 18 14:42:18 2015 -0500 CURLMOPT_PUSHFUNCTION.3: fix argument types Closes #389 Closes #386 commit 00c0bb87ed401d74e5f5a45e79a2aeb80a6a95fa Author: Marcel Raad <MarcelRaad@users.noreply.github.com> Date: Tue Aug 18 09:39:38 2015 +0200 inet_pton.c: Fix MSVC run-time check failure Visual Studio complains with a message box: "Run-Time Check Failure #1 - A cast to a smaller data type has caused a loss of data. If this was intentional, you should mask the source of the cast with the appropriate bitmask. For example: char c = (i & 0xFF); Changing the code in this way will not affect the quality of the resulting optimized code." This is because only 'val' is cast to unsigned char, so the "& 0xff" has no effect. Closes #387 commit 1f98e70e1e0a6f61301fcc642caadee1304a0417 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Aug 18 01:18:27 2015 -0400 docs: Update the redirect protocols disabled by default - Clarify that FILE and SCP are disabled by default since 7.19.4 - Add that SMB and SMBS are disabled by default since 7.40.0 - Add CURLPROTO_SMBS to the list of protocols commit 614745ae9ba6bf1a4f2976375756c2300f27c539 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Aug 18 01:03:05 2015 -0400 gitignore: Sort for readability find . -name .gitignore -print0 | xargs -i -0 sort -o '{}' '{}' commit 018d8a89db16c87fcb9777236c4bc70b56161471 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Aug 15 23:56:28 2015 +0200 curl_easy_getinfo.3: fix superfluous space ... and changed "oriented" to "related" Closes #378 commit 3bcaa355bbc1d56862bc2e3d06d58b8d1d38645e Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Aug 15 23:36:28 2015 +0200 CURLOPT_HTTP_VERSION.3: connection re-use goes before version commit a39a36614bf82ba1dc53b8796f98799ec400c02b Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net> Date: Sat Aug 15 10:33:59 2015 +0200 curl.1: Document weaknesses in SSLv2 and SSLv3 Acknowledge that SSLv3 is also widely considered to be insecure. Also, provide references for people who want to know more about why it's insecure. commit f9446975c7389bc4c99138544bf70373e0fbb529 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Aug 14 20:59:48 2015 +0100 generate.bat: Added support for generating only the prerequisite files commit 7b545f0b25038333f3d6cc89dd521164a2830f1a Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Aug 14 20:44:55 2015 +0100 generate.bat: Only call buildconf.bat if it exists commit 70557a5e1d807c51d98af19f44c175a9c385d02f Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Aug 14 20:38:57 2015 +0100 generate.bat: Fixed issues when ran in directories with special chars commit 070bbba05ffc999c7758a7db25fe7ff8b3bce85e Author: Brad King <brad.king@kitware.com> Date: Fri Aug 14 15:35:05 2015 +0200 cmake: Fix CurlTests check for gethostbyname_r with 5 arguments Fix the check code to pass 5 arguments instead of 6. This typo was introduced by commit aebfd4cfbf (cmake: fix gethostby{addr,name}_r in CurlTests, 2014-10-31). commit f86981f5f7a0775e9884773d315e269a654cb9ec Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Aug 14 06:54:16 2015 +0100 * buildconf.bat: Fixed issues when ran in directories with special chars Bug: https://github.com/bagder/curl/pull/379 Reported-by: Daniel Seither commit cfc27d62e0662eb11ff5622919402d04dca4d6af Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Aug 13 23:29:27 2015 -0400 curl_global_init_mem.3: Stronger thread safety warning Bug: http://curl.haxx.se/mail/lib-2015-08/0016.html Reported-by: Eric Ridge commit 21898bbda26620b70aa72de3bc03bf6db9bee807 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Wed Aug 12 14:48:31 2015 +0300 curl_multi_add_handle.3: fix a typo "can not" => "cannot" closes #377 commit 1eb9c48482d6b00e7b9ed24850ed04041345865e Author: Alessandro Ghedini <alessandro@ghedini.me> Date: Wed Aug 12 11:23:23 2015 +0200 docs: fix typos closes #376 commit 7b2a940badfdd2e1157af0f441fbf68cc38fccf6 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Aug 12 09:07:37 2015 +0200 bump: start working toward 7.45.0 commit 14d066f107126320ec69c6a970e2f2c6eeb520c6 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Aug 12 08:34:55 2015 +0200 THANKS: remove duplicate name commit 04bbed1c8d7adb117e2fa89cd7d4e5d9e9b3457c Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Aug 12 08:32:10 2015 +0200 THANKS-filter: merge Todd's names commit dbd30ffee8c7a7019fc547007f6294cc29dd481b Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Aug 12 08:21:44 2015 +0200 THANKS: 13 new contributors from the 7.44.0 RELEASE-NOTES commit f8c223bde78884672fdb09f5e2cc58f79cc76173 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Aug 11 20:13:01 2015 +0200 RELEASE-NOTES: synced with c75a1e775061 commit 254a91fc07d0e9467a35f4d2784302840ace6658 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Tue Aug 11 20:08:13 2015 +0200 curl_formget.3: correct return code Closes #375 commit d3125d6b5d1c61825be3bbd70715d190b8f089ec Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Tue Aug 11 15:45:49 2015 +0300 libcurl-tutorial.3: fix formatting Closes #374 commit 4b0b2b358f7affe52f3f61c442d4dba62ec00a11 Author: Svyatoslav Mishyn <juef@openmailbox.org> Date: Tue Aug 11 15:39:22 2015 +0300 curl_easy_recv.3: fix formatting commit 8b80927cf52d2cd44b2d907205620f299b77c856 Author: Anders Bakken <agbakken@gmail.com> Date: Mon Aug 10 17:26:36 2015 -0700 http2: discard frames with no SessionHandle Return 0 instead of NGHTTP2_ERR_CALLBACK_FAILURE if we can't locate the SessionHandle. Apparently mod_h2 will sometimes send a frame for a stream_id we're finished with. Use nghttp2_session_get_stream_user_data and nghttp2_session_set_stream_user_data to identify SessionHandles instead of a hash. Closes #372 commit 28622a70a1ebb4e40814b4a52d2702717798e41d Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Aug 11 00:16:19 2015 +0200 RELEASE-NOTES: synced with 9ee40ce2aba commit 8fb3ac3082e02c3c2cb27aa0a8056abf8d9c5f54 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Mon Aug 10 22:48:53 2015 +0200 build: refer to fixed libidn versions closes #371 commit 18c8fd54cae92f42bb16ad1b19ae5bda328ecd11 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 10 14:53:48 2015 +0200 Revert "configure: disable libidn by default" This reverts commit e6749055d65398315fd77f5b5b8234c5552ac2d3. ... since libidn has since been fixed. commit daa6b61f7ec4a39ede33a2af84ff78c7ea948310 Author: Jakub Zakrzewski <jzakrzewski@e2ebridge.com> Date: Mon Aug 10 13:09:58 2015 +0200 CMake: s/HAVE_GSS_API/HAVE_GSSAPI/ to match header define Otherwise the build only pretended to use GSS-API Closes #370 commit bee85814fd1ec43392f607104b1dc0991c86aa56 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Aug 6 15:29:42 2015 +0200 SFTP: fix range request off-by-one in size check Reported-by: Tim Stack Closes #359 commit 6a3df0827b026fdbc65f4a3ee639ada1690a8df7 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 10 00:12:12 2015 +0200 test46: update cookie expire time ... since it went old and thus was expired and caused the test to fail! commit 1f6fd4f4f115c85b2017ba4d6a413ca092a22648 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 17:59:31 2015 +0100 generate.bat: Use buildconf.bat for prerequisite file generation commit 12a45dd0db9ea936be678083adcb76e522e52458 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 17:57:40 2015 +0100 buildconf.bat: Tidy up of comments after recent commits commit ee8db637640a7b3d94cc3c424d6cde37922f9b4e Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 17:54:09 2015 +0100 buildconf.bat: Added full generation of src\tool_hugehelp.c Added support for generating the full man page based on code from generate.bat. commit 3fab24da301fdffff5105378c8848748e88bc4d9 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 17:09:49 2015 +0100 buildconf.bat: Added detection of groff, nroff, perl and gzip To allow for the full generation of tool_hugehelp.c added detection of the required programs - based on code from generate.bat. commit 3d0199e2fd46edc94952f06c55e90d055b49bd05 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 17:02:27 2015 +0100 buildconf.bat: Move DOS variable clean-up code to separate function Rather than duplicate future variables, during clean-up of both success and error conditions, use a common function that can be called by both. commit 42a28518964495899d74ee77761c453aebff709e Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 11:51:55 2015 +0100 RELEASE-NOTES: Synced with 39dcf352d2 commit 3257f129a79bc0674e2a9c1efe8a836b8ca368d0 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 11:27:33 2015 +0100 buildconf.bat: Added error messages on failure commit 206d98066cf6aee164b280870c2490bf7c96cdc1 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 11:04:04 2015 +0100 buildconf.bat: Generate and clean files in the same order commit 9cbed22049f0d8baf67292ccae60476244b350b4 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Aug 9 11:00:07 2015 +0100 buildconf.bat: Maintain compatibility with DOS based systems Commit f08e30d7bc broke compatibility with DOS and non Windows NT based versions of Windows due to the use of the setlocal command. commit 583f850b1df4e6274d0797c136135528fba9ee58 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sun Aug 9 02:33:25 2015 -0400 CURLOPT_RESOLVE.3: Note removal support was added in 7.42 Bug: http://curl.haxx.se/mail/lib-2015-08/0019.html Reported-by: Inca R commit eadc199636e84f8278920e5143f871f8934b05f9 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 20:59:27 2015 +0100 checksrc.bat: Fixed error when missing *.c and *.h files File Not Found commit e9a39cc24d5b13d43cf353e591b70c8ba4982eea Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 20:48:31 2015 +0100 checksrc.bat: Fixed incorrect 'lib\vtls' path check in commit 333c36b276 commit d586c3ac597956ea68ce04457b59b3943c7b3433 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 11:35:59 2015 +0100 checksrc.bat: Fixed error when [directory] isn't a curl source directory The system cannot find the file specified. commit 5921998ccfd1540c3e2986e9206cd5f9af889138 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 11:21:49 2015 +0100 checksrc.bat: Added check for unknown arguments commit b5660ac63b6cd7ae36b909eba6792b83a9ef4d1f Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 11:11:46 2015 +0100 scripts: Added missing comments commit bf9b98b29bc7d8a64bbe89524eaacebdcfd83d80 Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 11:09:08 2015 +0100 scripts: Always perform setlocal and endlocal calls in pairs Ensure that there isn't a mismatch between setlocal and endlocal calls, which could have happened due to setlocal being called after certain error conditions were checked for. commit 27430cf86b368777156780ec88a1f188a1838cea Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 8 11:04:55 2015 +0100 scripts: Allow -help to be specified in any argument Allow the -help command line argument to be specified in any argument and not just as the first. commit cee8f790f1ef71f2d2a3848e45758bec91b50575 Author: juef <juef@openmailbox.org> Date: Thu Aug 6 17:28:05 2015 +0300 curl_multi_remove_handle.3: fix formatting closes #366 commit 2d1c4c59c8689e1d9bfbc224e5b5ff4af5ed197c Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Aug 6 20:57:05 2015 +0100 README: Added notes about 'Running DLL based configurations' ...as well as a TODO for a future enhancement to the project files. Thanks-to: Jay Satiro commit b398d950774195c6433bcb0976c1a1697a6055bc Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Aug 6 18:59:59 2015 +0100 RELEASE-NOTES: Synced with cf8975387f commit eb6332b64769720d2d249515004b109d6ec41e35 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Aug 6 17:39:20 2015 +0100 buildconf.bat: Synchronise no repository error with generate.bat commit 059735c2fccf3646019f2145779fbcb2e5c82906 Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Aug 6 17:33:02 2015 +0100 generate.bat: Added a check for the presence of a git repository commit 33f1c753ab0be7de981f01ba05fbd32cd5d4aafa Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Aug 6 07:43:21 2015 +0100 build: Added wolfSSL configurations to VC10+ project files URL: https://github.com/bagder/curl/pull/174 commit e425fd50105800122ebcc0800ee5e1b2d97d6a95 Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Aug 6 02:08:58 2015 -0400 build: Added wolfSSL build script for Visual Studio projects Added the wolfSSL build script, based on build-openssl.bat, as well as the property sheet and header file required for the upcoming additions to the Visual Studio project files. commit 82cb3774716ac3a163aa259bbab97cd56fe77a91 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Aug 6 15:28:27 2015 +0200 CHANGES: refer to the online changelog Suggested-by: mc0e commit 87d12ab99b67be5bfb3a1c09a456689869244118 Author: Isaac Boukris <iboukris@gmail.com> Date: Tue Aug 4 02:20:23 2015 +0300 NTLM: handle auth for only a single request Currently when the server responds with 401 on NTLM authenticated connection (re-used) we consider it to have failed. However this is legitimate and may happen when for example IIS is set configured to 'authPersistSingleRequest' or when the request goes thru a proxy (with 'via' header). Implemented by imploying an additional state once a connection is re-used to indicate that if we receive 401 we need to restart authentication. Closes #363 commit 13819d815031034eb2ba7c5167d49c4289c1bac8 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 19:34:47 2015 +0100 RELEASE-NOTES: Synced with 473807b95f commit 18e4385c66f55a7660641139c5919a9276b7d08f Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 19:15:46 2015 +0100 generate.bat: Use buildconf.bat for prerequisite file clean-up commit 462bf88e9e288a3c41735c8dcd3f479b89e30e71 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 17:59:38 2015 +0100 buildconf.bat: Added support for file clean-up via -clean commit 7f8cdb3091a41f669cee49833c00066214d339c3 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 17:40:28 2015 +0100 buildconf.bat: Added progress output commit f9c89d0b5f74412fe4b2807590dbb210b1b7a390 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 17:32:45 2015 +0100 buildconf.bat: Avoid using goto for file not in repository commit 5df09fe8b9ee4fa1672f9090375af44292e3a7c2 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Aug 5 14:28:21 2015 +0200 curl_slist_append.3: add error checking to the example commit b6d5e18b68ddeaa05534361707cdebf22f38d446 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 06:41:40 2015 +0100 buildconf.bat: Added display of usage text with -help commit 685c7f5fab594bf63f6a051eb56ecff7f9eaa9bf Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 06:36:42 2015 +0100 buildconf.bat: Added exit codes for error handling commit c1f83dfbd2518c100fe6b989e3cd425dc2a8cbc1 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 06:26:19 2015 +0100 buildconf.bat: Added our standard copyright header commit f776668eee6a920600665276b43739da27688f66 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Aug 5 06:22:06 2015 +0100 buildconf.bat: Use lower-case for commands and reserved keywords commit eefeed43d2637767cb87af51fa778be75eb57b61 Author: Steve Holme <steve_holme@hotmail.com> Date: Mon Aug 3 22:49:56 2015 +0100 generate.bat: Only clean prerequisite files when in ALL mode commit 999e32d627672e0e3ce503a1853af765e6340356 Author: Steve Holme <steve_holme@hotmail.com> Date: Mon Aug 3 22:45:04 2015 +0100 generate.bat: Moved error messages out of sub-routines commit fb7e397e88af55215c43b8f02a5640ef6b71bf03 Author: Steve Holme <steve_holme@hotmail.com> Date: Mon Aug 3 22:38:56 2015 +0100 generate.bat: More use of lower-case for commands and reserved keywords commit fd1187068484f3c0c858fcb58ffe642be7a1972a Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 3 23:28:31 2015 +0200 libcurl.3: fix a single typo Closes #361 commit 726cde81740db42d6c25297ec1f1e8abc45938ce Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Aug 3 14:50:18 2015 +0200 RELEASE-NOTES: synced with c4eb10e2f06f commit 3d18bc91073dc273a0490ccbfd4976b8c869f1cf Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Aug 2 22:50:31 2015 +0200 SSH: three state machine fixups The SSH state machine didn't clear the 'rc' variable appropriately in a two places which prevented it from looping the way it should. And it lacked an 'else' statement that made it possible to erroneously get stuck in the SSH_AUTH_AGENT state. Reported-by: Tim Stack Closes #357 commit 86fca3da56388032d2c5ed78d4dc74804ce5bf39 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Aug 2 00:24:38 2015 +0200 curl_gssapi: remove 'const' to fix compiler warnings initialization discards 'const' qualifier from pointer target type commit 3d921ff0de458a766f4074cedd4a3057f48bd343 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Aug 2 00:14:23 2015 +0200 docs: formpost needs the full size at start of upload Closes #360 commit 86fde7532b7ea9c314de78b1600589b09ed8006d Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 1 22:53:18 2015 +0100 sspi: Fix typo from left over from old code which referenced NTLM References to NTLM in the identity generation should have been removed in commit c469941293 but not all were. commit f117a607174c0fbdeccd1a8f1fb7efd4255ea29a Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 1 22:50:42 2015 +0100 win32: Fix compilation warnings from commit 40c921f8b8 connect.c:953:5: warning: initializer element is not computable at load time connect.c:953:5: warning: missing initializer for field 'dwMinorVersion' of 'OSVERSIONINFOEX' curl_sspi.c:97:5: warning: initializer element is not computable at load time curl_sspi.c:97:5: warning: missing initializer for field 'szCSDVersion' of 'OSVERSIONINFOEX' commit f67806fd7e4597c80ff2da3bb1a7ff7b66a85cad Author: Steve Holme <steve_holme@hotmail.com> Date: Sat Aug 1 22:46:21 2015 +0100 schannel: Fix compilation warning from commit 7a8e861a56 schannel.c:1125:5: warning: missing initializer for field 'dwMinorVersion' of 'OSVERSIONINFOEX' [-Wmissing-field-initializers commit 661fbd837ee4cea4c68c67686869ed35a2558701 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Jul 31 23:19:02 2015 +0200 libcurl-thread.3: minor reformatting commit 48d16a84848a360ded1c51e86734205c1a819708 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Jul 31 02:38:44 2015 -0400 curl_global_init_mem.3: Warn threaded resolver needs thread safe funcs Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html Reported-by: Eric Ridge commit 9a8a2a31186c58b54202ec7ff0cc91b421dc2828 Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Jul 31 01:58:03 2015 -0400 libcurl-thread.3: Warn memory functions must be thread safe Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html Reported-by: Eric Ridge commit 4ec175c40e34068860a251ca551a68cd0b87cc11 Author: Steve Holme <steve_holme@hotmail.com> Date: Fri Jul 31 06:24:35 2015 +0100 RELEASE-NOTES: Synced with 8b1d00ac1a commit 6a59923a96d6dd21b43ce6e8dfa6a27176470c1d Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Jul 30 16:59:55 2015 +0100 INSTALL: Minor formatting correction in 'Legacy Windows and SSL' section ...as well as some rewording. commit 7b4e12cb80996c6b37f43339549e9918718442de Author: Kamil Dudka <kdudka@redhat.com> Date: Thu Jul 30 12:01:20 2015 +0200 http: move HTTP/2 cleanup code off http_disconnect() Otherwise it would never be called for an HTTP/2 connection, which has its own disconnect handler. I spotted this while debugging <https://bugzilla.redhat.com/1248389> where the http_disconnect() handler was called on an FTP session handle causing 'dnf' to crash. conn->data->req.protop of type (struct FTP *) was reinterpreted as type (struct HTTP *) which resulted in SIGSEGV in Curl_add_buffer_free() after printing the "Connection cache is full, closing the oldest one." message. A previously working version of libcurl started to crash after it was recompiled with the HTTP/2 support despite the HTTP/2 protocol was not actually used. This commit makes it work again although I suspect the root cause (reinterpreting session handle data of incompatible protocol) still has to be fixed. Otherwise the same will happen when mixing FTP and HTTP/2 connections and exceeding the connection cache limit. Reported-by: Tomas Tomecek Bug: https://bugzilla.redhat.com/1248389 commit de1b107e3fe395f910aa43c30071d5035e9906d6 Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Thu Jul 30 15:01:06 2015 +0200 ABI doc: use secure URL commit 7cfd1e5690b81c6ec2617a7f792d2c0cfccb19e1 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jul 30 12:16:14 2015 +0200 ABI: remove the ascii logo and made the indent level to 1 commit c2085c9a7842dc860c5f65e06aaba20cc5adc094 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jul 30 10:17:37 2015 +0200 libcurl-multi.3: mention curl_multi_wait ... and some general rewordings to improve this docs. Reported-by: Tim Stack Closes #356 commit dc37692203812bf132042998db2ea63cba95673a Author: Steve Holme <steve_holme@hotmail.com> Date: Thu Jul 30 06:34:03 2015 +0100 maketgz: Fixed some VC makefiles missing from the release tarball VC7, VC11, VC12 and VC14 makefiles were missing from the release tarball. commit 5037a599a1b7cbd677d29d4ae49c656ff279f5e0 Author: Steve Holme <steve_holme@hotmail.com> Date: Wed Jul 29 19:17:18 2015 +0100 RELEASE-NOTES: Synced with 2d7e165761 commit d97227efaa0809f341847745645f9c150abfb36a Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 21:47:25 2015 +0100 build: Added VC14 project files to Makefile.am commit 571925b2889ae6bfdb48e0758e3a5cd7065a7cb9 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 21:35:45 2015 +0100 build: Added VC14 project files Updates to Makefile.am for the generation of the project files in the tarball to follow. commit 9fafc9c31d3843f4ba2d539877a8c61c88665dd0 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Jul 29 02:05:32 2015 -0400 libcurl-thread.3: Clarify CURLOPT_NOSIGNAL takes long value 1L commit 5caf80d62eeb6bcfe7c60f434ccb652dacc2fc95 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 20:59:56 2015 +0100 generate.bat: Use lower-case for commands and reserved keywords Whilst there are no coding standards for the batch files used in curl, most tend to use lower-case for keywords and upper-case for variables. commit f7567ee7e2600199b2bfdeac4dd60e0c5f1fe66a Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 20:59:16 2015 +0100 build: Added initial VC14 support to generate.bat Visual Studio project files and updates to makefile.am to follow. commit ae11880d7873ed84a02844ea7e340a84ba835637 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 20:47:39 2015 +0100 build: Fixed missing .opensdf files from VC10+ .gitignore files commit 83b01eaded01e89a68239ba2bd4701bfa5075d59 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 20:44:17 2015 +0100 build: Use $(ProjectName) macro for curl.exe and curld.exe filenames This wasn't possible with the old curlsrc project filenames, but like commit 2a615a2b64 and 11397eb6dd for libcurl use the built in Visual Studio macros for the output filenames. commit c93fdbe75a7c287c122cd1bd669c5ed567a9d785 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 20:22:25 2015 +0100 build: Renamed curl src Visual Studio project files Following commit 957fcd9049 and in preparation for adding the VC14 project files renamed the curl source project files. commit 1c743ba579d99bac8db75229a7fdd73c70329d4b Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Jul 18 03:09:16 2015 -0400 libcurl-thread.3: Revert to stricter handle wording .. also update formatting and add WinSSL and wolfSSL to the SSL/TLS handlers list. commit 2d1f17e0875bc8ec0c4e37fbcf16663075aa0f73 Author: Jay Satiro <raysatiro@yahoo.com> Date: Mon Jul 13 16:15:55 2015 -0400 libcurl-thread.3: Consolidate thread safety info This is a new document to consolidate our thread safety information from several documents (curl-www:features, libcurl.3, libcurl-tutorial.3). Each document's section on multi-threading will now point to this one. commit 82baee3878aae7e8527dc1f89fc19010ff4ea662 Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 19:50:03 2015 +0100 README: Corrected formatting for 'Legacy Windows and SSL' section ...as well as some wording. commit 9d8b5afe7129548a753892bd1538fa3765af076c Author: Steve Holme <steve_holme@hotmail.com> Date: Sun Jul 26 19:43:50 2015 +0100 build-openssl.bat: Added support for VC14 commit e70f49f87d58fbbc97188d6295c21cd6bc6476fd Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jul 26 22:33:17 2015 +0200 RELEASE-NOTES: synced with 0f645adc95390e8 commit 1c1cf319bd67f74a550c27e7e44e5937b3393b45 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jul 26 22:20:26 2015 +0200 test1902: attempt to make the test more reliable Closes #355 commit c1dde3dab5e41a389e1afb8e7ec1e68c613d892e Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jul 26 14:15:07 2015 +0200 comment: fix comment about adding new option support commit cd8452dae46b002b74b716e3d2faf5dbd81d170a Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Jul 25 19:03:20 2015 -0400 build-openssl.bat: Show syntax if required args are missing commit 083cff5b5d3c91cba24dab0972491a48c5ee27fd Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jul 26 00:48:55 2015 +0200 TODO: improve how curl works in a windows console window Closes #322 for now commit 5bf231795850d08359192ef952c6bc55a7883fe0 Author: Daniel Stenberg <daniel@haxx.se> Date: Sun Jul 26 00:45:22 2015 +0200 1.11 minimize dependencies with dynamicly loaded modules Closes #349 for now commit f37abbbcb8714188661ab8561e4d858fb37ef0ed Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Jul 25 16:32:15 2015 -0400 tool_operate: Fix CURLOPT_SSL_OPTIONS for builds without HTTPS - Set CURLOPT_SSL_OPTIONS only if the tool enabled an SSL option. Broken by me several days ago in 172b2be. https://github.com/bagder/curl/commit/172b2be#diff-70b44ee478e58d4e1ddcf9c9a73d257b Bug: http://curl.haxx.se/mail/lib-2015-07/0119.html Reported-by: Dan Fandrich commit abfbbe607532e90c1e7a19987051807963462853 Author: Daniel Stenberg <daniel@haxx.se> Date: Sat Jul 25 10:52:49 2015 +0200 configure: check if OpenSSL linking wants -ldl To make it easier to link with static versions of OpenSSL, the configure script now checks if -ldl is needed for linking. Help-by: TJ Saunders commit 575cbfbbcf187bc1fd5522beedb64b2f7defdee5 Author: Michael Kaufmann <mail@michael-kaufmann.ch> Date: Sat Jul 25 00:46:01 2015 +0200 HTTP: ignore "Content-Encoding: compress" Currently, libcurl rejects responses with "Content-Encoding: compress" when CURLOPT_ACCEPT_ENCODING is set to "". I think that libcurl should treat the Content-Encoding "compress" the same as other Content-Encodings that it does not support, e.g. "bzip2". That means just ignoring it. commit 2dee68705a972d9da2161e1255e5b1d1a4466812 Author: Marcel Raad <MarcelRaad@users.noreply.github.com> Date: Thu Jul 16 09:09:02 2015 +0200 openssl: work around MSVC warning MSVC 12 complains: lib\vtls\openssl.c(1554): warning C4701: potentially uninitialized local variable 'verstr' used It's a false positive, but as it's normally not, I have enabled warning-as-error for that warning. commit 2a427864143edc9051427be0a22596a08743d08f Author: Michał Fita <michal.fita@gmail.com> Date: Thu Jul 23 10:38:49 2015 +0100 configure: add --disable-rt option This option disables any attempts in configure to create dependency on stuff requiring linking to librt.so and libpthread.so, in this case this means clock_gettime(CLOCK_MONOTONIC, &mt). We were in need to build curl which doesn't link libpthread.so to avoid the following bug: https://sourceware.org/bugzilla/show_bug.cgi?id=16628. commit f02e799fe2c8537c2f99ca14e71bb285f0db31d2 Author: Kamil Dudka <kdudka@redhat.com> Date: Thu Jul 23 11:51:53 2015 +0200 http2: verify success of strchr() in http2_send() Detected by Coverity. Error: NULL_RETURNS: lib/http2.c:1301: returned_null: "strchr" returns null (checked 103 out of 109 times). lib/http2.c:1301: var_assigned: Assigning: "hdbuf" = null return value from "strchr". lib/http2.c:1302: dereference: Incrementing a pointer which might be null: "hdbuf". 1300| 1301| hdbuf = strchr(hdbuf, 0x0a); 1302|-> ++hdbuf; 1303| 1304| authority_idx = 0; commit 4f4ab96a9edd9be5c9f85b09e3c532d9a244b4f9 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Jul 22 01:52:17 2015 -0400 Windows: Fix VerifyVersionInfo calls - Fix the VerifyVersionInfo calls, which we use to test for the OS major version, to also test for the minor version as well as the service pack major and minor versions. MSDN: "If you are testing the major version, you must also test the minor version and the service pack major and minor versions." https://msdn.microsoft.com/en-us/library/windows/desktop/ms725492.aspx Bug: https://github.com/bagder/curl/pull/353#issuecomment-123493098 Reported-by: Marcel Raad <MarcelRaad@users.noreply.github.com> commit bd04e30c8c71c1658d951abc478af4b43cf74a33 Author: Marcel Raad <MarcelRaad@users.noreply.github.com> Date: Tue Jul 21 17:23:07 2015 -0400 schannel: Replace deprecated GetVersion with VerifyVersionInfo commit fd8ee5e806293922dd41f1a3083410462e2962f6 Author: Steve Holme <steve_holme@hotmail.com> Date: Tue Jul 21 18:52:43 2015 +0100 makefile: Added support for VC14 commit 1cd49f18ef60bfee50eb276b028cae8ea6613b23 Author: Patrick Monnerat <pm@datasphere.ch> Date: Tue Jul 21 16:36:34 2015 +0200 os400: ebcdic wrappers for new functions. Upgrade ILE/RPG bindings. commit e5f8c79152f082bbd375c6a1c4f074762e76cfde Author: Patrick Monnerat <pm@datasphere.ch> Date: Tue Jul 21 14:01:19 2015 +0200 libcurl: VERSIONINFO update Addition of new procedures curl_pushheader_bynum and curl_pushheader_byname requires VERSIONINFO updating. commit 2b351171b4f47e0153d1c8ada0663ce3ceb590f7 Author: Patrick Monnerat <pm@datasphere.ch> Date: Tue Jul 21 13:55:39 2015 +0200 http2: satisfy external references even if http2 is not compiled in. commit 10da0700f523a778ac6c11953ad50e7a20098ebf Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jul 20 21:35:15 2015 +0200 http2: add stream != NULL checks for reliability They should not trigger, but in case of internal problems we at least avoid crashes this way. commit 2439e5f00315c570be61309c60aaa6301b794b66 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Jul 18 15:27:48 2015 -0400 symbols-in-versions: Add new CURLSSLOPT_NO_REVOKE symbol commit 5def7e76991a58c030e9dd979551fa46fb7a565e Author: Jay Satiro <raysatiro@yahoo.com> Date: Fri Jul 17 02:40:16 2015 -0400 SSL: Add an option to disable certificate revocation checks New tool option --ssl-no-revoke. New value CURLSSLOPT_NO_REVOKE for CURLOPT_SSL_OPTIONS. Currently this option applies only to WinSSL where we have automatic certificate revocation checking by default. According to the ssl-compared chart there are other backends that have automatic checking (NSS, wolfSSL and DarwinSSL) so we could possibly accommodate them at some later point. Bug: https://github.com/bagder/curl/issues/264 Reported-by: zenden2k <zenden2k@gmail.com> commit 5eeef60a53841b8b17af29ac6fd708c8ebd158ff Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Jul 16 22:19:43 2015 -0400 runtests: Allow for spaces in curl custom path .. also fix some typos in test's FILEFORMAT spec. commit a6d0201b5380ae22bdb37c8ef23a138ab1daa8f3 Author: David Woodhouse <David.Woodhouse@intel.com> Date: Thu Jul 16 14:17:33 2015 -0400 ntlm_wb: Fix theoretical memory leak Static analysis indicated that my commit 9008f3d564 ("ntlm_wb: Fix hard-coded limit on NTLM auth packet size") introduced a potential memory leak on an error path, because we forget to free the buffer before returning an error. Fix this. Although actually, it never happens in practice because we never *get* here with state == NTLMSTATE_TYPE1. The state is always zero. That might want cleaning up in a separate patch. Reported-by: Terri Oda commit 60770bca27eee9f1c4a878acdaeb6db3f3794dcc Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Jul 15 22:19:20 2015 -0400 strerror: Add CRYPT_E_REVOKED to SSPI error strings commit 2227a8d6a12c1352fb49101a305c5b879d000a41 Author: Kamil Dudka <kdudka@redhat.com> Date: Tue Jul 14 17:08:44 2015 +0200 libtest: call PR_Cleanup() on exit if NSPR is used This prevents valgrind from reporting possibly lost memory that NSPR uses for file descriptor cache and other globally allocated internal data structures. Reported-by: Štefan Kremeň commit 95de6d871c932b741812212886d7d826d0efb19b Author: John Malmberg <wb8tyw@qsl.net> Date: Wed Jul 1 20:54:09 2015 -0500 openssl: VMS support for SHA256 setup-vms.h: More symbols for SHA256, hacks for older VAX openssl.h: Use OpenSSL OPENSSL_NO_SHA256 macro to allow building on VAX. openssl.c: Use OpenSSL version checks and OPENSSL_NO_SHA256 macro to allow building on VAX and 64 bit VMS. commit 4e46a427101ee3db64b1d7c53aa5a0ca52e1c623 Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Jul 11 02:32:53 2015 -0400 examples: Fix typo in multi-single.c commit c32ca6b33b96b678caaea49cd0e590bc1e483986 Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Mon Jul 6 22:16:27 2015 +0900 http2: Fix memory leak in push header array commit 33113223d8f4ae6a0baff772619f5557431f4ea7 Author: Dan Fandrich <dan@coneharvesters.com> Date: Thu Jul 2 08:32:18 2015 +0200 test2041: fixed line endings in protocol part commit ba1e77683dbbedb7bf29957562ab490ccf30471d Author: Dan Fandrich <dan@coneharvesters.com> Date: Thu Jul 2 08:29:22 2015 +0200 cyassl: fixed mismatched sha256sum function prototype commit ed7f86e7984a4e3ab85bf4f093a12633ea787a20 Author: moparisthebest <admin@moparisthebest.com> Date: Tue Jun 30 20:23:54 2015 -0400 SSL: Pinned public key hash support commit b055f630c1da1741ebf7bbedf5e3ac32f17439e2 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jul 1 11:43:12 2015 +0200 examples: provide <DESC> sections commit a867537e70ff338050f41b73c8224031804b351e Author: John Malmberg <wb8tyw@qsl.net> Date: Tue Jun 30 18:02:59 2015 -0500 OpenVMS: VMS Software, Inc now the supplier. setup-vms.h: Symbol case fixups submitted by Michael Steve build_gnv_curl_pcsi_desc.com: VSI aka as VMS Software, is now the supplier of new versions of VMS. The install kit needs to accept VSI as a producer. commit 616a2354c0ec4ef3c6dd83150e3fca2bdbb889e4 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Jun 30 17:19:21 2015 -0400 multi: Move http2 push function declarations to header end This change necessary for binary compatibility. Prior to this change test 1135 failed due to the order of functions. commit 2f5fa764f6816c3cde5d524e9746dbf972d68046 Author: Jay Satiro <raysatiro@yahoo.com> Date: Tue Jun 30 17:02:27 2015 -0400 symbols-in-versions: Add new http2 push symbols Prior to this change test 1119 failed due to the missing symbols. commit a63280dad747e357f563373b73b2ccd84008e11b Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 30 00:45:14 2015 +0200 RELEASE-NOTES: synced with e6749055d653 commit 51d4ca0b180c9fea0a5816970d893d4646420924 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 29 16:03:45 2015 +0200 configure: disable libidn by default For security reasons, until there is a fix. Bug: http://curl.haxx.se/mail/lib-2015-06/0143.html Reported-by: Gustavo Grieco, Feist Josselin commit 77f58182ddf9d4edb38e10db1e99eea3ac44bdcf Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 29 15:03:56 2015 +0200 SSL-PROBLEMS: mention WinSSL problems in WinXP commit 3b8a2af42b2740d59bde6599a7f53f1e6895d044 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 29 11:35:13 2015 +0200 CODE_OF_CONDUCT.md: added Just to underscore how we treat each other in this project. Nothing new really, but could be useful for newcomers and outsiders to see our values. commit 68afa027cd1bb428d7c0aad68e78ba5d8e486a3e Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 23 16:53:02 2015 -0700 tool_header_cb: fflush the header stream Flush the header stream when -D is used so that they are sent off earlier. Bug: https://github.com/bagder/curl/issues/324 Reported-by: Cédric Connes commit 58fcde6babccdb0bc367151a571b6070447c473b Author: Roger Leigh <r.leigh@dundee.ac.uk> Date: Thu Jun 25 15:04:41 2015 +0100 tests: Distribute CMakeLists.txt files in subdirectories commit e80f4eb205fd89e2b7de4107362f56d01dfb2ee7 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jun 24 15:26:15 2015 -0700 CURLOPT_FAILONERROR.3: mention that it closes the connection Reported-by: bemoody Bug: https://github.com/bagder/curl/issues/325 commit 46791fef75b63b31d54f4b763fad579eab7067fd Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jun 24 14:55:12 2015 -0700 curl_multi_setopt.3: alpha sort the options commit 511b4b21f170ae0a92e21ec27d64627b38b1a4cd Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jun 24 14:52:58 2015 -0700 curl_multi_setopt.3: add the new push options commit 0f6a37e8b8a66962bbac1e85f6c2543f8d9b735b Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Jun 6 18:10:30 2015 +0900 http2: Use nghttp2 library error code for error return value commit 4bffc0e4edd47c51a1d1e6a95d937fdb7999c0ec Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Jun 6 18:07:00 2015 +0900 http2: Harden header validation for curl_pushheader_byname Since we do prefix match using given header by application code against header name pair in format "NAME:VALUE", and VALUE part can contain ":", we have to careful about existence of ":" in header parameter. ":" should be allowed to match HTTP/2 pseudo-header field, and other use of ":" in header must be treated as error, and curl_pushheader_byname should return NULL. This commit implements this behaviour. commit 46c1ee68d108b76456cabaf3e95ddde0008c3dbe Author: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> Date: Sat Jun 6 18:06:15 2015 +0900 CURLMOPT_PUSHFUNCTION.3: Remove unused variable commit 824ab04f46c2d58be84981e751d87eb5ac5222f2 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 2 11:58:39 2015 +0200 CURLMOPT_PUSHFUNCTION.3: added example commit 7b7f8571ff9503eec9de051eeeccff499a8c0354 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 2 11:50:00 2015 +0200 http2: curl_pushheader_byname now takes a const char * commit 40110aac17f27e56537cdfdb977a297b15d88fc4 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 2 11:04:00 2015 +0200 http2-serverpush.c: example code commit 0c4ac324f829f24be0c001520b8584fb91e3bf77 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 2 11:01:30 2015 +0200 http2: free all header memory after the push callback commit 50de6f9d520eb7e1036152b2eb57cb93764be4d5 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 2 10:34:27 2015 +0200 http2: init the pushed transfer properly commit 2e6317c78281ef13ed0806530840c5a16eaf2517 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 1 15:52:46 2015 +0200 http2: fixed the header accessor functions for the push callback commit fc3efa0a6d8f7701108559686e0a3d437599f9a7 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 1 14:20:57 2015 +0200 http2: setup the new pushed stream properly commit fe7625bb04a139c8b242dc702df540123ac1ad45 Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 1 11:45:52 2015 +0200 http2: initial implementation of the push callback commit bbd74a915592503340ddc44a216265e01bbfafbd Author: Daniel Stenberg <daniel@haxx.se> Date: Mon Jun 1 10:22:41 2015 +0200 http2: initial HTTP/2 server push types/docs commit cce0092ca5ff193b654bb81d3feb28070c041459 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 23 17:51:03 2015 -0700 test1531: verify POSTFIELDSIZE set after add_handle Following the fix made in 903b6e05565bf. commit 461264ebe82e431cec9ba234091d199c5e0edd58 Author: Daniel Stenberg <daniel@haxx.se> Date: Tue Jun 23 17:48:37 2015 -0700 pretransfer: init state.infilesize here, not in add_handle ... to properly support that options are set to the handle after it is added to the multi handle. Bug: http://curl.haxx.se/mail/lib-2015-06/0122.html Reported-by: Stefan Bühler commit 400300ff91f843368140139e86f2afdef8ba3efb Author: Lior Kaplan <kaplanlior@gmail.com> Date: Sun Jun 21 13:41:07 2015 +0300 tool_help: fix --tlsv1 help text to use >= for TLSv1 commit 15b0cb5a6486474221304737b5e44428b385c07d Author: Jay Satiro <raysatiro@yahoo.com> Date: Sat Jun 20 18:45:25 2015 -0400 INSTALL: Advise use of non-native SSL for Windows <= XP Advise that WinSSL in versions <= XP will not be able to connect to servers that no longer support the legacy handshakes and algorithms used by those versions, and to use an alternate backend like OpenSSL instead. Bug: https://github.com/bagder/curl/issues/253 Reported-by: zenden2k <zenden2k@gmail.com> commit 1e8b2dcaf1c21d40a078c2b4f175c03a628730d3 Author: Kamil Dudka <kdudka@redhat.com> Date: Fri Jun 19 10:07:32 2015 -0400 curl_easy_setopt.3: restore contents removed by mistake ... in commit curl-7_43_0-18-g570076e commit 03f34ea4368176925823a8e03a9033ba80c76156 Author: Daniel Stenberg <daniel@haxx.se> Date: Fri Jun 19 15:47:06 2015 +0200 curl_easy_setopt.3: mention CURLOPT_PIPEWAIT commit 0a3194034da3ee3f3ebef9a29a7935c42f12d7cf Author: Jay Satiro <raysatiro@yahoo.com> Date: Thu Jun 18 19:35:04 2015 -0400 cookie: Fix bug in export if any-domain cookie is present In 3013bb6 I had changed cookie export to ignore any-domain cookies, however the logic I used to do so was incorrect, and would lead to a busy loop in the case of exporting a cookie list that contained any-domain cookies. The result of that is worse though, because in that case the other cookies would not be written resulting in an empty file once the application is terminated to stop the busy loop. commit 21cf06a1ec246da14180b305ffc087e4637e0255 Author: Dan Fandrich <dan@coneharvesters.com> Date: Thu Jun 18 23:20:10 2015 +0200 FTP: fixed compiling with --disable-proxy, broken in b88f980a commit ef586e2364f9395b11828c617b3f7a62c703550a Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 16:57:38 2015 +0200 tool: always provide negotiate/kerberos options libcurl can still be built with it, even if the tool is not. Maintain independence! commit a6758cf28c529e5859fd5b2fb46219c2e20c72bb Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 16:32:47 2015 +0200 TODO: Support IDNA2008 commit fe510c4f91fba1ca64495c470a08622026ccf43e Author: Viktor Szakats <vszakats@users.noreply.github.com> Date: Thu Jun 18 14:28:39 2015 +0200 Makefile.m32: add support for CURL_LDFLAG_EXTRAS It is similar to existing CURL_CFLAG_EXTRAS, but for extra linker option. commit 7ad60eec6560df0efc43ac9c17d0d774e6d9615d Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 14:29:57 2015 +0200 RTSP: removed another piece of dead code Coverity CID 1306668 commit 9853ebf042f0ab771651fa80ae5354e8bd0e4899 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 14:20:31 2015 +0200 openssl: fix use of uninitialized buffer Make sure that the error buffer is always initialized and simplify the use of it to make the logic easier. Bug: https://github.com/bagder/curl/issues/318 Reported-by: sneis commit ae412f54f30933568fd60b8b14d68a8711294403 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 11:38:54 2015 +0200 examples: more descriptions commit dd768a714df184bcd02c6aba2d6dc9b8057b3691 Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 10:17:02 2015 +0200 examples: add descriptions with <DESC> Using this fixed format for example descriptions, we can generate a better list on the web site. commit 781f138d84695ce4350415e6394b3d47e33d1dde Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 00:17:47 2015 +0200 libcurl-errors.3: fix typo commit 75b496e457bf5cdafc264e7d745a3e55e99c882b Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 00:09:46 2015 +0200 curl_easy_setopt.3: option order doesn't matter commit 6cc4c35c72111d47104d787ed70e842d6e99efae Author: Daniel Stenberg <daniel@haxx.se> Date: Thu Jun 18 00:06:46 2015 +0200 openssl: fix build with BoringSSL OPENSSL_load_builtin_modules does not exist in BoringSSL. Regression from cae43a1 commit 7c0293989bab54855946ddf5b50f7fe3f3898737 Author: Paul Howarth <paul@city-fan.org> Date: Wed Jun 17 16:53:34 2015 +0200 openssl: Fix build with openssl < ~ 0.9.8f The symbol SSL3_MT_NEWSESSION_TICKET appears to have been introduced at around openssl 0.9.8f, and the use of it in lib/vtls/openssl.c breaks builds with older openssls (certainly with 0.9.8b, which is the latest older version I have to try with). commit 3290f046277b4a2b1b1dc0095e483684478e5ac5 Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jun 17 00:30:06 2015 +0200 FTP: do the HTTP CONNECT for data connection blocking ** WORK-AROUND ** The introduced non-blocking general behaviour for Curl_proxyCONNECT() didn't work for the data connection establishment unless it was very fast. The newly introduced function argument makes it operate in a more blocking manner, more like it used to work in the past. This blocking approach is only used when the FTP data connecting through HTTP proxy. Blocking like this is bad. A better fix would make it work more asynchronously. Bug: https://github.com/bagder/curl/issues/278 commit 00bf2e5b4040e9aa75a94a6045a06bff62adc49c Author: Daniel Stenberg <daniel@haxx.se> Date: Wed Jun 17 13:59:33 2015 +0200 bump: start the journey toward 7.44.0 commit 3f6380429b28088a751ec9defc7a90c25ef18175 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Jun 17 02:49:14 2015 -0400 CURLOPT_ERRORBUFFER.3: Fix example, escape backslashes commit 04dc5c4ee0c75e38c950ca32581ac4ad7c830e56 Author: Jay Satiro <raysatiro@yahoo.com> Date: Wed Jun 17 02:25:51 2015 -0400 CURLOPT_ERRORBUFFER.3: Improve example (cherry picked from commit 8f1a214b8a21b66f33454790dfba97ae2f818289) Change-Id: I335c1f73eff3df5345cdb4730e2bcc51be9857ee
Diffstat (limited to 'docs')
-rw-r--r--docs/BINDINGS4
-rw-r--r--docs/BUGS4
-rw-r--r--docs/CHECKSRC.md124
-rw-r--r--docs/CODE_OF_CONDUCT.md32
-rw-r--r--docs/CODE_STYLE.md186
-rw-r--r--docs/CONTRIBUTE85
-rw-r--r--docs/DISTRO-DILEMMA176
-rw-r--r--docs/FAQ104
-rw-r--r--docs/HISTORY4
-rw-r--r--docs/HTTP-COOKIES123
-rw-r--r--docs/HTTP-COOKIES.md104
-rw-r--r--docs/HTTP2.md48
-rw-r--r--docs/INSTALL28
-rw-r--r--docs/INSTALL.devcpp2
-rw-r--r--docs/INTERNALS24
-rw-r--r--docs/KNOWN_BUGS773
-rw-r--r--docs/LICENSE-MIXING6
-rw-r--r--docs/MAIL-ETIQUETTE2
-rw-r--r--docs/MANUAL6
-rw-r--r--docs/Makefile.am22
-rw-r--r--docs/RELEASE-PROCEDURE19
-rw-r--r--docs/RESOURCES2
-rw-r--r--docs/ROADMAP.md41
-rw-r--r--docs/SECURITY2
-rw-r--r--docs/SSL-PROBLEMS26
-rw-r--r--docs/SSLCERTS54
-rw-r--r--docs/THANKS121
-rw-r--r--docs/THANKS-filter22
-rw-r--r--docs/TODO291
-rw-r--r--docs/TheArtOfHttpScripting8
-rw-r--r--docs/curl-config.12
-rw-r--r--docs/curl.1269
-rw-r--r--docs/examples/.gitignore4
-rw-r--r--docs/examples/10-at-a-time.c38
-rw-r--r--docs/examples/Makefile.am7
-rw-r--r--docs/examples/Makefile.example2
-rw-r--r--docs/examples/Makefile.inc6
-rw-r--r--docs/examples/Makefile.m324
-rw-r--r--docs/examples/Makefile.netware2
-rw-r--r--docs/examples/README52
-rwxr-xr-xdocs/examples/adddocsref.pl2
-rw-r--r--docs/examples/anyauthput.c29
-rw-r--r--docs/examples/asiohiper.cpp20
-rw-r--r--docs/examples/cacertinmem.c54
-rw-r--r--docs/examples/certinfo.c8
-rw-r--r--docs/examples/chkspeed.c89
-rw-r--r--docs/examples/cookie_interface.c42
-rw-r--r--docs/examples/curlgtk.c15
-rw-r--r--docs/examples/curlx.c355
-rw-r--r--docs/examples/debug.c12
-rw-r--r--docs/examples/evhiperfifo.c114
-rw-r--r--docs/examples/externalsocket.c19
-rw-r--r--docs/examples/fileupload.c8
-rw-r--r--docs/examples/fopen.c55
-rw-r--r--docs/examples/ftp-wildcard.c10
-rw-r--r--docs/examples/ftpget.c14
-rw-r--r--docs/examples/ftpgetinfo.c18
-rw-r--r--docs/examples/ftpgetresp.c19
-rw-r--r--docs/examples/ftpsget.c12
-rw-r--r--docs/examples/ftpupload.c15
-rw-r--r--docs/examples/ftpuploadresume.c39
-rw-r--r--docs/examples/getinfo.c13
-rw-r--r--docs/examples/getinmemory.c12
-rw-r--r--docs/examples/getredirect.c70
-rw-r--r--docs/examples/ghiper.c236
-rw-r--r--docs/examples/hiperfifo.c52
-rw-r--r--docs/examples/href_extractor.c26
-rw-r--r--docs/examples/htmltidy.c59
-rw-r--r--docs/examples/htmltitle.cpp12
-rw-r--r--docs/examples/http-post.c8
-rw-r--r--docs/examples/http2-download.c18
-rw-r--r--docs/examples/http2-serverpush.c320
-rw-r--r--docs/examples/http2-upload.c20
-rw-r--r--docs/examples/httpcustomheader.c8
-rw-r--r--docs/examples/httpput.c10
-rw-r--r--docs/examples/https.c8
-rw-r--r--docs/examples/imap-append.c13
-rw-r--r--docs/examples/imap-copy.c10
-rw-r--r--docs/examples/imap-create.c10
-rw-r--r--docs/examples/imap-delete.c10
-rw-r--r--docs/examples/imap-examine.c10
-rw-r--r--docs/examples/imap-fetch.c13
-rw-r--r--docs/examples/imap-list.c10
-rw-r--r--docs/examples/imap-lsub.c10
-rw-r--r--docs/examples/imap-multi.c14
-rw-r--r--docs/examples/imap-noop.c10
-rw-r--r--docs/examples/imap-search.c10
-rw-r--r--docs/examples/imap-ssl.c13
-rw-r--r--docs/examples/imap-store.c10
-rw-r--r--docs/examples/imap-tls.c24
-rw-r--r--docs/examples/makefile.dj6
-rw-r--r--docs/examples/multi-app.c31
-rw-r--r--docs/examples/multi-debugcallback.c16
-rw-r--r--docs/examples/multi-double.c11
-rw-r--r--docs/examples/multi-post.c14
-rw-r--r--docs/examples/multi-single.c14
-rw-r--r--docs/examples/multi-uv.c12
-rw-r--r--docs/examples/multithread.c14
-rw-r--r--docs/examples/opensslthreadlock.c41
-rw-r--r--docs/examples/persistant.c8
-rw-r--r--docs/examples/pop3-dele.c10
-rw-r--r--docs/examples/pop3-list.c10
-rw-r--r--docs/examples/pop3-multi.c14
-rw-r--r--docs/examples/pop3-noop.c10
-rw-r--r--docs/examples/pop3-retr.c10
-rw-r--r--docs/examples/pop3-ssl.c10
-rw-r--r--docs/examples/pop3-stat.c10
-rw-r--r--docs/examples/pop3-tls.c21
-rw-r--r--docs/examples/pop3-top.c10
-rw-r--r--docs/examples/pop3-uidl.c10
-rw-r--r--docs/examples/post-callback.c8
-rw-r--r--docs/examples/postinmemory.c8
-rw-r--r--docs/examples/postit2.c10
-rw-r--r--docs/examples/progressfunc.c9
-rw-r--r--docs/examples/resolve.c9
-rw-r--r--docs/examples/rtsp.c75
-rw-r--r--docs/examples/sampleconv.c40
-rw-r--r--docs/examples/sendrecv.c40
-rw-r--r--docs/examples/sepheaders.c10
-rw-r--r--docs/examples/sessioninfo.c8
-rw-r--r--docs/examples/sftpget.c8
-rw-r--r--docs/examples/simple.c8
-rw-r--r--docs/examples/simplepost.c8
-rw-r--r--docs/examples/simplessl.c49
-rw-r--r--docs/examples/smooth-gtk-thread.c25
-rw-r--r--docs/examples/smtp-expn.c12
-rw-r--r--docs/examples/smtp-mail.c32
-rw-r--r--docs/examples/smtp-multi.c16
-rw-r--r--docs/examples/smtp-ssl.c22
-rw-r--r--docs/examples/smtp-tls.c32
-rw-r--r--docs/examples/smtp-vrfy.c12
-rw-r--r--docs/examples/synctime.c67
-rw-r--r--docs/examples/threaded-ssl.c23
-rw-r--r--docs/examples/url2file.c12
-rw-r--r--docs/examples/usercertinmem.c65
-rwxr-xr-xdocs/examples/version-check.pl2
-rw-r--r--docs/examples/xmlstream.c29
-rw-r--r--docs/libcurl/ABI70
-rw-r--r--docs/libcurl/Makefile.am53
-rw-r--r--docs/libcurl/curl_easy_cleanup.32
-rw-r--r--docs/libcurl/curl_easy_duphandle.32
-rw-r--r--docs/libcurl/curl_easy_escape.39
-rw-r--r--docs/libcurl/curl_easy_getinfo.3299
-rw-r--r--docs/libcurl/curl_easy_init.32
-rw-r--r--docs/libcurl/curl_easy_pause.38
-rw-r--r--docs/libcurl/curl_easy_perform.36
-rw-r--r--docs/libcurl/curl_easy_recv.310
-rw-r--r--docs/libcurl/curl_easy_reset.32
-rw-r--r--docs/libcurl/curl_easy_send.38
-rw-r--r--docs/libcurl/curl_easy_setopt.331
-rw-r--r--docs/libcurl/curl_easy_strerror.32
-rw-r--r--docs/libcurl/curl_easy_unescape.36
-rw-r--r--docs/libcurl/curl_escape.34
-rw-r--r--docs/libcurl/curl_formadd.320
-rw-r--r--docs/libcurl/curl_formfree.36
-rw-r--r--docs/libcurl/curl_formget.36
-rw-r--r--docs/libcurl/curl_free.32
-rw-r--r--docs/libcurl/curl_getdate.32
-rw-r--r--docs/libcurl/curl_getenv.32
-rw-r--r--docs/libcurl/curl_global_cleanup.310
-rw-r--r--docs/libcurl/curl_global_init.310
-rw-r--r--docs/libcurl/curl_global_init_mem.315
-rw-r--r--docs/libcurl/curl_mprintf.314
-rw-r--r--docs/libcurl/curl_multi_add_handle.34
-rw-r--r--docs/libcurl/curl_multi_assign.32
-rw-r--r--docs/libcurl/curl_multi_cleanup.32
-rw-r--r--docs/libcurl/curl_multi_fdset.32
-rw-r--r--docs/libcurl/curl_multi_info_read.32
-rw-r--r--docs/libcurl/curl_multi_init.32
-rw-r--r--docs/libcurl/curl_multi_perform.32
-rw-r--r--docs/libcurl/curl_multi_remove_handle.34
-rw-r--r--docs/libcurl/curl_multi_setopt.344
-rw-r--r--docs/libcurl/curl_multi_socket.310
-rw-r--r--docs/libcurl/curl_multi_socket_action.324
-rw-r--r--docs/libcurl/curl_multi_strerror.32
-rw-r--r--docs/libcurl/curl_multi_timeout.316
-rw-r--r--docs/libcurl/curl_multi_wait.346
-rw-r--r--docs/libcurl/curl_share_cleanup.32
-rw-r--r--docs/libcurl/curl_share_init.32
-rw-r--r--docs/libcurl/curl_share_setopt.35
-rw-r--r--docs/libcurl/curl_share_strerror.32
-rw-r--r--docs/libcurl/curl_slist_append.310
-rw-r--r--docs/libcurl/curl_slist_free_all.32
-rw-r--r--docs/libcurl/curl_strequal.32
-rw-r--r--docs/libcurl/curl_unescape.34
-rw-r--r--docs/libcurl/curl_version.32
-rw-r--r--docs/libcurl/curl_version_info.312
-rw-r--r--docs/libcurl/index.html1
-rw-r--r--docs/libcurl/libcurl-easy.32
-rw-r--r--docs/libcurl/libcurl-errors.312
-rw-r--r--docs/libcurl/libcurl-multi.351
-rw-r--r--docs/libcurl/libcurl-share.32
-rw-r--r--docs/libcurl/libcurl-thread.3105
-rw-r--r--docs/libcurl/libcurl-tutorial.374
-rw-r--r--docs/libcurl/libcurl.320
-rw-r--r--docs/libcurl/libcurl.m46
-rw-r--r--docs/libcurl/mksymbolsmanpage.pl4
-rw-r--r--docs/libcurl/opts/CURLINFO_ACTIVESOCKET.351
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.347
-rw-r--r--docs/libcurl/opts/CURLINFO_CERTINFO.351
-rw-r--r--docs/libcurl/opts/CURLINFO_CONDITION_UNMET.345
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME.344
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.345
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.343
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_TYPE.348
-rw-r--r--docs/libcurl/opts/CURLINFO_COOKIELIST.350
-rw-r--r--docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.348
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME.349
-rw-r--r--docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.348
-rw-r--r--docs/libcurl/opts/CURLINFO_HEADER_SIZE.344
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.344
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.344
-rw-r--r--docs/libcurl/opts/CURLINFO_LASTSOCKET.353
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_IP.351
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_PORT.343
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.344
-rw-r--r--docs/libcurl/opts/CURLINFO_NUM_CONNECTS.346
-rw-r--r--docs/libcurl/opts/CURLINFO_OS_ERRNO.343
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.347
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_IP.349
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_PORT.342
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIVATE.345
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.344
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.342
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME.346
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_URL.345
-rw-r--r--docs/libcurl/opts/CURLINFO_REQUEST_SIZE.345
-rw-r--r--docs/libcurl/opts/CURLINFO_RESPONSE_CODE.360
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.342
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.344
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.347
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.349
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.345
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.342
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.342
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.342
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_ENGINES.347
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.343
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.346
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SESSION.360
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3141
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME.345
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.349
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3133
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.320
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.318
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.334
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.323
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.34
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.34
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_TO.3111
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.314
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.38
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.324
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.314
-rw-r--r--docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.379
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.36
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.328
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.37
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.310
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.334
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.34
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.39
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.328
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.316
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.34
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.321
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.318
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.352
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.312
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.318
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.33
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.312
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.315
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.37
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.314
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.313
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.322
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.312
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.319
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.318
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.310
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.325
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.326
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.388
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.34
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.328
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.34
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.34
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.34
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.356
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.359
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.363
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.347
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.371
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.312
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.36
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.315
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.34
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.32
-rw-r--r--docs/libcurl/opts/Makefile.am1169
-rw-r--r--docs/libcurl/opts/template.32
-rw-r--r--docs/libcurl/symbols-in-versions40
-rwxr-xr-xdocs/libcurl/symbols.pl2
-rw-r--r--docs/mk-ca-bundle.14
487 files changed, 8804 insertions, 3398 deletions
diff --git a/docs/BINDINGS b/docs/BINDINGS
index fed16e99..eb67c3d6 100644
--- a/docs/BINDINGS
+++ b/docs/BINDINGS
@@ -27,7 +27,7 @@ Basic
C
libcurl is a C library in itself!
- http://curl.haxx.se/libcurl/
+ https://curl.haxx.se/libcurl/
C++
@@ -184,7 +184,7 @@ Rexx
RPG
Support for ILE/RPG on OS/400 is included in source distribution
- http://curl.haxx.se/libcurl/
+ https://curl.haxx.se/libcurl/
See packages/OS400/README.OS400 and packages/OS400/curl.inc.in
Ruby
diff --git a/docs/BUGS b/docs/BUGS
index 36686ef8..dfd9b205 100644
--- a/docs/BUGS
+++ b/docs/BUGS
@@ -35,12 +35,12 @@ BUGS
have a go at a solution. You can optionally also post your bug/problem at
curl's bug tracking system over at
- https://github.com/bagder/curl/issues
+ https://github.com/curl/curl/issues
Please read the rest of this document below first before doing that!
If you feel you need to ask around first, find a suitable mailing list and
- post there. The lists are available on http://curl.haxx.se/mail/
+ post there. The lists are available on https://curl.haxx.se/mail/
1.3 What to report
diff --git a/docs/CHECKSRC.md b/docs/CHECKSRC.md
new file mode 100644
index 00000000..591e066f
--- /dev/null
+++ b/docs/CHECKSRC.md
@@ -0,0 +1,124 @@
+# checksrc
+
+This is the tool we use within the curl project to scan C source code and
+check that it adheres to our [Source Code Style guide](CODE_STYLE.md).
+
+## Usage
+
+ checksrc.pl [options] [file1] [file2] ...
+
+## Command line options
+
+`-W[file]` whitelists that file and excludes it from being checked. Helpful
+when, for example, one of the files is generated.
+
+`-D[dir]` directory name to prepend to file names when accessing them.
+
+`-h` shows the help output, that also lists all recognized warnings
+
+## What does checksrc warn for?
+
+checksrc does not check and verify the code against the entire style guide,
+but the script is instead an effort to detect the most common mistakes and
+syntax mistakes that contributers make before they get accustomed to our code
+style. Heck, many of us regulars do the mistakes too and this script helps us
+keep the code in shape.
+
+ checksrc.pl -h
+
+Lists how to use the script and it lists all existing warnings it has and
+problems it detects. At the time of this writing, the existing checksrc
+warnings are:
+
+- `BADCOMMAND`: There's a bad !checksrc! instruction in the code. See the
+ **Ignore certain warnings** section below for details.
+
+- `BANNEDFUNC`: A banned function was used. The funtions sprintf, vsprintf,
+ strcat, strncat, gets are **never** allowed in curl source code.
+
+- `BRACEELSE`: '} else' on the same line. The else is supposed to be on the
+ following line.
+
+- `BRACEPOS`: wrong position for an open brace (`{`).
+
+- `COMMANOSPACE`: a comma without following space
+
+- `COPYRIGHT`: the file is missing a copyright statement!
+
+- `CPPCOMMENTS`: `//` comment detected, that's not C89 compliant
+
+- `FOPENMODE`: `fopen()` needs a macro for the mode string, use it
+
+- `INDENTATION`: detected a wrong start column for code. Note that this warning
+ only checks some specific places and will certainly miss many bad
+ indentations.
+
+- `LONGLINE`: A line is longer than 79 columns.
+
+- `PARENBRACE`: `){` was used without sufficient space in between.
+
+- `RETURNNOSPACE`: `return` was used without space between the keyword and the
+ following value.
+
+- `SPACEAFTERPAREN`: there was a space after open parenthesis, `( text`.
+
+- `SPACEBEFORECLOSE`: there was a space before a close parenthesis, `text )`.
+
+- `SPACEBEFORECOMMA`: there was a space before a comma, `one , two`.
+
+- `SPACEBEFOREPAREN`: there was a space before an open parenthesis, `if (`,
+ where one was not expected
+
+- `SPACESEMILCOLON`: there was a space before semicolon, ` ;`.
+
+- `TABS`: TAB characters are not allowed!
+
+- `TRAILINGSPACE`: Trailing white space on the line
+
+- `UNUSEDIGNORE`: a checksrc inlined warning ignore was asked for but not used,
+ that's an ignore that should be removed or changed to get used.
+
+## Ignore certain warnings
+
+Due to the nature of the source code and the flaws of the checksrc tool, there
+is sometimes a need to ignore specific warnings. checksrc allows a few
+different ways to do this.
+
+### Inline ignore
+
+You can control what to ignore within a specific source file by providing
+instructions to checksrc in the source code itself. You need a magic marker
+that is `!checksrc!` followed by the instruction. The instruction can ask to
+ignore a specific warning N number of times or you ignore all of them until
+you mark the end of the ignored section.
+
+Inline ignores are only done for that single specific source code file.
+
+Example
+
+ /* !checksrc! disable LONGLINE all */
+
+This will ignore the warning for overly long lines until it is re-enabled with:
+
+ /* !checksrc! enable LONGLINE */
+
+If the enabling isn't performed before the end of the file, it will be enabled
+automatically for the next file.
+
+You can also opt to ignore just N violations so that if you have a single long
+line you just can't shorten and is agreed to be fine anyway:
+
+ /* !checksrc! disable LONGLINE 1 */
+
+... and the warning for long lines will be enabled again automatically after
+it has ignored that single warning. The number `1` can of course be changed to
+any other integer number. It can be used to make sure only the exact intended
+instances are ignored and nothing extra.
+
+### Directory wide ignore patterns
+
+This is a method we've transitioned away from. Use inline ignores as far as
+possible.
+
+Make a `checksrc.whitelist` file in the directory of the source code with the
+false positive, and include the full offending line into this file.
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..04ea66ed
--- /dev/null
+++ b/docs/CODE_OF_CONDUCT.md
@@ -0,0 +1,32 @@
+Contributor Code of Conduct
+===========================
+
+As contributors and maintainers of this project, we pledge to respect all
+people who contribute through reporting issues, posting feature requests,
+updating documentation, submitting pull requests or patches, and other
+activities.
+
+We are committed to making participation in this project a harassment-free
+experience for everyone, regardless of level of experience, gender, gender
+identity and expression, sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, or religion.
+
+Examples of unacceptable behavior by participants include the use of sexual
+language or imagery, derogatory comments or personal attacks, trolling, public
+or private harassment, insults, or other unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct. Project maintainers who do not
+follow the Code of Conduct may be removed from the project team.
+
+This code of conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by opening an issue or contacting one or more of the project
+maintainers.
+
+This Code of Conduct is adapted from the [Contributor
+Covenant](http://contributor-covenant.org), version 1.1.0, available at
+[http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)
diff --git a/docs/CODE_STYLE.md b/docs/CODE_STYLE.md
new file mode 100644
index 00000000..73a4d94b
--- /dev/null
+++ b/docs/CODE_STYLE.md
@@ -0,0 +1,186 @@
+# cURL C code style
+
+Source code that has a common style is easier to read than code that uses
+different styles in different places. It helps making the code feel like one
+single code base. Easy-to-read is a very important property of code and helps
+making it easier to review when new things are added and it helps debugging
+code when developers are trying to figure out why things go wrong. A unified
+style is more important than individual contributors having their own personal
+tastes satisfied.
+
+Our C code has a few style rules. Most of them are verified and upheld by the
+lib/checksrc.pl script. Invoked with `make checksrc` or even by default by the
+build system when built after `./configure --enable-debug` has been used.
+
+It is normally not a problem for anyone to follow the guidelines, as you just
+need to copy the style already used in the source code and there are no
+particularly unusual rules in our set of rules.
+
+We also work hard on writing code that are warning-free on all the major
+platforms and in general on as many platforms as possible. Code that obviously
+will cause warnings will not be accepted as-is.
+
+## Naming
+
+Try using a non-confusing naming scheme for your new functions and variable
+names. It doesn't necessarily have to mean that you should use the same as in
+other places of the code, just that the names should be logical,
+understandable and be named according to what they're used for. File-local
+functions should be made static. We like lower case names.
+
+See the INTERNALS document on how we name non-exported library-global symbols.
+
+## Indenting
+
+We use only spaces for indentation, never TABs. We use two spaces for each new
+open brace.
+
+ if(something_is_true) {
+ while(second_statement == fine) {
+ moo();
+ }
+ }
+
+## Comments
+
+Since we write C89 code, `//` comments are not allowed. They weren't
+introduced in the C standard until C99. We use only `/*` and `*/` comments:
+
+ /* this is a comment */
+
+## Long lines
+
+Source code in curl may never be wider than 80 columns and there are two
+reasons for maintaining this even in the modern era of very large and high
+resolution screens:
+
+1. Narrower columns are easier to read than very wide ones. There's a reason
+ newspapers have used columns for decades or centuries.
+
+2. Narrower columns allow developers to easier show multiple pieces of code
+ next to each other in different windows. I often have two or three source
+ code windows next to each other on the same screen - as well as multiple
+ terminal and debugging windows.
+
+## Braces
+
+In if/while/do/for expressions, we write the open brace on the same line as
+the keyword and we then set the closing brace on the same indentation level as
+the initial keyword. Like this:
+
+ if(age < 40) {
+ /* clearly a youngster */
+ }
+
+When we write functions however, the opening brace should be in the first
+column of the first line:
+
+ int main(int argc, char **argv)
+ {
+ return 1;
+ }
+
+## 'else' on the following line
+
+When adding an `else` clause to a conditional expression using braces, we add
+it on a new line after the closing brace. Like this:
+
+ if(age < 40) {
+ /* clearly a youngster */
+ }
+ else {
+ /* probably grumpy */
+ }
+
+## No space before parentheses
+
+When writing expressions using if/while/do/for, there shall be no space
+between the keyword and the open parenthesis. Like this:
+
+ while(1) {
+ /* loop forever */
+ }
+
+## Use boolean conditions
+
+Rather than test a conditional value such as a bool against TRUE or FALSE, a
+pointer against NULL or != NULL and an int against zero or not zero in
+if/while conditions we prefer:
+
+ result = do_something();
+ if(!result) {
+ /* something went wrong */
+ return result;
+ }
+
+## No assignments in conditions
+
+To increase readability and reduce complexity of conditionals, we avoid
+assigning variables within if/while conditions. We frown upon this style:
+
+ if((ptr = malloc(100)) == NULL)
+ return NULL;
+
+and instead we encourage the above version to be spelled out more clearly:
+
+ ptr = malloc(100);
+ if(!ptr)
+ return NULL;
+
+## New block on a new line
+
+We never write multiple statements on the same source line, even for very
+short if() conditions.
+
+ if(a)
+ return TRUE;
+ else if(b)
+ return FALSE;
+
+and NEVER:
+
+ if(a) return TRUE;
+ else if(b) return FALSE;
+
+## Space around operators
+
+Please use spaces on both sides of operators in C expressions. Postfix `(),
+[], ->, ., ++, --` and Unary `+, - !, ~, &` operators excluded they should
+have no space.
+
+Examples:
+
+ bla = func();
+ who = name[0];
+ age += 1;
+ true = !false;
+ size += -2 + 3 * (a + b);
+ ptr->member = a++;
+ struct.field = b--;
+ ptr = &address;
+ contents = *pointer;
+ complement = ~bits;
+ empty = (!*string) ? TRUE : FALSE;
+
+## Platform dependent code
+
+Use `#ifdef HAVE_FEATURE` to do conditional code. We avoid checking for
+particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE
+shall be generated by the configure script for unix-like systems and they are
+hard-coded in the config-[system].h files for the others.
+
+We also encourage use of macros/functions that possibly are empty or defined
+to constants when libcurl is built without that feature, to make the code
+seamless. Like this style where the `magic()` function works differently
+depending on a build-time conditional:
+
+ #ifdef HAVE_MAGIC
+ void magic(int a)
+ {
+ return a + 2;
+ }
+ #else
+ #define magic(x) 1
+ #endif
+
+ int content = magic(3);
diff --git a/docs/CONTRIBUTE b/docs/CONTRIBUTE
index c6ea9773..9e84175b 100644
--- a/docs/CONTRIBUTE
+++ b/docs/CONTRIBUTE
@@ -15,18 +15,13 @@
1.2 License
1.3 What To Read
- 2. cURL Coding Standards
- 2.1 Naming
- 2.2 Indenting
- 2.3 Commenting
- 2.4 Line Lengths
- 2.5 General Style
- 2.6 Non-clobbering All Over
- 2.7 Platform Dependent Code
- 2.8 Write Separate Patches
- 2.9 Patch Against Recent Sources
- 2.10 Document
- 2.11 Test Cases
+ 2. Write a good patch
+ 2.1 Follow code style
+ 2.2 Non-clobbering All Over
+ 2.3 Write Separate Patches
+ 2.4 Patch Against Recent Sources
+ 2.5 Document
+ 2.6 Test Cases
3. Pushing Out Your Changes
3.1 Write Access to git Repository
@@ -42,13 +37,13 @@
1.1 Join the Community
- Skip over to http://curl.haxx.se/mail/ and join the appropriate mailing
+ Skip over to https://curl.haxx.se/mail/ and join the appropriate mailing
list(s). Read up on details before you post questions. Read this file before
you start sending patches! We prefer patches and discussions being held on
the mailing list(s), not sent to individuals.
Before posting to one of the curl mailing lists, please read up on the mailing
- list etiquette: http://curl.haxx.se/mail/etiquette.html
+ list etiquette: https://curl.haxx.se/mail/etiquette.html
We also hang out on IRC in #curl on irc.freenode.net
@@ -87,48 +82,15 @@
list is gonna give you a lot of insights on what's going on right now. Asking
there is a good idea too.
-2. cURL Coding Standards
+2. Write a good patch
-2.1 Naming
+2.1 Follow code style
- Try using a non-confusing naming scheme for your new functions and variable
- names. It doesn't necessarily have to mean that you should use the same as in
- other places of the code, just that the names should be logical,
- understandable and be named according to what they're used for. File-local
- functions should be made static. We like lower case names.
+ When writing C code, follow the CODE_STYLE already established in the
+ project. Consistent style makes code easier to read and mistakes less likely
+ to happen.
- See the INTERNALS document on how we name non-exported library-global
- symbols.
-
-2.2 Indenting
-
- Use the same indenting levels and bracing method as all the other code
- already does. It makes the source code easier to follow if all of it is
- written using the same style. We don't ask you to like it, we just ask you to
- follow the tradition! ;-) This mainly means: 2-level indents, using spaces
- only (no tabs) and having the opening brace ({) on the same line as the if()
- or while().
-
- Also note that we use if() and while() with no space before the parenthesis.
-
-2.3 Commenting
-
- Comment your source code extensively using C comments (/* comment */), DO NOT
- use C++ comments (// this style). Commented code is quality code and enables
- future modifications much more. Uncommented code risk having to be completely
- replaced when someone wants to extend things, since other persons' source
- code can get quite hard to read.
-
-2.4 Line Lengths
-
- We write source lines shorter than 80 columns.
-
-2.5 General Style
-
- Keep your functions small. If they're small you avoid a lot of mistakes and
- you don't accidentally mix up variables etc.
-
-2.6 Non-clobbering All Over
+2.2 Non-clobbering All Over
When you write new functionality or fix bugs, it is important that you don't
fiddle all over the source files and functions. Remember that it is likely
@@ -137,14 +99,7 @@
functionality, try writing it in a new source file. If you fix bugs, try to
fix one bug at a time and send them as separate patches.
-2.7 Platform Dependent Code
-
- Use #ifdef HAVE_FEATURE to do conditional code. We avoid checking for
- particular operating systems or hardware in the #ifdef lines. The
- HAVE_FEATURE shall be generated by the configure script for unix-like systems
- and they are hard-coded in the config-[system].h files for the others.
-
-2.8 Write Separate Patches
+2.3 Write Separate Patches
It is annoying when you get a huge patch from someone that is said to fix 511
odd problems, but discussions and opinions don't agree with 510 of them - or
@@ -158,14 +113,14 @@
Also, separate patches enable bisecting much better when we track problems in
the future.
-2.9 Patch Against Recent Sources
+2.4 Patch Against Recent Sources
Please try to get the latest available sources to make your patches
against. It makes the life of the developers so much easier. The very best is
if you get the most up-to-date sources from the git repository, but the
latest release archive is quite OK as well!
-2.10 Document
+2.5 Document
Writing docs is dead boring and one of the big problems with many open source
projects. Someone's gotta do it. It makes it a lot easier if you submit a
@@ -176,7 +131,7 @@
ASCII files. All HTML files on the web site and in the release archives are
generated from the nroff/ASCII versions.
-2.11 Test Cases
+2.6 Test Cases
Since the introduction of the test suite, we can quickly verify that the main
features are working as they're supposed to. To maintain this situation and
@@ -203,7 +158,7 @@
You need to first checkout the repository:
- git clone https://github.com/bagder/curl.git
+ git clone https://github.com/curl/curl.git
You then proceed and edit all the files you like and you commit them to your
local repository:
diff --git a/docs/DISTRO-DILEMMA b/docs/DISTRO-DILEMMA
deleted file mode 100644
index 2d317fdb..00000000
--- a/docs/DISTRO-DILEMMA
+++ /dev/null
@@ -1,176 +0,0 @@
- Date: February 11, 2007
- Author: Daniel Stenberg <daniel@haxx.se>
- URL: http://curl.haxx.se/legal/distro-dilemma.html
-
-Condition
-
- This document is written to describe the situation as it is right now.
- libcurl 7.16.1 is currently the latest version available. Things may of
- course change in the future.
-
- This document reflects my view and understanding of these things. Please tell
- me where and how you think I'm wrong, and I'll try to correct my mistakes.
-
-Background
-
- The Free Software Foundation has deemed the Original BSD license[1] to be
- "incompatible"[2] with GPL[3]. I'd rather say it is the other way around, but
- the point is the same: if you distribute a binary version of a GPL program,
- it MUST NOT be linked with any Original BSD-licensed parts or libraries.
- Doing so will violate the GPL license. For a long time, very many GPL
- licensed programs have avoided this license mess by adding an exception[8] to
- their license. And many others have just closed their eyes for this problem.
-
- libcurl is MIT-style[4] licensed - how on earth did this dilemma fall onto
- our plates?
-
- libcurl is only a little library. libcurl can be built to use OpenSSL for its
- SSL/TLS capabilities. OpenSSL is basically Original BSD licensed[5].
-
- If libcurl built to use OpenSSL is used by a GPL-licensed application and you
- decide to distribute a binary version of it (Linux distros - for example -
- tend to), you have a clash. GPL vs Original BSD.
-
- This dilemma is not libcurl-specific nor is it specific to any particular
- Linux distro. (This article mentions and refers to Debian several times, but
- only because Debian seems to be the only Linux distro to have faced this
- issue yet since no other distro is shipping libcurl built with two SSL
- libraries.)
-
-Part of the Operating System
-
- This would not be a problem if the used lib would be considered part of the
- underlying operating system, as then the GPL license has an exception
- clause[6] that allows applications to use such libs without having to be
- allowed to distribute it or its sources. Possibly some distros will claim
- that OpenSSL is part of their operating system.
-
- Debian does however not take this stance and has officially(?) claimed that
- OpenSSL is not a required part of the Debian operating system
-
- Some people claim that this paragraph cannot be exploited this way by a Linux
- distro, but I am not a lawyer and that is a discussion left outside of this
- document.
-
-GnuTLS
-
- Since May 2005 libcurl can get built to use GnuTLS instead of OpenSSL. GnuTLS
- is an LGPL[7] licensed library that offers a matching set of features as
- OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl
- without including any Original BSD licensed code.
-
- I believe Debian is the first (only?) distro that provides libcurl/GnuTLS
- packages.
-
-yassl
-
- libcurl can get also get built to use yassl for the TLS/SSL layer. yassl is a
- GPL[3] licensed library.
-
-
-GnuTLS vs OpenSSL vs yassl
-
- While these three libraries offer similar features, they are not equal.
- libcurl does not (yet) offer a standardized stable ABI if you decide to
- switch from using libcurl-openssl to libcurl-gnutls or vice-versa. The GnuTLS
- and yassl support is very recent in libcurl and it has not been tested nor
- used very extensively, while the OpenSSL equivalent code has been used and
- thus matured since 1999.
-
- GnuTLS
- - LGPL licensed
- - supports SRP
- - lacks SSLv2 support
- - lacks MD2 support (used by at least some CA certs)
- - lacks the crypto functions libcurl uses for NTLM
-
- OpenSSL
- - Original BSD licensed
- - lacks SRP
- - supports SSLv2
- - older and more widely used
- - provides crypto functions libcurl uses for NTLM
- - libcurl can do non-blocking connects with it in 7.15.4 and later
-
- yassl
- - GPL licensed
- - much untested and unproven in the real work by (lib)curl users so we don't
- know a lot about restrictions or benefits from using this
-
-The Better License, Original BSD, GPL or LGPL?
-
- It isn't obvious or without debate to any objective interested party that
- either of these licenses are the "better" or even the "preferred" one in a
- generic situation.
-
- Instead, I think we should accept the fact that the SSL/TLS libraries and
- their different licenses will fit different applications and their authors
- differently depending on the applications' licenses and their general usage
- pattern (considering how GPL and LGPL libraries for example can be burdensome
- for embedded systems usage).
-
- In Debian land, there seems to be a common opinion that LGPL is "maximally
- compatible" with apps while Original BSD is not. Like this:
-
- https://lists.debian.org/debian-devel/2005/09/msg01417.html
-
-More SSL Libraries
-
- In libcurl, there's no stopping us here. There are more Open Source/Free
- SSL/TLS libraries out there and we would very much like to support them as
- well, to offer application authors an even wider scope of choice.
-
-Application Angle of this Problem
-
- libcurl is built to use one SSL/TLS library. It uses a single fixed name (by
- default) on the built/created lib file, and applications are built/linked to
- use that single lib. Replacing one libcurl instance with another one that
- uses the other SSL/TLS library might break one or more applications (due to
- ABI differences and/or different feature set). You want your application to
- use the libcurl it was built for.
-
-Project cURL Angle of this Problem
-
- We distribute libcurl and everyone may build libcurl with either library at
- their choice. This problem is not directly a problem of ours. It merely
- affects users - GPL application authors only - of our lib as it comes
- included and delivered on some distros.
-
- libcurl has different ABI when built with different SSL/TLS libraries due to
- these reasons:
-
- 1. No one has worked on fixing this. The mutex/lock callbacks should be set
- with a generic libcurl function that should use the proper underlying
- functions.
-
- 2. The CURLOPT_SSL_CTX_FUNCTION option is not possible to "emulate" on GnuTLS
- but simply requires OpenSSL.
-
- 3. There might be some other subtle differences just because nobody has yet
- tried to make a fixed ABI like this.
-
-Distro Angle of this Problem
-
- To my knowledge there is only one distro that ships libcurl built with either
- OpenSSL or GnuTLS.
-
- Debian Linux is now (since mid September 2005) providing two different
- libcurl packages, one for libcurl built with OpenSSL and one built with
- GnuTLS. They use different .so names and can this both be installed in a
- single system simultaneously. This has been said to be a transitional system
- not desired to keep in the long run.
-
-Footnotes
-
- [1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
- [2] = https://www.gnu.org/philosophy/bsd.html
- [3] = https://www.gnu.org/licenses/gpl.html
- [4] = http://curl.haxx.se/docs/copyright.html
- [5] = https://www.openssl.org/source/license.html
- [6] = https://www.gnu.org/licenses/gpl.html end of section 3
- [7] = https://www.gnu.org/licenses/lgpl.html
- [8] = https://en.wikipedia.org/wiki/OpenSSL_exception
-
-Feedback/Updates provided by
-
- Eric Cooper
diff --git a/docs/FAQ b/docs/FAQ
index 06a306d9..8ce52175 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -30,6 +30,7 @@ FAQ
2.2 Does curl work/build with other SSL libraries?
2.3 Where can I find a copy of LIBEAY32.DLL?
2.4 Does curl support SOCKS (RFC 1928) ?
+ 2.5 Install libcurl for both 32bit and 64bit?
3. Usage Problems
3.1 curl: (1) SSL is disabled, https: not supported
@@ -225,7 +226,9 @@ FAQ
implement it for you, that is not a very friendly attitude. We spend a
considerable time already on maintaining and developing curl. In order to
get more out of us, you should consider trading in some of your time and
- efforts in return.
+ efforts in return. Simply go to the GitHub repo which resides at
+ https://github.com/curl/curl, fork the project, and create pull requests
+ with your proposed changes.
If you write the code, chances are bigger that it will get into curl faster.
@@ -251,9 +254,10 @@ FAQ
We still get help from companies. Haxx provides web site, bandwidth, mailing
lists etc, sourceforge.net hosts project services we take advantage from,
- like the bug tracker and github hosts the primary git repository. Also
- again, some companies have sponsored certain parts of the development in the
- past and I hope some will continue to do so in the future.
+ like the bug tracker, and GitHub hosts the primary git repository at
+ https://github.com/curl/curl. Also again, some companies have sponsored
+ certain parts of the development in the past and I hope some will continue to
+ do so in the future.
If you want to support our project, consider a donation or a banner-program
or even better: by helping us coding, documenting, testing etc.
@@ -278,7 +282,7 @@ FAQ
Please do not mail any single individual unless you really need to. Keep
curl-related questions on a suitable mailing list. All available mailing
lists are listed in the MANUAL document and online at
- http://curl.haxx.se/mail/
+ https://curl.haxx.se/mail/
Keeping curl-related questions and discussions on mailing lists allows
others to join in and help, to share their ideas, contribute their
@@ -299,7 +303,7 @@ FAQ
your curl-related problems.
We list available alternatives on the curl web site:
- http://curl.haxx.se/support.html
+ https://curl.haxx.se/support.html
1.10 How many are using curl?
@@ -316,7 +320,7 @@ FAQ
In May 2012 Daniel did a counting game and came up with a number that may
be completely wrong or somewhat accurate. Over 500 million!
- See http://daniel.haxx.se/blog/2012/05/16/300m-users/
+ See https://daniel.haxx.se/blog/2012/05/16/300m-users/
1.11 Why don't you update ca-bundle.crt
@@ -338,7 +342,7 @@ FAQ
If you want the most recent collection of ca certs that Mozilla Firefox
uses, we recommend that you extract the collection yourself from Mozilla
Firefox (by running 'make ca-bundle), or by using our online service setup
- for this purpose: http://curl.haxx.se/docs/caextract.html
+ for this purpose: https://curl.haxx.se/docs/caextract.html
1.12 I have a problem who can I chat with?
@@ -352,13 +356,15 @@ FAQ
cryptography. When doing so, the Export Control Classification Number (ECCN)
is used to identify the level of export control etc.
- ASF gives a good explanation at https://www.apache.org/dev/crypto.html
+ Apache Software Foundation gives a good explanation of ECCNs at
+ https://www.apache.org/dev/crypto.html
We believe curl's number might be ECCN 5D002, another possibility is
- 5D992. It seems necessary to write them, asking to confirm.
+ 5D992. It seems necessary to write them (the authority that administers ECCN
+ numbers), asking to confirm.
- Comprehensible explanations of the meaning of such numbers and how to
- obtain them (resp.) are here
+ Comprehensible explanations of the meaning of such numbers and how to obtain
+ them (resp.) are here
http://www.bis.doc.gov/licensing/exportingbasics.htm
http://www.bis.doc.gov/licensing/do_i_needaneccn.html
@@ -444,7 +450,7 @@ FAQ
GnuTLS, yassl, NSS, PolarSSL, axTLS, Secure Transport (native iOS/OS X),
WinSSL (native Windows) or GSKit (native IBM i). They all have their pros
and cons, and we try to maintain a comparison of them here:
- http://curl.haxx.se/docs/ssl-compared.html
+ https://curl.haxx.se/docs/ssl-compared.html
2.3 Where can I find a copy of LIBEAY32.DLL?
@@ -459,6 +465,32 @@ FAQ
Yes, SOCKS 4 and 5 are supported.
+ 2.5 Install libcurl for both 32bit and 64bit?
+
+ In curl's configure procedure one of the regular include files get created
+ with platform specific information. The file 'curl/curlbuild.h' in the
+ installed libcurl file tree is therefore somewhat tied to that particular
+ platform.
+
+ To allow applications to get built for either 32bit or 64bit you need to
+ install libcurl headers for both setups and unfortunately curl doesn't do
+ this automatically.
+
+ A commonly used procedure is this:
+
+ $ ./configure [32bit platform]
+ $ mv curl/curlbuild.h curl/curlbuild-32bit.h
+ $ ./configure [64bit platform]
+ $ mv curl/curlbuild.h curl/curlbuild-64bit.h
+
+ Then you make a toplevel curl/curlbuild.h replacement that only does this:
+
+ #ifdef IS_32BIT
+ #include "curlbuild-32bit.h"
+ else
+ #include "curlbuild-64bit.h"
+ #endif
+
3. Usage problems
@@ -556,7 +588,7 @@ FAQ
Find out more about which languages that support curl directly, and how to
install and use them, in the libcurl section of the curl web site:
- http://curl.haxx.se/libcurl/
+ https://curl.haxx.se/libcurl/
All the various bindings to libcurl are made by other projects and people,
outside of the cURL project. The cURL project itself only produces libcurl
@@ -689,7 +721,7 @@ FAQ
certificate. Server certificate verification is enabled by default in curl
and libcurl and is often the reason for problems as explained in FAQ entry
4.12 and the SSLCERTS document
- (http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
+ (https://curl.haxx.se/docs/sslcerts.html). Server certificates that are
"self-signed" or otherwise signed by a CA that you do not have a CA cert
for, cannot be verified. If the verification during a connect fails, you are
refused access. You then need to explicitly disable the verification to
@@ -980,7 +1012,7 @@ FAQ
this check.
Details are also in the SSLCERTS file in the release archives, found online
- here: http://curl.haxx.se/docs/sslcerts.html
+ here: https://curl.haxx.se/docs/sslcerts.html
4.13 Why is curl -R on Windows one hour off?
@@ -1087,7 +1119,7 @@ FAQ
In such cases, the TCP/IP stack is responsible for detecting when the
network connection is irrevocably lost. Since with some protocols it is
- perfectly legal for the client wait indefinitely for data, the stack may
+ perfectly legal for the client to wait indefinitely for data, the stack may
never report a problem, and even when it does, it can take up to 20 minutes
for it to detect an issue. The curl option --keepalive-time enables
keep-alive support in the TCP/IP stack which makes it periodically probe the
@@ -1153,25 +1185,9 @@ FAQ
your system has such. Note that you must never share the same handle in
multiple threads.
- libcurl's implementation of timeouts might use signals (depending on what it
- was built to use for name resolving), and signal handling is generally not
- thread-safe. Multi-threaded Applicationss that call libcurl from different
- threads (on different handles) might want to use CURLOPT_NOSIGNAL, e.g.:
-
- curl_easy_setopt(handle, CURLOPT_NOSIGNAL, true);
-
- If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
- need to provide one or two locking functions:
-
- https://www.openssl.org/docs/crypto/threads.html
-
- If you use a GnuTLS-powered libcurl in a multi-threaded environment, you
- need to provide locking function(s) for libgcrypt (which is used by GnuTLS
- for the crypto functions).
-
- https://web.archive.org/web/20111103083330/http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
-
- No special locking is needed with a NSS-powered libcurl. NSS is thread-safe.
+ There may be some exceptions to thread safety depending on how libcurl was
+ built. Please review the guidelines for thread safety to learn more:
+ https://curl.haxx.se/libcurl/c/threadsafe.html
5.2 How can I receive all data into a large memory chunk?
@@ -1397,7 +1413,7 @@ FAQ
to do "LIST -a" or similar to see them.
The application thus needs to parse the LIST output. One such existing
- list parser is available at http://cr.yp.to/ftpparse.html Versions of
+ list parser is available at https://cr.yp.to/ftpparse.html Versions of
libcurl since 7.21.0 also provide the ability to specify a wildcard to
download multiple files from one FTP directory.
@@ -1516,7 +1532,7 @@ FAQ
notice" somewhere. Most probably like in the documentation or in the section
where other third party dependencies already are mentioned and acknowledged.
- As can be seen here: http://curl.haxx.se/docs/companies.html and elsewhere,
+ As can be seen here: https://curl.haxx.se/docs/companies.html and elsewhere,
more and more companies are discovering the power of libcurl and take
advantage of it even in commercial environments.
@@ -1536,9 +1552,7 @@ FAQ
7.2 Who wrote PHP/CURL?
- PHP/CURL is a module that comes with the regular PHP package. It depends and
- uses libcurl, so you need to have libcurl installed properly first before
- PHP/CURL can be used. PHP/CURL was initially written by Sterling Hughes.
+ PHP/CURL was initially written by Sterling Hughes.
7.3 Can I perform multiple requests using the same handle?
@@ -1547,4 +1561,10 @@ FAQ
unknown to me).
After a transfer, you just set new options in the handle and make another
- transfer. This will make libcurl to re-use the same connection if it can.
+ transfer. This will make libcurl re-use the same connection if it can.
+
+ 7.4 Does PHP/CURL have dependencies?
+
+ PHP/CURL is a module that comes with the regular PHP package. It depends on
+ and uses libcurl, so you need to have libcurl installed properly before
+ PHP/CURL can be used.
diff --git a/docs/HISTORY b/docs/HISTORY
index e76e5b94..f878ee10 100644
--- a/docs/HISTORY
+++ b/docs/HISTORY
@@ -65,7 +65,7 @@ OpenSSL took over where SSLeay was abandoned.
May, first Debian package.
August, LDAP:// and FILE:// support added. The curl web site gets 1300 visits
-weekly.
+weekly. Moved site to curl.haxx.nu.
Released curl 6.0 in September. 15000 lines of code.
@@ -81,6 +81,8 @@ the easy interface and turned out to be the beginning of actually getting
other software and programs to get based on and powered by libcurl. Almost
20000 lines of code.
+June 2000: the curl site moves to "curl.haxx.se"
+
August, the curl web site gets 4000 visits weekly.
The PHP guys adopted libcurl already the same month, when the first ever third
diff --git a/docs/HTTP-COOKIES b/docs/HTTP-COOKIES
deleted file mode 100644
index b5abddfa..00000000
--- a/docs/HTTP-COOKIES
+++ /dev/null
@@ -1,123 +0,0 @@
-Updated: July 3, 2012 (http://curl.haxx.se/docs/http-cookies.html)
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
-
-HTTP Cookies
-
- 1. HTTP Cookies
- 1.1 Cookie overview
- 1.2 Cookies saved to disk
- 1.3 Cookies with curl the command line tool
- 1.4 Cookies with libcurl
- 1.5 Cookies with javascript
-
-==============================================================================
-
-1. HTTP Cookies
-
- 1.1 Cookie overview
-
- HTTP cookies are pieces of 'name=contents' snippets that a server tells the
- client to hold and then the client sends back those the server on subsequent
- requests to the same domains/paths for which the cookies were set.
-
- Cookies are either "session cookies" which typically are forgotten when the
- session is over which is often translated to equal when browser quits, or
- the cookies aren't session cookies they have expiration dates after which
- the client will throw them away.
-
- Cookies are set to the client with the Set-Cookie: header and are sent to
- servers with the Cookie: header.
-
- For a very long time, the only spec explaining how to use cookies was the
- original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html
-
- In 2011, RFC6265 (https://www.ietf.org/rfc/rfc6265.txt) was finally published
- and details how cookies work within HTTP.
-
- 1.2 Cookies saved to disk
-
- Netscape once created a file format for storing cookies on disk so that they
- would survive browser restarts. curl adopted that file format to allow
- sharing the cookies with browsers, only to see browsers move away from that
- format. Modern browsers no longer use it, while curl still does.
-
- The netscape cookie file format stores one cookie per physical line in the
- file with a bunch of associated meta data, each field separated with
- TAB. That file is called the cookiejar in curl terminology.
-
- When libcurl saves a cookiejar, it creates a file header of its own in which
- there is a URL mention that will link to the web version of this document.
-
- 1.3 Cookies with curl the command line tool
-
- curl has a full cookie "engine" built in. If you just activate it, you can
- have curl receive and send cookies exactly as mandated in the specs.
-
- Command line options:
-
- -b, --cookie
-
- tell curl a file to read cookies from and start the cookie engine, or if
- it isn't a file it will pass on the given string. -b name=var works and so
- does -b cookiefile.
-
- -j, --junk-session-cookies
-
- when used in combination with -b, it will skip all "session cookies" on
- load so as to appear to start a new cookie session.
-
- -c, --cookie-jar
-
- tell curl to start the cookie engine and write cookies to the given file
- after the request(s)
-
- 1.4 Cookies with libcurl
-
- libcurl offers several ways to enable and interface the cookie engine. These
- options are the ones provided by the native API. libcurl bindings may offer
- access to them using other means.
-
- CURLOPT_COOKIE
-
- Is used when you want to specify the exact contents of a cookie header to
- send to the server.
-
- CURLOPT_COOKIEFILE
-
- Tell libcurl to activate the cookie engine, and to read the initial set of
- cookies from the given file. Read-only.
-
- CURLOPT_COOKIEJAR
-
- Tell libcurl to activate the cookie engine, and when the easy handle is
- closed save all known cookies to the given cookiejar file. Write-only.
-
- CURLOPT_COOKIELIST
-
- Provide detailed information about a single cookie to add to the internal
- storage of cookies. Pass in the cookie as a HTTP header with all the
- details set, or pass in a line from a netscape cookie file. This option
- can also be used to flush the cookies etc.
-
- CURLINFO_COOKIELIST
-
- Extract cookie information from the internal cookie storage as a linked
- list.
-
- 1.5 Cookies with javascript
-
- These days a lot of the web is built up by javascript. The webbrowser loads
- complete programs that render the page you see. These javascript programs
- can also set and access cookies.
-
- Since curl and libcurl are plain HTTP clients without any knowledge of or
- capability to handle javascript, such cookies will not be detected or used.
-
- Often, if you want to mimic what a browser does on such web sites, you can
- record web browser HTTP traffic when using such a site and then repeat the
- cookie operations using curl or libcurl.
diff --git a/docs/HTTP-COOKIES.md b/docs/HTTP-COOKIES.md
new file mode 100644
index 00000000..a1b28345
--- /dev/null
+++ b/docs/HTTP-COOKIES.md
@@ -0,0 +1,104 @@
+# HTTP Cookies
+
+## Cookie overview
+
+ Cookies are `name=contents` pairs that a HTTP server tells the client to
+ hold and then the client sends back those to the server on subsequent
+ requests to the same domains and paths for which the cookies were set.
+
+ Cookies are either "session cookies" which typically are forgotten when the
+ session is over which is often translated to equal when browser quits, or
+ the cookies aren't session cookies they have expiration dates after which
+ the client will throw them away.
+
+ Cookies are set to the client with the Set-Cookie: header and are sent to
+ servers with the Cookie: header.
+
+ For a very long time, the only spec explaining how to use cookies was the
+ original [Netscape spec from 1994](https://curl.haxx.se/rfc/cookie_spec.html).
+
+ In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
+ published and details how cookies work within HTTP.
+
+## Cookies saved to disk
+
+ Netscape once created a file format for storing cookies on disk so that they
+ would survive browser restarts. curl adopted that file format to allow
+ sharing the cookies with browsers, only to see browsers move away from that
+ format. Modern browsers no longer use it, while curl still does.
+
+ The netscape cookie file format stores one cookie per physical line in the
+ file with a bunch of associated meta data, each field separated with
+ TAB. That file is called the cookiejar in curl terminology.
+
+ When libcurl saves a cookiejar, it creates a file header of its own in which
+ there is a URL mention that will link to the web version of this document.
+
+## Cookies with curl the command line tool
+
+ curl has a full cookie "engine" built in. If you just activate it, you can
+ have curl receive and send cookies exactly as mandated in the specs.
+
+ Command line options:
+
+ `-b, --cookie`
+
+ tell curl a file to read cookies from and start the cookie engine, or if it
+ isn't a file it will pass on the given string. -b name=var works and so does
+ -b cookiefile.
+
+ `-j, --junk-session-cookies`
+
+ when used in combination with -b, it will skip all "session cookies" on load
+ so as to appear to start a new cookie session.
+
+ `-c, --cookie-jar`
+
+ tell curl to start the cookie engine and write cookies to the given file
+ after the request(s)
+
+## Cookies with libcurl
+
+ libcurl offers several ways to enable and interface the cookie engine. These
+ options are the ones provided by the native API. libcurl bindings may offer
+ access to them using other means.
+
+ `CURLOPT_COOKIE`
+
+ Is used when you want to specify the exact contents of a cookie header to
+ send to the server.
+
+ `CURLOPT_COOKIEFILE`
+
+ Tell libcurl to activate the cookie engine, and to read the initial set of
+ cookies from the given file. Read-only.
+
+ `CURLOPT_COOKIEJAR`
+
+ Tell libcurl to activate the cookie engine, and when the easy handle is
+ closed save all known cookies to the given cookiejar file. Write-only.
+
+ `CURLOPT_COOKIELIST`
+
+ Provide detailed information about a single cookie to add to the internal
+ storage of cookies. Pass in the cookie as a HTTP header with all the details
+ set, or pass in a line from a netscape cookie file. This option can also be
+ used to flush the cookies etc.
+
+ `CURLINFO_COOKIELIST`
+
+ Extract cookie information from the internal cookie storage as a linked
+ list.
+
+## Cookies with javascript
+
+ These days a lot of the web is built up by javascript. The webbrowser loads
+ complete programs that render the page you see. These javascript programs
+ can also set and access cookies.
+
+ Since curl and libcurl are plain HTTP clients without any knowledge of or
+ capability to handle javascript, such cookies will not be detected or used.
+
+ Often, if you want to mimic what a browser does on such web sites, you can
+ record web browser HTTP traffic when using such a site and then repeat the
+ cookie operations using curl or libcurl.
diff --git a/docs/HTTP2.md b/docs/HTTP2.md
index b4e2983b..cc5a5b33 100644
--- a/docs/HTTP2.md
+++ b/docs/HTTP2.md
@@ -2,12 +2,13 @@ HTTP/2 with curl
================
[HTTP/2 Spec](https://www.rfc-editor.org/rfc/rfc7540.txt)
-[http2 explained](http://daniel.haxx.se/http2/)
+[http2 explained](https://daniel.haxx.se/http2/)
Build prerequisites
-------------------
- nghttp2
- - OpenSSL, NSS, GnutTLS or PolarSSL with a new enough version
+ - OpenSSL, libressl, BoringSSL, NSS, GnutTLS, mbedTLS, wolfSSL or SChannel
+ with a new enough version.
[nghttp2](https://nghttp2.org/)
-------------------------------
@@ -36,23 +37,32 @@ Over an https:// URL
If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use
ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce
an option that will cause libcurl to fail if not possible to use HTTP/2.
-Consider options to explicitly disable ALPN and/or NPN.
+
+`CURL_HTTP_VERSION_2TLS` was added in 7.47.0 as a way to ask libcurl to prefer
+HTTP/2 for HTTPS but stick to 1.1 by default for plain old HTTP connections.
ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is
for a similar purpose, was made prior to ALPN and is used for SPDY so early
HTTP/2 servers are implemented using NPN before ALPN support is widespread.
+`CURLOPT_SSL_ENABLE_ALPN` and `CURLOPT_SSL_ENABLE_NPN` are offered to allow
+applications to explicitly disable ALPN or NPN.
+
SSL libs
--------
The challenge is the ALPN and NPN support and all our different SSL
-backends. You may need a fairly updated SSL library version for it to
-provide the necessary TLS features. Right now we support:
-
- - OpenSSL: ALPN and NPN
- - NSS: ALPN and NPN
- - GnuTLS: ALPN
- - PolarSSL: ALPN
+backends. You may need a fairly updated SSL library version for it to provide
+the necessary TLS features. Right now we support:
+
+ - OpenSSL: ALPN and NPN
+ - libressl: ALPN and NPN
+ - BoringSSL: ALPN and NPN
+ - NSS: ALPN and NPN
+ - GnuTLS: ALPN
+ - mbedTLS: ALPN
+ - SChannel: ALPN
+ - wolfSSL: ALPN
Multiplexing
------------
@@ -84,7 +94,12 @@ in HTTP 1.1 style. This allows applications to work unmodified.
curl tool
---------
-curl offers the `--http2` command line option to enable use of HTTP/2
+curl offers the `--http2` command line option to enable use of HTTP/2.
+
+curl offers the `--http2-prior-knowledge` command line option to enable use of
+HTTP/2 without HTTP/1.1 Upgrade.
+
+Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections.
HTTP Alternative Services
-------------------------
@@ -95,13 +110,4 @@ same origin server that you get the response from. A browser or long-living
client can use that hint to create a new connection asynchronously. For
libcurl, we may introduce a way to bring such clues to the applicaton and/or
let a subsequent request use the alternate route
-automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-05)
-
-TODO
-----
-
- - Provide API to set priorities / dependencies of individual streams
-
- - Implement "prior-knowledge" HTTP/2 connecitons over clear text so that
- curl can connect with HTTP/2 at once without 1.1+Upgrade.
-
+automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-14)
diff --git a/docs/INSTALL b/docs/INSTALL
index 45703188..2e1075ba 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -471,6 +471,15 @@ Win32
add '-DCURL_STATICLIB' to your CFLAGS. Otherwise the linker will look for
dynamic import symbols.
+ Legacy Windows and SSL
+ ----------------------
+
+ WinSSL (specifically SChannel from Windows SSPI), is the native SSL library
+ in Windows. However, WinSSL in Windows <= XP is unable to connect to servers
+ that no longer support the legacy handshakes and algorithms used by those
+ versions. If you will be using curl in one of those earlier versions of
+ Windows you should choose another SSL backend such as OpenSSL.
+
Apple iOS and Mac OS X
======================
@@ -697,7 +706,7 @@ NetWare
Builds automatically created 8 times a day from current git are here:
http://www.gknw.net/mirror/curl/autobuilds/
the status of these builds can be viewed at the autobuild table:
- http://curl.haxx.se/dev/builds.html
+ https://curl.haxx.se/dev/builds.html
eCos
====
@@ -941,9 +950,10 @@ REDUCING SIZE
important factor. First, be sure to set the CFLAGS variable when
configuring with any relevant compiler optimization flags to reduce the
size of the binary. For gcc, this would mean at minimum the -Os option,
- and potentially the -march=X and -mdynamic-no-pic options as well, e.g.
+ and potentially the -march=X, -mdynamic-no-pic and -flto options as well,
+ e.g.
- ./configure CFLAGS='-Os' ...
+ ./configure CFLAGS='-Os' LDFLAGS='-Wl,-Bsymbolic'...
Note that newer compilers often produce smaller code than older versions
due to improved optimization.
@@ -961,7 +971,9 @@ REDUCING SIZE
--disable-ipv6 (disables support for IPv6)
--disable-manual (disables support for the built-in documentation)
--disable-proxy (disables support for HTTP and SOCKS proxies)
+ --disable-unix-sockets (disables support for UNIX sockets)
--disable-verbose (eliminates debugging strings and error code strings)
+ --disable-versioned-symbols (disables support for versioned symbols)
--enable-hidden-symbols (eliminates unneeded symbols in the shared library)
--without-libidn (disables support for the libidn DNS library)
--without-librtmp (disables support for RTMP)
@@ -974,7 +986,7 @@ REDUCING SIZE
configure command-line, e.g.
CFLAGS="-Os -ffunction-sections -fdata-sections \
- -fno-unwind-tables -fno-asynchronous-unwind-tables" \
+ -fno-unwind-tables -fno-asynchronous-unwind-tables -flto" \
LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections"
Be sure also to strip debugging symbols from your binaries after
@@ -984,9 +996,9 @@ REDUCING SIZE
.comment section).
Using these techniques it is possible to create a basic HTTP-only shared
- libcurl library for i386 Linux platforms that is only 114 KiB in size, and
- an FTP-only library that is 115 KiB in size (as of libcurl version 7.35.0,
- using gcc 4.8.2).
+ libcurl library for i386 Linux platforms that is only 109 KiB in size, and
+ an FTP-only library that is 109 KiB in size (as of libcurl version 7.45.0,
+ using gcc 4.9.2).
You may find that statically linking libcurl to your application will
result in a lower total size than dynamically linking.
@@ -1089,7 +1101,7 @@ GnuTLS https://www.gnu.org/software/gnutls/
Heimdal http://www.h5l.org/
libidn https://www.gnu.org/software/libidn/
libmetalink https://launchpad.net/libmetalink/
-libssh2 http://www.libssh2.org/
+libssh2 https://www.libssh2.org/
MIT Kerberos http://web.mit.edu/kerberos/www/dist/
NSS https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
OpenLDAP http://www.openldap.org/
diff --git a/docs/INSTALL.devcpp b/docs/INSTALL.devcpp
index ee2d7036..f989d529 100644
--- a/docs/INSTALL.devcpp
+++ b/docs/INSTALL.devcpp
@@ -248,7 +248,7 @@ SSL Files
openssl-0.9.7e-win32-bin.zip for the minimalist package of the openssl-0.9.7e
binaries ported to MS Windows 95/98/NT/XP using the MingW32/GCC-3.1
development environment. The file may be downloaded at
-http://curl.haxx.se/download/.
+https://curl.haxx.se/download/.
2- Open the above zip file. You will find two files - SDL.dll,
SDL_mixer.dll. Install them in the directory C:\WINDOWS\SYSTEM32 for Win 9x
diff --git a/docs/INTERNALS b/docs/INTERNALS
index 4cd63b4e..698d66ec 100644
--- a/docs/INTERNALS
+++ b/docs/INTERNALS
@@ -1079,17 +1079,17 @@ for older and later versions as things don't change drastically that often.
the share API.
-[1]: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
-[2]: http://curl.haxx.se/libcurl/c/curl_easy_init.html
+[1]: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
+[2]: https://curl.haxx.se/libcurl/c/curl_easy_init.html
[3]: http://c-ares.haxx.se/
[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
-[5]: http://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
-[6]: http://curl.haxx.se/docs/manpage.html#--compressed
-[7]: http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
-[8]: http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
-[9]: http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
-[10]: http://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
-[11]: http://curl.haxx.se/libcurl/c/curl_multi_perform.html
-[12]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
-[13]: http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
-[14]: http://curl.haxx.se/libcurl/c/curl_multi_info_read.html
+[5]: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
+[6]: https://curl.haxx.se/docs/manpage.html#--compressed
+[7]: https://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
+[8]: https://curl.haxx.se/libcurl/c/curl_multi_timeout.html
+[9]: https://curl.haxx.se/libcurl/c/curl_multi_setopt.html
+[10]: https://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
+[11]: https://curl.haxx.se/libcurl/c/curl_multi_perform.html
+[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
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 345dc45d..c91c388b 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -1,257 +1,516 @@
-These are problems known to exist at the time of this release. Feel free to
-join in and help us correct one or more of these! Also be sure to check the
-changelog of the current development status, as one or more of these problems
-may have been fixed since this was written!
-
-90. IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
- code reveals that pingpong.c contains some truncation code, at line 408,
- when it deems the server response to be too large truncating it to 40
- characters"
- http://curl.haxx.se/bug/view.cgi?id=1366
-
-89. Disabling HTTP Pipelining when there are ongoing transfers can lead to
- heap corruption and crash. http://curl.haxx.se/bug/view.cgi?id=1411
-
-88. libcurl doesn't support CURLINFO_FILETIME for SFTP transfers and thus
- curl's -R option also doesn't work then.
-
-87. -J/--remote-header-name doesn't decode %-encoded file names. RFC6266
- details how it should be done. The can of worm is basically that we have no
- charset handling in curl and ascii >=128 is a challenge for us. Not to
- mention that decoding also means that we need to check for nastiness that is
- attempted, like "../" sequences and the like. Probably everything to the left
- of any embedded slashes should be cut off.
- http://curl.haxx.se/bug/view.cgi?id=1294
-
-86. The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3
- and SMTP if a failure occurs during the authentication phase of a
- connection.
-
-85. Wrong STARTTRANSFER timer accounting for POST requests
- Timer works fine with GET requests, but while using POST the time for
- CURLINFO_STARTTRANSFER_TIME is wrong. While using POST
- CURLINFO_STARTTRANSFER_TIME minus CURLINFO_PRETRANSFER_TIME is near to zero
- every time.
- http://curl.haxx.se/bug/view.cgi?id=1213
-
-84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
- backends, so relying on this information in a generic app is flaky.
-
-82. When building with the Windows Borland compiler, it fails because the
- "tlib" tool doesn't support hyphens (minus signs) in file names and we have
- such in the build.
- http://curl.haxx.se/bug/view.cgi?id=1222
-
-81. When using -J (with -O), automatically resumed downloading together with
- "-C -" fails. Without -J the same command line works! This happens because
- the resume logic is worked out before the target file name (and thus its
- pre-transfer size) has been figured out!
- http://curl.haxx.se/bug/view.cgi?id=1169
-
-80. Curl doesn't recognize certificates in DER format in keychain, but it
- works with PEM.
- http://curl.haxx.se/bug/view.cgi?id=1065
-
-79. SMTP. When sending data to multiple recipients, curl will abort and return
- failure if one of the recipients indicate failure (on the "RCPT TO"
- command). Ordinary mail programs would proceed and still send to the ones
- that can receive data. This is subject for change in the future.
- http://curl.haxx.se/bug/view.cgi?id=1116
-
-78. curl and libcurl don't always signal the client properly when "sending"
- zero bytes files - it makes for example the command line client not creating
- any file at all. Like when using FTP.
- http://curl.haxx.se/bug/view.cgi?id=1063
-
-76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on
- that platform), and long is only 32 bits. It makes it impossible for
- curl_easy_getinfo() to return a socket properly with the CURLINFO_LASTSOCKET
- option as for all other operating systems.
-
-75. NTLM authentication involving unicode user name or password only works
- properly if built with UNICODE defined together with the WinSSL/schannel
- backend. The original problem was mentioned in:
- http://curl.haxx.se/mail/lib-2009-10/0024.html
- http://curl.haxx.se/bug/view.cgi?id=896
-
- The WinSSL/schannel version verified to work as mentioned in
- http://curl.haxx.se/mail/lib-2012-07/0073.html
-
-73. if a connection is made to a FTP server but the server then just never
- sends the 220 response or otherwise is dead slow, libcurl will not
- acknowledge the connection timeout during that phase but only the "real"
- timeout - which may surprise users as it is probably considered to be the
- connect phase to most people. Brought up (and is being misunderstood) in:
- http://curl.haxx.se/bug/view.cgi?id=856
-
-72. "Pausing pipeline problems."
- http://curl.haxx.se/mail/lib-2009-07/0214.html
-
-70. Problem re-using easy handle after call to curl_multi_remove_handle
- http://curl.haxx.se/mail/lib-2009-07/0249.html
-
-68. "More questions about ares behavior".
- http://curl.haxx.se/mail/lib-2009-08/0012.html
-
-67. When creating multipart formposts. The file name part can be encoded with
- something beyond ascii but currently libcurl will only pass in the verbatim
- string the app provides. There are several browsers that already do this
- encoding. The key seems to be the updated draft to RFC2231:
- https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
-
-66. When using telnet, the time limitation options don't work.
- http://curl.haxx.se/bug/view.cgi?id=846
-
-65. When doing FTP over a socks proxy or CONNECT through HTTP proxy and the
- multi interface is used, libcurl will fail if the (passive) TCP connection
- for the data transfer isn't more or less instant as the code does not
- properly wait for the connect to be confirmed. See test case 564 for a first
- shot at a test case.
-
-63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used
- for any further requests or transfers. The work-around is then to close that
- handle with curl_easy_cleanup() and create a new. Some more details:
- http://curl.haxx.se/mail/lib-2009-04/0300.html
-
-61. If an upload using Expect: 100-continue receives an HTTP 417 response,
- it ought to be automatically resent without the Expect:. A workaround is
- for the client application to redo the transfer after disabling Expect:.
- http://curl.haxx.se/mail/archive-2008-02/0043.html
-
-60. libcurl closes the connection if an HTTP 401 reply is received while it
- is waiting for the the 100-continue response.
- http://curl.haxx.se/mail/lib-2008-08/0462.html
-
-58. It seems sensible to be able to use CURLOPT_NOBODY and
- CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
- not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
-
-56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
- server using the multi interface, the commands are not being sent correctly
- and instead the connection is "cancelled" (the operation is considered done)
- prematurely. There is a half-baked (busy-looping) patch provided in the bug
- report but it cannot be accepted as-is. See
- http://curl.haxx.se/bug/view.cgi?id=748
-
-55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
- library header files exporting symbols/macros that should be kept private
- to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
-
-52. Gautam Kachroo's issue that identifies a problem with the multi interface
- where a connection can be re-used without actually being properly
- SSL-negotiated:
- http://curl.haxx.se/mail/lib-2008-01/0277.html
-
-49. If using --retry and the transfer timeouts (possibly due to using -m or
- -y/-Y) the next attempt doesn't resume the transfer properly from what was
- downloaded in the previous attempt but will truncate and restart at the
- original position where it was at before the previous failed attempt. See
- http://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
- https://qa.mandriva.com/show_bug.cgi?id=22565
-
-48. If a CONNECT response-headers are larger than BUFSIZE (16KB) when the
- connection is meant to be kept alive (like for NTLM proxy auth), the
- function will return prematurely and will confuse the rest of the HTTP
- protocol code. This should be very rare.
-
-43. There seems to be a problem when connecting to the Microsoft telnet server.
- http://curl.haxx.se/bug/view.cgi?id=649
-
-41. When doing an operation over FTP that requires the ACCT command (but not
- when logging in), the operation will fail since libcurl doesn't detect this
- and thus fails to issue the correct command:
- http://curl.haxx.se/bug/view.cgi?id=635
-
-39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
- http://curl.haxx.se/mail/lib-2007-01/0045.html
-
-38. Kumar Swamy Bhatt's problem in ftp/ssl "LIST" operation:
- http://curl.haxx.se/mail/lib-2007-01/0103.html
-
-35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very
- bad when used with the multi interface.
-
-34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
- Also see #12. According to bug #1556528, even the SOCKS5 connect code does
- not do it right: http://curl.haxx.se/bug/view.cgi?id=604
-
-31. "curl-config --libs" will include details set in LDFLAGS when configure is
- run that might be needed only for building libcurl. Further, curl-config
- --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
-
-26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
- "system context" will make it use wrong(?) user name - at least when compared
- to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=535
-
-23. SOCKS-related problems:
- B) libcurl doesn't support FTPS over a SOCKS proxy.
- E) libcurl doesn't support active FTP over a SOCKS proxy
-
- We probably have even more bugs and lack of features when a SOCKS proxy is
- used.
-
-21. FTP ASCII transfers do not follow RFC959. They don't convert the data
- accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
- clearly describes how this should be done:
-
- The sender converts the data from an internal character representation to
- the standard 8-bit NVT-ASCII representation (see the Telnet
- specification). The receiver will convert the data from the standard
- form to his own internal form.
-
- Since 7.15.4 at least line endings are converted.
-
-16. FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
- <password>, and <fpath> components, encoded as "%00". The problem is that
- curl_unescape does not detect this, but instead returns a shortened C
- string. From a strict FTP protocol standpoint, NUL is a valid character
- within RFC 959 <string>, so the way to handle this correctly in curl would
- be to use a data structure other than a plain C string, one that can handle
- embedded NUL characters. From a practical standpoint, most FTP servers
- would not meaningfully support NUL characters within RFC 959 <string>,
- anyway (e.g., Unix pathnames may not contain NUL).
-
-14. Test case 165 might fail on a system which has libidn present, but with an
- old iconv version (2.1.3 is a known bad version), since it doesn't recognize
- the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
- test pass, but instead makes it fail on Solaris hosts that use its native
- iconv.
-
-13. curl version 7.12.2 fails on AIX if compiled with --enable-ares.
- The workaround is to combine --enable-ares with --disable-shared
-
-12. When connecting to a SOCKS proxy, the (connect) timeout is not properly
- acknowledged after the actual TCP connect (during the SOCKS "negotiate"
- phase).
-
-10. To get HTTP Negotiate (SPNEGO) authentication to work fine, you need to
- provide a (fake) user name (this concerns both curl and the lib) because the
- code wrongly only considers authentication if there's a user name provided.
- http://curl.haxx.se/bug/view.cgi?id=440 How?
- http://curl.haxx.se/mail/lib-2004-08/0182.html
-
-8. Doing resumed upload over HTTP does not work with '-C -', because curl
- doesn't do a HEAD first to get the initial size. This needs to be done
- manually for HTTP PUT resume to work, and then '-C [index]'.
-
-6. libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
- such parts should be sent to the server as 'CWD ' (without an argument).
- The only exception to this rule, is that we knowingly break this if the
- empty part is first in the path, as then we use the double slashes to
- indicate that the user wants to reach the root dir (this exception SHALL
- remain even when this bug is fixed).
-
-5. libcurl doesn't treat the content-length of compressed data properly, as
- it seems HTTP servers send the *uncompressed* length in that header and
- libcurl thinks of it as the *compressed* length. Some explanations are here:
- http://curl.haxx.se/mail/lib-2003-06/0146.html
-
-2. If a HTTP server responds to a HEAD request and includes a body (thus
- violating the RFC2616), curl won't wait to read the response but just stop
- reading and return back. If a second request (let's assume a GET) is then
- immediately made to the same server again, the connection will be re-used
- fine of course, and the second request will be sent off but when the
- response is to get read, the previous response-body is what curl will read
- and havoc is what happens.
- More details on this is found in this libcurl mailing list thread:
- http://curl.haxx.se/mail/lib-2002-08/0000.html
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+ Known Bugs
+
+These are problems and bugs known to exist at the time of this release. Feel
+free to join in and help us correct one or more of these! Also be sure to
+check the changelog of the current development status, as one or more of these
+problems may have been fixed or changed somewhat since this was written!
+
+ 1. HTTP
+ 1.1 CURLFORM_CONTENTLEN in an array
+ 1.2 Disabling HTTP Pipelining
+ 1.3 STARTTRANSFER time is wrong for HTTP POSTs
+ 1.4 multipart formposts file name encoding
+ 1.5 Expect-100 meets 417
+ 1.6 Unnecessary close when 401 received waiting for 100
+ 1.7 CONNECT response larger than 16KB
+ 1.8 DNS timing is wrong for HTTP redirects
+ 1.9 HTTP/2 frames while in the connection pool kill reuse
+ 1.10 Strips trailing dot from host name
+
+ 2. TLS
+ 2.1 Hangs with PolarSSL
+ 2.2 CURLINFO_SSL_VERIFYRESULT has limited support
+ 2.3 DER in keychain
+ 2.4 GnuTLS backend skips really long certificate fields
+
+ 3. Email protocols
+ 3.1 IMAP SEARCH ALL truncated response
+ 3.2 No disconnect command
+ 3.3 SMTP to multiple recipients
+
+ 4. Command line
+ 4.1 -J with %-encoded file nameas
+ 4.2 -J with -C - fails
+ 4.3 --retry and transfer timeouts
+
+ 5. Build and portability issues
+ 5.1 Windows Borland compiler
+ 5.2 curl-config --libs contains private details
+ 5.3 libidn and old iconv
+ 5.4 AIX shared build with c-ares fails
+ 5.5 can't handle Unicode arguments in Windows
+
+ 6. Authentication
+ 6.1 NTLM authentication and unicode
+ 6.2 MIT Kerberos for Windows build
+ 6.3 NTLM in system context uses wrong name
+ 6.4 Negotiate needs a fake user name
+
+ 7. FTP
+ 7.1 FTP without or slow 220 response
+ 7.2 FTP with CONNECT and slow server
+ 7.3 FTP with NOBODY and FAILONERROR
+ 7.4 FTP with ACCT
+ 7.5 ASCII FTP
+ 7.6 FTP with NULs in URL parts
+ 7.7 FTP and empty path parts in the URL
+
+ 8. TELNET
+ 8.1 TELNET and time limtiations don't work
+ 8.2 Microsoft telnet server
+
+ 9. SFTP and SCP
+ 9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
+
+ 10. SOCKS
+ 10.1 SOCKS proxy connections are done blocking
+ 10.2 SOCKS don't support timeouts
+ 10.3 FTPS over SOCKS
+ 10.4 active FTP over a SOCKS
+
+ 11. Internals
+ 11.1 Curl leaks .onion hostnames in DNS
+ 11.2 error buffer not set if connection to multiple addresses fails
+
+ 12. LDAP and OpenLDAP
+ 12.1 OpenLDAP hangs after returning results
+
+ 13 TCP/IP
+ 13.1 --interface for ipv6 binds to unusable IP address
+
+
+==============================================================================
+
+1. HTTP
+
+1.1 CURLFORM_CONTENTLEN in an array
+
+ It is not possible to pass a 64-bit value using CURLFORM_CONTENTLEN with
+ CURLFORM_ARRAY, when compiled on 32-bit platforms that support 64-bit
+ integers. This is because the underlying structure 'curl_forms' uses a dual
+ purpose char* for storing these values in via casting. For more information
+ see the now closed related issue:
+ https://github.com/curl/curl/issues/608
+
+1.2 Disabling HTTP Pipelining
+
+ Disabling HTTP Pipelining when there are ongoing transfers can lead to
+ heap corruption and crash. https://curl.haxx.se/bug/view.cgi?id=1411
+
+1.3 STARTTRANSFER time is wrong for HTTP POSTs
+
+ Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
+ GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME
+ is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus
+ CURLINFO_PRETRANSFER_TIME is near to zero every time.
+
+ https://github.com/curl/curl/issues/218
+ https://curl.haxx.se/bug/view.cgi?id=1213
+
+1.4 multipart formposts file name encoding
+
+ When creating multipart formposts. The file name part can be encoded with
+ something beyond ascii but currently libcurl will only pass in the verbatim
+ string the app provides. There are several browsers that already do this
+ encoding. The key seems to be the updated draft to RFC2231:
+ https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
+
+1.5 Expect-100 meets 417
+
+ If an upload using Expect: 100-continue receives an HTTP 417 response, it
+ ought to be automatically resent without the Expect:. A workaround is for
+ the client application to redo the transfer after disabling Expect:.
+ https://curl.haxx.se/mail/archive-2008-02/0043.html
+
+1.6 Unnecessary close when 401 received waiting for 100
+
+ libcurl closes the connection if an HTTP 401 reply is received while it is
+ waiting for the the 100-continue response.
+ https://curl.haxx.se/mail/lib-2008-08/0462.html
+
+1.7 CONNECT response larger than 16KB
+
+ If a CONNECT response-headers are larger than BUFSIZE (16KB) when the
+ connection is meant to be kept alive (like for NTLM proxy auth), the function
+ will return prematurely and will confuse the rest of the HTTP protocol
+ code. This should be very rare.
+
+1.8 DNS timing is wrong for HTTP redirects
+
+ When extracting timing information after HTTP redirects, only the last
+ transfer's results are returned and not the totals:
+ https://github.com/curl/curl/issues/522
+
+1.9 HTTP/2 frames while in the connection pool kill reuse
+
+ If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
+ curl while the connection is held in curl's connection pool, the socket will
+ be found readable when considered for reuse and that makes curl think it is
+ dead and then it will be closed and a new connection gets created instead.
+
+ This is *best* fixed by adding monitoring to connections while they are kept
+ in the pool so that pings can be responded to appropriately.
+
+1.10 Strips trailing dot from host name
+
+ When given a URL wit a trailing dot for the host name part:
+ "https://example.com./", libcurl will strip off the dot and use the name
+ without a dot internally and send it dot-less in HTTP Host: headers and in
+ the TLS SNI field.
+
+ The HTTP part violates RFC 7230 section 5.4 but the SNI part is accordance
+ with RFC 6066 section 3.
+
+ URLs using these trailing dots are very rare in the wild and we have not seen
+ or gotten any real-world problems with such URLs reported. The popular
+ browsers seem to have stayed with not stripping the dot for both uses (thus
+ they violate RFC 6066 instead of RFC 7230).
+
+ Daniel took the discussion to the HTTPbis mailing list in March 2016:
+ https://lists.w3.org/Archives/Public/ietf-http-wg/2016JanMar/0430.html but
+ there was not major rush or interest to fix this. The impression I get is
+ that most HTTP people rather not rock the boat now and instead prioritize web
+ compatibility rather than to strictly adhere to these RFCs.
+
+ Our current approach allows a knowing client to send a custom HTTP header
+ with the dot added.
+
+ It can also be noted that while adding a trailing dot to the host name in
+ most (all?) cases will make the name resolve to the same set of IP addresses,
+ many HTTP servers will not happily accept the trailing dot there unless that
+ has been specificly configured to be a fine virtual host.
+
+ If URLs with trailing dots for host names become more popular or even just
+ used more than for just plain fun experiments, I'm sure we will have reason
+ to go back and reconsider.
+
+ See https://github.com/curl/curl/issues/716 for the discussion.
+
+
+2. TLS
+
+2.1 Hangs with PolarSSL
+
+ "curl_easy_perform hangs with imap and PolarSSL"
+ https://github.com/curl/curl/issues/334
+
+ Most likely, a fix similar to commit c111178bd4 (for mbedTLS) is
+ necessary. Or if we just wait a little longer we'll rip out all support for
+ PolarSSL instead...
+
+2.2 CURLINFO_SSL_VERIFYRESULT has limited support
+
+ CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
+ backends, so relying on this information in a generic app is flaky.
+
+2.3 DER in keychain
+
+ Curl doesn't recognize certificates in DER format in keychain, but it works
+ with PEM. https://curl.haxx.se/bug/view.cgi?id=1065
+
+2.4 GnuTLS backend skips really long certificate fields
+
+ libcurl calls gnutls_x509_crt_get_dn() with a fixed buffer size and if the
+ field is too long in the cert, it'll just return an error and the field will
+ be displayed blank.
+
+
+3. Email protocols
+
+3.1 IMAP SEARCH ALL truncated response
+
+ IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
+ code reveals that pingpong.c contains some truncation code, at line 408, when
+ it deems the server response to be too large truncating it to 40 characters"
+ https://curl.haxx.se/bug/view.cgi?id=1366
+
+3.2 No disconnect command
+
+ The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
+ SMTP if a failure occurs during the authentication phase of a connection.
+
+3.3 SMTP to multiple recipients
+
+ When sending data to multiple recipients, curl will abort and return failure
+ if one of the recipients indicate failure (on the "RCPT TO"
+ command). Ordinary mail programs would proceed and still send to the ones
+ that can receive data. This is subject for change in the future.
+ https://curl.haxx.se/bug/view.cgi?id=1116
+
+
+4. Command line
+
+4.1 -J with %-encoded file nameas
+
+ -J/--remote-header-name doesn't decode %-encoded file names. RFC6266 details
+ how it should be done. The can of worm is basically that we have no charset
+ handling in curl and ascii >=128 is a challenge for us. Not to mention that
+ decoding also means that we need to check for nastiness that is attempted,
+ like "../" sequences and the like. Probably everything to the left of any
+ embedded slashes should be cut off.
+ https://curl.haxx.se/bug/view.cgi?id=1294
+
+4.2 -J with -C - fails
+
+ When using -J (with -O), automatically resumed downloading together with "-C
+ -" fails. Without -J the same command line works! This happens because the
+ resume logic is worked out before the target file name (and thus its
+ pre-transfer size) has been figured out!
+ https://curl.haxx.se/bug/view.cgi?id=1169
+
+4.3 --retry and transfer timeouts
+
+ If using --retry and the transfer timeouts (possibly due to using -m or
+ -y/-Y) the next attempt doesn't resume the transfer properly from what was
+ downloaded in the previous attempt but will truncate and restart at the
+ original position where it was at before the previous failed attempt. See
+ https://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
+ https://qa.mandriva.com/show_bug.cgi?id=22565
+
+
+5. Build and portability issues
+
+5.1 Windows Borland compiler
+
+ When building with the Windows Borland compiler, it fails because the "tlib"
+ tool doesn't support hyphens (minus signs) in file names and we have such in
+ the build. https://curl.haxx.se/bug/view.cgi?id=1222
+
+5.2 curl-config --libs contains private details
+
+ "curl-config --libs" will include details set in LDFLAGS when configure is
+ run that might be needed only for building libcurl. Further, curl-config
+ --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
+
+5.3 libidn and old iconv
+
+ Test case 165 might fail on a system which has libidn present, but with an
+ old iconv version (2.1.3 is a known bad version), since it doesn't recognize
+ the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
+ test pass, but instead makes it fail on Solaris hosts that use its native
+ iconv.
+
+5.4 AIX shared build with c-ares fails
+
+ curl version 7.12.2 fails on AIX if compiled with --enable-ares. The
+ workaround is to combine --enable-ares with --disable-shared
+
+5.5 can't handle Unicode arguments in Windows
+
+ If a URL or filename can't be encoded using the user's current codepage then
+ it can only be encoded properly in the Unicode character set. Windows uses
+ UTF-16 encoding for Unicode and stores it in wide characters, however curl
+ and libcurl are not equipped for that at the moment. And, except for Cygwin,
+ Windows can't use UTF-8 as a locale.
+
+ https://curl.haxx.se/bug/?i=345
+ https://curl.haxx.se/bug/?i=731
+
+
+6. Authentication
+
+6.1 NTLM authentication and unicode
+
+ NTLM authentication involving unicode user name or password only works
+ properly if built with UNICODE defined together with the WinSSL/schannel
+ backend. The original problem was mentioned in:
+ https://curl.haxx.se/mail/lib-2009-10/0024.html
+ https://curl.haxx.se/bug/view.cgi?id=896
+
+ The WinSSL/schannel version verified to work as mentioned in
+ https://curl.haxx.se/mail/lib-2012-07/0073.html
+
+6.2 MIT Kerberos for Windows build
+
+ libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
+ library header files exporting symbols/macros that should be kept private to
+ the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
+
+6.3 NTLM in system context uses wrong name
+
+ NTLM authentication using SSPI (on Windows) when (lib)curl is running in
+ "system context" will make it use wrong(?) user name - at least when compared
+ to what winhttp does. See https://curl.haxx.se/bug/view.cgi?id=535
+
+6.4 Negotiate needs a fake user name
+
+ To get HTTP Negotiate (SPNEGO) authentication to work fine, you need to
+ provide a (fake) user name (this concerns both curl and the lib) because the
+ code wrongly only considers authentication if there's a user name provided.
+ https://curl.haxx.se/bug/view.cgi?id=440 How?
+ https://curl.haxx.se/mail/lib-2004-08/0182.html
+
+
+7. FTP
+
+7.1 FTP without or slow 220 response
+
+ If a connection is made to a FTP server but the server then just never sends
+ the 220 response or otherwise is dead slow, libcurl will not acknowledge the
+ connection timeout during that phase but only the "real" timeout - which may
+ surprise users as it is probably considered to be the connect phase to most
+ people. Brought up (and is being misunderstood) in:
+ https://curl.haxx.se/bug/view.cgi?id=856
+
+7.2 FTP with CONNECT and slow server
+
+ When doing FTP over a socks proxy or CONNECT through HTTP proxy and the multi
+ interface is used, libcurl will fail if the (passive) TCP connection for the
+ data transfer isn't more or less instant as the code does not properly wait
+ for the connect to be confirmed. See test case 564 for a first shot at a test
+ case.
+
+7.3 FTP with NOBODY and FAILONERROR
+
+ It seems sensible to be able to use CURLOPT_NOBODY and CURLOPT_FAILONERROR
+ with FTP to detect if a file exists or not, but it is not working:
+ https://curl.haxx.se/mail/lib-2008-07/0295.html
+
+7.4 FTP with ACCT
+
+ When doing an operation over FTP that requires the ACCT command (but not when
+ logging in), the operation will fail since libcurl doesn't detect this and
+ thus fails to issue the correct command:
+ https://curl.haxx.se/bug/view.cgi?id=635
+
+7.5 ASCII FTP
+
+ FTP ASCII transfers do not follow RFC959. They don't convert the data
+ accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
+ clearly describes how this should be done:
+
+ The sender converts the data from an internal character representation to
+ the standard 8-bit NVT-ASCII representation (see the Telnet
+ specification). The receiver will convert the data from the standard
+ form to his own internal form.
+
+ Since 7.15.4 at least line endings are converted.
+
+7.6 FTP with NULs in URL parts
+
+ FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
+ <password>, and <fpath> components, encoded as "%00". The problem is that
+ curl_unescape does not detect this, but instead returns a shortened C string.
+ From a strict FTP protocol standpoint, NUL is a valid character within RFC
+ 959 <string>, so the way to handle this correctly in curl would be to use a
+ data structure other than a plain C string, one that can handle embedded NUL
+ characters. From a practical standpoint, most FTP servers would not
+ meaningfully support NUL characters within RFC 959 <string>, anyway (e.g.,
+ Unix pathnames may not contain NUL).
+
+7.7 FTP and empty path parts in the URL
+
+ libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
+ such parts should be sent to the server as 'CWD ' (without an argument). The
+ only exception to this rule, is that we knowingly break this if the empty
+ part is first in the path, as then we use the double slashes to indicate that
+ the user wants to reach the root dir (this exception SHALL remain even when
+ this bug is fixed).
+
+
+8. TELNET
+
+8.1 TELNET and time limtiations don't work
+
+ When using telnet, the time limitation options don't work.
+ https://curl.haxx.se/bug/view.cgi?id=846
+
+8.2 Microsoft telnet server
+
+ There seems to be a problem when connecting to the Microsoft telnet server.
+ https://curl.haxx.se/bug/view.cgi?id=649
+
+
+9. SFTP and SCP
+
+9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
+
+ When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP server
+ using the multi interface, the commands are not being sent correctly and
+ instead the connection is "cancelled" (the operation is considered done)
+ prematurely. There is a half-baked (busy-looping) patch provided in the bug
+ report but it cannot be accepted as-is. See
+ https://curl.haxx.se/bug/view.cgi?id=748
+
+
+10. SOCKS
+
+10.1 SOCKS proxy connections are done blocking
+
+ Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very bad
+ when used with the multi interface.
+
+10.2 SOCKS don't support timeouts
+
+ The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
+ According to bug #1556528, even the SOCKS5 connect code does not do it right:
+ https://curl.haxx.se/bug/view.cgi?id=604
+
+ When connecting to a SOCK proxy, the (connect) timeout is not properly
+ acknowledged after the actual TCP connect (during the SOCKS "negotiate"
+ phase).
+
+10.3 FTPS over SOCKS
+
+ libcurl doesn't support FTPS over a SOCKS proxy.
+
+10.4 active FTP over a SOCKS
+
+ libcurl doesn't support active FTP over a SOCKS proxy
+
+
+11. Internals
+
+11.1 Curl leaks .onion hostnames in DNS
+
+ Curl sends DNS requests for hostnames with a .onion TLD. This leaks
+ information about what the user is attempting to access, and violates this
+ requirement of RFC7686: https://tools.ietf.org/html/rfc7686
+
+ Issue: https://github.com/curl/curl/issues/543
+
+11.2 error buffer not set if connection to multiple addresses fails
+
+ If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
+ only. But you only have IPv4 connectivity. libcurl will correctly fail with
+ CURLE_COULDNT_CONNECT. But the error buffer set by CURLOPT_ERRORBUFFER
+ remains empty. Issue: https://github.com/curl/curl/issues/544
+
+
+12. LDAP and OpenLDAP
+
+12.1 OpenLDAP hangs after returning results
+
+ By configuration defaults, openldap automatically chase referrals on
+ secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
+ should monitor all socket descriptors involved. Currently, these secondary
+ descriptors are not monitored, causing openldap library to never receive
+ data from them.
+
+ As a temporary workaround, disable referrals chasing by configuration.
+
+ The fix is not easy: proper automatic referrals chasing requires a
+ synchronous bind callback and monitoring an arbitrary number of socket
+ descriptors for a single easy handle (currently limited to 5).
+
+ Generic LDAP is synchronous: OK.
+
+ See https://github.com/curl/curl/issues/622 and
+ https://curl.haxx.se/mail/lib-2016-01/0101.html
+
+
+13 TCP/IP
+
+13.1 --interface for ipv6 binds to unusable IP address
+
+ Since IPv6 provides a lot of addresses with different scope, binding to an
+ IPv6 address needs to take the proper care so that it doesn't bind to a
+ locally scoped address as that is bound to fail.
+
+ https://github.com/curl/curl/issues/686
diff --git a/docs/LICENSE-MIXING b/docs/LICENSE-MIXING
index ccb6ada3..d8e36ca4 100644
--- a/docs/LICENSE-MIXING
+++ b/docs/LICENSE-MIXING
@@ -18,7 +18,7 @@ accompany your license with an exception[2]. This particular problem was
addressed when the Modified BSD license was created, which does not have the
announcement clause that collides with GPL.
-libcurl http://curl.haxx.se/docs/copyright.html
+libcurl https://curl.haxx.se/docs/copyright.html
Uses an MIT (or Modified BSD)-style license that is as liberal as
possible.
@@ -73,7 +73,7 @@ libressl http://www.libressl.org/
(May be used for SSL/TLS support) As an OpenSSL fork, it has the same
license as that.
-c-ares http://daniel.haxx.se/projects/c-ares/license.html
+c-ares https://daniel.haxx.se/projects/c-ares/license.html
(Used for asynchronous name resolves) Uses an MIT license that is very
liberal and imposes no restrictions on any other library or part you
@@ -116,7 +116,7 @@ OpenLDAP http://www.openldap.org/software/release/license.html
libcurl uses OpenLDAP as a shared library only, I have not heard of
anyone that ships OpenLDAP linked with libcurl in an app.
-libssh2 http://www.libssh2.org/
+libssh2 https://www.libssh2.org/
(Used for scp and sftp support) libssh2 uses a Modified BSD-style
license.
diff --git a/docs/MAIL-ETIQUETTE b/docs/MAIL-ETIQUETTE
index b6c0f452..75058009 100644
--- a/docs/MAIL-ETIQUETTE
+++ b/docs/MAIL-ETIQUETTE
@@ -33,7 +33,7 @@ MAIL ETIQUETTE
1.1 Mailing Lists
The mailing lists we have are all listed and described at
- http://curl.haxx.se/mail/
+ https://curl.haxx.se/mail/
Each mailing list is targeted to a specific set of users and subjects,
please use the one or the ones that suit you the most.
diff --git a/docs/MANUAL b/docs/MANUAL
index fb349485..08fdb57a 100644
--- a/docs/MANUAL
+++ b/docs/MANUAL
@@ -3,7 +3,7 @@ LATEST VERSION
You always find news about what's going on as well as the latest versions
from the curl web pages, located at:
- http://curl.haxx.se
+ https://curl.haxx.se
SIMPLE USAGE
@@ -824,7 +824,7 @@ LDAP
Working with LDAP URLs":
http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm
- RFC 2255, "The LDAP URL Format" http://curl.haxx.se/rfc/rfc2255.txt
+ RFC 2255, "The LDAP URL Format" https://curl.haxx.se/rfc/rfc2255.txt
To show you an example, this is how I can get all people from my local LDAP
server that has a certain sub-domain in their email address:
@@ -1011,7 +1011,7 @@ MAILING LISTS
For your convenience, we have several open mailing lists to discuss curl,
its development and things relevant to this. Get all info at
- http://curl.haxx.se/mail/. Some of the lists available are:
+ https://curl.haxx.se/mail/. Some of the lists available are:
curl-users
diff --git a/docs/Makefile.am b/docs/Makefile.am
index e3e27d33..284e5312 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,22 +33,22 @@ SUBDIRS = examples libcurl
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
-EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
- README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
- KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
- $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE \
- SSL-PROBLEMS HTTP2.md ROADMAP.md
+EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
+ README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
+ KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
+ $(PDFPAGES) LICENSE-MIXING README.netware INSTALL.devcpp \
+ MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY RELEASE-PROCEDURE SSL-PROBLEMS \
+ HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md CHECKSRC.md
-MAN2HTML= roffit < $< >$@
+MAN2HTML= roffit $< >$@
SUFFIXES = .1 .html .pdf
html: $(HTMLPAGES)
- cd libcurl; make html
+ cd libcurl && make html
pdf: $(PDFPAGES)
- cd libcurl; make pdf
+ cd libcurl && make pdf
.1.html:
$(MAN2HTML)
diff --git a/docs/RELEASE-PROCEDURE b/docs/RELEASE-PROCEDURE
index fc31274e..479078fa 100644
--- a/docs/RELEASE-PROCEDURE
+++ b/docs/RELEASE-PROCEDURE
@@ -11,8 +11,8 @@ in the source code repo
- make sure all relevant changes are committed on the master branch
- tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the
- tag and we use underscores instead of dots in the version number.
-
+ tag and we use underscores instead of dots in the version number.
+
- run "./maketgz 7.34.0" to build the release tarballs. It is important that
you run this on a machine with the correct set of autotools etc installed
as this is what then will be shipped and used by most users on *nix like
@@ -41,6 +41,11 @@ in the curl-www repo
(the web site then updates its contents automatically)
+on github
+---------
+
+- edit the newly made release tag so that it is listed as the latest release
+
inform
------
@@ -78,12 +83,10 @@ Coming dates
Based on the description above, here are some planned release dates (at the
time of this writing):
-- June 17, 2015 (version 7.43.0)
-- August 12, 2015
-- October 7, 2015
-- December 2, 2015
-- January 27, 2016
-- March 23, 2016
+- March 23, 2016 (version 7.48.0)
- May 18, 2016
- July 13, 2016
- September 7, 2016
+- November 2, 2016
+- December 28, 2016
+- February 22, 2017
diff --git a/docs/RESOURCES b/docs/RESOURCES
index 760e7597..1ad8aac3 100644
--- a/docs/RESOURCES
+++ b/docs/RESOURCES
@@ -36,7 +36,7 @@ This document lists documents and standards used by curl.
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
- Also, read Netscape's specification at
- http://curl.haxx.se/rfc/cookie_spec.html
+ https://curl.haxx.se/rfc/cookie_spec.html
RFC 2183 - The Content-Disposition Header Field
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index eb52d187..d664403c 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -18,31 +18,18 @@ HTTP/2
To decide: if we need to bundle parts of the nghttp2 stuff that probably
won't be shipped by many distros.
-- stream properties API
+HTTP cookies
+------------
- Provide options for setting priorities and dependencies among the streams
- (easy handles). They are mostly information set for the stream and sent to
- the server so we don't have to add much logic for this.
+Two cookie drafts have been adopted by the httpwg in IETF and we should
+support them as the popular browsers will as well:
-- server push
+[Deprecate modification of 'secure' cookies from non-secure
+origins](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-00)
- Not exactly clear exactly how to support this API-wise, but by adding
- handles without asking for a resource it could be a way to be prepared to
- receive pushes in case such are sent. We probably need it to still specify
- a URL with host name, port etc but we probably need a special option to
- tell libcurl it is for server push purposes.
+[Cookie Prefixes](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00)
-- provide option for HTTP/2 "prior knowledge" over clear text
-
- As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
- it speaks HTTP/2.
-
-- provide option to allow curl to default to HTTP/2 only when using HTTPS
-
- We could switch on HTTP/2 by-default for HTTPS quite easily and it
- shouldn't hurt anyone, while HTTP/2 for HTTP by default could introduce
- lots of Upgrade: roundtrips that users won't like. So a separated option
- alternative makes sense.
+[Firefox bug report about secure cookies](https://bugzilla.mozilla.org/show_bug.cgi?id=976073)
SRV records
-----------
@@ -52,7 +39,9 @@ How to find services for specific domains/hosts.
HTTPS to proxy
--------------
-To avoid network traffic to/from the proxy getting snooped on.
+To avoid network traffic to/from the proxy getting snooped on. There's a git
+branch in the public git repository for this that we need to make sure works
+for all TLS backends and then merge!
curl_formadd()
--------------
@@ -61,12 +50,10 @@ 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
-third-party SASL
+Third-party SASL
----------------
-add support for third-party SASL libraries such as Cyrus SASL - may need to
-move existing native and SSPI based authentication into vsasl folder after
-reworking HTTP and SASL code
+Add support for third-party SASL libraries such as Cyrus SASL.
SASL authentication in LDAP
---------------------------
@@ -117,7 +104,7 @@ Improve
2. curl -h output (considered overwhelming to users)
-3. we have > 160 command line options, is there a way to redo things to
+3. we have > 170 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
diff --git a/docs/SECURITY b/docs/SECURITY
index ee844d80..7b245d7b 100644
--- a/docs/SECURITY
+++ b/docs/SECURITY
@@ -14,7 +14,7 @@ Publishing Information
----------------------
All known and public curl or libcurl related vulnerabilities are listed on
-[the curl web site security page](http://curl.haxx.se/docs/security.html).
+[the curl web site security page](https://curl.haxx.se/docs/security.html).
Security vulnerabilities should not be entered in the project's public bug
tracker unless the necessary configuration is in place to limit access to the
diff --git a/docs/SSL-PROBLEMS b/docs/SSL-PROBLEMS
index 36502672..e6398710 100644
--- a/docs/SSL-PROBLEMS
+++ b/docs/SSL-PROBLEMS
@@ -26,7 +26,7 @@ CA bundle missing intermediate certificates
problems if your CA cert does not have the certificates for the
intermediates in the whole trust chain.
-SSL version
+Protocol version
Some broken servers fail to support the protocol negotiation properly that
SSL servers are supposed to handle. This may cause the connection to fail
@@ -36,7 +36,9 @@ SSL version
An additional complication can be that modern SSL libraries sometimes are
built with support for older SSL and TLS versions disabled!
-SSL ciphers
+ All versions of SSL are considered insecure and should be avoided. Use TLS.
+
+Ciphers
Clients give servers a list of ciphers to select from. If the list doesn't
include any ciphers the server wants/can use, the connection handshake
@@ -51,10 +53,14 @@ SSL ciphers
Note that these weak ciphers are identified as flawed. For example, this
includes symmetric ciphers with less than 128 bit keys and RC4.
+ WinSSL in Windows XP is not able to connect to servers that no longer
+ support the legacy handshakes and algorithms used by those versions, so we
+ advice against building curl to use WinSSL on really old Windows versions.
+
References:
https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
-
+
Allow BEAST
BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means
@@ -65,3 +71,17 @@ Allow BEAST
introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
but on the other hand it allows curl to connect to that kind of strange
servers.
+
+Disabling certificate revocation checks
+
+ Some SSL backends may do certificate revocation checks (CRL, OCSP, etc)
+ depending on the OS or build configuration. The --ssl-no-revoke option was
+ introduced in 7.44.0 to disable revocation checking but currently is only
+ supported for WinSSL (the native Windows SSL library), with an exception in
+ the case of Windows' Untrusted Publishers blacklist which it seems can't be
+ bypassed. This option may have broader support to accommodate other SSL
+ backends in the future.
+
+ References:
+
+ https://curl.haxx.se/docs/ssl-compared.html
diff --git a/docs/SSLCERTS b/docs/SSLCERTS
index 89e5bb62..7755609c 100644
--- a/docs/SSLCERTS
+++ b/docs/SSLCERTS
@@ -20,8 +20,8 @@ support.
It is about trust
-----------------
-This system is about trust. In your local CA cert bundle you have certs from
-*trusted* Certificate Authorities that you then can use to verify that the
+This system is about trust. In your local CA certificate store you have certs
+from *trusted* Certificate Authorities that you then can use to verify that the
server certificates you see are valid. They're signed by one of the CAs you
trust.
@@ -35,16 +35,16 @@ Certificate Verification
------------------------
libcurl performs peer SSL certificate verification by default. This is done
-by using CA cert bundle that the SSL library can use to make sure the peer's
-server certificate is valid.
+by using a CA certificate store that the SSL library can use to make sure the
+peer's server certificate is valid.
If you communicate with HTTPS, FTPS or other TLS-using servers using
-certificates that are signed by CAs present in the bundle, you can be sure
+certificates that are signed by CAs present in the store, you can be sure
that the remote server really is the one it claims to be.
If the remote server uses a self-signed certificate, if you don't install a CA
-cert bundle, if the server uses a certificate signed by a CA that isn't
-included in the bundle you use or if the remote host is an impostor
+cert store, if the server uses a certificate signed by a CA that isn't
+included in the store you use or if the remote host is an impostor
impersonating your favorite site, and you want to transfer files from this
server, do one of the following:
@@ -59,12 +59,22 @@ server, do one of the following:
With the curl command line tool: --cacert [file]
- 3. Add the CA cert for your server to the existing default CA cert bundle.
- The default path of the CA bundle used can be changed by running configure
- with the --with-ca-bundle option pointing out the path of your choice.
+ 3. Add the CA cert for your server to the existing default CA certificate
+ store. The default CA certificate store can changed at compile time with the
+ following configure options:
- To do this, you need to get the CA cert for your server in PEM format and
- then append that to your CA cert bundle.
+ --with-ca-bundle=FILE: use the specified file as CA certificate store. CA
+ certificates need to be concatenated in PEM format into this file.
+
+ --with-ca-path=PATH: use the specified path as CA certificate store. CA
+ certificates need to be stored as individual PEM files in this directory.
+ You may need to run c_rehash after adding files there.
+
+ If neither of the two options is specified, configure will try to auto-detect
+ a setting. It's also possible to explicitly not hardcode any default store
+ but rely on the built in default the crypto library may provide instead.
+ You can achieve that by passing both --without-ca-bundle and
+ --without-ca-path to the configure script.
If you use Internet Explorer, this is one way to get extract the CA cert
for a particular server:
@@ -76,7 +86,7 @@ server, do one of the following:
- Convert it from crt to PEM using the openssl tool:
openssl x509 -inform DES -in yourdownloaded.crt \
-out outcert.pem -text
- - Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
+ - Add the 'outcert.pem' to the CA certificate store or use it stand-alone
as described below.
If you use the 'openssl' tool, this is one way to get extract the CA cert
@@ -89,9 +99,9 @@ server, do one of the following:
- If you want to see the data in the certificate, you can do: "openssl
x509 -inform PEM -in certfile -text -out certdata" where certfile is
the cert you extracted from logfile. Look in certdata.
- - If you want to trust the certificate, you can append it to your
- cert bundle or use it stand-alone as described. Just remember that the
- security is no better than the way you obtained the certificate.
+ - If you want to trust the certificate, you can add it to your CA
+ certificate store or use it stand-alone as described. Just remember that
+ the security is no better than the way you obtained the certificate.
4. If you're using the curl command line tool, you can specify your own CA
cert path by setting the environment variable `CURL_CA_BUNDLE` to the path
@@ -109,13 +119,13 @@ server, do one of the following:
5. Get a better/different/newer CA cert bundle! One option is to extract the
one a recent Firefox browser uses by running 'make ca-bundle' in the curl
build tree root, or possibly download a version that was generated this
- way for you: [CA Extract](http://curl.haxx.se/docs/caextract.html)
+ way for you: [CA Extract](https://curl.haxx.se/docs/caextract.html)
Neglecting to use one of the above methods when dealing with a server using a
certificate that isn't signed by one of the certificates in the installed CA
-cert bundle, will cause SSL to report an error ("certificate verify failed")
-during the handshake and SSL will then refuse further communication with that
-server.
+certificate store, will cause SSL to report an error ("certificate verify
+failed") during the handshake and SSL will then refuse further communication
+with that server.
Certificate Verification with NSS
---------------------------------
@@ -123,8 +133,8 @@ Certificate Verification with NSS
If libcurl was built with NSS support, then depending on the OS distribution,
it is probably required to take some additional steps to use the system-wide
CA cert db. RedHat ships with an additional module, libnsspem.so, which
-enables NSS to read the OpenSSL PEM CA bundle. This library is missing in
-OpenSuSE, and without it, NSS can only work with its own internal formats. NSS
+enables NSS to read the OpenSSL PEM CA bundle. On openSUSE you can install
+p11-kit-nss-trust which makes NSS use the system wide CA certificate store. NSS
also has a new [database format](https://wiki.mozilla.org/NSS_Shared_DB).
Starting with version 7.19.7, libcurl automatically adds the 'sql:' prefix to
diff --git a/docs/THANKS b/docs/THANKS
index 89a738dd..e81192cf 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -4,6 +4,8 @@
If you have contributed but are missing here, please let us know!
+"Captain Basil"
+"Spoon Man"
Aaro Koskinen
Aaron Oneal
Aaron Orenstein
@@ -44,17 +46,20 @@ Alexander Krasnostavsky
Alexander Lazic
Alexander Pepper
Alexander Peslyak
+Alexander Traud
Alexander Zhuravlev
Alexey Borzov
Alexey Pesternikov
Alexey Simak
Alexey Zakhlestin
Alexis Carvalho
+Alexis La Goutte
Alfred Gebert
Allen Pulsifer
Alona Rossen
Amol Pattekar
Amr Shahin
+Anatol Belski
Anatoli Tubman
Anders Bakken
Anders Gustafsson
@@ -100,6 +105,7 @@ Anton Bychkov
Anton Kalmykov
Anton Malov
Anton Yabchinskiy
+Antonio Larrosa
Arkadiusz Miskiewicz
Armel Asselin
Arnaud Compan
@@ -131,12 +137,15 @@ Benbuck Nason
Benjamin Gerard
Benjamin Gilbert
Benjamin Johnson
+Benjamin Kircher
Benoit Neil
Benoit Sigoure
Bernard Leak
+Bernard Spil
Bernhard Reutner-Fischer
Bert Huijben
Bertrand Demiddelaer
+Bertrand Simonnet
Bill Doyle
Bill Egert
Bill Hoffman
@@ -152,6 +161,7 @@ Bob Richmond
Bob Schader
Bogdan Nicula
Brad Burdick
+Brad Fitzpatrick
Brad Harder
Brad Hards
Brad King
@@ -169,6 +179,7 @@ Brian Prodoehl
Brian R Duffy
Brian Ulm
Brock Noland
+Bru Rom
Bruce Mitchener
Bruno Thomsen
Bruno de Carvalho
@@ -205,6 +216,7 @@ Christian Krause
Christian Kurz
Christian Robottom Reis
Christian Schmitz
+Christian Stewart
Christian Vogt
Christian Weisgerber
Christophe Demory
@@ -218,6 +230,7 @@ Claes Jakobsson
Clarence Gardner
Clemens Gruber
Clifford Wolf
+Clint Clayton
Cody Jones
Cody Mack
Colby Ranger
@@ -226,6 +239,7 @@ Colin Hogben
Colin Watson
Colm Buckley
Constantine Sapuntzakis
+Cory Benfield
Cory Nelson
Craig A West
Craig Davison
@@ -234,6 +248,7 @@ Cris Bailiff
Cristian Rodríguez
Curt Bogmine
Cyrill Osterwalder
+Cédric Connes
Cédric Deltheil
D. Flinkmann
Da-Yoon Chung
@@ -241,8 +256,10 @@ Dag Ekengren
Dagobert Michelsen
Damian Dixon
Damien Adant
+Damien Vielpeau
Dan Becker
Dan C
+Dan Cristian
Dan Fandrich
Dan Locks
Dan Nelson
@@ -252,9 +269,15 @@ Dan Zitter
Daniel Black
Daniel Cater
Daniel Egger
+Daniel Hwang
Daniel Johnson
+Daniel Kahn Gillmor
+Daniel Lee Hwang
Daniel Melani
Daniel Mentz
+Daniel Schauenberg
+Daniel Seither
+Daniel Shahaf
Daniel Steinberg
Daniel Stenberg
Daniel Theron
@@ -268,7 +291,9 @@ Dave May
Dave Reisner
Dave Thompson
Dave Vasilevsky
+Davey Shafik
David Bau
+David Benjamin
David Binderman
David Blaikie
David Byron
@@ -297,10 +322,12 @@ David Woodhouse
David Wright
David Yan
Dengminwen
+Denis Feklushkin
Dennis Clarke
Derek Higgins
Detlef Schmier
Didier Brisebourg
+Diego Bes
Diego Casorran
Dilyan Palauzov
Dima Barsky
@@ -320,12 +347,14 @@ Dmitry Falko
Dmitry Kurochkin
Dmitry Popov
Dmitry Rechkin
+Dmitry S. Baikov
Dolbneff A.V
Domenico Andreoli
Dominick Meglio
Dominique Leuenberger
Doug Kaufman
Doug Porter
+Douglas Creager
Douglas E. Wegscheid
Douglas Kilpatrick
Douglas R. Horner
@@ -335,6 +364,7 @@ Drake Arconis
Duane Cathey
Duncan Mac-Vicar Prett
Dustin Boswell
+Dusty Mabe
Dylan Ellicott
Dylan Salisbury
Early Ehlinger
@@ -364,12 +394,14 @@ Eric Lubin
Eric Melville
Eric Mertens
Eric Rautman
+Eric Ridge
Eric S. Raymond
Eric Thelin
Eric Vergnaud
Eric Wong
Eric Young
Erick Nuwendam
+Erik Janssen
Erik Johansson
Ernest Beinrohr
Erwan Legrand
@@ -377,6 +409,7 @@ Erwin Authried
Ethan Glasser Camp
Eugene Kotlyarov
Evan Jordan
+Evgeny Grin
Evgeny Turnaev
Eygene Ryabinkin
Fabian Frank
@@ -384,12 +417,15 @@ Fabian Hiernaux
Fabian Keil
Fabrizio Ammollo
Fedor Karpelevitch
+Feist Josselin
Felix Yan
Felix von Leitner
Feng Tu
+Flavio Medeiros
Florian Schoppmann
Florian Weimer
Forrest Cahoon
+Francisco Moraes
Frank Gevaerts
Frank Hempel
Frank Keeney
@@ -437,6 +473,7 @@ Glen A Johnson Jr.
Glen Nakamura
Glen Scott
Glenn Sheridan
+Google Inc.
Gordon Marler
Gorilla Maguila
Grant Erickson
@@ -453,6 +490,7 @@ Guido Berhoerster
Guillaume Arluison
Gunter Knauf
Gustaf Hui
+Gustavo Grieco
Gwenole Beauchesne
Gökhan Şengün
Götz Babin-Ebell
@@ -473,6 +511,7 @@ Heinrich Ko
Heinrich Schaefer
Helwing Lutz
Hendrik Visage
+Henrik Gaßmann
Henrik Storner
Henry Ludemann
Herve Amblard
@@ -497,9 +536,11 @@ Iida Yosiaki
Ilguiz Latypov
Ilja van Sprundel
Immanuel Gregoire
+Inca R
Ingmar Runge
Ingo Ralf Blum
Ingo Wilken
+Irfan Adilovic
Isaac Boukris
Ishan SinghLevett
Ivo Bellin Salarin
@@ -507,7 +548,9 @@ Jack Zhang
Jacky Lam
Jacob Meuser
Jacob Moshenko
+Jactry Zeng
Jad Chamcham
+Jaime Fullaondo
Jakub Zakrzewski
James Bursa
James Cheng
@@ -535,6 +578,7 @@ Jason Liu
Jason McDonald
Jason S. Priebe
Javier Barroso
+Javier G. Sogo
Jay Austin
Jayesh A Shah
Jaz Fresh
@@ -554,6 +598,7 @@ Jeff Lawson
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
+Jeffrey Walton
Jens Rantil
Jeremy Friesner
Jeremy Huddleston
@@ -568,6 +613,7 @@ Jerry Wu
Jes Badwal
Jesper Jensen
Jesse Noller
+Jesse Tan
Jie He
Jim Drash
Jim Freeman
@@ -590,6 +636,7 @@ Johan Nilsson
Johan van Selst
Johannes Bauer
Johannes Ernst
+Johannes Schindelin
John Bradshaw
John Coffey
John Crow
@@ -600,13 +647,16 @@ John Gardiner Myers
John Janssen
John Joseph Bachir
John Kelly
+John Kohl
John Lask
+John Levon
John Lightsey
John Marino
John Marshall
John McGowan
John P. McCaskey
John Suprock
+John Wanghui
John Wilkinson
John-Mark Bell
Johnny Luong
@@ -619,6 +669,7 @@ Jon Torrey
Jon Travis
Jon Turner
Jonas Forsman
+Jonas Minnberg
Jonas Schnelli
Jonatan Lander
Jonatan Vela
@@ -627,6 +678,7 @@ Jonathan Cardoso Machado Machado
Jonathan Hseu
Jonathan Nieder
Jongki Suwandi
+Joonas Kuorilehto
Jose Alf
Jose Kahan
Josef Wolf
@@ -636,6 +688,7 @@ Josue Andrade Gomes
Juan Barreto
Juan F. Codagnone
Juan Ignacio Hervás
+Juan RP
Judson Bishop
Juergen Wilke
Jukka Pihl
@@ -647,6 +700,7 @@ Julien Nabet
Julien Royer
Jun-ichiro itojun Hagino
Jurij Smakov
+Justin Ehlert
Justin Fletcher
Justin Karneges
Justin Maggard
@@ -654,15 +708,18 @@ Jörg Mueller-Tolk
Jörn Hartroth
K. R. Walker
Kai Engert
+Kai Noda
Kai Sommerfeld
Kai-Uwe Rommel
Kalle Vahlman
Kamil Dudka
+Kang Lin
Kang-Jin Lee
Karl Moerder
Karol Pietrzak
Kaspar Brand
Katie Wang
+Kazuho Oku
Kees Cook
Keith MacDonald
Keith McGuigan
@@ -689,6 +746,7 @@ Krishnendu Majumdar
Krister Johansen
Kristian Gunstone
Kristian Köhntopp
+Kurt Fankhauser
Kyle J. McKay
Kyle L. Huff
Kyle Sallee
@@ -705,6 +763,7 @@ Lars Nilsson
Lars Torben Wilson
Lau Hang Kin
Laurent Rabret
+Lauri Kasanen
Legoff Vincent
Lehel Bernadt
Leif W
@@ -720,6 +779,8 @@ Linas Vepstas
Lindley French
Ling Thio
Linus Nielsen Feltzing
+Linus Nordberg
+Lior Kaplan
Lisa Xu
Liviu Chircu
Liza Alenchery
@@ -732,6 +793,8 @@ Lucas Adamski
Lucas Pardue
Ludek Finstrle
Ludovico Cavedon
+Ludwig Nussel
+Lukas Ruzicka
Lukasz Czekierda
Luke Amery
Luke Call
@@ -742,6 +805,8 @@ Maciej Karpiuk
Maciej Puzio
Maciej W. Rozycki
Maks Naumov
+Maksim Kuzevanov
+Maksim Stsepanenka
Mamoru Tasaka
Mandy Wu
Manfred Schwarb
@@ -779,6 +844,7 @@ Markus Elfring
Markus Koetter
Markus Moeller
Markus Oberhumer
+Marquis de Muesli
Martijn Koster
Martin C. Martin
Martin Drasar
@@ -825,7 +891,9 @@ Michael Day
Michael Goffioul
Michael Jahn
Michael Jerris
+Michael Kalinin
Michael Kaufmann
+Michael König
Michael Mealling
Michael Mueller
Michael Osipov
@@ -835,8 +903,10 @@ Michael Stillwell
Michael Wallner
Michal Bonino
Michal Marek
+Michał Fita
Michał Górny
Michał Kowalczyk
+Michał Piechowski
Michel Promonet
Michele Bini
Miguel Angel
@@ -862,12 +932,14 @@ Mohamed Lrhazi
Mohammad AlSaleh
Mohun Biswas
Mostyn Bramley-Moore
+Moti Avrahami
Myk Taylor
Nach M. S.
Nagai H
Nathan Coulter
Nathan O'Sullivan
Nathanael Nerode
+Nathaniel Waisbrot
Naveen Chandran
Naveen Noel
Neil Bowers
@@ -894,15 +966,20 @@ Nis Jorgensen
Nobuhiro Ban
Nodak Sodak
Norbert Frese
+Norbert Kett
Norbert Novotny
+Octavio Schroeder
Ofer
Ola Mork
Olaf Flebbe
Olaf Stüben
+Oleg Pudeyev
Oliver Gondža
+Oliver Graute
Oliver Kuckertz
Oliver Schindler
Olivier Berger
+Orange Tsai
Oren Souroujon
Oren Tirosh
Orgad Shaneh
@@ -944,6 +1021,7 @@ Pawel A. Gajda
Pawel Kierski
Pedro Larroy
Pedro Neves
+Per Malmberg
Peter Bray
Peter Forret
Peter Gal
@@ -991,6 +1069,7 @@ Quanah Gibson-Mount
Quinn Slack
Radu Simionescu
Rafa Muyo
+Rafael Antonio
Rafael Sagula
Rafayel Mkrtchyan
Rafaël Carré
@@ -998,6 +1077,7 @@ Rainer Canavan
Rainer Jung
Rainer Koenig
Rajesh Naganathan
+Rajkumar Mandal
Ralf S. Engelschall
Ralph Beckmann
Ralph Mitchell
@@ -1007,6 +1087,7 @@ Ravi Pratap
Ray Dassen
Ray Pekowski
Ray Satiro
+Razvan Cojocaru
Reinout van Schouwen
Remi Gacogne
Renato Botelho
@@ -1027,10 +1108,12 @@ Richard Bramante
Richard Clayton
Richard Cooper
Richard Gorton
+Richard Hosking
Richard Michael
Richard Moore
Richard Prescott
Richard Silverman
+Richard van den Berg
Rick Jones
Rick Richardson
Rob Crittenden
@@ -1051,9 +1134,11 @@ Robin Cornelius
Robin Johnson
Robin Kay
Robson Braga Araujo
+Rod Widdowson
Rodney Simmons
Rodric Glaser
Rodrigo Silva
+Roger Leigh
Roland Blom
Roland Krikava
Roland Zimmermann
@@ -1078,6 +1163,7 @@ Salvador Dávila
Salvatore Sorrentino
Sam Deane
Sam Hurst
+Sam Roth
Sam Schanken
Sampo Kellomaki
Samuel Díaz García
@@ -1097,23 +1183,27 @@ Scott Cantor
Scott Davis
Scott McCreary
Sean Boudreau
+Sebastian Pohlschmidt
Sebastian Rasmussen
Senthil Raja Velu
Sergei Nikulov
Sergey Tatarincev
Sergio Ballestrero
Seshubabu Pasam
+Seth Mos
Sh Diao
Shao Shuchao
Sharad Gupta
Shard
Shawn Landden
Shawn Poulson
+Shine Fan
Shmulik Regev
Siddhartha Prakash Jain
-Sidney San Martin
+Sidney San Martín
Siegfried Gyuricsko
Simon Dick
+Simon H.
Simon Josefsson
Simon Liu
Song Ma
@@ -1157,16 +1247,21 @@ Sune Ahlgren
Sven Anders
Sven Neuhaus
Sven Wegener
+Svyatoslav Mishyn
Symeon Paraschoudis
Sébastien Willemijns
T. Bharath
T. Yamada
+TJ Saunders
Tae Hyoung Ahn
-Taneli Vahakangas
+Taneli Vähäkangas
Tanguy Fautre
Tatsuhiro Tsujikawa
Temprimus
+Terri Oda
+Theodore Dubois
Thomas Braun
+Thomas Glanzmann
Thomas J. Moore
Thomas Klausner
Thomas L. Shinnick
@@ -1174,6 +1269,7 @@ Thomas Lopatic
Thomas Ruecker
Thomas Schwinge
Thomas Tonino
+Thorsten Schöning
Tiit Pikma
Till Maas
Tim Ansell
@@ -1184,10 +1280,12 @@ Tim Costello
Tim Harder
Tim Heckman
Tim Newsome
-Tim Ruehsen
+Tim Rühsen
Tim Sneddon
+Tim Stack
Tim Starling
Timo Sirainen
+Timotej Lazar
Tinus van den Berg
Tobias Markus
Tobias Rundström
@@ -1195,7 +1293,6 @@ Tobias Stoeckmann
Toby Peterson
Todd A Ouska
Todd Kulesza
-Todd Ouska
Todd Vierling
Tom Benoist
Tom Donovan
@@ -1209,6 +1306,7 @@ Tom Sparrow
Tom Wright
Tom Zerucha
Tomas Hoger
+Tomas Jakobsson
Tomas Mlcoch
Tomas Pospisek
Tomas Szepe
@@ -1225,6 +1323,7 @@ Torsten Foertsch
Toshio Kuratomi
Toshiyuki Maezawa
Traian Nicolescu
+Travis Burtrum
Troels Walsted Hansen
Troy Engel
Tupone Alfredo
@@ -1255,9 +1354,11 @@ Vojtech Janota
Vojtech Minarik
Vojtěch Král
Vsevolod Novikov
+W. Mark Kubacki
Waldek Kozba
Walter J. Mack
Ward Willats
+Warp Kawada
Warren Menzer
Wayne Haigh
Werner Koch
@@ -1272,6 +1373,7 @@ Wojciech Zwiefka
Wouter Van Rooy
Wu Yongzheng
Xavier Bouchoux
+Xiangbin Li
Yaakov Selkowitz
Yamada Yasuharu
Yang Tse
@@ -1291,7 +1393,18 @@ Zdenek Pavlas
Zekun Ni
Zmey Petroff
Zvi Har'El
+asavah on github
+baumanj on github
+bsammon on github
+dkjjr89 on github
+eXeC64 on github
+jveazey on github
+kreshano on github
+marc-groundctl on github
+neex on github
nk
+silveja1 on github
swalkaus at yahoo.com
tommink[at]post.pl
+Štefan Kremeň
Никита Дорохин
diff --git a/docs/THANKS-filter b/docs/THANKS-filter
index 39a8a4c4..defd6051 100644
--- a/docs/THANKS-filter
+++ b/docs/THANKS-filter
@@ -48,5 +48,23 @@ 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/Linus Nielsen/Linus Nielsen Feltzing/
+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/
diff --git a/docs/TODO b/docs/TODO
index 65bf2ff7..f3b06000 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -25,11 +25,21 @@
1.7 Detect when called from within callbacks
1.8 Allow SSL (HTTPS) to proxy
1.9 Cache negative name resolves
+ 1.10 Support IDNA2008
+ 1.11 minimize dependencies with dynamicly loaded modules
+ 1.12 have form functions use CURL handle argument
+ 1.13 Add CURLOPT_MAIL_CLIENT option
+ 1.14 Typesafe curl_easy_setopt()
+ 1.15 TCP Fast Open
+ 1.16 Try to URL encode given URL
+ 1.17 Add support for IRIs
2. libcurl - multi interface
2.1 More non-blocking
- 2.2 Fix HTTP Pipelining for PUT
- 2.3 Better support for same name resolves
+ 2.2 Better support for same name resolves
+ 2.3 Non-blocking curl_multi_remove_handle()
+ 2.4 Split connect and authentication process
+ 2.5 Edge-triggered sockets should work
3. Documentation
3.1 Update date and version in man pages
@@ -50,6 +60,7 @@
5.4 SPDY
5.5 auth= in URLs
5.6 Refuse "downgrade" redirects
+ 5.7 More compressions
6. TELNET
6.1 ditch stdin
@@ -60,22 +71,23 @@
7. SMTP
7.1 Pipelining
7.2 Enhanced capability support
-
+
8. POP3
8.1 Pipelining
8.2 Enhanced capability support
-
+
9. IMAP
9.1 Enhanced capability support
-
+
10. LDAP
10.1 SASL based authentication mechanisms
-
+
11. SMB
11.1 File listing support
11.2 Honor file timestamps
11.3 Use NTLMv2
-
+ 11.4 Create remote directories
+
12. New protocols
12.1 RSYNC
@@ -101,8 +113,9 @@
16. SASL
16.1 Other authentication mechanisms
16.2 Add QOP support to GSSAPI authentication
-
- 17. Client
+ 16.3 Support binary messages (i.e.: non-base64)
+
+ 17. Command line tool
17.1 sync
17.2 glob posts
17.3 prevent file overwriting
@@ -112,6 +125,11 @@
17.7 warning when sending binary output to terminal
17.8 offer color-coded HTTP header output
17.9 Choose the name of file in braces for complex URLs
+ 17.10 improve how curl works in a windows console window
+ 17.11 -w output to stderr
+ 17.12 keep running, read instructions from pipe/socket
+ 17.13 support metalink in http headers
+ 17.14 --fail without --location should treat 3xx as a failure
18. Build
18.1 roffit
@@ -122,6 +140,7 @@
19.3 more protocols supported
19.4 more platforms supported
19.5 Add support for concurrent connections
+ 19.6 Use the RFC6265 test suite
20. Next SONAME bump
20.1 http-style HEAD output for FTP
@@ -137,8 +156,6 @@
21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
21.7 remove progress meter from libcurl
21.8 remove 'curl_httppost' from public
- 21.9 have form functions use CURL handle argument
- 21.10 Add CURLOPT_MAIL_CLIENT option
==============================================================================
@@ -163,7 +180,7 @@
signal handler back into the library with a sigsetjmp, which effectively
causes libcurl to continue running within the signal handler. This is
non-portable and could cause problems on some platforms. A discussion on the
- problem is available at http://curl.haxx.se/mail/lib-2008-09/0197.html
+ problem is available at https://curl.haxx.se/mail/lib-2008-09/0197.html
Also, alarm() provides timeout resolution only to the nearest second. alarm
ought to be replaced by setitimer on systems that support it.
@@ -218,6 +235,82 @@
A name resolve that has failed is likely to fail when made again within a
short period of time. Currently we only cache positive responses.
+1.10 Support IDNA2008
+
+ International Domain Names are supported in libcurl since years back, powered
+ by libidn. libidn implements IDNA2003 which has been superseded by IDNA2008.
+ libidn2 is an existing library offering support for IDNA2008.
+
+1.11 minimize dependencies with dynamicly loaded modules
+
+ We can create a system with loadable modules/plug-ins, where these modules
+ would be the ones that link to 3rd party libs. That would allow us to avoid
+ having to load ALL dependencies since only the necessary ones for this
+ app/invoke/used protocols would be necessary to load. See
+ https://github.com/curl/curl/issues/349
+
+1.12 have form functions use CURL handle argument
+
+ curl_formadd() and curl_formget() both currently have no CURL handle
+ argument, but both can use a callback that is set in the easy handle, and
+ thus curl_formget() with callback cannot function without first having
+ curl_easy_perform() (or similar) called - which is hard to grasp and a design
+ mistake.
+
+ The curl_formadd() design can probably also be reconsidered to make it easier
+ to use and less error-prone. Probably easiest by splitting it into several
+ function calls.
+
+1.13 Add CURLOPT_MAIL_CLIENT option
+
+ Rather than use the URL to specify the mail client string to present in the
+ HELO and EHLO commands, libcurl should support a new CURLOPT specifically for
+ specifying this data as the URL is non-standard and to be honest a bit of a
+ hack ;-)
+
+ Please see the following thread for more information:
+ https://curl.haxx.se/mail/lib-2012-05/0178.html
+
+1.14 Typesafe curl_easy_setopt()
+
+ One of the most common problems in libcurl using applications is the lack of
+ type checks for curl_easy_setopt() which happens because it accepts varargs
+ and thus can take any type.
+
+ One possible solution to this is to introduce a few different versions of the
+ setopt version for the different kinds of data you can set.
+
+ curl_easy_set_num() - sets a long value
+
+ curl_easy_set_large() - sets a curl_off_t value
+
+ curl_easy_set_ptr() - sets a pointer
+
+ curl_easy_set_cb() - sets a callback PLUS its callback data
+
+1.15 TCP Fast Open
+
+ RFC 7413 defines how to include data already in the TCP SYN handshake to
+ reduce latency.
+
+1.16 Try to URL encode given URL
+
+ Given a URL that for example contains spaces, libcurl could have an option
+ that would try somewhat harder than it does now and convert spaces to %20 and
+ perhaps URL encoded byte values over 128 etc (basically do what the redirect
+ following code already does).
+
+ https://github.com/curl/curl/issues/514
+
+1.17 Add support for IRIs
+
+ IRIs (RFC 3987) allow localized, non-ascii, names in the URL. To properly
+ support this, curl/libcurl would need to translate/encode the given input
+ from the input string encoding into percent encoded output "over the wire".
+
+ To make that work smoothly for curl users even on Windows, curl would
+ probably need to be able to convert from several input encodings.
+
2. libcurl - multi interface
@@ -235,13 +328,7 @@
- The "DONE" operation (post transfer protocol-specific actions) for the
protocols SFTP, SMTP, FTP. Fixing Curl_done() for this is a worthy task.
-2.2 Fix HTTP Pipelining for PUT
-
- HTTP Pipelining can be a way to greatly enhance performance for multiple
- serial requests and currently libcurl only supports that for HEAD and GET
- requests but it should also be possible for PUT.
-
-2.3 Better support for same name resolves
+2.2 Better support for same name resolves
If a name resolve has been initiated for name NN and a second easy handle
wants to resolve that name as well, make it wait for the first resolve to end
@@ -249,6 +336,26 @@
especially needed when adding many simultaneous handles using the same host
name when the DNS resolver can get flooded.
+2.3 Non-blocking curl_multi_remove_handle()
+
+ The multi interface has a few API calls that assume a blocking behavior, like
+ add_handle() and remove_handle() which limits what we can do internally. The
+ multi API need to be moved even more into a single function that "drives"
+ everything in a non-blocking manner and signals when something is done. A
+ remove or add would then only ask for the action to get started and then
+ multi_perform() etc still be called until the add/remove is completed.
+
+2.4 Split connect and authentication process
+
+ The multi interface treats the authentication process as part of the connect
+ phase. As such any failures during authentication won't trigger the relevant
+ QUIT or LOGOFF for protocols such as IMAP, POP3 and SMTP.
+
+2.5 Edge-triggered sockets should work
+
+ The multi_socket API should work with edge-triggered socket events. One of
+ the internal actions that need to be improved for this to work perfectly is
+ the 'maxloops' handling in transfer.c:readwrite_data().
3. Documentation
@@ -272,7 +379,7 @@
When trying to connect passively to a server which only supports active
connections, libcurl returns CURLE_FTP_WEIRD_PASV_REPLY and closes the
connection. There could be a way to fallback to an active connection (and
- vice versa). http://curl.haxx.se/bug/feature.cgi?id=1754793
+ vice versa). https://curl.haxx.se/bug/feature.cgi?id=1754793
4.3 Earlier bad letter detection
@@ -309,13 +416,13 @@ This is not detailed in any FTP specification.
5.1 Better persistency for HTTP 1.0
"Better" support for persistent connections over HTTP 1.0
- http://curl.haxx.se/bug/feature.cgi?id=1089001
+ https://curl.haxx.se/bug/feature.cgi?id=1089001
5.2 support FF3 sqlite cookie files
Firefox 3 is changing from its former format to a a sqlite database instead.
We should consider how (lib)curl can/should support this.
- http://curl.haxx.se/bug/feature.cgi?id=1871388
+ https://curl.haxx.se/bug/feature.cgi?id=1871388
5.3 Rearrange request header order
@@ -345,17 +452,25 @@ This is not detailed in any FTP specification.
For example:
http://test:pass;auth=NTLM@example.com would be equivalent to specifying --user
- test:pass;auth=NTLM or --user test:pass --ntlm from the command line.
+ test:pass;auth=NTLM or --user test:pass --ntlm from the command line.
Additionally this should be implemented for proxy base URLs as well.
5.6 Refuse "downgrade" redirects
- See https://github.com/bagder/curl/issues/226
+ See https://github.com/curl/curl/issues/226
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 More compressions
+
+ Compression algorithms that perform better than gzip are being considered for
+ use and inclusion in existing browsers. For example 'brotli'. If servers
+ follow along it is a good reason for us to also allow users to take advantage
+ of this. The algorithm: https://github.com/google/brotli The Firefox bug:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=366559
+
6. TELNET
@@ -435,6 +550,11 @@ The timestamp of the transferred file should reflect that of the original file.
Currently the SMB authentication uses NTLMv1.
+11.4 Create remote directories
+
+Support for creating remote directories when uploading a file to a directory
+that doesn't exist on the server, just like --ftp-create-dirs.
+
12. New protocols
12.1 RSYNC
@@ -447,7 +567,7 @@ Currently the SMB authentication uses NTLMv1.
13.1 Disable specific versions
Provide an option that allows for disabling specific SSL versions, such as
- SSLv2 http://curl.haxx.se/bug/feature.cgi?id=1767276
+ SSLv2 https://curl.haxx.se/bug/feature.cgi?id=1767276
13.2 Provide mutex locking API
@@ -458,7 +578,7 @@ Currently the SMB authentication uses NTLMv1.
13.3 Evaluate SSL patches
Evaluate/apply Gertjan van Wingerde's SSL patches:
- http://curl.haxx.se/mail/lib-2004-03/0087.html
+ https://curl.haxx.se/mail/lib-2004-03/0087.html
13.4 Cache OpenSSL contexts
@@ -496,9 +616,9 @@ Currently the SMB authentication uses NTLMv1.
https://www.rfc-editor.org/rfc/rfc6698.txt
An initial patch was posted by Suresh Krishnaswamy on March 7th 2013
- (http://curl.haxx.se/mail/lib-2013-03/0075.html) but it was a too simple
+ (https://curl.haxx.se/mail/lib-2013-03/0075.html) but it was a too simple
approach. See Daniel's comments:
- http://curl.haxx.se/mail/lib-2013-03/0103.html . libunbound may be the
+ https://curl.haxx.se/mail/lib-2013-03/0103.html . libunbound may be the
correct library to base this development on.
14. GnuTLS
@@ -553,7 +673,7 @@ Currently the SMB authentication uses NTLMv1.
Add support for other authentication mechanisms such as OLP,
GSS-SPNEGO and others.
-
+
16.2 Add QOP support to GSSAPI authentication
Currently the GSSAPI authentication only supports the default QOP of auth
@@ -561,7 +681,11 @@ Currently the SMB authentication uses NTLMv1.
with integrity protection) and auth-conf (Authentication with integrity and
privacy protection).
-17. Client
+16.3 Support binary messages (i.e.: non-base64)
+
+ Mandatory to support LDAP SASL authentication.
+
+17. Command line tool
17.1 sync
@@ -590,7 +714,7 @@ Currently the SMB authentication uses NTLMv1.
The client could be told to use maximum N simultaneous parallel transfers and
then just make sure that happens. It should of course not make more than one
connection to the same remote host. This would require the client to use the
- multi interface. http://curl.haxx.se/bug/feature.cgi?id=1558595
+ multi interface. https://curl.haxx.se/bug/feature.cgi?id=1558595
17.5 provide formpost headers
@@ -608,32 +732,78 @@ Currently the SMB authentication uses NTLMv1.
17.6 warning when setting an option
- Display a warning when libcurl returns an error when setting an option.
- This can be useful to tell when support for a particular feature hasn't been
- compiled into the library.
+ Display a warning when libcurl returns an error when setting an option.
+ This can be useful to tell when support for a particular feature hasn't been
+ compiled into the library.
17.7 warning when sending binary output to terminal
- Provide a way that prompts the user for confirmation before binary data is
- sent to the terminal, much in the style 'less' does it.
+ Provide a way that prompts the user for confirmation before binary data is
+ sent to the terminal, much in the style 'less' does it.
17.8 offer color-coded HTTP header output
- By offering different color output on the header name and the header
- contents, they could be made more readable and thus help users working on
- HTTP services.
+ By offering different color output on the header name and the header
+ contents, they could be made more readable and thus help users working on
+ HTTP services.
17.9 Choose the name of file in braces for complex URLs
- When using braces to download a list of URLs and you use complicated names
- in the list of alternatives, it could be handy to allow curl to use other
- names when saving.
+ When using braces to download a list of URLs and you use complicated names
+ in the list of alternatives, it could be handy to allow curl to use other
+ names when saving.
+
+ Consider a way to offer that. Possibly like
+ {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the
+ colon is the output name.
+
+ See https://github.com/curl/curl/issues/221
+
+17.10 improve how curl works in a windows console window
+
+ If you pull the scrollbar when transferring with curl in a Windows console
+ window, the transfer is interrupted and can get disconnected. This can
+ probably be improved. See https://github.com/curl/curl/issues/322
+
+17.11 -w output to stderr
+
+ -w is quite useful, but not to those of us who use curl without -o or -O
+ (such as for scripting through a higher level language). It would be nice to
+ have an option that is exactly like -w but sends it to stderr
+ instead. Proposed name: --write-stderr. See
+ https://github.com/curl/curl/issues/613
+
+17.12 keep running, read instructions from pipe/socket
+
+ Provide an option that makes curl not exit after the last URL (or even work
+ without a given URL), and then make it read instructions passed on a pipe or
+ over a socket to make further instructions so that a second subsequent curl
+ invoke can talk to the still running instance and ask for transfers to get
+ done, and thus maintain its connection pool, DNS cache and more.
+
+17.13 support metalink in http headers
+
+ Curl has support for downloading a metalink xml file, processing it, and then
+ downloading the target of the metalink. This is done via the --metalink option.
+ It would be nice if metalink also supported downloading via metalink
+ information that is stored in HTTP headers (RFC 6249). Theoretically this could
+ also be supported with the --metalink option.
+
+ See https://tools.ietf.org/html/rfc6249
- Consider a way to offer that. Possibly like
- {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the
- colon is the output name.
+ See also https://lists.gnu.org/archive/html/bug-wget/2015-06/msg00034.html for
+ an implematation of this in wget.
- See https://github.com/bagder/curl/issues/221
+17.14 --fail without --location should treat 3xx as a failure
+
+ To allow a command line like this to detect a redirect and consider it a
+ failure:
+
+ curl -v --fail -O https://example.com/curl-7.48.0.tar.gz
+
+ ... --fail must treat 3xx responses as failures too. The least problematic
+ way to implement this is probably to add that new logic in the command line
+ tool only and not in the underlying CURLOPT_FAILONERROR logic.
18. Build
@@ -680,6 +850,16 @@ Currently the SMB authentication uses NTLMv1.
and thus the wait for connections loop is never entered to receive the second
connection.
+19.6 Use the RFC6265 test suite
+
+ A test suite made for HTTP cookies (RFC 6265) by Adam Barth is available at
+ https://github.com/abarth/http-state/tree/master/tests
+
+ It'd be really awesome if someone would write a script/setup that would run
+ curl with that test suite and detect deviances. Ideally, that would even be
+ incorporated into our regular test suite.
+
+
20. Next SONAME bump
20.1 http-style HEAD output for FTP
@@ -784,22 +964,3 @@ Currently the SMB authentication uses NTLMv1.
Changing them to return a private handle will benefit the implementation and
allow us much greater freedoms while still maintaining a solid API and ABI.
-
-21.9 have form functions use CURL handle argument
-
- curl_formadd() and curl_formget() both currently have no CURL handle
- argument, but both can use a callback that is set in the easy handle, and
- thus curl_formget() with callback cannot function without first having
- curl_easy_perform() (or similar) called - which is hard to grasp and a design
- mistake.
-
-21.10 Add CURLOPT_MAIL_CLIENT option
-
- Rather than use the URL to specify the mail client string to present in the
- HELO and EHLO commands, libcurl should support a new CURLOPT specifically for
- specifying this data as the URL is non-standard and to be honest a bit of a
- hack ;-)
-
- Please see the following thread for more information:
- http://curl.haxx.se/mail/lib-2012-05/0178.html
-
diff --git a/docs/TheArtOfHttpScripting b/docs/TheArtOfHttpScripting
index 76faee4a..047db809 100644
--- a/docs/TheArtOfHttpScripting
+++ b/docs/TheArtOfHttpScripting
@@ -136,7 +136,7 @@ The Art Of Scripting HTTP Requests Using Curl
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you've seen URLs like
- http://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
+ https://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
canonical spec. And yeah, the formal name is not URL, it is URI.
2.2 Host
@@ -203,7 +203,7 @@ The Art Of Scripting HTTP Requests Using Curl
issues a GET request to the server and receives the document it asked for.
If you issue the command line
- curl http://curl.haxx.se
+ curl https://curl.haxx.se
you get a web page returned in your terminal window. The entire HTML document
that that URL holds.
@@ -628,7 +628,7 @@ The Art Of Scripting HTTP Requests Using Curl
More about server certificate verification and ca cert bundles can be read
in the SSLCERTS document, available online here:
- http://curl.haxx.se/docs/sslcerts.html
+ https://curl.haxx.se/docs/sslcerts.html
At times you may end up with your own CA cert store and then you can tell
curl to use that to verify the server's certificate:
@@ -755,4 +755,4 @@ The Art Of Scripting HTTP Requests Using Curl
14.2 Sites
- http://curl.haxx.se is the home of the cURL project
+ https://curl.haxx.se is the home of the cURL project
diff --git a/docs/curl-config.1 b/docs/curl-config.1
index 14a9d2ba..4c1e323c 100644
--- a/docs/curl-config.1
+++ b/docs/curl-config.1
@@ -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/docs/curl.1 b/docs/curl.1
index 11b95d4e..f2d48f17 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -51,16 +51,16 @@ braces as in:
or you can get sequences of alphanumeric series by using [] as in:
- ftp://ftp.numericals.com/file[1-100].txt
+ ftp://ftp.example.com/file[1-100].txt
- ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)
+ ftp://ftp.example.com/file[001-100].txt (with leading zeros)
- ftp://ftp.letters.com/file[a-z].txt
+ ftp://ftp.example.com/file[a-z].txt
Nested sequences are not supported, but you can use several ones next to each
other:
- http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
+ http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
You can specify any amount of URLs on the command line. They will be fetched
in a sequential manner in the specified order.
@@ -68,9 +68,9 @@ in a sequential manner in the specified order.
You can specify a step counter for the ranges to get every Nth number or
letter:
- http://www.numericals.com/file[1-100:10].txt
+ http://example.com/file[1-100:10].txt
- http://www.letters.com/file[a-z:2].txt
+ http://example.com/file[a-z:2].txt
When using [] or {} sequences when invoked from a command line prompt, you
probably have to put the full URL within double quotes to avoid the shell from
@@ -150,6 +150,14 @@ version. (Added in 7.33.0)
.IP "--http2"
(HTTP) Tells curl to issue its requests using HTTP 2. This requires that the
underlying libcurl was built to support it. (Added in 7.33.0)
+.IP "--http2-prior-knowledge"
+(HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without
+HTTP/1.1 Upgrade. It requires prior knowledge that the server supports HTTP/2
+straight away. HTTPS requests will still do HTTP/2 the standard way with
+negotiated protocol version in the TLS handshake.
+
+HTTP/2 support in general also requires that the underlying libcurl was built
+to support it. (Added in 7.49.0)
.IP "--no-npn"
Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
with an SSL library that supports NPN. NPN is used by a libcurl that supports
@@ -171,10 +179,11 @@ a level of control).
.IP "-2, --sslv2"
(SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL
server. Sometimes curl is built without SSLv2 support. SSLv2 is widely
-considered insecure.
+considered insecure (see RFC 6176).
.IP "-3, --sslv3"
(SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL
-server. Sometimes curl is built without SSLv3 support.
+server. Sometimes curl is built without SSLv3 support. SSLv3 is widely
+considered insecure (see RFC 7568).
.IP "-4, --ipv4"
This option tells curl to resolve names to IPv4 addresses only, and not for
example try IPv6.
@@ -212,16 +221,25 @@ be in the format "NAME1=VALUE1; NAME2=VALUE2".
If no '=' symbol is used in the line, it is treated as a filename to use to
read previously stored cookie lines from, which should be used in this session
-if they match. Using this method also activates the "cookie parser" which will
+if they match. Using this method also activates the cookie engine which will
make curl record incoming cookies too, which may be handy if you're using this
in combination with the \fI-L, --location\fP option. The file format of the
-file to read cookies from should be plain HTTP headers or the Netscape/Mozilla
-cookie file format.
+file to read cookies from should be plain HTTP headers (Set-Cookie style) or
+the Netscape/Mozilla cookie file format.
The file specified with \fI-b, --cookie\fP is only used as input. No cookies
will be written to the file. To store cookies, use the \fI-c, --cookie-jar\fP
option.
+Exercise caution if you are using this option and multiple transfers may occur.
+If you use the NAME1=VALUE1; format, or in a file use the Set-Cookie format and
+don't specify a domain, then the cookie is sent for any domain (even after
+redirects are followed) and cannot be modified by a server-set cookie. If the
+cookie engine is enabled and a server sets a cookie of the same name then both
+will be sent on a future transfer to that server, likely not what you intended.
+To address these issues set a domain in Set-Cookie (doing that will include
+sub-domains) or use the Netscape format.
+
If this option is used several times, the last one will be used.
.IP "-B, --use-ascii"
(FTP/LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using
@@ -253,6 +271,9 @@ won't fail or even report an error clearly. Using -v will get a warning
displayed, but that is the only visible feedback you get about this possibly
lethal situation.
+Since 7.43.0 cookies that were imported in the Set-Cookie format without a
+domain name are not exported by this option.
+
If this option is used several times, the last specified file name will be
used.
.IP "-C, --continue-at <offset>"
@@ -417,6 +438,9 @@ the traditional PORT command.
\fB--eprt\fP can be used to explicitly enable EPRT again and \fB--no-eprt\fP
is an alias for \fB--disable-eprt\fP.
+If the server is an IPv6 host, this option will have no effect as EPRT is
+necessary then.
+
Disabling EPRT only changes the active behavior. If you want to switch to
passive mode you need to not use \fI-P, --ftp-port\fP or force it with
\fI--ftp-pasv\fP.
@@ -428,6 +452,9 @@ but with this option, it will not try using EPSV.
\fB--epsv\fP can be used to explicitly enable EPSV again and \fB--no-epsv\fP
is an alias for \fB--disable-epsv\fP.
+If the server is an IPv6 host, this option will have no effect as EPSV is
+necessary then.
+
Disabling EPSV only changes the passive behavior. If you want to switch to
active mode you need to use \fI-P, --ftp-port\fP.
.IP "--dns-interface <interface>"
@@ -475,10 +502,10 @@ If this option is used several times, the last one will be used.
(SSL) Tells curl to use the specified client certificate file when getting a
file with HTTPS, FTPS or another SSL-based protocol. The certificate must be
in PKCS#12 format if using Secure Transport, or PEM format if using any other
-engine. If the optional password isn't specified, it will be queried
-for on the terminal. Note that this option assumes a \&"certificate" file that
-is the private key and the private certificate concatenated! See \fI--cert\fP
-and \fI--key\fP to specify them independently.
+engine. If the optional password isn't specified, it will be queried for on
+the terminal. Note that this option assumes a \&"certificate" file that is the
+private key and the client certificate concatenated! See \fI--cert\fP and
+\fI--key\fP to specify them independently.
If curl is built against the NSS SSL library then this option can tell
curl the nickname of the certificate to use within the NSS database defined
@@ -510,6 +537,13 @@ after having run curl.
(SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket
is used to seed the random engine for SSL connections. See also the
\fI--random-file\fP option.
+.IP "--expect100-timeout <seconds>"
+(HTTP) Maximum time in seconds that you allow curl to wait for a 100-continue
+response when curl emits an Expects: 100-continue header in its request. By
+default curl will wait one second. This option accepts decimal values! When
+curl stops waiting, it will continue as if the response has been received.
+
+(Added in 7.47.0)
.IP "--cert-type <type>"
(SSL) Tells curl what certificate type the provided certificate is in. PEM,
DER and ENG are recognized types. If not specified, PEM is assumed.
@@ -544,17 +578,27 @@ OpenSSL-powered curl to make SSL-connections much more efficiently than using
If this option is set, the default capath value will be ignored, and if it is
used several times, the last one will be used.
-.IP "--pinnedpubkey <pinned public key>"
-(SSL) Tells curl to use the specified public key file to verify the peer. The
-file must contain a single public key in PEM or DER format.
+.IP "--pinnedpubkey <pinned public key (hashes)>"
+(SSL) Tells curl to use the specified public key file (or hashes) to verify the
+peer. This can be a path to a file which contains a single public key in PEM or
+DER format, or any number of base64 encoded sha256 hashes preceded by
+\'sha256//\' and separated by \';\'
When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.
-Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and
-wolfSSL/CyaSSL. Other SSL backends not supported.
+PEM/DER support:
+ 7.39.0: OpenSSL, GnuTLS and GSKit
+ 7.43.0: NSS and wolfSSL/CyaSSL
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+sha256 support:
+ 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+Other SSL backends not supported.
If this option is used several times, the last one will be used.
.IP "--cert-status"
@@ -597,36 +641,37 @@ the symbol <. The difference between @ and < is then that @ makes a file get
attached in the post as a file upload, while the < makes a text field and just
get the contents for that text field from a file.
-Example, to send your password file to the server, where
-\&'password' is the name of the form-field to which /etc/passwd will be the
-input:
+Example: to send an image to a server, where \&'profile' is the name of the
+form-field to which portrait.jpg will be the input:
-\fBcurl\fP -F password=@/etc/passwd www.mypasswords.com
+\fBcurl\fP -F profile=@portrait.jpg https://example.com/upload.cgi
To read content from stdin instead of a file, use - as the filename. This goes
-for both @ and < constructs.
+for both @ and < constructs. Unfortunately it does not support reading the
+file from a named pipe or similar, as it needs the full size before the
+transfer starts.
You can also tell curl what Content-Type to use by using 'type=', in a manner
similar to:
-\fBcurl\fP -F "web=@index.html;type=text/html" url.com
+\fBcurl\fP -F "web=@index.html;type=text/html" example.com
or
-\fBcurl\fP -F "name=daniel;type=text/foo" url.com
+\fBcurl\fP -F "name=daniel;type=text/foo" example.com
You can also explicitly change the name field of a file upload part by setting
filename=, like this:
-\fBcurl\fP -F "file=@localfile;filename=nameinpost" url.com
+\fBcurl\fP -F "file=@localfile;filename=nameinpost" example.com
If filename/path contains ',' or ';', it must be quoted by double-quotes like:
-\fBcurl\fP -F "file=@\\"localfile\\";filename=\\"nameinpost\\"" url.com
+\fBcurl\fP -F "file=@\\"localfile\\";filename=\\"nameinpost\\"" example.com
or
-\fBcurl\fP -F 'file=@"localfile";filename="nameinpost"' url.com
+\fBcurl\fP -F 'file=@"localfile";filename="nameinpost"' example.com
Note that if a filename/path is quoted by double-quotes, any double-quote
or backslash within the filename must be escaped by backslash.
@@ -710,6 +755,10 @@ waits for a reply from the server.
authentication, but non-encrypted data transfers for efficiency. Fails the
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
that can still be used but will be removed in a future version.
+.IP "--ftp-ssl"
+(FTP) This deprecated option is now known as \fI--ssl\fP.
+.IP "--ftp-ssl-reqd"
+(FTP) This deprecated option is now known as \fI--ssl-reqd\fP.
.IP "--form-string <name=string>"
(HTTP) Similar to \fI--form\fP except that the value string for the named
parameter is used literally. Leading \&'@' and \&'<' characters, and the
@@ -757,7 +806,7 @@ intended for a proxy.
Example:
-\&# curl -H "X-First-Name: Joe" http://192.168.0.1/
+\&# curl -H "X-First-Name: Joe" http://example.com/
\fBWARNING\fP: headers set with this option will be set in all requests - even
after redirects are followed, like when told with \fB-L, --location\fP. This
@@ -771,10 +820,12 @@ This option can be used multiple times to add/replace/remove multiple headers.
be the 128 bit MD5 checksum of the remote host's public key, curl will refuse
the connection with the host unless the md5sums match. (Added in 7.17.1)
.IP "--ignore-content-length"
-(HTTP)
-Ignore the Content-Length header. This is particularly useful for servers
-running Apache 1.x, which will report incorrect Content-Length for files
-larger than 2 gigabytes.
+For HTTP, Ignore the Content-Length header. This is particularly useful for
+servers running Apache 1.x, which will report incorrect Content-Length for
+files larger than 2 gigabytes.
+
+For FTP (since 7.46.0), skip the RETR command to figure out the size before
+downloading a file.
.IP "-i, --include"
(HTTP) Include the HTTP-header in the output. The HTTP-header includes things
like server-name, date of the document, HTTP-version and more...
@@ -788,7 +839,7 @@ time only.
Perform an operation using a specified interface. You can enter interface
name, IP address or host name. An example could look like:
- curl --interface eth0:1 http://www.netscape.com/
+ curl --interface eth0:1 https://www.example.com/
If this option is used several times, the last one will be used.
.IP "-j, --junk-session-cookies"
@@ -801,8 +852,17 @@ cookies when they're closed down.
server-specified Content-Disposition filename instead of extracting a filename
from the URL.
+If the server specifies a file name and a file with that name already exists
+in the current working directory it will not be overwritten and an error will
+occur. If the server doesn't specify a file name then this option has no
+effect.
+
There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.
+
+\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
+rogue server could send you the name of a DLL or other file that could possibly
+be loaded automatically by Windows or some third party software.
.IP "-k, --insecure"
(SSL) This option explicitly allows curl to perform "insecure" SSL connections
and transfers. All SSL connections are attempted to be made secure by using
@@ -810,7 +870,7 @@ the CA certificate bundle installed by default. This makes all connections
considered "insecure" fail unless \fI-k, --insecure\fP is used.
See this online resource for further details:
-\fBhttp://curl.haxx.se/docs/sslcerts.html\fP
+\fBhttps://curl.haxx.se/docs/sslcerts.html\fP
.IP "-K, --config <config file>"
Specify which config file to read curl arguments from. The config file is a
text file in which command line arguments can be written which then will be
@@ -837,7 +897,7 @@ Note that to be able to specify a URL in the config file, you need to specify
it using the \fI--url\fP option, and not by simply writing the URL on its own
line. So, it could look similar to this:
-url = "http://curl.haxx.se/docs/"
+url = "https://curl.haxx.se/docs/"
When curl is invoked, it always (unless \fI-q\fP is used) checks for a default
config file and uses it if found. The default config file is checked for in
@@ -856,14 +916,14 @@ simply try to load .curlrc from the determined home dir.
.nf
# --- Example file ---
# this is a comment
-url = "curl.haxx.se"
+url = "example.com"
output = "curlhere.html"
user-agent = "superagent/1.0"
# and fetch another URL too
-url = "curl.haxx.se/docs/manpage.html"
+url = "example.com/docs/manpage.html"
-O
-referer = "http://nowhereatall.com/"
+referer = "http://nowhereatall.example.com/"
# --- End of example file ---
.fi
@@ -898,6 +958,8 @@ This option requires a library built with kerberos4 support. This is not
very common. Use \fI-V, --version\fP to see if your curl supports it.
If this option is used several times, the last one will be used.
+.IP "--krb4 <level>"
+(FTP) This is the former name for \fI--krb\fP. Do not use.
.IP "-l, --list-only"
(FTP)
When listing an FTP directory, this switch forces a name-only view. This is
@@ -935,7 +997,7 @@ re-send the following request using the same unmodified method.
You can tell curl to not change the non-GET request method to GET after a 30x
response by using the dedicated options for that: \fI--post301\fP,
-\fI--post302\fP and \fI-post303\fP.
+\fI--post302\fP and \fI--post303\fP.
.IP "--libcurl <file>"
Append this option to any ordinary curl command line, and you will get a
libcurl-using C source code written to the file that does the equivalent
@@ -1011,7 +1073,8 @@ return with exit code 63.
files this option has no effect even if the file transfer ends up being larger
than this given limit. This concerns both FTP and HTTP transfers.
.IP "--mail-rcpt <address>"
-(SMTP) Specify a single address, user name or mailing list name.
+(SMTP) Specify a single address, user name or mailing list name. Repeat this
+option several times to send to multiple recipients.
When performing a mail transfer, the recipient should specify a valid email
address to send the mail to. (Added in 7.20.0)
@@ -1127,6 +1190,19 @@ effectively disables the proxy. Each name in this list is matched as either
a domain which contains the hostname, or the hostname itself. For example,
local.com would match local.com, local.com:80, and www.local.com, but not
www.notlocal.com. (Added in 7.19.4).
+.IP "--connect-to <host:port:connect-to-host:connect-to-port>"
+For a request to the given "host:port" pair, connect to
+"connect-to-host:connect-to-port" instead.
+This is suitable to direct the request at a specific server, e.g. at a specific
+cluster node in a cluster of servers.
+This option is only used to establish the network connection. It does NOT
+affect the hostname/port that is used for TLS/SSL (e.g. SNI, certificate
+verification) or for the application protocols.
+"host" and "port" may be the empty string, meaning "any host/port".
+"connect-to-host" and "connect-to-port" may also be the empty string,
+meaning "use the request's original host/port".
+This option can be used many times to add many connect rules.
+(Added in 7.49.0).
.IP "--ntlm"
(HTTP) Enables NTLM authentication. The NTLM authentication method was
designed by Microsoft and is used by IIS web servers. It is a proprietary
@@ -1142,13 +1218,17 @@ This option requires a library built with SSL support. Use
\fI-V, --version\fP to see if your curl supports NTLM.
If this option is used several times, only the first one is used.
+.IP "--ntlm-wb"
+(HTTP) Enables NTLM much in the style \fI--ntlm\fP does, but hand over the
+authentication to the separate binary ntlmauth application that is executed
+when needed.
.IP "-o, --output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you can use '#' followed by a number in the <file>
specifier. That variable will be replaced with the current string for the URL
being fetched. Like in:
- curl http://{one,two}.site.com -o "file_#1.txt"
+ curl http://{one,two}.example.com -o "file_#1.txt"
or use several variables like:
@@ -1163,12 +1243,15 @@ output to be done to stdout.
Write output to a local file named like the remote file we get. (Only the file
part of the remote file is used, the path is cut off.)
-The remote file name to use for saving is extracted from the given URL,
-nothing else.
+The file will be saved in the current working directory. If you want the file
+saved in a different directory, make sure you change the current working
+directory before invoking curl with this option.
-Consequentially, the file will be saved in the current working directory. If
-you want the file saved in a different directory, make sure you change current
-working directory before you invoke curl with the \fB-O, --remote-name\fP flag!
+The remote file name to use for saving is extracted from the given URL, nothing
+else, and if it already exists it will be overwritten. If you want the server
+to be able to choose the file name refer to \fI-J, --remote-header-name\fP
+which can be used in addition to this option. If the server chooses a file name
+and that name already exists it will not be overwritten.
There is no URL decoding done on the file name. If it has %20 or other URL
encoded parts of the name, they will end up as-is as file name.
@@ -1245,21 +1328,21 @@ this option set you tell it not to do that.
(Added in 7.42.0)
.IP "--post301"
-(HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests
+(HTTP) Tells curl to respect RFC 7230/6.4.2 and not convert POST requests
into GET requests when following a 301 redirection. The non-RFC behaviour is
ubiquitous in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
a redirection. This option is meaningful only when using \fI-L, --location\fP
(Added in 7.17.1)
.IP "--post302"
-(HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests
+(HTTP) Tells curl to respect RFC 7230/6.4.3 and not convert POST requests
into GET requests when following a 302 redirection. The non-RFC behaviour is
ubiquitous in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
a redirection. This option is meaningful only when using \fI-L, --location\fP
(Added in 7.19.1)
.IP "--post303"
-(HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests
+(HTTP) Tells curl to respect RFC 7230/6.4.4 and not convert POST requests
into GET requests when following a 303 redirection. The non-RFC behaviour is
ubiquitous in web browsers, so curl does the conversion by default to maintain
consistency. However, a server may require a POST to remain a POST after such
@@ -1306,9 +1389,40 @@ This option can be used multiple times, in which case the effect is the same
as concatenating the protocols into one instance of the option.
(Added in 7.20.2)
+.IP "--proto-default <protocol>"
+Tells curl to use \fIprotocol\fP for any URL missing a scheme name.
+
+Example:
+
+.RS
+.IP "--proto-default https ftp.mozilla.org"
+https://ftp.mozilla.org
+.RE
+
+An unknown or unsupported protocol causes error
+\fICURLE_UNSUPPORTED_PROTOCOL\fP.
+
+This option does not change the default proxy protocol (http).
+
+Without this option curl would make a guess based on the host, see \fI--url\fP
+for details.
+
+(Added in 7.45.0)
.IP "--proto-redir <protocols>"
-Tells curl to use the listed protocols after a redirect. See --proto for
-how protocols are represented.
+Tells curl to use the listed protocols on redirect. See --proto for how
+protocols are represented.
+
+Example:
+
+.RS
+.IP "--proto-redir -all,http,https"
+Allow only HTTP and HTTPS on redirect.
+.RE
+
+By default curl will allow all protocols on redirect except several disabled
+for security reasons: Since 7.19.4 FILE and SCP are disabled, and since 7.40.0
+SMB and SMBS are also disabled. Specifying \fIall\fP or \fI+all\fP enables all
+protocols on redirect, including those disabled for security.
(Added in 7.20.2)
.IP "--proxy-anyauth"
@@ -1351,7 +1465,7 @@ If this option is used several times, the last one will be used.
private key file, so passing this option is generally not required. Note that
this public key extraction requires libcurl to be linked against a copy of
libssh2 1.2.8 or higher that is itself linked against OpenSSL.)
-.IP "-q"
+.IP "-q, --disable"
If used as the first parameter on the command line, the \fIcurlrc\fP config
file will not be read and used. See the \fI-K, --config\fP for details on the
default config file search path.
@@ -1423,13 +1537,10 @@ specifies the last 500 bytes
specifies the bytes from offset 9500 and forward
.TP
.B 0-0,-1
-specifies the first and last byte only(*)(H)
-.TP
-.B 500-700,600-799
-specifies 300 bytes from offset 500(H)
+specifies the first and last byte only(*)(HTTP)
.TP
.B 100-199,500-599
-specifies two separate 100-byte ranges(*)(H)
+specifies two separate 100-byte ranges(*) (HTTP)
.RE
.IP
(*) = NOTE that this will cause the server to reply with a multipart
@@ -1474,6 +1585,9 @@ the number used for the specific protocol the host will be used for. It means
you need several entries if you want to provide address for the same host but
different ports.
+The provided address set by this option will be used even if \fI-4, --ipv4\fP
+or \fI-6, --ipv6\fP is set to make curl use another IP version.
+
This option can be used many times to add many host names to resolve.
(Added in 7.21.3)
@@ -1534,14 +1648,17 @@ option name can still be used but will be removed in a future version.
(FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection. Terminates the
connection if the server doesn't support SSL/TLS. (Added in 7.20.0)
-This option was formerly known as \fI--ftp-ssl-reqd\fP (added in 7.15.5). That
-option name can still be used but will be removed in a future version.
+This option was formerly known as \fI--ftp-ssl-reqd\fP.
.IP "--ssl-allow-beast"
(SSL) This option tells curl to not work around a security flaw in the SSL3
and TLS1.0 protocols known as BEAST. If this option isn't used, the SSL layer
may use workarounds known to cause interoperability problems with some older
SSL implementations. WARNING: this option loosens the SSL security, and by
using this flag you ask for exactly that. (Added in 7.25.0)
+.IP "--ssl-no-revoke"
+(WinSSL) This option tells curl to disable certificate revocation checks.
+WARNING: this option loosens the SSL security, and by using this flag you ask
+for exactly that. (Added in 7.44.0)
.IP "--socks4 <host[:port]>"
Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080. (Added in 7.15.2)
@@ -1637,14 +1754,16 @@ specifies what to upload and to where. curl also supports "globbing" of the -T
argument, meaning that you can upload multiple files to a single URL by using
the same URL globbing style supported in the URL, like this:
-curl -T "{file1,file2}" http://www.uploadtothissite.com
+curl -T "{file1,file2}" http://www.example.com
or even
-curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
+curl -T "img[1-1000].png" ftp://ftp.example.com/upload/
.IP "--tcp-nodelay"
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
details about this option. (Added in 7.11.2)
+.IP "--tcp-fastopen"
+Enable use of TCP Fast Open (RFC7413). (Added in 7.49.0)
.IP "--tftp-blksize <value>"
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that
curl will try to use when transferring data to or from a TFTP server. By
@@ -1653,6 +1772,14 @@ default 512 bytes will be used.
If this option is used several times, the last one will be used.
(Added in 7.20.0)
+.IP "--tftp-no-options"
+(TFTP) Tells curl not to send TFTP options requests.
+
+This option improves interop with some legacy servers that do not acknowledge
+or properly implement TFTP options. When this option is used
+\fI--tftp-blksize\fP is ignored.
+
+(Added in 7.48.0)
.IP "--tlsauthtype <authtype>"
Set TLS authentication type. Currently, the only supported option is "SRP",
for TLS-SRP (RFC 5054). If \fI--tlsuser\fP and \fI--tlspassword\fP are
@@ -1751,6 +1878,12 @@ If this option is used several times, the last one will be used.
Specify a URL to fetch. This option is mostly handy when you want to specify
URL(s) in a config file.
+If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
+then curl will make a guess based on the host. If the outermost sub-domain name
+matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be used,
+otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by setting a
+default protocol, see \fI--proto-default\fP for details.
+
This option may be used any number of times. To control where this URL is
written, use the \fI-o, --output\fP or the \fI-O, --remote-name\fP options.
.IP "-v, --verbose"
@@ -1796,7 +1929,7 @@ The Content-Type of the requested document, if there was any.
The ultimate filename that curl writes out to. This is only meaningful if curl
is told to write to a file with the \fI--remote-name\fP or \fI--output\fP
option. It's most useful in combination with the \fI--remote-header-name\fP
-option. (Added in 7.25.1)
+option. (Added in 7.26.0)
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
@@ -2270,7 +2403,7 @@ are meant to never change.
Daniel Stenberg is the main author, but the whole list of contributors is
found in the separate THANKS file.
.SH WWW
-http://curl.haxx.se
+https://curl.haxx.se
.SH FTP
ftp://ftp.sunet.se/pub/www/utilities/curl/
.SH "SEE ALSO"
diff --git a/docs/examples/.gitignore b/docs/examples/.gitignore
index d64e12de..aece671c 100644
--- a/docs/examples/.gitignore
+++ b/docs/examples/.gitignore
@@ -73,3 +73,7 @@ smtp-vrfy
url2file
usercertinmem
xmlstream
+http2-download
+http2-serverpush
+http2-upload
+imap-lsub
diff --git a/docs/examples/10-at-a-time.c b/docs/examples/10-at-a-time.c
index 5d95a8a8..aa1862ec 100644
--- a/docs/examples/10-at-a-time.c
+++ b/docs/examples/10-at-a-time.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,9 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example application source code using the multi interface to download many
- * files, but with a capped maximum amount of simultaneous transfers.
- *
+/* <DESC>
+ * Source code using the multi interface to download many
+ * files, with a capped maximum amount of simultaneous transfers.
+ * </DESC>
* Written by Michael Wallner
*/
@@ -126,41 +127,42 @@ int main(void)
uses */
curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX);
- for (C = 0; C < MAX; ++C) {
+ for(C = 0; C < MAX; ++C) {
init(cm, C);
}
- while (U) {
+ while(U) {
curl_multi_perform(cm, &U);
- if (U) {
+ if(U) {
FD_ZERO(&R);
FD_ZERO(&W);
FD_ZERO(&E);
- if (curl_multi_fdset(cm, &R, &W, &E, &M)) {
+ if(curl_multi_fdset(cm, &R, &W, &E, &M)) {
fprintf(stderr, "E: curl_multi_fdset\n");
return EXIT_FAILURE;
}
- if (curl_multi_timeout(cm, &L)) {
+ if(curl_multi_timeout(cm, &L)) {
fprintf(stderr, "E: curl_multi_timeout\n");
return EXIT_FAILURE;
}
- if (L == -1)
+ if(L == -1)
L = 100;
- if (M == -1) {
+ if(M == -1) {
#ifdef WIN32
Sleep(L);
#else
- sleep(L / 1000);
+ sleep((unsigned int)L / 1000);
#endif
- } else {
+ }
+ else {
T.tv_sec = L/1000;
T.tv_usec = (L%1000)*1000;
- if (0 > select(M+1, &R, &W, &E, &T)) {
+ if(0 > select(M+1, &R, &W, &E, &T)) {
fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
M+1, L, errno, strerror(errno));
return EXIT_FAILURE;
@@ -168,8 +170,8 @@ int main(void)
}
}
- while ((msg = curl_multi_info_read(cm, &Q))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(cm, &Q))) {
+ if(msg->msg == CURLMSG_DONE) {
char *url;
CURL *e = msg->easy_handle;
curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, &url);
@@ -181,7 +183,7 @@ int main(void)
else {
fprintf(stderr, "E: CURLMsg (%d)\n", msg->msg);
}
- if (C < CNT) {
+ if(C < CNT) {
init(cm, C++);
U++; /* just to prevent it from remaining at 0 if there are more
URLs to get */
diff --git a/docs/examples/Makefile.am b/docs/examples/Makefile.am
index 8e2bc9a8..7a56f345 100644
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -61,3 +61,6 @@ endif
include Makefile.inc
all: $(check_PROGRAMS)
+
+checksrc:
+ @PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
diff --git a/docs/examples/Makefile.example b/docs/examples/Makefile.example
index dfd11787..17e614ea 100644
--- a/docs/examples/Makefile.example
+++ b/docs/examples/Makefile.example
@@ -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/docs/examples/Makefile.inc b/docs/examples/Makefile.inc
index 4b0c28ff..8ce6f57f 100644
--- a/docs/examples/Makefile.inc
+++ b/docs/examples/Makefile.inc
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -32,7 +32,7 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
imap-list imap-lsub imap-fetch imap-store imap-append imap-examine \
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-upload http2-serverpush getredirect
# 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/docs/examples/Makefile.m32 b/docs/examples/Makefile.m32
index 2da5294e..e75b6d13 100644
--- a/docs/examples/Makefile.m32
+++ b/docs/examples/Makefile.m32
@@ -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
@@ -50,7 +50,7 @@ LIBRTMP_PATH = ../../../librtmp-2.4
endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.30
+LIBIDN_PATH = ../../../libidn-1.32
endif
# Edit the path below to point to the base of your MS IDN package.
# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
diff --git a/docs/examples/Makefile.netware b/docs/examples/Makefile.netware
index f8e9955e..2d85e736 100644
--- a/docs/examples/Makefile.netware
+++ b/docs/examples/Makefile.netware
@@ -34,7 +34,7 @@ endif
# Edit the path below to point to the base of your libidn package.
ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.30
+LIBIDN_PATH = ../../../libidn-1.32
endif
# Edit the path below to point to the base of your librtmp package.
diff --git a/docs/examples/README b/docs/examples/README
index 1ca62a15..078cabed 100644
--- a/docs/examples/README
+++ b/docs/examples/README
@@ -32,51 +32,7 @@ actually torture our web site with your tests! Thanks.
EXAMPLES
-anyauthput.c - HTTP PUT using "any" authentication method
-cacertinmem.c - Use a built-in PEM certificate to retrieve a https page
-cookie_interface.c - shows usage of simple cookie interface
-curlgtk.c - download using a GTK progress bar
-curlx.c - getting file info from the remote cert data
-debug.c - showing how to use the debug callback
-fileupload.c - uploading to a file:// URL
-fopen.c - fopen() layer that supports opening URLs and files
-ftpget.c - simple getting a file from FTP
-ftpgetresp.c - get the response strings from the FTP server
-ftpupload.c - upload a file to an FTP server
-ftpuploadresume.c - resume an upload to an FTP server
-getinfo.c - get the Content-Type from the recent transfer
-getinmemory.c - download a file to memory only
-ghiper.c - curl_multi_socket() using code with glib-2
-hiperfifo.c - downloads all URLs written to the fifo, using
- curl_multi_socket() and libevent
-htmltidy.c - download a document and use libtidy to parse the HTML
-htmltitle.cc - download a HTML file and extract the <title> tag from a HTML
- page using libxml
-http-post.c - HTTP POST
-httpput.c - HTTP PUT a local file
-https.c - simple HTTPS transfer
-imap.c - simple IMAP transfer
-multi-app.c - a multi-interface app
-multi-debugcallback.c - a multi-interface app using the debug callback
-multi-double.c - a multi-interface app doing two simultaneous transfers
-multi-post.c - a multi-interface app doing a multipart formpost
-multi-single.c - a multi-interface app getting a single file
-multi-uv.c - a multi-interface app using libuv
-multithread.c - an example using multi-treading transferring multiple files
-opensslthreadlock.c - show how to do locking when using OpenSSL multi-threaded
-persistant.c - request two URLs with a persistent connection
-pop3s.c - POP3S transfer
-pop3slist.c - POP3S LIST
-post-callback.c - send a HTTP POST using a callback
-postit2.c - send a HTTP multipart formpost
-sampleconv.c - showing how a program on a non-ASCII platform would invoke
- callbacks to do its own codeset conversions instead of using
- the built-in iconv functions in libcurl
-sepheaders.c - download headers to a separate file
-simple.c - the most simple download a URL source
-simplepost.c - HTTP POST
-simplessl.c - HTTPS example with certificates many options set
-synctime.c - Sync local time by extracting date from remote HTTP servers
-url2file.c - download a document and store it in a file
-xmlstream.c - Stream-parse a document using the streaming Expat parser
-10-at-a-time.c - Download many files simultaneously, 10 at a time.
+Each example source code file is designed to be and work stand-alone and
+rather self-explanatory. The examples may at times lack the level of error
+checks you need in a real world, but that is then only for the sake of
+readability: to make the code smaller and easier to follow.
diff --git a/docs/examples/adddocsref.pl b/docs/examples/adddocsref.pl
index 2dcc24b6..efebfe2b 100755
--- a/docs/examples/adddocsref.pl
+++ b/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/docs/examples/anyauthput.c b/docs/examples/anyauthput.c
index b89dca2e..b1367deb 100644
--- a/docs/examples/anyauthput.c
+++ b/docs/examples/anyauthput.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP PUT upload with authentiction using "any" method. libcurl picks the
+ * one the server supports/wants.
+ * </DESC>
+ */
#include <stdio.h>
#include <fcntl.h>
#ifdef WIN32
@@ -73,7 +78,8 @@
/* ioctl callback function */
static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
{
- intptr_t fd = (intptr_t)userp;
+ int *fdp = (int *)userp;
+ int fd = *fdp;
(void)handle; /* not used in here */
@@ -95,10 +101,11 @@ static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
/* read callback function, fread() look alike */
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
- size_t retcode;
+ ssize_t retcode;
curl_off_t nread;
- intptr_t fd = (intptr_t)stream;
+ int *fdp = (int *)stream;
+ int fd = *fdp;
retcode = read(fd, ptr, size * nmemb);
@@ -114,7 +121,7 @@ int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
- intptr_t hd ;
+ int hd;
struct stat file_info;
char *file;
@@ -127,7 +134,7 @@ int main(int argc, char **argv)
url = argv[2];
/* get the file size of the local file */
- hd = open(file, O_RDONLY) ;
+ hd = open(file, O_RDONLY);
fstat(hd, &file_info);
/* In windows, this will init the winsock stuff */
@@ -140,20 +147,20 @@ int main(int argc, char **argv)
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
/* which file to upload */
- curl_easy_setopt(curl, CURLOPT_READDATA, (void*)hd);
+ curl_easy_setopt(curl, CURLOPT_READDATA, (void*)&hd);
/* set the ioctl function */
curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
/* pass the file descriptor to the ioctl callback as well */
- curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void*)hd);
+ curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void*)&hd);
/* enable "uploading" (which means PUT when doing HTTP) */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L) ;
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
/* specify target URL, and note that this URL should also include a file
name, not only a directory (as you can do with GTP uploads) */
- curl_easy_setopt(curl,CURLOPT_URL, url);
+ curl_easy_setopt(curl, CURLOPT_URL, url);
/* and give the size of the upload, this supports large file sizes
on systems that have general support for it */
diff --git a/docs/examples/asiohiper.cpp b/docs/examples/asiohiper.cpp
index eb5cd038..d6065e55 100644
--- a/docs/examples/asiohiper.cpp
+++ b/docs/examples/asiohiper.cpp
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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,11 +20,11 @@
*
***************************************************************************/
+/* <DESC>
+ * demonstrate the use of multi socket interface with boost::asio
+ * </DESC>
+ */
/*
- * file: asiohiper.cpp
- * Example program to demonstrate the use of multi socket interface
- * with boost::asio
- *
* This program is in c++ and uses boost::asio instead of libevent/libev.
* Requires boost::asio, boost::bind and boost::system
*
@@ -48,6 +48,7 @@
#include <curl/curl.h>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
+#include <iostream>
#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
@@ -378,9 +379,9 @@ static curl_socket_t opensocket(void *clientp, curlsocktype purpose,
}
/* CURLOPT_CLOSESOCKETFUNCTION */
-static int closesocket(void *clientp, curl_socket_t item)
+static int close_socket(void *clientp, curl_socket_t item)
{
- fprintf(MSG_OUT, "\nclosesocket : %d", item);
+ fprintf(MSG_OUT, "\nclose_socket : %d", item);
std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it = socket_map.find(item);
@@ -427,7 +428,7 @@ static void new_conn(char *url, GlobalInfo *g)
curl_easy_setopt(conn->easy, CURLOPT_OPENSOCKETFUNCTION, opensocket);
/* call this function to close a socket */
- curl_easy_setopt(conn->easy, CURLOPT_CLOSESOCKETFUNCTION, closesocket);
+ curl_easy_setopt(conn->easy, CURLOPT_CLOSESOCKETFUNCTION, close_socket);
fprintf(MSG_OUT,
"\nAdding easy %p to multi %p (%s)", conn->easy, g->multi, url);
@@ -441,7 +442,6 @@ static void new_conn(char *url, GlobalInfo *g)
int main(int argc, char **argv)
{
GlobalInfo g;
- CURLMcode rc;
(void)argc;
(void)argv;
diff --git a/docs/examples/cacertinmem.c b/docs/examples/cacertinmem.c
index 30a5153a..bba8c722 100644
--- a/docs/examples/cacertinmem.c
+++ b/docs/examples/cacertinmem.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,25 +19,19 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example using a "in core" PEM certificate to retrieve a https page.
- * Written by Theo Borm
+/* <DESC>
+ * CA cert in memory with OpenSSL to get a HTTPS page.
+ * </DESC>
*/
-/* on a netBSD system with OPENSSL& LIBCURL installed from
- * pkgsrc (using default paths) this program can be compiled using:
- * gcc -I/usr/pkg/include -L/usr/pkg/lib -lcurl -Wl,-R/usr/pkg/lib -lssl
- * -lcrypto -lz -o curlcacerttest curlcacerttest.c
- * on other operating systems you may want to change paths to headers
- * and libraries
-*/
#include <openssl/ssl.h>
#include <curl/curl.h>
#include <stdio.h>
-size_t writefunction( void *ptr, size_t size, size_t nmemb, void *stream)
+size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
{
- fwrite(ptr,size,nmemb,stream);
- return(nmemb*size);
+ fwrite(ptr, size, nmemb, stream);
+ return (nmemb*size);
}
static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
@@ -93,14 +87,14 @@ static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
* structure that SSL can use
*/
PEM_read_bio_X509(bio, &cert, 0, NULL);
- if (cert == NULL)
+ if(cert == NULL)
printf("PEM_read_bio_X509 failed...\n");
/* get a pointer to the X509 certificate store (which may be empty!) */
store=SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
/* add our certificate to this store */
- if (X509_STORE_add_cert(store, cert)==0)
+ if(X509_STORE_add_cert(store, cert)==0)
printf("error adding certificate\n");
/* decrease reference counts */
@@ -108,7 +102,7 @@ static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
BIO_free(bio);
/* all set to go */
- return CURLE_OK ;
+ return CURLE_OK;
}
int main(void)
@@ -118,22 +112,22 @@ int main(void)
rv=curl_global_init(CURL_GLOBAL_ALL);
ch=curl_easy_init();
- rv=curl_easy_setopt(ch,CURLOPT_VERBOSE, 0L);
- rv=curl_easy_setopt(ch,CURLOPT_HEADER, 0L);
- rv=curl_easy_setopt(ch,CURLOPT_NOPROGRESS, 1L);
- rv=curl_easy_setopt(ch,CURLOPT_NOSIGNAL, 1L);
- rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
- rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
- rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
- rv=curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
- rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
- rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L);
+ rv=curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
+ rv=curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
+ rv=curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
+ rv=curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
+ rv=curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, *writefunction);
+ rv=curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
+ rv=curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, *writefunction);
+ rv=curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
+ rv=curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
/* first try: retrieve page without cacerts' certificate -> will fail
*/
rv=curl_easy_perform(ch);
- if (rv==CURLE_OK)
+ if(rv==CURLE_OK)
printf("*** transfer succeeded ***\n");
else
printf("*** transfer failed ***\n");
@@ -142,9 +136,9 @@ int main(void)
* load the certificate by installing a function doing the nescessary
* "modifications" to the SSL CONTEXT just before link init
*/
- rv=curl_easy_setopt(ch,CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
rv=curl_easy_perform(ch);
- if (rv==CURLE_OK)
+ if(rv==CURLE_OK)
printf("*** transfer succeeded ***\n");
else
printf("*** transfer failed ***\n");
diff --git a/docs/examples/certinfo.c b/docs/examples/certinfo.c
index ac0109b0..de2e3108 100644
--- a/docs/examples/certinfo.c
+++ b/docs/examples/certinfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Extract lots of TLS certificate info.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c
index 31949b89..de205671 100644
--- a/docs/examples/chkspeed.c
+++ b/docs/examples/chkspeed.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show transfer timing info after download completes.
+ * </DESC>
+ */
/* Example source code to show how the callback function can be used to
* download data into a chunk of memory instead of storing it in a file.
* After successful download we use curl_easy_getinfo() calls to get the
@@ -64,63 +68,78 @@ int main(int argc, char *argv[])
const char *url = URL_1M;
char *appname = argv[0];
- if (argc > 1) {
+ if(argc > 1) {
/* parse input parameters */
- for (argc--, argv++; *argv; argc--, argv++) {
- if (strncasecmp(*argv, "-", 1) == 0) {
- if (strncasecmp(*argv, "-H", 2) == 0) {
+ for(argc--, argv++; *argv; argc--, argv++) {
+ if(strncasecmp(*argv, "-", 1) == 0) {
+ if(strncasecmp(*argv, "-H", 2) == 0) {
fprintf(stderr,
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
appname);
exit(1);
- } else if (strncasecmp(*argv, "-V", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-V", 2) == 0) {
fprintf(stderr, "\r%s %s - %s\n",
appname, CHKSPEED_VERSION, curl_version());
exit(1);
- } else if (strncasecmp(*argv, "-A", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-A", 2) == 0) {
prtall = 1;
- } else if (strncasecmp(*argv, "-X", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-X", 2) == 0) {
prtsep = 1;
- } else if (strncasecmp(*argv, "-T", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-T", 2) == 0) {
prttime = 1;
- } else if (strncasecmp(*argv, "-M=", 3) == 0) {
+ }
+ else if(strncasecmp(*argv, "-M=", 3) == 0) {
long m = strtol((*argv)+3, NULL, 10);
switch(m) {
- case 1: url = URL_1M;
- break;
- case 2: url = URL_2M;
- break;
- case 5: url = URL_5M;
- break;
- case 10: url = URL_10M;
- break;
- case 20: url = URL_20M;
- break;
- case 50: url = URL_50M;
- break;
- case 100: url = URL_100M;
- break;
- default: fprintf(stderr, "\r%s: invalid parameter %s\n",
- appname, *argv + 3);
- exit(1);
+ case 1:
+ url = URL_1M;
+ break;
+ case 2:
+ url = URL_2M;
+ break;
+ case 5:
+ url = URL_5M;
+ break;
+ case 10:
+ url = URL_10M;
+ break;
+ case 20:
+ url = URL_20M;
+ break;
+ case 50:
+ url = URL_50M;
+ break;
+ case 100:
+ url = URL_100M;
+ break;
+ default:
+ fprintf(stderr, "\r%s: invalid parameter %s\n",
+ appname, *argv + 3);
+ exit(1);
}
- } else {
+ }
+ else {
fprintf(stderr, "\r%s: invalid or unknown option %s\n",
appname, *argv);
exit(1);
}
- } else {
+ }
+ else {
url = *argv;
}
}
}
/* print separator line */
- if (prtsep) {
+ if(prtsep) {
printf("-------------------------------------------------\n");
}
/* print localtime */
- if (prttime) {
+ if(prttime) {
time_t t = time(NULL);
printf("Localtime: %s", ctime(&t));
}
@@ -163,7 +182,7 @@ int main(int argc, char *argv[])
if((CURLE_OK == res) && (val>0))
printf("Average download speed: %0.3f kbyte/sec.\n", val / 1024);
- if (prtall) {
+ if(prtall) {
/* check for name resolution time */
res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME, &val);
if((CURLE_OK == res) && (val>0))
@@ -174,8 +193,8 @@ int main(int argc, char *argv[])
if((CURLE_OK == res) && (val>0))
printf("Connect time: %0.3f sec.\n", val);
}
-
- } else {
+ }
+ else {
fprintf(stderr, "Error while fetching '%s' : %s\n",
url, curl_easy_strerror(res));
}
diff --git a/docs/examples/cookie_interface.c b/docs/examples/cookie_interface.c
index 28ee7817..064c7b32 100644
--- a/docs/examples/cookie_interface.c
+++ b/docs/examples/cookie_interface.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This example shows usage of simple cookie interface. */
+/* <DESC>
+ * Import and export cookies with COOKIELIST.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -39,17 +42,18 @@ print_cookies(CURL *curl)
printf("Cookies, curl knows:\n");
res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
- if (res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n", curl_easy_strerror(res));
+ if(res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
+ curl_easy_strerror(res));
exit(1);
}
nc = cookies, i = 1;
- while (nc) {
+ while(nc) {
printf("[%d]: %s\n", i, nc->data);
nc = nc->next;
i++;
}
- if (i == 1) {
+ if(i == 1) {
printf("(none)\n");
}
curl_slist_free_all(cookies);
@@ -63,14 +67,14 @@ main(void)
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
- if (curl) {
+ if(curl) {
char nline[256];
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* just to start the cookie engine */
+ curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* start cookie engine */
res = curl_easy_perform(curl);
- if (res != CURLE_OK) {
+ if(res != CURLE_OK) {
fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
return 1;
}
@@ -89,10 +93,13 @@ main(void)
#endif
/* Netscape format cookie */
snprintf(nline, sizeof(nline), "%s\t%s\t%s\t%s\t%lu\t%s\t%s",
- ".google.com", "TRUE", "/", "FALSE", (unsigned long)time(NULL) + 31337UL, "PREF", "hello google, i like you very much!");
+ ".google.com", "TRUE", "/", "FALSE",
+ (unsigned long)time(NULL) + 31337UL,
+ "PREF", "hello google, i like you very much!");
res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
- if (res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_setopt failed: %s\n", curl_easy_strerror(res));
+ if(res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
+ curl_easy_strerror(res));
return 1;
}
@@ -106,18 +113,21 @@ main(void)
"Set-Cookie: OLD_PREF=3d141414bf4209321; "
"expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
- if (res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_setopt failed: %s\n", curl_easy_strerror(res));
+ if(res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
+ curl_easy_strerror(res));
return 1;
}
print_cookies(curl);
res = curl_easy_perform(curl);
- if (res != CURLE_OK) {
+ if(res != CURLE_OK) {
fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
return 1;
}
+
+ curl_easy_cleanup(curl);
}
else {
fprintf(stderr, "Curl init failed!\n");
diff --git a/docs/examples/curlgtk.c b/docs/examples/curlgtk.c
index 8cb9914c..c3129c19 100644
--- a/docs/examples/curlgtk.c
+++ b/docs/examples/curlgtk.c
@@ -5,9 +5,12 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
+ */
+/* <DESC>
+ * use the libcurl in a gtk-threaded application
+ * </DESC>
*/
-/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
-/* an attempt to use the curl library in concert with a gtk-threaded application */
#include <stdio.h>
#include <gtk/gtk.h>
@@ -47,9 +50,9 @@ void *my_thread(void *ptr)
gchar *url = ptr;
curl = curl_easy_init();
- if(curl)
- {
- outfile = fopen("test.curl", "w");
+ if(curl) {
+ const char *filename = "test.curl";
+ outfile = fopen(filename, "wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
@@ -94,7 +97,7 @@ int main(int argc, char **argv)
gtk_container_add(GTK_CONTAINER(Frame2), Bar);
gtk_widget_show_all(Window);
- if (!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
+ if(!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
g_warning("can't create the thread");
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
index c68cf0dd..155da237 100644
--- a/docs/examples/curlx.c
+++ b/docs/examples/curlx.c
@@ -9,7 +9,10 @@
certificate presented during ssl session establishment.
*/
-
+/* <DESC>
+ * demonstrates use of SSL context callback, requires OpenSSL
+ * </DESC>
+ */
/*
* Copyright (c) 2003 The OpenEvidence Project. All rights reserved.
@@ -33,7 +36,7 @@
* "This product includes software developed by the Openevidence Project
* for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
* This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com)."
@@ -52,7 +55,7 @@
* "This product includes software developed by the OpenEvidence Project
* for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
* This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com)."
@@ -72,7 +75,7 @@
* ====================================================================
*
* This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)
+ * for use in the OpenSSL Toolkit (https://www.openssl.org/)
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
@@ -98,13 +101,18 @@
static const char *curlx_usage[]={
"usage: curlx args\n",
" -p12 arg - tia file ",
- " -envpass arg - environement variable which content the tia private key password",
+ " -envpass arg - environement variable which content the tia private"
+ " key password",
" -out arg - output file (response)- default stdout",
" -in arg - input file (request)- default stdin",
- " -connect arg - URL of the server for the connection ex: www.openevidence.org",
- " -mimetype arg - MIME type for data in ex : application/timestamp-query or application/dvcs -default application/timestamp-query",
- " -acceptmime arg - MIME type acceptable for the response ex : application/timestamp-response or application/dvcs -default none",
- " -accesstype arg - an Object identifier in an AIA/SIA method, e.g. AD_DVCS or ad_timestamping",
+ " -connect arg - URL of the server for the connection ex:"
+ " www.openevidence.org",
+ " -mimetype arg - MIME type for data in ex : application/timestamp-query"
+ " or application/dvcs -default application/timestamp-query",
+ " -acceptmime arg - MIME type acceptable for the response ex : "
+ "application/timestamp-response or application/dvcs -default none",
+ " -accesstype arg - an Object identifier in an AIA/SIA method, e.g."
+ " AD_DVCS or ad_timestamping",
NULL
};
@@ -125,22 +133,22 @@ static const char *curlx_usage[]={
/* This is a context that we pass to all callbacks */
typedef struct sslctxparm_st {
- unsigned char * p12file ;
- const char * pst ;
- PKCS12 * p12 ;
- EVP_PKEY * pkey ;
- X509 * usercert ;
- STACK_OF(X509) * ca ;
+ unsigned char * p12file;
+ const char * pst;
+ PKCS12 * p12;
+ EVP_PKEY * pkey;
+ X509 * usercert;
+ STACK_OF(X509) * ca;
CURL * curl;
BIO * errorbio;
- int accesstype ;
+ int accesstype;
int verbose;
} sslctxparm;
/* some helper function. */
-static char *i2s_ASN1_IA5STRING( ASN1_IA5STRING *ia5)
+static char *ia5string(ASN1_IA5STRING *ia5)
{
char *tmp;
if(!ia5 || !ia5->length)
@@ -152,20 +160,20 @@ static char *i2s_ASN1_IA5STRING( ASN1_IA5STRING *ia5)
}
/* A conveniance routine to get an access URI. */
-
-static unsigned char *my_get_ext(X509 * cert, const int type, int extensiontype) {
-
+static unsigned char *my_get_ext(X509 *cert, const int type,
+ int extensiontype)
+{
int i;
- STACK_OF(ACCESS_DESCRIPTION) * accessinfo ;
- accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL) ;
+ STACK_OF(ACCESS_DESCRIPTION) * accessinfo;
+ accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL);
- if (!sk_ACCESS_DESCRIPTION_num(accessinfo))
+ if(!sk_ACCESS_DESCRIPTION_num(accessinfo))
return NULL;
- for (i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
+ for(i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
- if (OBJ_obj2nid(ad->method) == type) {
- if (ad->location->type == GEN_URI) {
- return i2s_ASN1_IA5STRING(ad->location->d.ia5);
+ if(OBJ_obj2nid(ad->method) == type) {
+ if(ad->location->type == GEN_URI) {
+ return ia5string(ad->location->d.ia5);
}
return NULL;
}
@@ -184,84 +192,86 @@ static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
sslctxparm * p = (sslctxparm *) arg;
int ok;
- if (p->verbose > 2)
- BIO_printf(p->errorbio,"entering ssl_app_verify_callback\n");
+ if(p->verbose > 2)
+ BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
- if ((ok= X509_verify_cert(ctx)) && ctx->cert) {
- unsigned char * accessinfo ;
- if (p->verbose > 1)
- X509_print_ex(p->errorbio,ctx->cert,0,0);
+ if((ok= X509_verify_cert(ctx)) && ctx->cert) {
+ unsigned char * accessinfo;
+ if(p->verbose > 1)
+ X509_print_ex(p->errorbio, ctx->cert, 0, 0);
- if (accessinfo = my_get_ext(ctx->cert,p->accesstype ,NID_sinfo_access)) {
- if (p->verbose)
- BIO_printf(p->errorbio,"Setting URL from SIA to: %s\n", accessinfo);
+ if(accessinfo = my_get_ext(ctx->cert, p->accesstype, NID_sinfo_access)) {
+ if(p->verbose)
+ BIO_printf(p->errorbio, "Setting URL from SIA to: %s\n", accessinfo);
- curl_easy_setopt(p->curl, CURLOPT_URL,accessinfo);
+ curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
}
- else if (accessinfo = my_get_ext(ctx->cert,p->accesstype,
- NID_info_access)) {
- if (p->verbose)
- BIO_printf(p->errorbio,"Setting URL from AIA to: %s\n", accessinfo);
+ else if(accessinfo = my_get_ext(ctx->cert, p->accesstype,
+ NID_info_access)) {
+ if(p->verbose)
+ BIO_printf(p->errorbio, "Setting URL from AIA to: %s\n", accessinfo);
- curl_easy_setopt(p->curl, CURLOPT_URL,accessinfo);
+ curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
}
}
- if (p->verbose > 2)
- BIO_printf(p->errorbio,"leaving ssl_app_verify_callback with %d\n", ok);
- return(ok);
+ if(p->verbose > 2)
+ BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with %d\n", ok);
+
+ return ok;
}
-/* This is an example of an curl SSL initialisation call back. The callback sets:
+/* The SSL initialisation callback. The callback sets:
- a private key and certificate
- a trusted ca certificate
- a preferred cipherlist
- an application verification callback (the function above)
*/
-static CURLcode sslctxfun(CURL * curl, void * sslctx, void * parm) {
-
+static CURLcode sslctxfun(CURL * curl, void * sslctx, void * parm)
+{
sslctxparm * p = (sslctxparm *) parm;
- SSL_CTX * ctx = (SSL_CTX *) sslctx ;
+ SSL_CTX * ctx = (SSL_CTX *) sslctx;
- if (!SSL_CTX_use_certificate(ctx,p->usercert)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n"); goto err;
+ if(!SSL_CTX_use_certificate(ctx, p->usercert)) {
+ BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n");
+ goto err;
}
- if (!SSL_CTX_use_PrivateKey(ctx,p->pkey)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n"); goto err;
+ if(!SSL_CTX_use_PrivateKey(ctx, p->pkey)) {
+ BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n");
+ goto err;
}
- if (!SSL_CTX_check_private_key(ctx)) {
- BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n"); goto err;
+ if(!SSL_CTX_check_private_key(ctx)) {
+ BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n");
+ goto err;
}
- SSL_CTX_set_quiet_shutdown(ctx,1);
- SSL_CTX_set_cipher_list(ctx,"RC4-MD5");
+ SSL_CTX_set_quiet_shutdown(ctx, 1);
+ SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
- X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx), sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
-
- SSL_CTX_set_verify_depth(ctx,2);
-
- SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,ZERO_NULL);
+ X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx),
+ sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
+ SSL_CTX_set_verify_depth(ctx, 2);
+ SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, ZERO_NULL);
SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);
-
- return CURLE_OK ;
+ return CURLE_OK;
err:
ERR_print_errors(p->errorbio);
return CURLE_SSL_CERTPROBLEM;
}
-int main(int argc, char **argv) {
-
+int main(int argc, char **argv)
+{
BIO* in=NULL;
BIO* out=NULL;
char * outfile = NULL;
- char * infile = NULL ;
+ char * infile = NULL;
int tabLength=100;
char *binaryptr;
@@ -270,7 +280,7 @@ int main(int argc, char **argv) {
char* contenttype;
const char** pp;
unsigned char* hostporturl = NULL;
- BIO * p12bio ;
+ BIO * p12bio;
char **args = argv + 1;
unsigned char * serverurl;
sslctxparm p;
@@ -293,66 +303,91 @@ int main(int argc, char **argv) {
OpenSSL_add_all_digests();
ERR_load_crypto_strings();
-
-
- while (*args && *args[0] == '-') {
- if (!strcmp (*args, "-in")) {
- if (args[1]) {
+ while(*args && *args[0] == '-') {
+ if(!strcmp (*args, "-in")) {
+ if(args[1]) {
infile=*(++args);
- } else badarg=1;
- } else if (!strcmp (*args, "-out")) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(!strcmp (*args, "-out")) {
+ if(args[1]) {
outfile=*(++args);
- } else badarg=1;
- } else if (!strcmp (*args, "-p12")) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(!strcmp (*args, "-p12")) {
+ if(args[1]) {
p.p12file = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-envpass") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-envpass") == 0) {
+ if(args[1]) {
p.pst = getenv(*(++args));
- } else badarg=1;
- } else if (strcmp(*args,"-connect") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-connect") == 0) {
+ if(args[1]) {
hostporturl = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-mimetype") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-mimetype") == 0) {
+ if(args[1]) {
mimetype = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-acceptmime") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-acceptmime") == 0) {
+ if(args[1]) {
mimetypeaccept = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-accesstype") == 0) {
- if (args[1]) {
- if ((p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args,0))) == 0) badarg=1;
- } else badarg=1;
- } else if (strcmp(*args,"-verbose") == 0) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-accesstype") == 0) {
+ if(args[1]) {
+ if((p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0))) == 0)
+ badarg=1;
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-verbose") == 0) {
p.verbose++;
- } else badarg=1;
+ }
+ else
+ badarg=1;
args++;
}
- if (mimetype==NULL || mimetypeaccept == NULL) badarg = 1;
+ if(mimetype==NULL || mimetypeaccept == NULL)
+ badarg = 1;
- if (badarg) {
- for (pp=curlx_usage; (*pp != NULL); pp++)
- BIO_printf(p.errorbio,"%s\n",*pp);
- BIO_printf(p.errorbio,"\n");
+ if(badarg) {
+ for(pp=curlx_usage; (*pp != NULL); pp++)
+ BIO_printf(p.errorbio, "%s\n", *pp);
+ BIO_printf(p.errorbio, "\n");
goto err;
}
-
-
/* set input */
- if ((in=BIO_new(BIO_s_file())) == NULL) {
+ if((in=BIO_new(BIO_s_file())) == NULL) {
BIO_printf(p.errorbio, "Error setting input bio\n");
goto err;
- } else if (infile == NULL)
- BIO_set_fp(in,stdin,BIO_NOCLOSE|BIO_FP_TEXT);
- else if (BIO_read_filename(in,infile) <= 0) {
+ }
+ else if(infile == NULL)
+ BIO_set_fp(in, stdin, BIO_NOCLOSE|BIO_FP_TEXT);
+ else if(BIO_read_filename(in, infile) <= 0) {
BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
BIO_free(in);
goto err;
@@ -360,12 +395,13 @@ int main(int argc, char **argv) {
/* set output */
- if ((out=BIO_new(BIO_s_file())) == NULL) {
+ if((out=BIO_new(BIO_s_file())) == NULL) {
BIO_printf(p.errorbio, "Error setting output bio.\n");
goto err;
- } else if (outfile == NULL)
- BIO_set_fp(out,stdout,BIO_NOCLOSE|BIO_FP_TEXT);
- else if (BIO_write_filename(out,outfile) <= 0) {
+ }
+ else if(outfile == NULL)
+ BIO_set_fp(out, stdout, BIO_NOCLOSE|BIO_FP_TEXT);
+ else if(BIO_write_filename(out, outfile) <= 0) {
BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
BIO_free(out);
goto err;
@@ -374,62 +410,66 @@ int main(int argc, char **argv) {
p.errorbio = BIO_new_fp (stderr, BIO_NOCLOSE);
- if (!(p.curl = curl_easy_init())) {
+ if(!(p.curl = curl_easy_init())) {
BIO_printf(p.errorbio, "Cannot init curl lib\n");
goto err;
}
-
-
- if (!(p12bio = BIO_new_file(p.p12file , "rb"))) {
- BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file); goto err;
+ if(!(p12bio = BIO_new_file(p.p12file, "rb"))) {
+ BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file);
+ goto err;
}
- if (!(p.p12 = d2i_PKCS12_bio (p12bio, NULL))) {
- BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file); goto err;
+ if(!(p.p12 = d2i_PKCS12_bio (p12bio, NULL))) {
+ BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file);
+ goto err;
}
p.ca= NULL;
- if (!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
- BIO_printf(p.errorbio,"Invalid P12 structure in %s\n", p.p12file); goto err;
+ if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
+ BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
+ goto err;
}
- if (sk_X509_num(p.ca) <= 0) {
- BIO_printf(p.errorbio,"No trustworthy CA given.%s\n", p.p12file); goto err;
+ if(sk_X509_num(p.ca) <= 0) {
+ BIO_printf(p.errorbio, "No trustworthy CA given.%s\n", p.p12file);
+ goto err;
}
- if (p.verbose > 1)
- X509_print_ex(p.errorbio,p.usercert,0,0);
+ if(p.verbose > 1)
+ X509_print_ex(p.errorbio, p.usercert, 0, 0);
/* determine URL to go */
- if (hostporturl) {
- serverurl = malloc(9+strlen(hostporturl));
- sprintf(serverurl,"https://%s",hostporturl);
+ if(hostporturl) {
+ size_t len = strlen(hostporturl) + 9;
+ serverurl = malloc(len);
+ snprintf(serverurl, len, "https://%s", hostporturl);
}
- else if (p.accesstype != 0) { /* see whether we can find an AIA or SIA for a given access type */
- if (!(serverurl = my_get_ext(p.usercert,p.accesstype,NID_info_access))) {
+ else if(p.accesstype != 0) { /* see whether we can find an AIA or SIA for a
+ given access type */
+ if(!(serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access))) {
int j=0;
- BIO_printf(p.errorbio,"no service URL in user cert "
+ BIO_printf(p.errorbio, "no service URL in user cert "
"cherching in others certificats\n");
- for (j=0;j<sk_X509_num(p.ca);j++) {
- if ((serverurl = my_get_ext(sk_X509_value(p.ca,j),p.accesstype,
+ for(j=0; j<sk_X509_num(p.ca); j++) {
+ if((serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
NID_info_access)))
break;
- if ((serverurl = my_get_ext(sk_X509_value(p.ca,j),p.accesstype,
+ if((serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
NID_sinfo_access)))
break;
}
}
}
- if (!serverurl) {
+ if(!serverurl) {
BIO_printf(p.errorbio, "no service URL in certificats,"
" check '-accesstype (AD_DVCS | ad_timestamping)'"
" or use '-connect'\n");
goto err;
}
- if (p.verbose)
+ if(p.verbose)
BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);
@@ -437,38 +477,39 @@ int main(int argc, char **argv) {
/* Now specify the POST binary data */
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE,(long)tabLength);
+ curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
/* pass our list of custom made headers */
contenttype = malloc(15+strlen(mimetype));
- sprintf(contenttype,"Content-type: %s",mimetype);
- headers = curl_slist_append(headers,contenttype);
+ snprintf(contenttype, 15+strlen(mimetype), "Content-type: %s", mimetype);
+ headers = curl_slist_append(headers, contenttype);
curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
- if (p.verbose)
+ if(p.verbose)
BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
{
FILE *outfp;
- BIO_get_fp(out,&outfp);
+ BIO_get_fp(out, &outfp);
curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
}
- res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun) ;
+ res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun);
- if (res != CURLE_OK)
- BIO_printf(p.errorbio,"%d %s=%d %d\n", __LINE__, "CURLOPT_SSL_CTX_FUNCTION",CURLOPT_SSL_CTX_FUNCTION,res);
+ if(res != CURLE_OK)
+ BIO_printf(p.errorbio, "%d %s=%d %d\n", __LINE__,
+ "CURLOPT_SSL_CTX_FUNCTION", CURLOPT_SSL_CTX_FUNCTION, res);
curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
{
int lu; int i=0;
- while ((lu = BIO_read (in,&binaryptr[i],tabLength-i)) >0 ) {
+ while((lu = BIO_read (in, &binaryptr[i], tabLength-i)) >0) {
i+=lu;
- if (i== tabLength) {
+ if(i== tabLength) {
tabLength+=100;
- binaryptr=realloc(binaryptr,tabLength); /* should be more careful */
+ binaryptr=realloc(binaryptr, tabLength); /* should be more careful */
}
}
tabLength = i;
@@ -476,23 +517,23 @@ int main(int argc, char **argv) {
/* Now specify the POST binary data */
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE,(long)tabLength);
+ curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
/* Perform the request, res will get the return code */
- BIO_printf(p.errorbio,"%d %s %d\n", __LINE__, "curl_easy_perform",
+ BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
res = curl_easy_perform(p.curl));
{
- int result =curl_easy_getinfo(p.curl,CURLINFO_CONTENT_TYPE,&response);
- if( mimetypeaccept && p.verbose)
- if(!strcmp(mimetypeaccept,response))
- BIO_printf(p.errorbio,"the response has a correct mimetype : %s\n",
+ int result =curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
+ if(mimetypeaccept && p.verbose)
+ if(!strcmp(mimetypeaccept, response))
+ BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
response);
else
- BIO_printf(p.errorbio,"the response doesn\'t have an acceptable "
+ BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
"mime type, it is %s instead of %s\n",
- response,mimetypeaccept);
+ response, mimetypeaccept);
}
/*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
@@ -508,6 +549,6 @@ int main(int argc, char **argv) {
BIO_free(out);
return (EXIT_SUCCESS);
- err: BIO_printf(p.errorbio,"error");
+ err: BIO_printf(p.errorbio, "error");
exit(1);
}
diff --git a/docs/examples/debug.c b/docs/examples/debug.c
index 36dd80d7..f5d58bf1 100644
--- a/docs/examples/debug.c
+++ b/docs/examples/debug.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show how CURLOPT_DEBUGFUNCTION can be used.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -58,14 +62,14 @@ void dump(const char *text,
for(c = 0; (c < width) && (i+c < size); c++) {
/* check for 0D0A; if found, skip past and start a new line of output */
- if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
fprintf(stream, "%c",
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c
index e03801d8..118f152e 100644
--- a/docs/examples/evhiperfifo.c
+++ b/docs/examples/evhiperfifo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket interface together with libev
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
* download many files at once.
*
@@ -115,12 +119,12 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
{
DPRINT("%s %li\n", __PRETTY_FUNCTION__, timeout_ms);
ev_timer_stop(g->loop, &g->timer_event);
- if (timeout_ms > 0)
- {
+ if(timeout_ms > 0) {
double t = timeout_ms / 1000;
ev_timer_init(&g->timer_event, timer_cb, t, 0.);
ev_timer_start(g->loop, &g->timer_event);
- }else
+ }
+ else
timer_cb(g->loop, &g->timer_event, 0);
return 0;
}
@@ -128,20 +132,32 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
/* Die if we get a bad CURLMcode somewhere */
static void mcode_or_die(const char *where, CURLMcode code)
{
- if ( CURLM_OK != code )
- {
+ if(CURLM_OK != code) {
const char *s;
- switch ( code )
- {
- case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
- case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
- case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
- case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
- case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
- case CURLM_LAST: s="CURLM_LAST"; break;
- default: s="CURLM_unknown";
+ switch (code) {
+ case CURLM_BAD_HANDLE:
+ s="CURLM_BAD_HANDLE";
+ break;
+ case CURLM_BAD_EASY_HANDLE:
+ s="CURLM_BAD_EASY_HANDLE";
+ break;
+ case CURLM_OUT_OF_MEMORY:
+ s="CURLM_OUT_OF_MEMORY";
+ break;
+ case CURLM_INTERNAL_ERROR:
+ s="CURLM_INTERNAL_ERROR";
+ break;
+ case CURLM_UNKNOWN_OPTION:
+ s="CURLM_UNKNOWN_OPTION";
+ break;
+ case CURLM_LAST:
+ s="CURLM_LAST";
break;
- case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET";
+ default:
+ s="CURLM_unknown";
+ break;
+ case CURLM_BAD_SOCKET:
+ s="CURLM_BAD_SOCKET";
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
/* ignore this error */
return;
@@ -164,8 +180,8 @@ static void check_multi_info(GlobalInfo *g)
CURLcode res;
fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while ((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
easy = msg->easy_handle;
res = msg->data.result;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
@@ -193,8 +209,7 @@ static void event_cb(EV_P_ struct ev_io *w, int revents)
rc = curl_multi_socket_action(g->multi, w->fd, action, &g->still_running);
mcode_or_die("event_cb: curl_multi_socket_action", rc);
check_multi_info(g);
- if ( g->still_running <= 0 )
- {
+ if(g->still_running <= 0) {
fprintf(MSG_OUT, "last transfer done, kill timeout\n");
ev_timer_stop(g->loop, &g->timer_event);
}
@@ -208,7 +223,8 @@ static void timer_cb(EV_P_ struct ev_timer *w, int revents)
GlobalInfo *g = (GlobalInfo *)w->data;
CURLMcode rc;
- rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0, &g->still_running);
+ rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
+ &g->still_running);
mcode_or_die("timer_cb: curl_multi_socket_action", rc);
check_multi_info(g);
}
@@ -217,9 +233,8 @@ static void timer_cb(EV_P_ struct ev_timer *w, int revents)
static void remsock(SockInfo *f, GlobalInfo *g)
{
printf("%s \n", __PRETTY_FUNCTION__);
- if ( f )
- {
- if ( f->evset )
+ if(f) {
+ if(f->evset)
ev_io_stop(g->loop, &f->ev);
free(f);
}
@@ -237,7 +252,7 @@ static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
f->sockfd = s;
f->action = act;
f->easy = e;
- if ( f->evset )
+ if(f->evset)
ev_io_stop(g->loop, &f->ev);
ev_io_init(&f->ev, event_cb, f->sockfd, kind);
f->ev.data = g;
@@ -269,18 +284,16 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
fprintf(MSG_OUT,
"socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if ( what == CURL_POLL_REMOVE )
- {
+ if(what == CURL_POLL_REMOVE) {
fprintf(MSG_OUT, "\n");
remsock(fdp, g);
- } else
- {
- if ( !fdp )
- {
+ }
+ else {
+ if(!fdp) {
fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
addsock(s, e, what, g);
- } else
- {
+ }
+ else {
fprintf(MSG_OUT,
"Changing action from %s to %s\n",
whatstr[fdp->action], whatstr[what]);
@@ -316,7 +329,7 @@ static int prog_cb (void *p, double dltotal, double dlnow, double ult,
/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
{
ConnInfo *conn;
CURLMcode rc;
@@ -326,8 +339,7 @@ static void new_conn(char *url, GlobalInfo *g )
conn->error[0]='\0';
conn->easy = curl_easy_init();
- if ( !conn->easy )
- {
+ if(!conn->easy) {
fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
exit(2);
}
@@ -362,16 +374,16 @@ static void fifo_cb(EV_P_ struct ev_io *w, int revents)
int n=0;
GlobalInfo *g = (GlobalInfo *)w->data;
- do
- {
+ do {
s[0]='\0';
rv=fscanf(g->input, "%1023s%n", s, &n);
s[n]='\0';
- if ( n && s[0] )
- {
- new_conn(s,g); /* if we read a URL, go get it! */
- } else break;
- } while ( rv != EOF );
+ if(n && s[0]) {
+ new_conn(s, g); /* if we read a URL, go get it! */
+ }
+ else
+ break;
+ } while(rv != EOF);
}
/* Create a named pipe and tell libevent to monitor it */
@@ -382,24 +394,20 @@ static int init_fifo (GlobalInfo *g)
curl_socket_t sockfd;
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if ( lstat (fifo, &st) == 0 )
- {
- if ( (st.st_mode & S_IFMT) == S_IFREG )
- {
+ if(lstat (fifo, &st) == 0) {
+ if((st.st_mode & S_IFMT) == S_IFREG) {
errno = EEXIST;
perror("lstat");
exit (1);
}
}
unlink(fifo);
- if ( mkfifo (fifo, 0600) == -1 )
- {
+ if(mkfifo (fifo, 0600) == -1) {
perror("mkfifo");
exit (1);
}
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if ( sockfd == -1 )
- {
+ if(sockfd == -1) {
perror("open");
exit (1);
}
@@ -408,7 +416,7 @@ static int init_fifo (GlobalInfo *g)
fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
ev_io_init(&g->fifo_event, fifo_cb, sockfd, EV_READ);
ev_io_start(g->loop, &g->fifo_event);
- return(0);
+ return (0);
}
int main(int argc, char **argv)
diff --git a/docs/examples/externalsocket.c b/docs/examples/externalsocket.c
index 5486d125..9b144b42 100644
--- a/docs/examples/externalsocket.c
+++ b/docs/examples/externalsocket.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,9 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/*
- * This is an example demonstrating how an application can pass in a custom
+/* <DESC>
+ * An example demonstrating how an application can pass in a custom
* socket to libcurl to use. This example also handles the connect itself.
+ * </DESC>
*/
#include <stdio.h>
#include <string.h>
@@ -53,7 +54,7 @@
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
- int written = fwrite(ptr, size, nmemb, (FILE *)stream);
+ size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
@@ -91,7 +92,7 @@ int main(void)
WSADATA wsaData;
int initwsa;
- if((initwsa = WSAStartup(MAKEWORD(2,0), &wsaData)) != 0) {
+ if((initwsa = WSAStartup(MAKEWORD(2, 0), &wsaData)) != 0) {
printf("WSAStartup failed: %d\n", initwsa);
return 1;
}
@@ -106,7 +107,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
/* Create the socket "manually" */
- if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) == CURL_SOCKET_BAD ) {
+ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == CURL_SOCKET_BAD) {
printf("Error creating listening socket.\n");
return 3;
}
@@ -115,10 +116,10 @@ int main(void)
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORTNUM);
- if (INADDR_NONE == (servaddr.sin_addr.s_addr = inet_addr(IPADDR)))
+ if(INADDR_NONE == (servaddr.sin_addr.s_addr = inet_addr(IPADDR)))
return 2;
- if(connect(sockfd,(struct sockaddr *) &servaddr, sizeof(servaddr)) ==
+ if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) ==
-1) {
close(sockfd);
printf("client error: connect: %s\n", strerror(errno));
diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c
index 665eca0a..363fae69 100644
--- a/docs/examples/fileupload.c
+++ b/docs/examples/fileupload.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Upload to a file:// URL
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
#include <sys/stat.h>
diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c
index 0aad0abf..71be178e 100644
--- a/docs/examples/fopen.c
+++ b/docs/examples/fopen.c
@@ -42,6 +42,10 @@
*
* This example requires libcurl 7.9.7 or later.
*/
+/* <DESC>
+ * implements an fopen() abstraction allowing reading from URLs
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -76,7 +80,7 @@ struct fcurl_data
typedef struct fcurl_data URL_FILE;
/* exported functions */
-URL_FILE *url_fopen(const char *url,const char *operation);
+URL_FILE *url_fopen(const char *url, const char *operation);
int url_fclose(URL_FILE *file);
int url_feof(URL_FILE *file);
size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
@@ -102,9 +106,9 @@ static size_t write_callback(char *buffer,
if(size > rembuff) {
/* not enough space in buffer */
- newbuff=realloc(url->buffer,url->buffer_len + (size - rembuff));
+ newbuff=realloc(url->buffer, url->buffer_len + (size - rembuff));
if(newbuff==NULL) {
- fprintf(stderr,"callback buffer grow failed\n");
+ fprintf(stderr, "callback buffer grow failed\n");
size=rembuff;
}
else {
@@ -161,8 +165,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
@@ -226,7 +229,7 @@ static int use_buffer(URL_FILE *file, size_t want)
return 0;
}
-URL_FILE *url_fopen(const char *url,const char *operation)
+URL_FILE *url_fopen(const char *url, const char *operation)
{
/* this code could check for URLs or types in the 'url' and
basically use the real fopen() for standard files */
@@ -240,7 +243,7 @@ URL_FILE *url_fopen(const char *url,const char *operation)
memset(file, 0, sizeof(URL_FILE));
- if((file->handle.file=fopen(url,operation)))
+ if((file->handle.file=fopen(url, operation)))
file->type = CFTYPE_FILE; /* marked as URL */
else {
@@ -334,13 +337,13 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
switch(file->type) {
case CFTYPE_FILE:
- want=fread(ptr,size,nmemb,file->handle.file);
+ want=fread(ptr, size, nmemb, file->handle.file);
break;
case CFTYPE_CURL:
want = nmemb * size;
- fill_buffer(file,want);
+ fill_buffer(file, want);
/* check if theres data in the buffer - if not fill_buffer()
* either errored or EOF */
@@ -354,7 +357,7 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
/* xfer data to caller */
memcpy(ptr, file->buffer, want);
- use_buffer(file,want);
+ use_buffer(file, want);
want = want / size; /* number of items */
break;
@@ -379,7 +382,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
break;
case CFTYPE_CURL:
- fill_buffer(file,want);
+ fill_buffer(file, want);
/* check if theres data in the buffer - if not fill either errored or
* EOF */
@@ -403,7 +406,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
memcpy(ptr, file->buffer, want);
ptr[want]=0;/* allways null terminate */
- use_buffer(file,want);
+ use_buffer(file, want);
break;
@@ -443,6 +446,10 @@ void url_rewind(URL_FILE *file)
}
}
+#define FGETSFILE "fgets.test"
+#define FREADFILE "fread.test"
+#define REWINDFILE "rewind.test"
+
/* Small main program to retrive from a url using fgets and fread saving the
* output to two test files (note the fgets method will corrupt binary files if
* they contain 0 chars */
@@ -461,7 +468,7 @@ int main(int argc, char *argv[])
url=argv[1];/* use passed url */
/* copy from url line by line with fgets */
- outf=fopen("fgets.test","w+");
+ outf=fopen(FGETSFILE, "wb+");
if(!outf) {
perror("couldn't open fgets output file\n");
return 1;
@@ -475,8 +482,8 @@ int main(int argc, char *argv[])
}
while(!url_feof(handle)) {
- url_fgets(buffer,sizeof(buffer),handle);
- fwrite(buffer,1,strlen(buffer),outf);
+ url_fgets(buffer, sizeof(buffer), handle);
+ fwrite(buffer, 1, strlen(buffer), outf);
}
url_fclose(handle);
@@ -485,7 +492,7 @@ int main(int argc, char *argv[])
/* Copy from url with fread */
- outf=fopen("fread.test","w+");
+ outf=fopen(FREADFILE, "wb+");
if(!outf) {
perror("couldn't open fread output file\n");
return 1;
@@ -500,7 +507,7 @@ int main(int argc, char *argv[])
do {
nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer,1,nread,outf);
+ fwrite(buffer, 1, nread, outf);
} while(nread);
url_fclose(handle);
@@ -509,7 +516,7 @@ int main(int argc, char *argv[])
/* Test rewind */
- outf=fopen("rewind.test","w+");
+ outf=fopen(REWINDFILE, "wb+");
if(!outf) {
perror("couldn't open fread output file\n");
return 1;
@@ -522,21 +529,19 @@ int main(int argc, char *argv[])
return 2;
}
- nread = url_fread(buffer, 1,sizeof(buffer), handle);
- fwrite(buffer,1,nread,outf);
+ nread = url_fread(buffer, 1, sizeof(buffer), handle);
+ fwrite(buffer, 1, nread, outf);
url_rewind(handle);
buffer[0]='\n';
- fwrite(buffer,1,1,outf);
-
- nread = url_fread(buffer, 1,sizeof(buffer), handle);
- fwrite(buffer,1,nread,outf);
+ fwrite(buffer, 1, 1, outf);
+ nread = url_fread(buffer, 1, sizeof(buffer), handle);
+ fwrite(buffer, 1, nread, outf);
url_fclose(handle);
fclose(outf);
-
return 0;/* all done */
}
diff --git a/docs/examples/ftp-wildcard.c b/docs/examples/ftp-wildcard.c
index d175ddfd..f249bc13 100644
--- a/docs/examples/ftp-wildcard.c
+++ b/docs/examples/ftp-wildcard.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * FTP wildcard pattern matching
+ * </DESC>
+ */
#include <curl/curl.h>
#include <stdio.h>
@@ -115,7 +119,7 @@ static long file_is_coming(struct curl_fileinfo *finfo,
return CURL_CHUNK_BGN_FUNC_SKIP;
}
- data->output = fopen(finfo->filename, "w");
+ data->output = fopen(finfo->filename, "wb");
if(!data->output) {
return CURL_CHUNK_BGN_FUNC_FAIL;
}
diff --git a/docs/examples/ftpget.c b/docs/examples/ftpget.c
index 285283f7..9b7dc024 100644
--- a/docs/examples/ftpget.c
+++ b/docs/examples/ftpget.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -23,11 +23,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to get a single file from an FTP server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTP server.
+ * </DESC>
*/
struct FtpFile {
@@ -65,7 +63,7 @@ int main(void)
* You better replace the URL with one that works!
*/
curl_easy_setopt(curl, CURLOPT_URL,
- "ftp://ftp.example.com/pub/www/utilities/curl/curl-7.9.2.tar.gz");
+ "ftp://ftp.example.com/curl/curl-7.9.2.tar.gz");
/* Define our callback to get called when there's data to be written */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
/* Set a pointer to our struct to pass to the callback */
diff --git a/docs/examples/ftpgetinfo.c b/docs/examples/ftpgetinfo.c
index dfdcf78b..277e52b9 100644
--- a/docs/examples/ftpgetinfo.c
+++ b/docs/examples/ftpgetinfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -24,9 +24,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to check a single file's size and mtime
- * from an FTP server.
+/* <DESC>
+ * Checks a single file's size and mtime from an FTP server.
+ * </DESC>
*/
static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
@@ -65,16 +65,18 @@ int main(void)
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
- /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
+ /* https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
if((CURLE_OK == res) && (filetime >= 0)) {
time_t file_time = (time_t)filetime;
printf("filetime %s: %s", filename, ctime(&file_time));
}
- res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &filesize);
+ res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+ &filesize);
if((CURLE_OK == res) && (filesize>0.0))
printf("filesize %s: %0.0f bytes\n", filename, filesize);
- } else {
+ }
+ else {
/* we failed */
fprintf(stderr, "curl told us %d\n", res);
}
diff --git a/docs/examples/ftpgetresp.c b/docs/examples/ftpgetresp.c
index dcb296ad..7dc34407 100644
--- a/docs/examples/ftpgetresp.c
+++ b/docs/examples/ftpgetresp.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -23,13 +23,11 @@
#include <curl/curl.h>
-/*
- * Similar to ftpget.c but this also stores the received response-lines
+/* <DESC>
+ * Similar to ftpget.c but also stores the received response-lines
* in a separate file using our own callback!
- *
- * This functionality was introduced in libcurl 7.9.3.
+ * </DESC>
*/
-
static size_t
write_response(void *ptr, size_t size, size_t nmemb, void *data)
{
@@ -37,6 +35,9 @@ write_response(void *ptr, size_t size, size_t nmemb, void *data)
return fwrite(ptr, size, nmemb, writehere);
}
+#define FTPBODY "ftp-list"
+#define FTPHEADERS "ftp-responses"
+
int main(void)
{
CURL *curl;
@@ -45,10 +46,10 @@ int main(void)
FILE *respfile;
/* local file name to store the file as */
- ftpfile = fopen("ftp-list", "wb"); /* b is binary, needed on win32 */
+ ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */
/* local file name to store the FTP server's response lines in */
- respfile = fopen("ftp-responses", "wb"); /* b is binary, needed on win32 */
+ respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */
curl = curl_easy_init();
if(curl) {
diff --git a/docs/examples/ftpsget.c b/docs/examples/ftpsget.c
index dae45348..d53f0884 100644
--- a/docs/examples/ftpsget.c
+++ b/docs/examples/ftpsget.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -24,11 +24,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to get a single file from an FTPS server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTPS server.
+ * </DESC>
*/
struct FtpFile {
diff --git a/docs/examples/ftpupload.c b/docs/examples/ftpupload.c
index e79f8d84..bba0c4d5 100644
--- a/docs/examples/ftpupload.c
+++ b/docs/examples/ftpupload.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,11 +33,10 @@
#include <unistd.h>
#endif
-/*
- * This example shows an FTP upload, with a rename of the file just after
- * a successful upload.
- *
- * Example based on source code provided by Erick Nuwendam. Thanks!
+/* <DESC>
+ * Performs an FTP upload and renames the file just after a successful
+ * transfer.
+ * </DESC>
*/
#define LOCAL_FILE "/tmp/uploadthis.txt"
@@ -105,7 +104,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
/* specify target */
- curl_easy_setopt(curl,CURLOPT_URL, REMOTE_URL);
+ curl_easy_setopt(curl, CURLOPT_URL, REMOTE_URL);
/* pass in that last of FTP commands to run after the transfer */
curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
diff --git a/docs/examples/ftpuploadresume.c b/docs/examples/ftpuploadresume.c
index 55b8986c..64156340 100644
--- a/docs/examples/ftpuploadresume.c
+++ b/docs/examples/ftpuploadresume.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,13 +19,9 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Upload to FTP, resuming failed transfers
- *
- * Compile for MinGW like this:
- * gcc -Wall -pedantic -std=c99 ftpuploadwithresume.c -o ftpuploadresume.exe
- * -lcurl -lmsvcr70
- *
- * Written by Philip Bock
+/* <DESC>
+ * Upload to FTP, resuming failed transfers.
+ * </DESC>
*/
#include <stdlib.h>
@@ -40,7 +36,8 @@
/* The MinGW headers are missing a few Win32 function definitions,
you shouldn't need this if you use VC++ */
#if defined(__MINGW32__) && !defined(__MINGW64__)
-int __cdecl _snscanf(const char * input, size_t length, const char * format, ...);
+int __cdecl _snscanf(const char * input, size_t length,
+ const char * format, ...);
#endif
@@ -53,7 +50,7 @@ size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb, void *stream)
/* _snscanf() is Win32 specific */
r = _snscanf(ptr, size * nmemb, "Content-Length: %ld\n", &len);
- if (r) /* Microsoft: we don't read the specs */
+ if(r) /* Microsoft: we don't read the specs */
*((long *) stream) = len;
return size * nmemb;
@@ -71,7 +68,7 @@ size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
FILE *f = stream;
size_t n;
- if (ferror(f))
+ if(ferror(f))
return CURL_READFUNC_ABORT;
n = fread(ptr, size, nmemb, f) * size;
@@ -89,7 +86,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
int c;
f = fopen(localpath, "rb");
- if (f == NULL) {
+ if(!f) {
perror(NULL);
return 0;
}
@@ -98,7 +95,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
- if (timeout)
+ if(timeout)
curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
@@ -109,14 +106,15 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
- curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-"); /* disable passive mode */
+ /* disable passive mode */
+ curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-");
curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
- for (c = 0; (r != CURLE_OK) && (c < tries); c++) {
+ for(c = 0; (r != CURLE_OK) && (c < tries); c++) {
/* are we resuming? */
- if (c) { /* yes */
+ if(c) { /* yes */
/* determine the length of the file already written */
/*
@@ -131,7 +129,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
r = curl_easy_perform(curlhandle);
- if (r != CURLE_OK)
+ if(r != CURLE_OK)
continue;
curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 0L);
@@ -150,7 +148,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
fclose(f);
- if (r == CURLE_OK)
+ if(r == CURLE_OK)
return 1;
else {
fprintf(stderr, "%s\n", curl_easy_strerror(r));
@@ -165,7 +163,8 @@ int main(int c, char **argv)
curl_global_init(CURL_GLOBAL_ALL);
curlhandle = curl_easy_init();
- upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file", 0, 3);
+ upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file",
+ 0, 3);
curl_easy_cleanup(curlhandle);
curl_global_cleanup();
diff --git a/docs/examples/getinfo.c b/docs/examples/getinfo.c
index acbe1e1a..5585564c 100644
--- a/docs/examples/getinfo.c
+++ b/docs/examples/getinfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use getinfo to get content-type after completed transfer.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -27,18 +31,14 @@ int main(void)
CURL *curl;
CURLcode res;
- /* http://curl.haxx.se/libcurl/c/curl_easy_init.html */
curl = curl_easy_init();
if(curl) {
- /* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL */
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/");
- /* http://curl.haxx.se/libcurl/c/curl_easy_perform.html */
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
char *ct;
/* ask for the content-type */
- /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
if((CURLE_OK == res) && ct)
@@ -46,7 +46,6 @@ int main(void)
}
/* always cleanup */
- /* http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html */
curl_easy_cleanup(curl);
}
return 0;
diff --git a/docs/examples/getinmemory.c b/docs/examples/getinmemory.c
index a1c21404..fb794783 100644
--- a/docs/examples/getinmemory.c
+++ b/docs/examples/getinmemory.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example source code to show how the callback function can be used to
- * download data into a chunk of memory instead of storing it in a file.
+/* <DESC>
+ * Shows how the write callback function can be used to download data into a
+ * chunk of memory instead of storing it in a file.
+ * </DESC>
*/
#include <stdio.h>
@@ -34,7 +36,6 @@ struct MemoryStruct {
size_t size;
};
-
static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
@@ -55,7 +56,6 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
return realsize;
}
-
int main(void)
{
CURL *curl_handle;
diff --git a/docs/examples/getredirect.c b/docs/examples/getredirect.c
new file mode 100644
index 00000000..347b1e9b
--- /dev/null
+++ b/docs/examples/getredirect.c
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Show how to extract Location: header and URL to redirect to.
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res;
+ char *location;
+ long response_code;
+
+ curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* example.com is redirected, figure out the redirection! */
+
+ /* Perform the request, res will get the return code */
+ res = curl_easy_perform(curl);
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+ else {
+ res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
+ if((res == CURLE_OK) &&
+ ((response_code / 100) != 3)) {
+ /* a redirect implies a 3xx response code */
+ fprintf(stderr, "Not a redirect.\n");
+ }
+ else {
+ res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &location);
+
+ if((res == CURLE_OK) && location) {
+ /* This is the new absolute URL that you could redirect to, even if
+ * the Location: response header may have been a relative URL. */
+ printf("Redirected to: %s\n", location);
+ }
+ }
+ }
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ return 0;
+}
diff --git a/docs/examples/ghiper.c b/docs/examples/ghiper.c
index 7571ffa3..7317a63d 100644
--- a/docs/examples/ghiper.c
+++ b/docs/examples/ghiper.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,38 +19,41 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket API usage together with with glib2
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
* download many files at once.
*
* Written by Jeff Pohlmeyer
-Requires glib-2.x and a (POSIX?) system that has mkfifo().
+ Requires glib-2.x and a (POSIX?) system that has mkfifo().
-This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
-sample programs, adapted to use glib's g_io_channel in place of libevent.
+ This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
+ sample programs, adapted to use glib's g_io_channel in place of libevent.
-When running, the program creates the named pipe "hiper.fifo"
+ When running, the program creates the named pipe "hiper.fifo"
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
+ Whenever there is input into the fifo, the program reads the input as a list
+ of URL's and creates some new easy handles to fetch each URL via the
+ curl_multi "hiper" API.
-Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
+ Thus, you can try a single URL:
+ % echo http://www.yahoo.com > hiper.fifo
-Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
+ Or a whole bunch of them:
+ % cat my-url-list > hiper.fifo
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
+ The fifo buffer is handled almost instantly, so you can even add more URL's
+ while the previous requests are still being downloaded.
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
+ This is purely a demo app, all retrieved data is simply discarded by the write
+ callback.
*/
-
#include <glib.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -60,13 +63,10 @@ callback.
#include <errno.h>
#include <curl/curl.h>
-
#define MSG_OUT g_print /* Change to "g_error" to write to stderr */
#define SHOW_VERBOSE 0 /* Set to non-zero for libcurl messages */
#define SHOW_PROGRESS 0 /* Set to non-zero to enable progress callback */
-
-
/* Global information, common to all connections */
typedef struct _GlobalInfo {
CURLM *multi;
@@ -74,8 +74,6 @@ typedef struct _GlobalInfo {
int still_running;
} GlobalInfo;
-
-
/* Information associated with a specific easy handle */
typedef struct _ConnInfo {
CURL *easy;
@@ -84,7 +82,6 @@ typedef struct _ConnInfo {
char error[CURL_ERROR_SIZE];
} ConnInfo;
-
/* Information associated with a specific socket */
typedef struct _SockInfo {
curl_socket_t sockfd;
@@ -96,30 +93,25 @@ typedef struct _SockInfo {
GlobalInfo *global;
} SockInfo;
-
-
-
/* Die if we get a bad CURLMcode somewhere */
static void mcode_or_die(const char *where, CURLMcode code) {
- if ( CURLM_OK != code ) {
+ if(CURLM_OK != code) {
const char *s;
switch (code) {
- case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
- case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
- case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
- case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
- case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET"; break;
- case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
- case CURLM_LAST: s="CURLM_LAST"; break;
- default: s="CURLM_unknown";
+ case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
+ case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
+ case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
+ case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
+ case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET"; break;
+ case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
+ case CURLM_LAST: s="CURLM_LAST"; break;
+ default: s="CURLM_unknown";
}
MSG_OUT("ERROR: %s returns %s\n", where, s);
exit(code);
}
}
-
-
/* Check for completed transfers, and remove their easy handles */
static void check_multi_info(GlobalInfo *g)
{
@@ -131,8 +123,8 @@ static void check_multi_info(GlobalInfo *g)
CURLcode res;
MSG_OUT("REMAINING: %d\n", g->still_running);
- while ((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
easy = msg->easy_handle;
res = msg->data.result;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
@@ -146,8 +138,6 @@ static void check_multi_info(GlobalInfo *g)
}
}
-
-
/* Called by glib when our timeout expires */
static gboolean timer_cb(gpointer data)
{
@@ -155,14 +145,12 @@ static gboolean timer_cb(gpointer data)
CURLMcode rc;
rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
+ CURL_SOCKET_TIMEOUT, 0, &g->still_running);
mcode_or_die("timer_cb: curl_multi_socket_action", rc);
check_multi_info(g);
return FALSE;
}
-
-
/* Update the event timer after curl_multi library calls */
static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
{
@@ -172,15 +160,12 @@ static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
timeout.tv_usec = (timeout_ms%1000)*1000;
MSG_OUT("*** update_timeout_cb %ld => %ld:%ld ***\n",
- timeout_ms, timeout.tv_sec, timeout.tv_usec);
+ timeout_ms, timeout.tv_sec, timeout.tv_usec);
g->timer_event = g_timeout_add(timeout_ms, timer_cb, g);
return 0;
}
-
-
-
/* Called by glib when we get action on a multi socket */
static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
{
@@ -198,41 +183,43 @@ static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
check_multi_info(g);
if(g->still_running) {
return TRUE;
- } else {
+ }
+ else {
MSG_OUT("last transfer done, kill timeout\n");
- if (g->timer_event) { g_source_remove(g->timer_event); }
+ if(g->timer_event) {
+ g_source_remove(g->timer_event);
+ }
return FALSE;
}
}
-
-
/* Clean up the SockInfo structure */
static void remsock(SockInfo *f)
{
- if (!f) { return; }
- if (f->ev) { g_source_remove(f->ev); }
+ if(!f) {
+ return;
+ }
+ if(f->ev) {
+ g_source_remove(f->ev);
+ }
g_free(f);
}
-
-
/* Assign information to a SockInfo structure */
static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
{
GIOCondition kind =
- (act&CURL_POLL_IN?G_IO_IN:0)|(act&CURL_POLL_OUT?G_IO_OUT:0);
+ (act&CURL_POLL_IN?G_IO_IN:0)|(act&CURL_POLL_OUT?G_IO_OUT:0);
f->sockfd = s;
f->action = act;
f->easy = e;
- if (f->ev) { g_source_remove(f->ev); }
- f->ev=g_io_add_watch(f->ch, kind, event_cb,g);
-
+ if(f->ev) {
+ g_source_remove(f->ev);
+ }
+ f->ev=g_io_add_watch(f->ch, kind, event_cb, g);
}
-
-
/* Initialize a new SockInfo structure */
static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
{
@@ -244,8 +231,6 @@ static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
curl_multi_assign(g->multi, s, fdp);
}
-
-
/* CURLMOPT_SOCKETFUNCTION */
static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
{
@@ -254,14 +239,15 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
static const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
MSG_OUT("socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if (what == CURL_POLL_REMOVE) {
+ if(what == CURL_POLL_REMOVE) {
MSG_OUT("\n");
remsock(fdp);
- } else {
- if (!fdp) {
+ }
+ else {
+ if(!fdp) {
MSG_OUT("Adding data: %s%s\n",
- what&CURL_POLL_IN?"READ":"",
- what&CURL_POLL_OUT?"WRITE":"" );
+ what&CURL_POLL_IN?"READ":"",
+ what&CURL_POLL_OUT?"WRITE":"");
addsock(s, e, what, g);
}
else {
@@ -273,8 +259,6 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
return 0;
}
-
-
/* CURLOPT_WRITEFUNCTION */
static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
{
@@ -285,30 +269,25 @@ static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
return realsize;
}
-
-
/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb (void *p, double dltotal, double dlnow, double ult, double uln)
+static int prog_cb (void *p, double dltotal, double dlnow, double ult,
+ double uln)
{
ConnInfo *conn = (ConnInfo *)p;
MSG_OUT("Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
return 0;
}
-
-
/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
{
ConnInfo *conn;
CURLMcode rc;
conn = g_malloc0(sizeof(ConnInfo));
-
conn->error[0]='\0';
-
conn->easy = curl_easy_init();
- if (!conn->easy) {
+ if(!conn->easy) {
MSG_OUT("curl_easy_init() failed, exiting!\n");
exit(2);
}
@@ -336,93 +315,90 @@ static void new_conn(char *url, GlobalInfo *g )
that the necessary socket_action() call will be called by this app */
}
-
/* This gets called by glib whenever data is received from the fifo */
static gboolean fifo_cb (GIOChannel *ch, GIOCondition condition, gpointer data)
{
- #define BUF_SIZE 1024
+#define BUF_SIZE 1024
gsize len, tp;
gchar *buf, *tmp, *all=NULL;
GIOStatus rv;
do {
GError *err=NULL;
- rv = g_io_channel_read_line (ch,&buf,&len,&tp,&err);
- if ( buf ) {
- if (tp) { buf[tp]='\0'; }
- new_conn(buf,(GlobalInfo*)data);
+ rv = g_io_channel_read_line(ch, &buf, &len, &tp, &err);
+ if(buf) {
+ if(tp) {
+ buf[tp]='\0';
+ }
+ new_conn(buf, (GlobalInfo*)data);
g_free(buf);
- } else {
+ }
+ else {
buf = g_malloc(BUF_SIZE+1);
- while (TRUE) {
+ while(TRUE) {
buf[BUF_SIZE]='\0';
- g_io_channel_read_chars(ch,buf,BUF_SIZE,&len,&err);
- if (len) {
+ g_io_channel_read_chars(ch, buf, BUF_SIZE, &len, &err);
+ if(len) {
buf[len]='\0';
- if (all) {
+ if(all) {
tmp=all;
all=g_strdup_printf("%s%s", tmp, buf);
g_free(tmp);
- } else {
+ }
+ else {
all = g_strdup(buf);
}
- } else {
- break;
+ }
+ else {
+ break;
}
}
- if (all) {
- new_conn(all,(GlobalInfo*)data);
+ if(all) {
+ new_conn(all, (GlobalInfo*)data);
g_free(all);
}
g_free(buf);
}
- if ( err ) {
+ if(err) {
g_error("fifo_cb: %s", err->message);
g_free(err);
break;
}
- } while ( (len) && (rv == G_IO_STATUS_NORMAL) );
+ } while((len) && (rv == G_IO_STATUS_NORMAL));
return TRUE;
}
-
-
-
int init_fifo(void)
{
- struct stat st;
- const char *fifo = "hiper.fifo";
- int socket;
-
- if (lstat (fifo, &st) == 0) {
- if ((st.st_mode & S_IFMT) == S_IFREG) {
- errno = EEXIST;
- perror("lstat");
- exit (1);
+ struct stat st;
+ const char *fifo = "hiper.fifo";
+ int socket;
+
+ if(lstat (fifo, &st) == 0) {
+ if((st.st_mode & S_IFMT) == S_IFREG) {
+ errno = EEXIST;
+ perror("lstat");
+ exit (1);
+ }
}
- }
-
- unlink (fifo);
- if (mkfifo (fifo, 0600) == -1) {
- perror("mkfifo");
- exit (1);
- }
- socket = open (fifo, O_RDWR | O_NONBLOCK, 0);
+ unlink (fifo);
+ if(mkfifo (fifo, 0600) == -1) {
+ perror("mkfifo");
+ exit (1);
+ }
- if (socket == -1) {
- perror("open");
- exit (1);
- }
- MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
+ socket = open (fifo, O_RDWR | O_NONBLOCK, 0);
- return socket;
+ if(socket == -1) {
+ perror("open");
+ exit (1);
+ }
+ MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
+ return socket;
}
-
-
-
int main(int argc, char **argv)
{
GlobalInfo *g;
@@ -434,8 +410,8 @@ int main(int argc, char **argv)
fd=init_fifo();
ch=g_io_channel_unix_new(fd);
- g_io_add_watch(ch,G_IO_IN,fifo_cb,g);
- gmain=g_main_loop_new(NULL,FALSE);
+ g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
+ gmain=g_main_loop_new(NULL, FALSE);
g->multi = curl_multi_init();
curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index 84035aa2..98bcafe6 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket API usage with libevent 2
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
download many files at once.
@@ -122,7 +126,7 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
/* Die if we get a bad CURLMcode somewhere */
static void mcode_or_die(const char *where, CURLMcode code)
{
- if ( CURLM_OK != code ) {
+ if(CURLM_OK != code) {
const char *s;
switch (code) {
case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
@@ -156,8 +160,8 @@ static void check_multi_info(GlobalInfo *g)
CURLcode res;
fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while ((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
easy = msg->easy_handle;
res = msg->data.result;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
@@ -187,9 +191,9 @@ static void event_cb(int fd, short kind, void *userp)
mcode_or_die("event_cb: curl_multi_socket_action", rc);
check_multi_info(g);
- if ( g->still_running <= 0 ) {
+ if(g->still_running <= 0) {
fprintf(MSG_OUT, "last transfer done, kill timeout\n");
- if (evtimer_pending(g->timer_event, NULL)) {
+ if(evtimer_pending(g->timer_event, NULL)) {
evtimer_del(g->timer_event);
}
}
@@ -216,8 +220,8 @@ static void timer_cb(int fd, short kind, void *userp)
/* Clean up the SockInfo structure */
static void remsock(SockInfo *f)
{
- if (f) {
- if (f->evset)
+ if(f) {
+ if(f->evset)
event_free(f->ev);
free(f);
}
@@ -234,7 +238,7 @@ static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
f->sockfd = s;
f->action = act;
f->easy = e;
- if (f->evset)
+ if(f->evset)
event_free(f->ev);
f->ev = event_new(g->evbase, f->sockfd, kind, event_cb, g);
f->evset = 1;
@@ -262,12 +266,12 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
fprintf(MSG_OUT,
"socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if (what == CURL_POLL_REMOVE) {
+ if(what == CURL_POLL_REMOVE) {
fprintf(MSG_OUT, "\n");
remsock(fdp);
}
else {
- if (!fdp) {
+ if(!fdp) {
fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
addsock(s, e, what, g);
}
@@ -308,7 +312,7 @@ static int prog_cb (void *p, double dltotal, double dlnow, double ult,
/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
{
ConnInfo *conn;
CURLMcode rc;
@@ -318,7 +322,7 @@ static void new_conn(char *url, GlobalInfo *g )
conn->error[0]='\0';
conn->easy = curl_easy_init();
- if (!conn->easy) {
+ if(!conn->easy) {
fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
exit(2);
}
@@ -326,7 +330,7 @@ static void new_conn(char *url, GlobalInfo *g )
conn->url = strdup(url);
curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
+ curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
@@ -356,10 +360,12 @@ static void fifo_cb(int fd, short event, void *arg)
s[0]='\0';
rv=fscanf(g->input, "%1023s%n", s, &n);
s[n]='\0';
- if ( n && s[0] ) {
- new_conn(s,arg); /* if we read a URL, go get it! */
- } else break;
- } while ( rv != EOF);
+ if(n && s[0]) {
+ new_conn(s, arg); /* if we read a URL, go get it! */
+ }
+ else
+ break;
+ } while(rv != EOF);
}
/* Create a named pipe and tell libevent to monitor it */
@@ -370,20 +376,20 @@ static int init_fifo (GlobalInfo *g)
curl_socket_t sockfd;
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if (lstat (fifo, &st) == 0) {
- if ((st.st_mode & S_IFMT) == S_IFREG) {
+ if(lstat (fifo, &st) == 0) {
+ if((st.st_mode & S_IFMT) == S_IFREG) {
errno = EEXIST;
perror("lstat");
exit (1);
}
}
unlink(fifo);
- if (mkfifo (fifo, 0600) == -1) {
+ if(mkfifo (fifo, 0600) == -1) {
perror("mkfifo");
exit (1);
}
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if (sockfd == -1) {
+ if(sockfd == -1) {
perror("open");
exit (1);
}
diff --git a/docs/examples/href_extractor.c b/docs/examples/href_extractor.c
index c11325d2..16f50c0e 100644
--- a/docs/examples/href_extractor.c
+++ b/docs/examples/href_extractor.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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,13 +20,13 @@
*
***************************************************************************/
+/* <DESC>
+ * Uses the "Streaming HTML parser" to extract the href pieces in a streaming
+ * manner from a downloaded HTML.
+ * </DESC>
+ */
/*
- * This example uses the "Streaming HTML parser" to extract the href pieces in
- * a streaming manner from a downloaded HTML. Kindly donated by Michał
- * Kowalczyk.
- *
- * The parser is found at
- * http://code.google.com/p/htmlstreamparser/
+ * The HTML parser is found at http://code.google.com/p/htmlstreamparser/
*/
#include <stdio.h>
@@ -38,11 +38,11 @@ static size_t write_callback(void *buffer, size_t size, size_t nmemb,
void *hsp)
{
size_t realsize = size * nmemb, p;
- for (p = 0; p < realsize; p++) {
+ for(p = 0; p < realsize; p++) {
html_parser_char_parse(hsp, ((char *)buffer)[p]);
- if (html_parser_cmp_tag(hsp, "a", 1))
- if (html_parser_cmp_attr(hsp, "href", 4))
- if (html_parser_is_in(hsp, HTML_VALUE_ENDED)) {
+ if(html_parser_cmp_tag(hsp, "a", 1))
+ if(html_parser_cmp_attr(hsp, "href", 4))
+ if(html_parser_is_in(hsp, HTML_VALUE_ENDED)) {
html_parser_val(hsp)[html_parser_val_length(hsp)] = '\0';
printf("%s\n", html_parser_val(hsp));
}
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
CURL *curl;
HTMLSTREAMPARSER *hsp;
- if (argc != 2) {
+ if(argc != 2) {
printf("Usage: %s URL\n", argv[0]);
return EXIT_FAILURE;
}
diff --git a/docs/examples/htmltidy.c b/docs/examples/htmltidy.c
index a36e331b..687e3f34 100644
--- a/docs/examples/htmltidy.c
+++ b/docs/examples/htmltidy.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,13 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Download a document and use libtidy to parse the HTML.
- * Written by Jeff Pohlmeyer
- *
+/* <DESC>
+ * Download a document and use libtidy to parse the HTML.
+ * </DESC>
+ */
+/*
* LibTidy => http://tidy.sourceforge.net
- *
- * gcc -Wall -I/usr/local/include tidycurl.c -lcurl -ltidy -o tidycurl
- *
*/
#include <stdio.h>
@@ -38,29 +37,27 @@ uint write_cb(char *in, uint size, uint nmemb, TidyBuffer *out)
{
uint r;
r = size * nmemb;
- tidyBufAppend( out, in, r );
- return(r);
+ tidyBufAppend(out, in, r);
+ return r;
}
/* Traverse the document tree */
-void dumpNode(TidyDoc doc, TidyNode tnod, int indent )
+void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
{
TidyNode child;
- for ( child = tidyGetChild(tnod); child; child = tidyGetNext(child) )
- {
- ctmbstr name = tidyNodeGetName( child );
- if ( name )
- {
+ for(child = tidyGetChild(tnod); child; child = tidyGetNext(child) ) {
+ ctmbstr name = tidyNodeGetName(child);
+ if(name) {
/* if it has a name, then it's an HTML tag ... */
TidyAttr attr;
- printf( "%*.*s%s ", indent, indent, "<", name);
+ printf("%*.*s%s ", indent, indent, "<", name);
/* walk the attribute list */
- for ( attr=tidyAttrFirst(child); attr; attr=tidyAttrNext(attr) ) {
+ for(attr=tidyAttrFirst(child); attr; attr=tidyAttrNext(attr) ) {
printf(tidyAttrName(attr));
tidyAttrValue(attr)?printf("=\"%s\" ",
tidyAttrValue(attr)):printf(" ");
}
- printf( ">\n");
+ printf(">\n");
}
else {
/* if it doesn't have a name, then it's probably text, cdata, etc... */
@@ -70,12 +67,12 @@ void dumpNode(TidyDoc doc, TidyNode tnod, int indent )
printf("%*.*s\n", indent, indent, buf.bp?(char *)buf.bp:"");
tidyBufFree(&buf);
}
- dumpNode( doc, child, indent + 4 ); /* recursive */
+ dumpNode(doc, child, indent + 4); /* recursive */
}
}
-int main(int argc, char **argv )
+int main(int argc, char **argv)
{
CURL *curl;
char curl_errbuf[CURL_ERROR_SIZE];
@@ -83,7 +80,7 @@ int main(int argc, char **argv )
TidyBuffer docbuf = {0};
TidyBuffer tidy_errbuf = {0};
int err;
- if ( argc == 2) {
+ if(argc == 2) {
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
@@ -94,19 +91,19 @@ int main(int argc, char **argv )
tdoc = tidyCreate();
tidyOptSetBool(tdoc, TidyForceOutput, yes); /* try harder */
tidyOptSetInt(tdoc, TidyWrapLen, 4096);
- tidySetErrorBuffer( tdoc, &tidy_errbuf );
+ tidySetErrorBuffer(tdoc, &tidy_errbuf);
tidyBufInit(&docbuf);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
err=curl_easy_perform(curl);
- if ( !err ) {
+ if(!err) {
err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
- if ( err >= 0 ) {
+ if(err >= 0) {
err = tidyCleanAndRepair(tdoc); /* fix any problems */
- if ( err >= 0 ) {
+ if(err >= 0) {
err = tidyRunDiagnostics(tdoc); /* load tidy error buffer */
- if ( err >= 0 ) {
- dumpNode( tdoc, tidyGetRoot(tdoc), 0 ); /* walk the tree */
+ if(err >= 0) {
+ dumpNode(tdoc, tidyGetRoot(tdoc), 0); /* walk the tree */
fprintf(stderr, "%s\n", tidy_errbuf.bp); /* show errors */
}
}
@@ -120,11 +117,11 @@ int main(int argc, char **argv )
tidyBufFree(&docbuf);
tidyBufFree(&tidy_errbuf);
tidyRelease(tdoc);
- return(err);
+ return err;
}
else
- printf( "usage: %s <url>\n", argv[0] );
+ printf("usage: %s <url>\n", argv[0]);
- return(0);
+ return 0;
}
diff --git a/docs/examples/htmltitle.cpp b/docs/examples/htmltitle.cpp
index ab89bb6a..5e6b4a00 100644
--- a/docs/examples/htmltitle.cpp
+++ b/docs/examples/htmltitle.cpp
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-// Get a web page, parse it with libxml.
-//
+/* <DESC>
+ * Get a web page, extract the title with libxml.
+ * </DESC>
+ */
// Written by Lars Nilsson
//
// GNU C++ compile command line suggestion (edit paths accordingly):
@@ -40,7 +42,7 @@
//
#ifdef _MSC_VER
-#define COMPARE(a, b) (!stricmp((a), (b)))
+#define COMPARE(a, b) (!_stricmp((a), (b)))
#else
#define COMPARE(a, b) (!strcasecmp((a), (b)))
#endif
diff --git a/docs/examples/http-post.c b/docs/examples/http-post.c
index f1975b1e..01754527 100644
--- a/docs/examples/http-post.c
+++ b/docs/examples/http-post.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * simple HTTP POST using the easy interface
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
index 3b7ca81d..9e87a064 100644
--- a/docs/examples/http2-download.c
+++ b/docs/examples/http2-download.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,13 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Multiplexed HTTP/2 downloads over a single connection
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
/* somewhat unix-specific */
#include <sys/time.h>
@@ -84,14 +89,14 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
for(c = 0; (c < width) && (i+c < size); c++) {
/* check for 0D0A; if found, skip past and start a new line of output */
- if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
fprintf(stderr, "%c",
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
@@ -144,7 +149,7 @@ static void setup(CURL *hnd, int num)
FILE *out;
char filename[128];
- sprintf(filename, "dl-%d", num);
+ snprintf(filename, 128, "dl-%d", num);
out = fopen(filename, "wb");
@@ -239,8 +244,7 @@ int main(int argc, char **argv)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
new file mode 100644
index 00000000..1a8c69b7
--- /dev/null
+++ b/docs/examples/http2-serverpush.c
@@ -0,0 +1,320 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * HTTP/2 server push
+ * </DESC>
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* somewhat unix-specific */
+#include <sys/time.h>
+#include <unistd.h>
+
+/* curl stuff */
+#include <curl/curl.h>
+
+#ifndef CURLPIPE_MULTIPLEX
+#error "too old libcurl, can't do HTTP/2 server push!"
+#endif
+
+static
+void dump(const char *text, unsigned char *ptr, size_t size,
+ char nohex)
+{
+ size_t i;
+ size_t c;
+
+ unsigned int width=0x10;
+
+ if(nohex)
+ /* without the hex output, we can fit more on screen */
+ width = 0x40;
+
+ fprintf(stderr, "%s, %ld bytes (0x%lx)\n",
+ text, (long)size, (long)size);
+
+ for(i=0; i<size; i+= width) {
+
+ fprintf(stderr, "%4.4lx: ", (long)i);
+
+ if(!nohex) {
+ /* hex not disabled, show it */
+ for(c = 0; c < width; c++)
+ if(i+c < size)
+ fprintf(stderr, "%02x ", ptr[i+c]);
+ else
+ fputs(" ", stderr);
+ }
+
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ /* check for 0D0A; if found, skip past and start a new line of output */
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ i+=(c+2-width);
+ break;
+ }
+ fprintf(stderr, "%c",
+ (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
+ /* check again for 0D0A, to avoid an extra \n if it's at width */
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ i+=(c+3-width);
+ break;
+ }
+ }
+ fputc('\n', stderr); /* newline */
+ }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+ char *data, size_t size,
+ void *userp)
+{
+ const char *text;
+ (void)handle; /* prevent compiler warning */
+ (void)userp;
+ switch (type) {
+ case CURLINFO_TEXT:
+ fprintf(stderr, "== Info: %s", data);
+ default: /* in case a new one is introduced to shock us */
+ return 0;
+
+ case CURLINFO_HEADER_OUT:
+ text = "=> Send header";
+ break;
+ case CURLINFO_DATA_OUT:
+ text = "=> Send data";
+ break;
+ case CURLINFO_SSL_DATA_OUT:
+ text = "=> Send SSL data";
+ break;
+ case CURLINFO_HEADER_IN:
+ text = "<= Recv header";
+ break;
+ case CURLINFO_DATA_IN:
+ text = "<= Recv data";
+ break;
+ case CURLINFO_SSL_DATA_IN:
+ text = "<= Recv SSL data";
+ break;
+ }
+
+ dump(text, (unsigned char *)data, size, 1);
+ return 0;
+}
+
+#define OUTPUTFILE "dl"
+
+static void setup(CURL *hnd)
+{
+ FILE *out = fopen(OUTPUTFILE, "wb");
+
+ /* write to this file */
+ curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+
+ /* set the same URL */
+ curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
+
+ /* send it verbose for max debuggaility */
+ curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+ curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+
+ /* HTTP/2 please */
+ curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+
+ /* we use a self-signed test server, skip verification during debugging */
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
+
+#if (CURLPIPE_MULTIPLEX > 0)
+ /* wait for pipe connection to confirm */
+ curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
+#endif
+
+}
+
+/* called when there's an incoming push */
+static int server_push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp)
+{
+ char *headp;
+ size_t i;
+ int *transfers = (int *)userp;
+ char filename[128];
+ FILE *out;
+ static unsigned int count = 0;
+
+ (void)parent; /* we have no use for this */
+
+ snprintf(filename, 128, "push%u", count++);
+
+ /* here's a new stream, save it in a new file for each new push */
+ out = fopen(filename, "wb");
+
+ /* write to this file */
+ curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+ fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n",
+ count, (int)num_headers);
+
+ for(i=0; i<num_headers; i++) {
+ headp = curl_pushheader_bynum(headers, i);
+ fprintf(stderr, "**** header %u: %s\n", (int)i, headp);
+ }
+
+ headp = curl_pushheader_byname(headers, ":path");
+ if(headp) {
+ fprintf(stderr, "**** The PATH is %s\n", headp /* skip :path + colon */);
+ }
+
+ (*transfers)++; /* one more */
+ return CURL_PUSH_OK;
+}
+
+
+/*
+ * Download a file over HTTP/2, take care of server push.
+ */
+int main(void)
+{
+ CURL *easy;
+ CURLM *multi_handle;
+ int still_running; /* keep number of running handles */
+ int transfers=1; /* we start with one */
+ struct CURLMsg *m;
+
+ /* init a multi stack */
+ multi_handle = curl_multi_init();
+
+ easy = curl_easy_init();
+
+ /* set options */
+ setup(easy);
+
+ /* add the easy transfer */
+ curl_multi_add_handle(multi_handle, easy);
+
+ curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
+ curl_multi_setopt(multi_handle, CURLMOPT_PUSHFUNCTION, server_push_callback);
+ curl_multi_setopt(multi_handle, CURLMOPT_PUSHDATA, &transfers);
+
+ /* we start some action by calling perform right away */
+ curl_multi_perform(multi_handle, &still_running);
+
+ do {
+ struct timeval timeout;
+ int rc; /* select() return code */
+ CURLMcode mc; /* curl_multi_fdset() return code */
+
+ fd_set fdread;
+ fd_set fdwrite;
+ fd_set fdexcep;
+ int maxfd = -1;
+
+ long curl_timeo = -1;
+
+ FD_ZERO(&fdread);
+ FD_ZERO(&fdwrite);
+ FD_ZERO(&fdexcep);
+
+ /* set a suitable timeout to play around with */
+ timeout.tv_sec = 1;
+ timeout.tv_usec = 0;
+
+ curl_multi_timeout(multi_handle, &curl_timeo);
+ if(curl_timeo >= 0) {
+ timeout.tv_sec = curl_timeo / 1000;
+ if(timeout.tv_sec > 1)
+ timeout.tv_sec = 1;
+ else
+ timeout.tv_usec = (curl_timeo % 1000) * 1000;
+ }
+
+ /* get file descriptors from the transfers */
+ mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ break;
+ }
+
+ /* On success the value of maxfd is guaranteed to be >= -1. We call
+ select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+ no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+ to sleep 100ms, which is the minimum suggested value in the
+ curl_multi_fdset() doc. */
+
+ if(maxfd == -1) {
+#ifdef _WIN32
+ Sleep(100);
+ rc = 0;
+#else
+ /* Portable sleep for platforms other than Windows. */
+ struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+ rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+ }
+ else {
+ /* Note that on some platforms 'timeout' may be modified by select().
+ If you need access to the original value save a copy beforehand. */
+ rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+ }
+
+ switch(rc) {
+ case -1:
+ /* select error */
+ break;
+ case 0:
+ default:
+ /* timeout or readable/writable sockets */
+ curl_multi_perform(multi_handle, &still_running);
+ break;
+ }
+
+ /*
+ * A little caution when doing server push is that libcurl itself has
+ * created and added one or more easy handles but we need to clean them up
+ * when we are done.
+ */
+
+ do {
+ int msgq = 0;;
+ m = curl_multi_info_read(multi_handle, &msgq);
+ if(m && (m->msg == CURLMSG_DONE)) {
+ CURL *e = m->easy_handle;
+ transfers--;
+ curl_multi_remove_handle(multi_handle, e);
+ curl_easy_cleanup(e);
+ }
+ } while(m);
+
+ } while(transfers); /* as long as we have transfers going */
+
+ curl_multi_cleanup(multi_handle);
+
+
+ return 0;
+}
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
index bca16c0d..b6353713 100644
--- a/docs/examples/http2-upload.c
+++ b/docs/examples/http2-upload.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,13 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Multiplexed HTTP/2 uploads over a single connection
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
@@ -85,14 +90,14 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
for(c = 0; (c < width) && (i+c < size); c++) {
/* check for 0D0A; if found, skip past and start a new line of output */
- if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
fprintf(stderr, "%c",
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
@@ -182,10 +187,10 @@ static void setup(CURL *hnd, int num, const char *upload)
struct stat file_info;
curl_off_t uploadsize;
- sprintf(filename, "dl-%d", num);
+ snprintf(filename, 128, "dl-%d", num);
out = fopen(filename, "wb");
- sprintf(url, "https://localhost:8443/upload-%d", num);
+ snprintf(url, 256, "https://localhost:8443/upload-%d", num);
/* get the file size of the local file */
stat(upload, &file_info);
@@ -303,8 +308,7 @@ int main(int argc, char **argv)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/httpcustomheader.c b/docs/examples/httpcustomheader.c
index 8542ead5..d22b7bc5 100644
--- a/docs/examples/httpcustomheader.c
+++ b/docs/examples/httpcustomheader.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP request with custom modified, removed and added headers
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/httpput.c b/docs/examples/httpput.c
index 2e9dc217..4f8aece1 100644
--- a/docs/examples/httpput.c
+++ b/docs/examples/httpput.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP PUT with easy interface and read callback
+ * </DESC>
+ */
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
@@ -56,7 +60,7 @@ int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
- FILE * hd_src ;
+ FILE * hd_src;
struct stat file_info;
char *file;
diff --git a/docs/examples/https.c b/docs/examples/https.c
index bd9a33ba..cca83fee 100644
--- a/docs/examples/https.c
+++ b/docs/examples/https.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Simple HTTPS GET
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-append.c b/docs/examples/imap-append.c
index fa531a8c..3f832897 100644
--- a/docs/examples/imap-append.c
+++ b/docs/examples/imap-append.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to send e-mails
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
@@ -38,7 +44,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: "
+ "<dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
"Subject: IMAP example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
diff --git a/docs/examples/imap-copy.c b/docs/examples/imap-copy.c
index fe2d91c1..4c3b640b 100644
--- a/docs/examples/imap-copy.c
+++ b/docs/examples/imap-copy.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to copy an e-mail from one folder to another
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-create.c b/docs/examples/imap-create.c
index 65ddede6..8f72cb8f 100644
--- a/docs/examples/imap-create.c
+++ b/docs/examples/imap-create.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to create a new folder
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-delete.c b/docs/examples/imap-delete.c
index 5113be9a..bd9d1a49 100644
--- a/docs/examples/imap-delete.c
+++ b/docs/examples/imap-delete.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to delete a folder
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-examine.c b/docs/examples/imap-examine.c
index a7b41c58..4287f8a1 100644
--- a/docs/examples/imap-examine.c
+++ b/docs/examples/imap-examine.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to obtain information about a folder
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-fetch.c b/docs/examples/imap-fetch.c
index 831d0dcf..192d2e9e 100644
--- a/docs/examples/imap-fetch.c
+++ b/docs/examples/imap-fetch.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to retreieve e-mails
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -40,7 +46,8 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
/* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imap://imap.example.com/INBOX/;UID=1");
/* Perform the fetch */
res = curl_easy_perform(curl);
diff --git a/docs/examples/imap-list.c b/docs/examples/imap-list.c
index 4223052e..291e1e67 100644
--- a/docs/examples/imap-list.c
+++ b/docs/examples/imap-list.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example to list the folders within a mailbox
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-lsub.c b/docs/examples/imap-lsub.c
index 8960b62b..d130c3d5 100644
--- a/docs/examples/imap-lsub.c
+++ b/docs/examples/imap-lsub.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example to list the subscribed folders
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-multi.c b/docs/examples/imap-multi.c
index c7dc1307..8cd4858c 100644
--- a/docs/examples/imap-multi.c
+++ b/docs/examples/imap-multi.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,14 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example using the multi interface
+ * </DESC>
+ */
+
#include <stdio.h>
+#include <string.h>
#include <curl/curl.h>
/* This is a simple example showing how to fetch mail using libcurl's IMAP
@@ -113,8 +120,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/imap-noop.c b/docs/examples/imap-noop.c
index 71a55728..566890ef 100644
--- a/docs/examples/imap-noop.c
+++ b/docs/examples/imap-noop.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to perform a noop
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-search.c b/docs/examples/imap-search.c
index 0c1d2673..f1261e1e 100644
--- a/docs/examples/imap-search.c
+++ b/docs/examples/imap-search.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to search for new e-mails
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-ssl.c b/docs/examples/imap-ssl.c
index eec9b0e3..69839adb 100644
--- a/docs/examples/imap-ssl.c
+++ b/docs/examples/imap-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example using SSL
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -42,7 +48,8 @@ int main(void)
/* This will fetch message 1 from the user's inbox. Note the use of
* imaps:// rather than imap:// to request a SSL based connection. */
- curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.example.com/INBOX/;UID=1");
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imaps://imap.example.com/INBOX/;UID=1");
/* If you want to connect to a site who isn't using a certificate that is
* signed by one of the certs in the CA bundle you have, you can skip the
diff --git a/docs/examples/imap-store.c b/docs/examples/imap-store.c
index 8f5e7d5b..8479457b 100644
--- a/docs/examples/imap-store.c
+++ b/docs/examples/imap-store.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to modify the properties of an e-mail
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-tls.c b/docs/examples/imap-tls.c
index c439864b..7daa0bf3 100644
--- a/docs/examples/imap-tls.c
+++ b/docs/examples/imap-tls.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example using TLS
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -41,7 +47,8 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
/* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imap://imap.example.com/INBOX/;UID=1");
/* In this example, we'll start with a plain text connection, and upgrade
* to Transport Layer Security (TLS) using the STARTTLS command. Be careful
@@ -55,12 +62,13 @@ int main(void)
* CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ *
* That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though.
- * Instead, you should get the issuer certificate (or the host certificate
- * if the certificate is self-signed) and add it to the set of certificates
- * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
- * docs/SSLCERTS for more information. */
+ * authentication details in plain text though. Instead, you should get
+ * the issuer certificate (or the host certificate if the certificate is
+ * self-signed) and add it to the set of certificates that are known to
+ * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
+ * for more information. */
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
/* Since the traffic will be encrypted, it is very useful to turn on debug
diff --git a/docs/examples/makefile.dj b/docs/examples/makefile.dj
index c18ef8a7..af761130 100644
--- a/docs/examples/makefile.dj
+++ b/docs/examples/makefile.dj
@@ -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
@@ -19,10 +19,6 @@
# KIND, either express or implied.
#
###########################################################################
-#
-# Adapted for djgpp / Watt-32 / DOS by
-# Gisle Vanem <gvanem@broadpark.no>
-#
TOPDIR = ../..
diff --git a/docs/examples/multi-app.c b/docs/examples/multi-app.c
index b8258975..f8447930 100644
--- a/docs/examples/multi-app.c
+++ b/docs/examples/multi-app.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is an example application source code using the multi interface. */
+/* <DESC>
+ * A basic application source code using the multi interface doing two
+ * transfers in parallel.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -51,8 +55,8 @@ int main(void)
int msgs_left; /* how many messages are left */
/* Allocate one CURL handle per transfer */
- for (i=0; i<HANDLECOUNT; i++)
- handles[i] = curl_easy_init();
+ for(i=0; i<HANDLECOUNT; i++)
+ handles[i] = curl_easy_init();
/* set the options (I left out a few, you'll get the point anyway) */
curl_easy_setopt(handles[HTTP_HANDLE], CURLOPT_URL, "http://example.com");
@@ -64,8 +68,8 @@ int main(void)
multi_handle = curl_multi_init();
/* add the individual transfers */
- for (i=0; i<HANDLECOUNT; i++)
- curl_multi_add_handle(multi_handle, handles[i]);
+ for(i=0; i<HANDLECOUNT; i++)
+ curl_multi_add_handle(multi_handle, handles[i]);
/* we start some action by calling perform right away */
curl_multi_perform(multi_handle, &still_running);
@@ -102,8 +106,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
@@ -142,12 +145,12 @@ int main(void)
} while(still_running);
/* See how the transfers went */
- while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
int idx, found = 0;
/* Find out which handle this message is about */
- for (idx=0; idx<HANDLECOUNT; idx++) {
+ for(idx=0; idx<HANDLECOUNT; idx++) {
found = (msg->easy_handle == handles[idx]);
if(found)
break;
@@ -167,8 +170,8 @@ int main(void)
curl_multi_cleanup(multi_handle);
/* Free the CURL handles */
- for (i=0; i<HANDLECOUNT; i++)
- curl_easy_cleanup(handles[i]);
+ for(i=0; i<HANDLECOUNT; i++)
+ curl_easy_cleanup(handles[i]);
return 0;
}
diff --git a/docs/examples/multi-debugcallback.c b/docs/examples/multi-debugcallback.c
index 5fb86bea..d07cc3bb 100644
--- a/docs/examples/multi-debugcallback.c
+++ b/docs/examples/multi-debugcallback.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is an example showing the multi interface and the debug callback. */
+/* <DESC>
+ * multi interface and debug callback
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -66,14 +69,14 @@ void dump(const char *text,
for(c = 0; (c < width) && (i+c < size); c++) {
/* check for 0D0A; if found, skip past and start a new line of output */
- if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
fprintf(stream, "%c",
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
@@ -176,8 +179,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-double.c b/docs/examples/multi-double.c
index 0d8d0de4..4e50c768 100644
--- a/docs/examples/multi-double.c
+++ b/docs/examples/multi-double.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi interface code doing two parallel HTTP transfers
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -91,8 +95,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-post.c b/docs/examples/multi-post.c
index 5bfdcfd1..5d9abc12 100644
--- a/docs/examples/multi-post.c
+++ b/docs/examples/multi-post.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is an example application source code using the multi interface
- * to do a multipart formpost without "blocking". */
+/* <DESC>
+ * using the multi interface to do a multipart formpost without blocking
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
@@ -112,8 +115,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-single.c b/docs/examples/multi-single.c
index a43a9f52..70b6d24b 100644
--- a/docs/examples/multi-single.c
+++ b/docs/examples/multi-single.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is a very simple example using the multi interface. */
+/* <DESC>
+ * using the multi interface to do a single download
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -74,9 +77,8 @@ int main(void)
/* wait for activity, timeout or "nothing" */
mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
- if(mc != CURLM_OK)
- {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-uv.c b/docs/examples/multi-uv.c
index 0c0f8a2b..51526c89 100644
--- a/docs/examples/multi-uv.c
+++ b/docs/examples/multi-uv.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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,6 +20,10 @@
*
***************************************************************************/
+/* <DESC>
+ * multi_socket API using libuv
+ * </DESC>
+ */
/* Example application code using the multi socket interface to download
multiple files at once, but instead of using curl_multi_perform and
curl_multi_wait, which uses select(), we use libuv.
@@ -80,9 +84,9 @@ void add_download(const char *url, int num)
FILE *file;
CURL *handle;
- sprintf(filename, "%d.download", num);
+ snprintf(filename, 50, "%d.download", num);
- file = fopen(filename, "w");
+ file = fopen(filename, "wb");
if(!file) {
fprintf(stderr, "Error opening %s\n", filename);
return;
diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c
index 831a0746..475e8fcf 100644
--- a/docs/examples/multithread.c
+++ b/docs/examples/multithread.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* A multi-threaded example that uses pthreads extensively to fetch
- * X remote files at once */
+/* <DESC>
+ * A multi-threaded example that uses pthreads to fetch several files at once
+ * </DESC>
+ */
#include <stdio.h>
#include <pthread.h>
@@ -34,11 +36,11 @@
If you intend to use a SSL-based protocol here you MUST setup the OpenSSL
callback functions as described here:
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
+ https://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
*/
const char * const urls[NUMT]= {
- "http://curl.haxx.se/",
+ "https://curl.haxx.se/",
"ftp://cool.haxx.se/",
"http://www.contactor.se/",
"www.haxx.se"
diff --git a/docs/examples/opensslthreadlock.c b/docs/examples/opensslthreadlock.c
index ad54f08e..eebc42ee 100644
--- a/docs/examples/opensslthreadlock.c
+++ b/docs/examples/opensslthreadlock.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,16 +19,17 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example source code to show one way to set the necessary OpenSSL locking
- * callbacks if you want to do multi-threaded transfers with HTTPS/FTPS with
- * libcurl built to use OpenSSL.
- *
+/* <DESC>
+ * one way to set the necessary OpenSSL locking callbacks if you want to do
+ * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL.
+ * </DESC>
+ */
+/*
* This is not a complete stand-alone example.
*
* Author: Jeremy Brown
*/
-
#include <stdio.h>
#include <pthread.h>
#include <openssl/err.h>
@@ -38,22 +39,22 @@
#define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x))
#define MUTEX_LOCK(x) pthread_mutex_lock(&(x))
#define MUTEX_UNLOCK(x) pthread_mutex_unlock(&(x))
-#define THREAD_ID pthread_self( )
+#define THREAD_ID pthread_self()
-void handle_error(const char *file, int lineno, const char *msg){
- fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
- ERR_print_errors_fp(stderr);
- /* exit(-1); */
- }
+void handle_error(const char *file, int lineno, const char *msg)
+{
+ fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
+ ERR_print_errors_fp(stderr);
+ /* exit(-1); */
+}
/* This array will store all of the mutexes available to OpenSSL. */
static MUTEX_TYPE *mutex_buf= NULL;
-
static void locking_function(int mode, int n, const char * file, int line)
{
- if (mode & CRYPTO_LOCK)
+ if(mode & CRYPTO_LOCK)
MUTEX_LOCK(mutex_buf[n]);
else
MUTEX_UNLOCK(mutex_buf[n]);
@@ -68,10 +69,10 @@ int thread_setup(void)
{
int i;
- mutex_buf = malloc(CRYPTO_num_locks( ) * sizeof(MUTEX_TYPE));
- if (!mutex_buf)
+ mutex_buf = malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
+ if(!mutex_buf)
return 0;
- for (i = 0; i < CRYPTO_num_locks( ); i++)
+ for(i = 0; i < CRYPTO_num_locks(); i++)
MUTEX_SETUP(mutex_buf[i]);
CRYPTO_set_id_callback(id_function);
CRYPTO_set_locking_callback(locking_function);
@@ -82,11 +83,11 @@ int thread_cleanup(void)
{
int i;
- if (!mutex_buf)
+ if(!mutex_buf)
return 0;
CRYPTO_set_id_callback(NULL);
CRYPTO_set_locking_callback(NULL);
- for (i = 0; i < CRYPTO_num_locks( ); i++)
+ for(i = 0; i < CRYPTO_num_locks(); i++)
MUTEX_CLEANUP(mutex_buf[i]);
free(mutex_buf);
mutex_buf = NULL;
diff --git a/docs/examples/persistant.c b/docs/examples/persistant.c
index 0917dfdb..a1e614bd 100644
--- a/docs/examples/persistant.c
+++ b/docs/examples/persistant.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * re-using handles to do HTTP persistent connections
+ * </DESC>
+ */
#include <stdio.h>
#include <unistd.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-dele.c b/docs/examples/pop3-dele.c
index fab598f0..14497835 100644
--- a/docs/examples/pop3-dele.c
+++ b/docs/examples/pop3-dele.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example showing how to delete e-mails
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-list.c b/docs/examples/pop3-list.c
index aebcea6b..b530a044 100644
--- a/docs/examples/pop3-list.c
+++ b/docs/examples/pop3-list.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example to list the contents of a mailbox
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-multi.c b/docs/examples/pop3-multi.c
index 6df09a26..f932918e 100644
--- a/docs/examples/pop3-multi.c
+++ b/docs/examples/pop3-multi.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,14 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example using the multi interface
+ * </DESC>
+ */
+
#include <stdio.h>
+#include <string.h>
#include <curl/curl.h>
/* This is a simple example showing how to retrieve mail using libcurl's POP3
@@ -113,8 +120,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/pop3-noop.c b/docs/examples/pop3-noop.c
index 4efe6715..bc162d0c 100644
--- a/docs/examples/pop3-noop.c
+++ b/docs/examples/pop3-noop.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example showing how to perform a noop
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-retr.c b/docs/examples/pop3-retr.c
index b5113fa9..b36ddb55 100644
--- a/docs/examples/pop3-retr.c
+++ b/docs/examples/pop3-retr.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example showing how to retrieve e-mails
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-ssl.c b/docs/examples/pop3-ssl.c
index 0bbec8d9..f0d4e269 100644
--- a/docs/examples/pop3-ssl.c
+++ b/docs/examples/pop3-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example using SSL
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-stat.c b/docs/examples/pop3-stat.c
index 7b318fc2..46a0a451 100644
--- a/docs/examples/pop3-stat.c
+++ b/docs/examples/pop3-stat.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example showing how to obtain message statistics
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-tls.c b/docs/examples/pop3-tls.c
index 58278a1e..1a6c447a 100644
--- a/docs/examples/pop3-tls.c
+++ b/docs/examples/pop3-tls.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example using TLS
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -55,12 +61,13 @@ int main(void)
* CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ *
* That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though.
- * Instead, you should get the issuer certificate (or the host certificate
- * if the certificate is self-signed) and add it to the set of certificates
- * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
- * docs/SSLCERTS for more information. */
+ * authentication details in plain text though. Instead, you should get
+ * the issuer certificate (or the host certificate if the certificate is
+ * self-signed) and add it to the set of certificates that are known to
+ * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
+ * for more information. */
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
/* Since the traffic will be encrypted, it is very useful to turn on debug
diff --git a/docs/examples/pop3-top.c b/docs/examples/pop3-top.c
index 21cee889..f452b412 100644
--- a/docs/examples/pop3-top.c
+++ b/docs/examples/pop3-top.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example showing how to retreive only the headers of an e-mail
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-uidl.c b/docs/examples/pop3-uidl.c
index debb1791..f127120e 100644
--- a/docs/examples/pop3-uidl.c
+++ b/docs/examples/pop3-uidl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example to list the contents of a mailbox by unique ID
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/post-callback.c b/docs/examples/post-callback.c
index 3e1cfb06..f4cd50c0 100644
--- a/docs/examples/post-callback.c
+++ b/docs/examples/post-callback.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* An example source code that issues a HTTP POST and we provide the actual
+/* <DESC>
+ * An example source code that issues a HTTP POST and we provide the actual
* data through a read callback.
+ * </DESC>
*/
#include <stdio.h>
#include <string.h>
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
index 3afac4b2..9dd4cb63 100644
--- a/docs/examples/postinmemory.c
+++ b/docs/examples/postinmemory.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Make a HTTP POST with data from memory and receive response in memory.
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
diff --git a/docs/examples/postit2.c b/docs/examples/postit2.c
index 88ea78c8..67e685f1 100644
--- a/docs/examples/postit2.c
+++ b/docs/examples/postit2.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP Multipart formpost with file upload and two additional parts.
+ * </DESC>
+ */
/* Example code that uploads a file name 'foo' to a remote script that accepts
* "HTML form based" (as described in RFC1738) uploads using HTTP POST.
*
@@ -79,7 +83,7 @@ int main(int argc, char *argv[])
if(curl) {
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/examplepost.cgi");
- if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) )
+ if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
/* only disable 100-continue header if explicitly requested */
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
diff --git a/docs/examples/progressfunc.c b/docs/examples/progressfunc.c
index b2635bc8..ab34ef98 100644
--- a/docs/examples/progressfunc.c
+++ b/docs/examples/progressfunc.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use the progress callbacks, old and/or new one depending on available
+ * libcurl version.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/resolve.c b/docs/examples/resolve.c
index 7b3e5656..15e343f9 100644
--- a/docs/examples/resolve.c
+++ b/docs/examples/resolve.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use CURLOPT_RESOLVE to feed custom IP addresses for given host name + port
+ * number combinations.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/rtsp.c b/docs/examples/rtsp.c
index fed343df..63c46e15 100644
--- a/docs/examples/rtsp.c
+++ b/docs/examples/rtsp.c
@@ -27,6 +27,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
+/* <DESC>
+ * A basic RTSP transfer
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
@@ -42,12 +46,12 @@ static int _getch(void)
{
struct termios oldt, newt;
int ch;
- tcgetattr( STDIN_FILENO, &oldt );
+ tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
- newt.c_lflag &= ~( ICANON | ECHO );
- tcsetattr( STDIN_FILENO, TCSANOW, &newt );
+ newt.c_lflag &= ~( ICANON | ECHO);
+ tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
- tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
+ tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
return ch;
}
#endif
@@ -58,12 +62,12 @@ static int _getch(void)
/* error handling macros */
#define my_curl_easy_setopt(A, B, C) \
- if ((res = curl_easy_setopt((A), (B), (C))) != CURLE_OK) \
+ if((res = curl_easy_setopt((A), (B), (C))) != CURLE_OK) \
fprintf(stderr, "curl_easy_setopt(%s, %s, %s) failed: %d\n", \
#A, #B, #C, res);
#define my_curl_easy_perform(A) \
- if ((res = curl_easy_perform((A))) != CURLE_OK) \
+ if((res = curl_easy_perform((A))) != CURLE_OK) \
fprintf(stderr, "curl_easy_perform(%s) failed: %d\n", #A, res);
@@ -83,9 +87,9 @@ static void rtsp_describe(CURL *curl, const char *uri,
const char *sdp_filename)
{
CURLcode res = CURLE_OK;
- FILE *sdp_fp = fopen(sdp_filename, "wt");
+ FILE *sdp_fp = fopen(sdp_filename, "wb");
printf("\nRTSP: DESCRIBE %s\n", uri);
- if (sdp_fp == NULL) {
+ if(sdp_fp == NULL) {
fprintf(stderr, "Could not open '%s' for writing\n", sdp_filename);
sdp_fp = stdout;
}
@@ -96,7 +100,7 @@ static void rtsp_describe(CURL *curl, const char *uri,
my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_DESCRIBE);
my_curl_easy_perform(curl);
my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
- if (sdp_fp != stdout) {
+ if(sdp_fp != stdout) {
fclose(sdp_fp);
}
}
@@ -137,14 +141,15 @@ static void rtsp_teardown(CURL *curl, const char *uri)
/* convert url into an sdp filename */
-static void get_sdp_filename(const char *url, char *sdp_filename)
+static void get_sdp_filename(const char *url, char *sdp_filename,
+ size_t namelen)
{
const char *s = strrchr(url, '/');
strcpy(sdp_filename, "video.sdp");
- if (s != NULL) {
+ if(s != NULL) {
s++;
- if (s[0] != '\0') {
- sprintf(sdp_filename, "%s.sdp", s);
+ if(s[0] != '\0') {
+ snprintf(sdp_filename, namelen, "%s.sdp", s);
}
}
}
@@ -156,10 +161,10 @@ static void get_media_control_attribute(const char *sdp_filename,
{
int max_len = 256;
char *s = malloc(max_len);
- FILE *sdp_fp = fopen(sdp_filename, "rt");
+ FILE *sdp_fp = fopen(sdp_filename, "rb");
control[0] = '\0';
- if (sdp_fp != NULL) {
- while (fgets(s, max_len - 2, sdp_fp) != NULL) {
+ if(sdp_fp != NULL) {
+ while(fgets(s, max_len - 2, sdp_fp) != NULL) {
sscanf(s, " a = control: %s", control);
}
fclose(sdp_fp);
@@ -174,7 +179,8 @@ int main(int argc, char * const argv[])
#if 1
const char *transport = "RTP/AVP;unicast;client_port=1234-1235"; /* UDP */
#else
- const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235"; /* TCP */
+ /* TCP */
+ const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235";
#endif
const char *range = "0.000-";
int rc = EXIT_SUCCESS;
@@ -185,50 +191,53 @@ int main(int argc, char * const argv[])
printf(" Requires cURL V7.20 or greater\n\n");
/* check command line */
- if ((argc != 2) && (argc != 3)) {
+ if((argc != 2) && (argc != 3)) {
base_name = strrchr(argv[0], '/');
- if (base_name == NULL) {
+ if(base_name == NULL) {
base_name = strrchr(argv[0], '\\');
}
- if (base_name == NULL) {
+ if(base_name == NULL) {
base_name = argv[0];
- } else {
+ }
+ else {
base_name++;
}
printf("Usage: %s url [transport]\n", base_name);
printf(" url of video server\n");
- printf(" transport (optional) specifier for media stream protocol\n");
+ printf(" transport (optional) specifier for media stream"
+ " protocol\n");
printf(" default transport: %s\n", transport);
printf("Example: %s rtsp://192.168.0.2/media/video1\n\n", base_name);
rc = EXIT_FAILURE;
- } else {
+ }
+ else {
const char *url = argv[1];
char *uri = malloc(strlen(url) + 32);
char *sdp_filename = malloc(strlen(url) + 32);
char *control = malloc(strlen(url) + 32);
CURLcode res;
- get_sdp_filename(url, sdp_filename);
- if (argc == 3) {
+ get_sdp_filename(url, sdp_filename, strlen(url) + 32);
+ if(argc == 3) {
transport = argv[2];
}
/* initialize curl */
res = curl_global_init(CURL_GLOBAL_ALL);
- if (res == CURLE_OK) {
+ if(res == CURLE_OK) {
curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
CURL *curl;
fprintf(stderr, " cURL V%s loaded\n", data->version);
/* initialize this curl session */
curl = curl_easy_init();
- if (curl != NULL) {
+ if(curl != NULL) {
my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
my_curl_easy_setopt(curl, CURLOPT_URL, url);
/* request server options */
- sprintf(uri, "%s", url);
+ snprintf(uri, strlen(url) + 32, "%s", url);
rtsp_options(curl, uri);
/* request session description and write response to sdp file */
@@ -238,11 +247,11 @@ int main(int argc, char * const argv[])
get_media_control_attribute(sdp_filename, control);
/* setup media stream */
- sprintf(uri, "%s/%s", url, control);
+ snprintf(uri, strlen(url) + 32, "%s/%s", url, control);
rtsp_setup(curl, uri, transport);
/* start playing media stream */
- sprintf(uri, "%s/", url);
+ snprintf(uri, strlen(url) + 32, "%s/", url);
rtsp_play(curl, uri, range);
printf("Playing video, press any key to stop ...");
_getch();
@@ -254,11 +263,13 @@ int main(int argc, char * const argv[])
/* cleanup */
curl_easy_cleanup(curl);
curl = NULL;
- } else {
+ }
+ else {
fprintf(stderr, "curl_easy_init() failed\n");
}
curl_global_cleanup();
- } else {
+ }
+ else {
fprintf(stderr, "curl_global_init(%s) failed: %d\n",
"CURL_GLOBAL_ALL", res);
}
diff --git a/docs/examples/sampleconv.c b/docs/examples/sampleconv.c
index 3db31609..eece6aae 100644
--- a/docs/examples/sampleconv.c
+++ b/docs/examples/sampleconv.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,10 +19,13 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * This is a simple example showing how a program on a non-ASCII platform
+ * would invoke callbacks to do its own codeset conversions instead of
+ * using the built-in iconv functions in libcurl.
+ * </DESC>
+ */
/*
- This is a simple example showing how a program on a non-ASCII platform
- would invoke callbacks to do its own codeset conversions instead of
- using the built-in iconv functions in libcurl.
The IBM-1047 EBCDIC codeset is used for this example but the code
would be similar for other non-ASCII codesets.
@@ -46,10 +49,11 @@ CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length)
int rc;
tempptrin = tempptrout = buffer;
rc = platform_a2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if (rc == PLATFORM_CONV_OK) {
- return(CURLE_OK);
- } else {
- return(CURLE_CONV_FAILED);
+ if(rc == PLATFORM_CONV_OK) {
+ return CURLE_OK;
+ }
+ else {
+ return CURLE_CONV_FAILED;
}
}
@@ -60,10 +64,11 @@ CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length)
int rc;
tempptrin = tempptrout = buffer;
rc = platform_e2a(&tempptrin, &bytes, &tempptrout, &bytes);
- if (rc == PLATFORM_CONV_OK) {
- return(CURLE_OK);
- } else {
- return(CURLE_CONV_FAILED);
+ if(rc == PLATFORM_CONV_OK) {
+ return CURLE_OK;
+ }
+ else {
+ return CURLE_CONV_FAILED;
}
}
@@ -74,10 +79,11 @@ CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length)
int rc;
tempptrin = tempptrout = buffer;
rc = platform_u2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if (rc == PLATFORM_CONV_OK) {
- return(CURLE_OK);
- } else {
- return(CURLE_CONV_FAILED);
+ if(rc == PLATFORM_CONV_OK) {
+ return CURLE_OK;
+ }
+ else {
+ return CURLE_CONV_FAILED;
}
}
diff --git a/docs/examples/sendrecv.c b/docs/examples/sendrecv.c
index 88fddf59..41e283cd 100644
--- a/docs/examples/sendrecv.c
+++ b/docs/examples/sendrecv.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* An example of curl_easy_send() and curl_easy_recv() usage. */
+/* <DESC>
+ * An example of curl_easy_send() and curl_easy_recv() usage.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -41,12 +44,10 @@ static int wait_on_socket(curl_socket_t sockfd, int for_recv, long timeout_ms)
FD_SET(sockfd, &errfd); /* always check for error */
- if(for_recv)
- {
+ if(for_recv) {
FD_SET(sockfd, &infd);
}
- else
- {
+ else {
FD_SET(sockfd, &outfd);
}
@@ -66,6 +67,14 @@ int main(void)
size_t iolen;
curl_off_t nread;
+ /* A general note of caution here: if you're using curl_easy_recv() or
+ curl_easy_send() to implement HTTP or _any_ other protocol libcurl
+ supports "natively", you're doing it wrong and you should stop.
+
+ This example uses HTTP only to show how to use this API, it does not
+ suggest that writing an application doing this is sensible.
+ */
+
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
@@ -73,8 +82,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
res = curl_easy_perform(curl);
- if(CURLE_OK != res)
- {
+ if(CURLE_OK != res) {
printf("Error: %s\n", strerror(res));
return 1;
}
@@ -85,17 +93,15 @@ int main(void)
*/
res = curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, &sockextr);
- if(CURLE_OK != res)
- {
+ if(CURLE_OK != res) {
printf("Error: %s\n", curl_easy_strerror(res));
return 1;
}
- sockfd = sockextr;
+ sockfd = (curl_socket_t)sockextr;
/* wait for the socket to become ready for sending */
- if(!wait_on_socket(sockfd, 0, 60000L))
- {
+ if(!wait_on_socket(sockfd, 0, 60000L)) {
printf("Error: timeout.\n");
return 1;
}
@@ -105,16 +111,14 @@ int main(void)
* to see if all the request has been sent */
res = curl_easy_send(curl, request, strlen(request), &iolen);
- if(CURLE_OK != res)
- {
+ if(CURLE_OK != res) {
printf("Error: %s\n", curl_easy_strerror(res));
return 1;
}
puts("Reading response.");
/* read the response */
- for(;;)
- {
+ for(;;) {
char buf[1024];
wait_on_socket(sockfd, 1, 60000L);
diff --git a/docs/examples/sepheaders.c b/docs/examples/sepheaders.c
index 7402e354..a865d579 100644
--- a/docs/examples/sepheaders.c
+++ b/docs/examples/sepheaders.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Simple HTTP GET that stores the headers in a separate file
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -27,7 +31,7 @@
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
- int written = fwrite(ptr, size, nmemb, (FILE *)stream);
+ size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c
index 2641c713..11c87cd1 100644
--- a/docs/examples/sessioninfo.c
+++ b/docs/examples/sessioninfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Uses the CURLINFO_TLS_SESSION data.
+ * </DESC>
+ */
/* Note that this example currently requires cURL to be linked against
GnuTLS (and this program must also be linked against -lgnutls). */
diff --git a/docs/examples/sftpget.c b/docs/examples/sftpget.c
index 434299dc..1ca7448e 100644
--- a/docs/examples/sftpget.c
+++ b/docs/examples/sftpget.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Gets a file using an SFTP URL.
+ * </DESC>
+ */
#include <stdio.h>
diff --git a/docs/examples/simple.c b/docs/examples/simple.c
index 1912ce66..7226f4b9 100644
--- a/docs/examples/simple.c
+++ b/docs/examples/simple.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Very simple HTTP GET
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/simplepost.c b/docs/examples/simplepost.c
index 8657771f..99df057d 100644
--- a/docs/examples/simplepost.c
+++ b/docs/examples/simplepost.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Very simple HTTP POST
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
diff --git a/docs/examples/simplessl.c b/docs/examples/simplessl.c
index aefb79f6..81713ab8 100644
--- a/docs/examples/simplessl.c
+++ b/docs/examples/simplessl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Shows HTTPS usage with client certs and optional ssl engine use.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -43,7 +47,6 @@
int main(void)
{
- int i;
CURL *curl;
CURLcode res;
FILE *headerfile;
@@ -51,6 +54,7 @@ int main(void)
static const char *pCertFile = "testcert.pem";
static const char *pCACertFile="cacert.pem";
+ static const char *pHeaderFile = "dumpit";
const char *pKeyName;
const char *pKeyType;
@@ -67,7 +71,7 @@ int main(void)
pEngine = NULL;
#endif
- headerfile = fopen("dumpit", "w");
+ headerfile = fopen(pHeaderFile, "wb");
curl_global_init(CURL_GLOBAL_DEFAULT);
@@ -77,47 +81,46 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
- for(i = 0; i < 1; i++) /* single-iteration loop, just to break out from */
- {
- if (pEngine) /* use crypto engine */
- {
- if (curl_easy_setopt(curl, CURLOPT_SSLENGINE,pEngine) != CURLE_OK)
- { /* load the crypto engine */
- fprintf(stderr,"can't set crypto engine\n");
+ do { /* dummy loop, just to break out from */
+ if(pEngine) {
+ /* use crypto engine */
+ if(curl_easy_setopt(curl, CURLOPT_SSLENGINE, pEngine) != CURLE_OK) {
+ /* load the crypto engine */
+ fprintf(stderr, "can't set crypto engine\n");
break;
}
- if (curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT,1L) != CURLE_OK)
- { /* set the crypto engine as default */
+ if(curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L) != CURLE_OK) {
+ /* set the crypto engine as default */
/* only needed for the first time you load
a engine in a curl object... */
- fprintf(stderr,"can't set crypto engine as default\n");
+ fprintf(stderr, "can't set crypto engine as default\n");
break;
}
}
/* cert is stored PEM coded in file... */
/* since PEM is default, we needn't set it for PEM */
- curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
+ curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
/* set the cert for client authentication */
- curl_easy_setopt(curl,CURLOPT_SSLCERT,pCertFile);
+ curl_easy_setopt(curl, CURLOPT_SSLCERT, pCertFile);
/* sorry, for engine we must set the passphrase
(if the key has one...) */
- if (pPassphrase)
- curl_easy_setopt(curl,CURLOPT_KEYPASSWD,pPassphrase);
+ if(pPassphrase)
+ curl_easy_setopt(curl, CURLOPT_KEYPASSWD, pPassphrase);
/* if we use a key stored in a crypto engine,
we must set the key type to "ENG" */
- curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,pKeyType);
+ curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, pKeyType);
/* set the private key (file or ID in engine) */
- curl_easy_setopt(curl,CURLOPT_SSLKEY,pKeyName);
+ curl_easy_setopt(curl, CURLOPT_SSLKEY, pKeyName);
/* set the file with the certs vaildating the server */
- curl_easy_setopt(curl,CURLOPT_CAINFO,pCACertFile);
+ curl_easy_setopt(curl, CURLOPT_CAINFO, pCACertFile);
/* disconnect if we can't validate server's cert */
- curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1L);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
@@ -127,7 +130,7 @@ int main(void)
curl_easy_strerror(res));
/* we are done... */
- }
+ } while(0);
/* always cleanup */
curl_easy_cleanup(curl);
}
diff --git a/docs/examples/smooth-gtk-thread.c b/docs/examples/smooth-gtk-thread.c
index 932f6e39..547cc0f3 100644
--- a/docs/examples/smooth-gtk-thread.c
+++ b/docs/examples/smooth-gtk-thread.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,9 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is a multi threaded application that uses a progress bar to show
+/* <DESC>
+ * A multi threaded application that uses a progress bar to show
* status. It uses Gtk+ to make a smooth pulse.
- *
+ * </DESC>
+ */
+/*
* Written by Jud Bishop after studying the other examples provided with
* libcurl.
*
@@ -71,22 +74,19 @@ void *pull_one_url(void *NaN)
/* Stop threads from entering unless j is incremented */
pthread_mutex_lock(&lock);
- while ( j < num_urls )
- {
+ while(j < num_urls) {
printf("j = %d\n", j);
http =
g_strdup_printf("xoap.weather.com/weather/local/%s?cc=*&dayf=5&unit=i\n",
urls[j]);
- printf( "http %s", http );
+ printf("http %s", http);
curl = curl_easy_init();
- if(curl)
- {
+ if(curl) {
- outfile = fopen(urls[j], "w");
- /* printf("fopen\n"); */
+ outfile = fopen(urls[j], "wb");
/* Set the URL and transfer type */
curl_easy_setopt(curl, CURLOPT_URL, http);
@@ -216,7 +216,7 @@ int main(int argc, char **argv)
g_signal_connect(G_OBJECT (top_window), "delete-event",
G_CALLBACK(cb_delete), NULL);
- if (!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0)
+ if(!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0)
g_warning("can't create the thread");
gtk_main();
@@ -225,4 +225,3 @@ int main(int argc, char **argv)
return 0;
}
-
diff --git a/docs/examples/smtp-expn.c b/docs/examples/smtp-expn.c
index 0322d2fc..fb0ed1d1 100644
--- a/docs/examples/smtp-expn.c
+++ b/docs/examples/smtp-expn.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,11 +19,17 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example showing how to expand an e-mail mailing list
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
-/* This is a simple example showing how to expand an email mailing list.
+/* This is a simple example showing how to expand an e-mail mailing list.
*
* Notes:
*
diff --git a/docs/examples/smtp-mail.c b/docs/examples/smtp-mail.c
index eea90b8a..315bb2cc 100644
--- a/docs/examples/smtp-mail.c
+++ b/docs/examples/smtp-mail.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example showing how to send e-mails
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
@@ -39,7 +45,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -89,11 +96,12 @@ int main(void)
/* This is the URL for your mailserver */
curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
* autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
*/
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
@@ -122,13 +130,13 @@ int main(void)
/* Free the list of recipients */
curl_slist_free_all(recipients);
- /* curl won't send the QUIT command until you call cleanup, so you should be
- * able to re-use this connection for additional messages (setting
+ /* curl won't send the QUIT command until you call cleanup, so you should
+ * be able to re-use this connection for additional messages (setting
* CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
* curl_easy_perform() again. It may not be a good idea to keep the
- * connection open for a very long time though (more than a few minutes may
- * result in the server timing out the connection), and you do want to clean
- * up in the end.
+ * connection open for a very long time though (more than a few minutes
+ * may result in the server timing out the connection), and you do want to
+ * clean up in the end.
*/
curl_easy_cleanup(curl);
}
diff --git a/docs/examples/smtp-multi.c b/docs/examples/smtp-multi.c
index 4098c7d1..89e1d941 100644
--- a/docs/examples/smtp-multi.c
+++ b/docs/examples/smtp-multi.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example using the multi interface
+ * </DESC>
+ */
+
#include <string.h>
#include <curl/curl.h>
@@ -40,7 +46,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP multi example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -180,8 +187,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/smtp-ssl.c b/docs/examples/smtp-ssl.c
index a774403f..f0123408 100644
--- a/docs/examples/smtp-ssl.c
+++ b/docs/examples/smtp-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example using SSL
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
@@ -40,7 +46,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP SSL example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -115,11 +122,12 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
* autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
*/
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
diff --git a/docs/examples/smtp-tls.c b/docs/examples/smtp-tls.c
index 4872dbdf..c863e059 100644
--- a/docs/examples/smtp-tls.c
+++ b/docs/examples/smtp-tls.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example using TLS
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
@@ -40,7 +46,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP TLS example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -110,18 +117,19 @@ int main(void)
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
* That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though.
- * Instead, you should get the issuer certificate (or the host certificate
- * if the certificate is self-signed) and add it to the set of certificates
- * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
- * docs/SSLCERTS for more information. */
+ * authentication details in plain text though. Instead, you should get
+ * the issuer certificate (or the host certificate if the certificate is
+ * self-signed) and add it to the set of certificates that are known to
+ * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
+ * for more information. */
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
* autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
*/
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
diff --git a/docs/examples/smtp-vrfy.c b/docs/examples/smtp-vrfy.c
index 4e44cea9..4e0623fb 100644
--- a/docs/examples/smtp-vrfy.c
+++ b/docs/examples/smtp-vrfy.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,11 +19,17 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example showing how to verify an e-mail address
+ * </DESC>
+ */
+
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
-/* This is a simple example showing how to verify an email address from an
+/* This is a simple example showing how to verify an e-mail address from an
* SMTP server.
*
* Notes:
diff --git a/docs/examples/synctime.c b/docs/examples/synctime.c
index cd7d0731..1c787bb9 100644
--- a/docs/examples/synctime.c
+++ b/docs/examples/synctime.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Set your system time from a remote HTTP server's Date: header.
+ * </DESC>
+ */
/* This example code only builds as-is on Windows.
*
* While Unix/Linux user, you do not need this software.
@@ -125,7 +129,7 @@ size_t SyncTime_CURL_WriteOutput(void *ptr, size_t size, size_t nmemb,
void *stream)
{
fwrite(ptr, size, nmemb, stream);
- return(nmemb*size);
+ return (nmemb*size);
}
size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
@@ -134,17 +138,17 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
int i, RetVal;
char TmpStr1[26], TmpStr2[26];
- if (ShowAllHeader == 1)
+ if(ShowAllHeader == 1)
fprintf(stderr, "%s", (char *)(ptr));
- if (strncmp((char *)(ptr), "Date:", 5) == 0) {
- if (ShowAllHeader == 0)
+ if(strncmp((char *)(ptr), "Date:", 5) == 0) {
+ if(ShowAllHeader == 0)
fprintf(stderr, "HTTP Server. %s", (char *)(ptr));
- if (AutoSyncTime == 1) {
+ if(AutoSyncTime == 1) {
*TmpStr1 = 0;
*TmpStr2 = 0;
- if (strlen((char *)(ptr)) > 50) /* Can prevent buffer overflow to
+ if(strlen((char *)(ptr)) > 50) /* Can prevent buffer overflow to
TmpStr1 & 2? */
AutoSyncTime = 0;
else {
@@ -152,11 +156,10 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
TmpStr1, &SYSTime.wDay, TmpStr2, &SYSTime.wYear,
&SYSTime.wHour, &SYSTime.wMinute, &SYSTime.wSecond);
- if (RetVal == 7) {
-
+ if(RetVal == 7) {
SYSTime.wMilliseconds = 500; /* adjust to midpoint, 0.5 sec */
- for (i=0; i<12; i++) {
- if (strcmp(MthStr[i], TmpStr2) == 0) {
+ for(i=0; i<12; i++) {
+ if(strcmp(MthStr[i], TmpStr2) == 0) {
SYSTime.wMonth = i+1;
break;
}
@@ -170,21 +173,21 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
}
}
- if (strncmp((char *)(ptr), "X-Cache: HIT", 12) == 0) {
+ if(strncmp((char *)(ptr), "X-Cache: HIT", 12) == 0) {
fprintf(stderr, "ERROR: HTTP Server data is cached."
" Server Date is no longer valid.\n");
AutoSyncTime = 0;
}
- return(nmemb*size);
+ return (nmemb*size);
}
void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
char *proxy_user_password)
{
- if (strlen(proxy_port) > 0)
+ if(strlen(proxy_port) > 0)
curl_easy_setopt(curl, CURLOPT_PROXY, proxy_port);
- if (strlen(proxy_user_password) > 0)
+ if(strlen(proxy_user_password) > 0)
curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
#ifdef SYNCTIME_UA
@@ -201,7 +204,7 @@ int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
CURLcode res;
outfile = NULL;
- if (HttpGetBody == HTTP_COMMAND_HEAD)
+ if(HttpGetBody == HTTP_COMMAND_HEAD)
curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
else {
outfile = fopen(OutFileName, "wb");
@@ -210,7 +213,7 @@ int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
curl_easy_setopt(curl, CURLOPT_URL, URL_Str);
res = curl_easy_perform(curl);
- if (outfile != NULL)
+ if(outfile != NULL)
fclose(outfile);
return res; /* (CURLE_OK) */
}
@@ -240,7 +243,7 @@ int conf_init(conf_t *conf)
int i;
*conf->http_proxy = 0;
- for (i=0; i<MAX_STRING1; i++)
+ for(i=0; i<MAX_STRING1; i++)
conf->proxy_user[i] = 0; /* Clean up password from memory */
*conf->timeserver = 0;
return 1;
@@ -268,24 +271,24 @@ int main(int argc, char *argv[])
RetValue = 0; /* Successful Exit */
conf_init(conf);
- if (argc > 1) {
- while (OptionIndex < argc) {
- if (strncmp(argv[OptionIndex], "--server=", 9) == 0)
+ if(argc > 1) {
+ while(OptionIndex < argc) {
+ if(strncmp(argv[OptionIndex], "--server=", 9) == 0)
snprintf(conf->timeserver, MAX_STRING, "%s", &argv[OptionIndex][9]);
- if (strcmp(argv[OptionIndex], "--showall") == 0)
+ if(strcmp(argv[OptionIndex], "--showall") == 0)
ShowAllHeader = 1;
- if (strcmp(argv[OptionIndex], "--synctime") == 0)
+ if(strcmp(argv[OptionIndex], "--synctime") == 0)
AutoSyncTime = 1;
- if (strncmp(argv[OptionIndex], "--proxy-user=", 13) == 0)
+ if(strncmp(argv[OptionIndex], "--proxy-user=", 13) == 0)
snprintf(conf->proxy_user, MAX_STRING, "%s", &argv[OptionIndex][13]);
- if (strncmp(argv[OptionIndex], "--proxy=", 8) == 0)
+ if(strncmp(argv[OptionIndex], "--proxy=", 8) == 0)
snprintf(conf->http_proxy, MAX_STRING, "%s", &argv[OptionIndex][8]);
- if ((strcmp(argv[OptionIndex], "--help") == 0) ||
+ if((strcmp(argv[OptionIndex], "--help") == 0) ||
(strcmp(argv[OptionIndex], "/?") == 0)) {
showUsage();
return 0;
@@ -294,13 +297,13 @@ int main(int argc, char *argv[])
}
}
- if (*conf->timeserver == 0) /* Use default server for time information */
+ if(*conf->timeserver == 0) /* Use default server for time information */
snprintf(conf->timeserver, MAX_STRING, "%s", DefaultTimeServer[0]);
/* Init CURL before usage */
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
- if (curl) {
+ if(curl) {
SyncTime_CURL_Init(curl, conf->http_proxy, conf->proxy_user);
/* Calculating time diff between GMT and localtime */
@@ -312,7 +315,7 @@ int main(int argc, char *argv[])
tzonediffFloat = difftime(tt_local, tt_gmt);
tzonediffWord = (int)(tzonediffFloat/3600.0);
- if ((double)(tzonediffWord * 3600) == tzonediffFloat)
+ if((double)(tzonediffWord * 3600) == tzonediffFloat)
snprintf(tzoneBuf, 15, "%+03d'00'", tzonediffWord);
else
snprintf(tzoneBuf, 15, "%+03d'30'", tzonediffWord);
@@ -341,9 +344,9 @@ int main(int argc, char *argv[])
LOCALTime.wMilliseconds);
fprintf(stderr, "\nAfter HTTP. Date: %s%s\n", timeBuf, tzoneBuf);
- if (AutoSyncTime == 3) {
+ if(AutoSyncTime == 3) {
/* Synchronising computer clock */
- if (!SetSystemTime(&SYSTime)) { /* Set system time */
+ if(!SetSystemTime(&SYSTime)) { /* Set system time */
fprintf(stderr, "ERROR: Unable to set system time.\n");
RetValue = 1;
}
diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c
index a7e9c2de..5f1d9b92 100644
--- a/docs/examples/threaded-ssl.c
+++ b/docs/examples/threaded-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,14 +19,19 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show the required mutex callback setups for GnuTLS and OpenSSL when using
+ * libcurl multi-threaded.
+ * </DESC>
+ */
/* A multi-threaded example that uses pthreads and fetches 4 remote files at
* once over HTTPS. The lock callbacks and stuff assume OpenSSL or GnuTLS
* (libgcrypt) so far.
*
* OpenSSL docs for this:
- * http://www.openssl.org/docs/crypto/threads.html
+ * https://www.openssl.org/docs/crypto/threads.html
* gcrypt docs for this:
- * http://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
+ * https://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
*/
#define USE_OPENSSL /* or USE_GNUTLS accordingly */
@@ -46,7 +51,7 @@ static void lock_callback(int mode, int type, char *file, int line)
{
(void)file;
(void)line;
- if (mode & CRYPTO_LOCK) {
+ if(mode & CRYPTO_LOCK) {
pthread_mutex_lock(&(lockarray[type]));
}
else {
@@ -59,7 +64,7 @@ static unsigned long thread_id(void)
unsigned long ret;
ret=(unsigned long)pthread_self();
- return(ret);
+ return ret;
}
static void init_locks(void)
@@ -68,8 +73,8 @@ static void init_locks(void)
lockarray=(pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() *
sizeof(pthread_mutex_t));
- for (i=0; i<CRYPTO_num_locks(); i++) {
- pthread_mutex_init(&(lockarray[i]),NULL);
+ for(i=0; i<CRYPTO_num_locks(); i++) {
+ pthread_mutex_init(&(lockarray[i]), NULL);
}
CRYPTO_set_id_callback((unsigned long (*)())thread_id);
@@ -81,7 +86,7 @@ static void kill_locks(void)
int i;
CRYPTO_set_locking_callback(NULL);
- for (i=0; i<CRYPTO_num_locks(); i++)
+ for(i=0; i<CRYPTO_num_locks(); i++)
pthread_mutex_destroy(&(lockarray[i]));
OPENSSL_free(lockarray);
diff --git a/docs/examples/url2file.c b/docs/examples/url2file.c
index adf696c9..39f84d68 100644
--- a/docs/examples/url2file.c
+++ b/docs/examples/url2file.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Download a given URL into a local file named page.out.
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -37,7 +41,7 @@ int main(int argc, char *argv[])
static const char *pagefilename = "page.out";
FILE *pagefile;
- if(argc < 2 ) {
+ if(argc < 2) {
printf("Usage: %s <URL>\n", argv[0]);
return 1;
}
@@ -61,7 +65,7 @@ int main(int argc, char *argv[])
/* open the file */
pagefile = fopen(pagefilename, "wb");
- if (pagefile) {
+ if(pagefile) {
/* write the page body to this file handle */
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
diff --git a/docs/examples/usercertinmem.c b/docs/examples/usercertinmem.c
index dd56c616..47573ebb 100644
--- a/docs/examples/usercertinmem.c
+++ b/docs/examples/usercertinmem.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,10 +19,13 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
/* Example using an in memory PEM user certificate and RSA key to retrieve an
* https page.
- * Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
- * Note that to maintain simplicity this example does not use a CA certificate
+ * </DESC>
+ */
+/* Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
+ * Note that to maintain simplicity this example does not use a CA certificate
* for peer verification. However, some form of peer verification
* must be used in real circumstances when a secure connection is required.
*/
@@ -35,8 +38,8 @@
static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
{
- fwrite(ptr,size,nmemb,stream);
- return(nmemb*size);
+ fwrite(ptr, size, nmemb, stream);
+ return (nmemb*size);
}
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
@@ -117,7 +120,7 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
/* get a BIO */
bio = BIO_new_mem_buf((char *)mypem, -1);
- if (bio == NULL) {
+ if(bio == NULL) {
printf("BIO_new_mem_buf failed\n");
}
@@ -125,49 +128,49 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
* structure that SSL can use
*/
cert = PEM_read_bio_X509(bio, NULL, 0, NULL);
- if (cert == NULL) {
+ if(cert == NULL) {
printf("PEM_read_bio_X509 failed...\n");
}
/*tell SSL to use the X509 certificate*/
ret = SSL_CTX_use_certificate((SSL_CTX*)sslctx, cert);
- if (ret != 1) {
+ if(ret != 1) {
printf("Use certificate failed\n");
}
/*create a bio for the RSA key*/
kbio = BIO_new_mem_buf((char *)mykey, -1);
- if (kbio == NULL) {
+ if(kbio == NULL) {
printf("BIO_new_mem_buf failed\n");
}
/*read the key bio into an RSA object*/
rsa = PEM_read_bio_RSAPrivateKey(kbio, NULL, 0, NULL);
- if (rsa == NULL) {
+ if(rsa == NULL) {
printf("Failed to create key bio\n");
}
/*tell SSL to use the RSA key from memory*/
ret = SSL_CTX_use_RSAPrivateKey((SSL_CTX*)sslctx, rsa);
- if (ret != 1) {
+ if(ret != 1) {
printf("Use Key failed\n");
}
/* free resources that have been allocated by openssl functions */
- if (bio)
+ if(bio)
BIO_free(bio);
- if (kbio)
+ if(kbio)
BIO_free(kbio);
- if (rsa)
+ if(rsa)
RSA_free(rsa);
- if (cert)
+ if(cert)
X509_free(cert);
/* all set to go */
- return CURLE_OK ;
+ return CURLE_OK;
}
int main(void)
@@ -177,28 +180,28 @@ int main(void)
rv = curl_global_init(CURL_GLOBAL_ALL);
ch = curl_easy_init();
- rv = curl_easy_setopt(ch,CURLOPT_VERBOSE, 0L);
- rv = curl_easy_setopt(ch,CURLOPT_HEADER, 0L);
- rv = curl_easy_setopt(ch,CURLOPT_NOPROGRESS, 1L);
- rv = curl_easy_setopt(ch,CURLOPT_NOSIGNAL, 1L);
- rv = curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
- rv = curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
- rv = curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
- rv = curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
- rv = curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
+ rv = curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
+ rv = curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
+ rv = curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, writefunction);
+ rv = curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
+ rv = curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, writefunction);
+ rv = curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
+ rv = curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
/* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
no CA certificate*/
- rv = curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER, 0L);
- rv = curl_easy_setopt(ch,CURLOPT_SSL_VERIFYHOST, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYHOST, 0L);
rv = curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
rv = curl_easy_setopt(ch, CURLOPT_SSLKEYTYPE, "PEM");
/* first try: retrieve page without user certificate and key -> will fail
*/
rv = curl_easy_perform(ch);
- if (rv==CURLE_OK) {
+ if(rv==CURLE_OK) {
printf("*** transfer succeeded ***\n");
}
else {
@@ -209,9 +212,9 @@ int main(void)
* load the certificate and key by installing a function doing the necessary
* "modifications" to the SSL CONTEXT just before link init
*/
- rv = curl_easy_setopt(ch,CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
+ rv = curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
rv = curl_easy_perform(ch);
- if (rv==CURLE_OK) {
+ if(rv==CURLE_OK) {
printf("*** transfer succeeded ***\n");
}
else {
diff --git a/docs/examples/version-check.pl b/docs/examples/version-check.pl
index 92f0808d..074e50d8 100755
--- a/docs/examples/version-check.pl
+++ b/docs/examples/version-check.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/docs/examples/xmlstream.c b/docs/examples/xmlstream.c
index 81934450..8066828f 100644
--- a/docs/examples/xmlstream.c
+++ b/docs/examples/xmlstream.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -19,8 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Stream-parse a document using the streaming Expat parser.
- * Written by David Strauss
+/* <DESC>
+ * Stream-parse a document using the streaming Expat parser.
+ * </DESC>
+ */
+/* Written by David Strauss
*
* Expat => http://www.libexpat.org/
*
@@ -48,7 +51,8 @@ struct ParserStruct {
struct MemoryStruct characters;
};
-static void startElement(void *userData, const XML_Char *name, const XML_Char **atts)
+static void startElement(void *userData, const XML_Char *name,
+ const XML_Char **atts)
{
struct ParserStruct *state = (struct ParserStruct *) userData;
state->tags++;
@@ -86,16 +90,18 @@ static void endElement(void *userData, const XML_Char *name)
printf("%5lu %10lu %s\n", state->depth, state->characters.size, name);
}
-static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb, void *userp)
+static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb,
+ void *userp)
{
XML_Parser parser = (XML_Parser) userp;
size_t real_size = length * nmemb;
struct ParserStruct *state = (struct ParserStruct *) XML_GetUserData(parser);
/* Only parse if we're not already in a failure state. */
- if (state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
+ if(state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
int error_code = XML_GetErrorCode(parser);
- fprintf(stderr, "Parsing response buffer of length %lu failed with error code %d (%s).\n",
+ fprintf(stderr, "Parsing response buffer of length %lu failed"
+ " with error code %d (%s).\n",
real_size, error_code, XML_ErrorString(error_code));
state->ok = 0;
}
@@ -123,7 +129,8 @@ int main(void)
/* Initialize a libcurl handle. */
curl_global_init(CURL_GLOBAL_ALL ^ CURL_GLOBAL_SSL);
curl_handle = curl_easy_init();
- curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.w3schools.com/xml/simple.xml");
+ curl_easy_setopt(curl_handle, CURLOPT_URL,
+ "http://www.w3schools.com/xml/simple.xml");
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, parseStreamCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)parser);
@@ -135,9 +142,9 @@ int main(void)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
- else if (state.ok) {
+ else if(state.ok) {
/* Expat requires one final call to finalize parsing. */
- if (XML_Parse(parser, NULL, 0, 1) == 0) {
+ if(XML_Parse(parser, NULL, 0, 1) == 0) {
int error_code = XML_GetErrorCode(parser);
fprintf(stderr, "Finalizing parsing failed with error code %d (%s).\n",
error_code, XML_ErrorString(error_code));
diff --git a/docs/libcurl/ABI b/docs/libcurl/ABI
index ef0caa6f..c7c91420 100644
--- a/docs/libcurl/ABI
+++ b/docs/libcurl/ABI
@@ -1,63 +1,55 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- libcurl's binary interface
-
ABI - Application Binary Interface
-----------------------------------
+==================================
- "ABI" describes the low-level interface between an application program and a
- library. Calling conventions, function arguments, return values, struct
- sizes/defines and more.
+ "ABI" describes the low-level interface between an application program and a
+ library. Calling conventions, function arguments, return values, struct
+ sizes/defines and more.
- [Wikipedia has a longer description](http://en.wikipedia.org/wiki/Application_binary_interface)
+ [Wikipedia has a longer description](https://en.wikipedia.org/wiki/Application_binary_interface)
Upgrades
--------
- In the vast majority of all cases, a typical libcurl upgrade does not break
- the ABI at all. Your application can remain using libcurl just as before,
- only with less bugs and possibly with added new features. You need to read
- the release notes, and if they mention an ABI break/soname bump, you may
- have to verify that your application still builds fine and uses libcurl as
- it now is defined to work.
+ In the vast majority of all cases, a typical libcurl upgrade does not break
+ the ABI at all. Your application can remain using libcurl just as before,
+ only with less bugs and possibly with added new features. You need to read
+ the release notes, and if they mention an ABI break/soname bump, you may have
+ to verify that your application still builds fine and uses libcurl as it now
+ is defined to work.
Version Numbers
---------------
- In libcurl land, you really can't tell by the libcurl version number if that
- libcurl is binary compatible or not with another libcurl version.
+ In libcurl land, you really can't tell by the libcurl version number if that
+ libcurl is binary compatible or not with another libcurl version.
Soname Bumps
------------
- Whenever there are changes done to the library that will cause an ABI
- breakage, that may require your application to get attention or possibly be
- changed to adhere to new things, we will bump the soname. Then the library
- will get a different output name and thus can in fact be installed in
- parallel with an older installed lib (on most systems). Thus, old
- applications built against the previous ABI version will remain working and
- using the older lib, while newer applications build and use the newer one.
+ Whenever there are changes done to the library that will cause an ABI
+ breakage, that may require your application to get attention or possibly be
+ changed to adhere to new things, we will bump the soname. Then the library
+ will get a different output name and thus can in fact be installed in
+ parallel with an older installed lib (on most systems). Thus, old
+ applications built against the previous ABI version will remain working and
+ using the older lib, while newer applications build and use the newer one.
- During the first seven years of libcurl releases, there have only been four
- ABI breakages.
+ During the first seven years of libcurl releases, there have only been four
+ ABI breakages.
- We are determined to bump the SONAME as rarely as possible. Ideally, we
- never do it again.
+ We are determined to bump the SONAME as rarely as possible. Ideally, we
+ never do it again.
Downgrades
----------
- Going to an older libcurl version from one you're currently using can be a
- tricky thing. Mostly we add features and options to newer libcurls as that
- won't break ABI or hamper existing applications. This has the implication
- that going backwards may get you in a situation where you pick a libcurl
- that doesn't support the options your application needs. Or possibly you
- even downgrade so far so you cross an ABI break border and thus a different
- soname, and then your application may need to adapt to the modified ABI.
+ Going to an older libcurl version from one you're currently using can be a
+ tricky thing. Mostly we add features and options to newer libcurls as that
+ won't break ABI or hamper existing applications. This has the implication
+ that going backwards may get you in a situation where you pick a libcurl that
+ doesn't support the options your application needs. Or possibly you even
+ downgrade so far so you cross an ABI break border and thus a different
+ soname, and then your application may need to adapt to the modified ABI.
History
-------
diff --git a/docs/libcurl/Makefile.am b/docs/libcurl/Makefile.am
index 39272ac4..49acd977 100644
--- a/docs/libcurl/Makefile.am
+++ b/docs/libcurl/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -29,18 +29,19 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \
curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3 \
curl_slist_append.3 curl_slist_free_all.3 curl_version.3 \
curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3 \
- curl_strequal.3 curl_mprintf.3 curl_global_init.3 curl_global_cleanup.3 \
- curl_multi_add_handle.3 curl_multi_cleanup.3 curl_multi_fdset.3 \
- curl_multi_info_read.3 curl_multi_init.3 curl_multi_perform.3 \
- curl_multi_remove_handle.3 curl_share_cleanup.3 curl_share_init.3 \
- curl_share_setopt.3 libcurl.3 libcurl-easy.3 libcurl-multi.3 \
- libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
+ curl_strequal.3 curl_mprintf.3 curl_global_init.3 \
+ curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3 \
+ curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3 \
+ curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3 \
+ curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3 \
+ libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3 \
libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.3 \
curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3 \
curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3 \
curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3 \
- curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3
+ curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3 \
+ libcurl-thread.3 curl_multi_socket_all.3
HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html \
@@ -60,27 +61,29 @@ HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_unescape.html curl_multi_setopt.html curl_multi_socket.html \
curl_multi_timeout.html curl_formget.html curl_multi_assign.html \
curl_easy_pause.html curl_easy_recv.html curl_easy_send.html \
- curl_multi_socket_action.html curl_multi_wait.html libcurl-symbols.html
+ curl_multi_socket_action.html curl_multi_wait.html \
+ libcurl-symbols.html libcurl-thread.html curl_multi_socket_all.html
PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf \
curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf \
curl_easy_duphandle.pdf curl_formadd.pdf curl_formfree.pdf \
- curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
- curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
+ curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
+ curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
curl_escape.pdf curl_unescape.pdf curl_free.pdf curl_strequal.pdf \
curl_mprintf.pdf curl_global_init.pdf curl_global_cleanup.pdf \
curl_multi_add_handle.pdf curl_multi_cleanup.pdf curl_multi_fdset.pdf \
curl_multi_info_read.pdf curl_multi_init.pdf curl_multi_perform.pdf \
- curl_multi_remove_handle.pdf curl_share_cleanup.pdf curl_share_init.pdf \
- curl_share_setopt.pdf libcurl.pdf libcurl-multi.pdf libcurl-easy.pdf \
- libcurl-share.pdf libcurl-errors.pdf curl_easy_strerror.pdf \
- curl_multi_strerror.pdf curl_share_strerror.pdf \
- curl_global_init_mem.pdf libcurl-tutorial.pdf curl_easy_reset.pdf \
- curl_easy_escape.pdf curl_easy_unescape.pdf curl_multi_setopt.pdf \
- curl_multi_socket.pdf curl_multi_timeout.pdf curl_formget.pdf \
- curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf \
- curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf \
- libcurl-symbols.pdf
+ curl_multi_remove_handle.pdf curl_share_cleanup.pdf \
+ curl_share_init.pdf curl_share_setopt.pdf libcurl.pdf \
+ libcurl-multi.pdf libcurl-easy.pdf libcurl-share.pdf \
+ libcurl-errors.pdf curl_easy_strerror.pdf curl_multi_strerror.pdf \
+ curl_share_strerror.pdf curl_global_init_mem.pdf libcurl-tutorial.pdf \
+ curl_easy_reset.pdf curl_easy_escape.pdf curl_easy_unescape.pdf \
+ curl_multi_setopt.pdf curl_multi_socket.pdf curl_multi_timeout.pdf \
+ curl_formget.pdf curl_multi_assign.pdf curl_easy_pause.pdf \
+ curl_easy_recv.pdf curl_easy_send.pdf curl_multi_socket_action.pdf \
+ curl_multi_wait.pdf libcurl-symbols.pdf libcurl-thread.pdf \
+ curl_multi_socket_all.pdf
m4macrodir = $(datadir)/aclocal
dist_m4macro_DATA = libcurl.m4
@@ -89,7 +92,7 @@ CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) libcurl-symbols.3
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
symbols-in-versions symbols.pl mksymbolsmanpage.pl
-MAN2HTML= roffit --mandir=. < $< >$@
+MAN2HTML= roffit --mandir=. $< >$@
SUFFIXES = .3 .html
@@ -97,13 +100,13 @@ libcurl-symbols.3: $(srcdir)/symbols-in-versions $(srcdir)/mksymbolsmanpage.pl
perl $(srcdir)/mksymbolsmanpage.pl < $(srcdir)/symbols-in-versions > $@
html: $(HTMLPAGES)
- cd opts; make html
+ cd opts && make html
.3.html:
$(MAN2HTML)
pdf: $(PDFPAGES)
- cd opts; make pdf
+ cd opts && make pdf
.3.pdf:
@(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
diff --git a/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index e8cd5509..cc5990e2 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.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/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index 34cba58c..262cebd3 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.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/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index da2b3822..d2b6cd28 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.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
@@ -26,7 +26,8 @@ curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
-.BI "char *curl_easy_escape( CURL *" curl ", char *" string ", int "length " );"
+.BI "char *curl_easy_escape( CURL *" curl ", const char *" string
+.BI ", int "length " );"
.ad
.SH DESCRIPTION
This function converts the given input \fIstring\fP to a URL encoded string
@@ -48,10 +49,10 @@ CURL *curl = curl_easy_init();
if(curl) {
char *output = curl_easy_escape(curl, "data to convert", 15);
if(output) {
- printf("Encoded: %s\n", output);
+ printf("Encoded: %s\\n", output);
curl_free(output);
}
-}}
+}
.fi
.SH "SEE ALSO"
.BR curl_easy_unescape "(3), " curl_free "(3), " RFC 3986
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index d48ca04c..2b4c7fe5 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -34,7 +34,7 @@ third argument \fBMUST\fP be a pointer to a long, a pointer to a char *, a
pointer to a struct curl_slist * or a pointer to a double (as this
documentation describes further down). The data pointed-to will be filled in
accordingly and can be relied upon only if the function returns CURLE_OK. Use
-this function AFTER a performed transfer if you want to get transfer- oriented
+this function AFTER a performed transfer if you want to get transfer related
data.
You should not free the memory returned by this function unless it is
@@ -42,248 +42,141 @@ explicitly mentioned below.
.SH AVAILABLE INFORMATION
The following information can be extracted:
.IP CURLINFO_EFFECTIVE_URL
-Pass a pointer to a char pointer to receive the last used effective URL.
+Last used URL.
+See \fICURLINFO_EFFECTIVE_URL(3)\fP
.IP CURLINFO_RESPONSE_CODE
-Pass a pointer to a long to receive the last received HTTP, FTP or SMTP
-response code. This option was previously known as CURLINFO_HTTP_CODE in
-libcurl 7.10.7 and earlier. The value will be zero if no server response code
-has been received. Note that a proxy's CONNECT response should be read with
-\fICURLINFO_HTTP_CONNECTCODE\fP and not this.
-
-Support for SMTP responses added in 7.25.0.
+Last received response code.
+See \fICURLINFO_RESPONSE_CODE(3)\fP
.IP CURLINFO_HTTP_CONNECTCODE
-Pass a pointer to a long to receive the last received proxy response code to a
-CONNECT request.
+Last proxy CONNECT response code.
+See \fICURLINFO_HTTP_CONNECTCODE(3)\fP
.IP CURLINFO_FILETIME
-Pass a pointer to a long to receive the remote time of the retrieved document
-(in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If you get
--1, it can be because of many reasons (unknown, the server hides it or the
-server doesn't support the command that tells document time etc) and the time
-of the document is unknown. Note that you must tell the server to collect this
-information before the transfer is made, by using the
-\fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or you will
-unconditionally get a -1 back. (Added in 7.5)
+Remote time of the retrieved document.
+See \fICURLINFO_FILETIME(3)\fP
.IP CURLINFO_TOTAL_TIME
-Pass a pointer to a double to receive the total time in seconds for the
-previous transfer, including name resolving, TCP connect etc.
+Total time of previous transfer.
+See \fICURLINFO_TOTAL_TIME(3)\fP
.IP CURLINFO_NAMELOOKUP_TIME
-Pass a pointer to a double to receive the time, in seconds, it took from the
-start until the name resolving was completed.
+Time from start until name resolving completed.
+See \fICURLINFO_NAMELOOKUP_TIME(3)\fP
.IP CURLINFO_CONNECT_TIME
-Pass a pointer to a double to receive the time, in seconds, it took from the
-start until the connect to the remote host (or proxy) was completed.
+Time from start until remote host or proxy completed.
+See \fICURLINFO_CONNECT_TIME(3)\fP
.IP CURLINFO_APPCONNECT_TIME
-Pass a pointer to a double to receive the time, in seconds, it took from the
-start until the SSL/SSH connect/handshake to the remote host was completed.
-This time is most often very near to the PRETRANSFER time, except for cases
-such as HTTP pipelining where the pretransfer time can be delayed due to waits
-in line for the pipeline and more. (Added in 7.19.0)
+Time from start until SSL/SSH handshake completed.
+See \fICURLINFO_APPCONNECT_TIME(3)\fP
.IP CURLINFO_PRETRANSFER_TIME
-Pass a pointer to a double to receive the time, in seconds, it took from the
-start until the file transfer is just about to begin. This includes all
-pre-transfer commands and negotiations that are specific to the particular
-protocol(s) involved. It does \fInot\fP involve the sending of the protocol-
-specific request that triggers a transfer.
+Time from start until just before the transfer begins.
+See \fICURLINFO_PRETRANSFER_TIME(3)\fP
.IP CURLINFO_STARTTRANSFER_TIME
-Pass a pointer to a double to receive the time, in seconds, it took from the
-start until the first byte is received by libcurl. This includes
-CURLINFO_PRETRANSFER_TIME and also the time the server needs to calculate the
-result.
+Time from start until just when the first byte is received.
+See \fICURLINFO_STARTTRANSFER_TIME(3)\fP
.IP CURLINFO_REDIRECT_TIME
-Pass a pointer to a double to receive the total time, in seconds, it took for
-all redirection steps include name lookup, connect, pretransfer and transfer
-before final transaction was started. CURLINFO_REDIRECT_TIME contains the
-complete execution time for multiple redirections. (Added in 7.9.7)
+Time taken for all redirect steps before the final transfer.
+See \fICURLINFO_REDIRECT_TIME(3)\fP
.IP CURLINFO_REDIRECT_COUNT
-Pass a pointer to a long to receive the total number of redirections that were
-actually followed. (Added in 7.9.7)
+Total number of redirects that were followed.
+See \fICURLINFO_REDIRECT_COUNT(3)\fP
.IP CURLINFO_REDIRECT_URL
-Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP
-take you to if you would enable \fICURLOPT_FOLLOWLOCATION(3)\fP. This can come
-very handy if you think using the built-in libcurl redirect logic isn't good
-enough for you but you would still prefer to avoid implementing all the magic
-of figuring out the new URL. (Added in 7.18.2)
+URL a redirect would take you to, had you enabled redirects.
+See \fICURLINFO_REDIRECT_URL(3)\fP
.IP CURLINFO_SIZE_UPLOAD
-Pass a pointer to a double to receive the total amount of bytes that were
-uploaded.
+Number of bytes uploaded.
+See \fICURLINFO_SIZE_UPLOAD(3)\fP
.IP CURLINFO_SIZE_DOWNLOAD
-Pass a pointer to a double to receive the total amount of bytes that were
-downloaded. The amount is only for the latest transfer and will be reset again
-for each new transfer. This counts actual payload data, what's also commonly
-called body. All meta and header data are excluded and will not be counted in
-this number.
+Number of bytes downloaded.
+See \fICURLINFO_SIZE_DOWNLOAD(3)\fP
.IP CURLINFO_SPEED_DOWNLOAD
-Pass a pointer to a double to receive the average download speed that curl
-measured for the complete download. Measured in bytes/second.
+Average download speed.
+See \fICURLINFO_SPEED_DOWNLOAD(3)\fP
.IP CURLINFO_SPEED_UPLOAD
-Pass a pointer to a double to receive the average upload speed that curl
-measured for the complete upload. Measured in bytes/second.
+Average upload speed.
+See \fICURLINFO_SPEED_UPLOAD(3)\fP
.IP CURLINFO_HEADER_SIZE
-Pass a pointer to a long to receive the total size of all the headers
-received. Measured in number of bytes.
+Number of bytes of all headers received.
+See \fICURLINFO_HEADER_SIZE(3)\fP
.IP CURLINFO_REQUEST_SIZE
-Pass a pointer to a long to receive the total size of the issued
-requests. This is so far only for HTTP requests. Note that this may be more
-than one request if FOLLOWLOCATION is true.
+Number of bytes sent in the issued HTTP requests.
+See \fICURLINFO_REQUEST_SIZE(3)\fP
.IP CURLINFO_SSL_VERIFYRESULT
-Pass a pointer to a long to receive the result of the certification
-verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP
-option to \fIcurl_easy_setopt(3)\fP).
+Certificate verification result.
+See \fICURLINFO_SSL_VERIFYRESULT(3)\fP
.IP CURLINFO_SSL_ENGINES
-Pass the address of a 'struct curl_slist *' to receive a linked-list of
-OpenSSL crypto-engines supported. Note that engines are normally implemented
-in separate dynamic libraries. Hence not all the returned engines may be
-available at run-time. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
-on the list pointer once you're done with it, as libcurl will not free the
-data for you. (Added in 7.12.3)
+A list of OpenSSL crypto engines.
+See \fICURLINFO_SSL_ENGINES(3)\fP
.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
-Pass a pointer to a double to receive the content-length of the download. This
-is the value read from the Content-Length: field. Since 7.19.4, this returns -1
-if the size isn't known.
+Content length from the Content-Length header.
+See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD(3)\fP
.IP CURLINFO_CONTENT_LENGTH_UPLOAD
-Pass a pointer to a double to receive the specified size of the upload. Since
-7.19.4, this returns -1 if the size isn't known.
+Upload size.
+See \fICURLINFO_CONTENT_LENGTH_UPLOAD(3)\fP
.IP CURLINFO_CONTENT_TYPE
-Pass a pointer to a char pointer to receive the content-type of the downloaded
-object. This is the value read from the Content-Type: field. If you get NULL,
-it means that the server didn't send a valid Content-Type header or that the
-protocol used doesn't support this.
+Content type from the Content-Type header.
+See \fICURLINFO_CONTENT_TYPE(3)\fP
.IP CURLINFO_PRIVATE
-Pass a pointer to a char pointer to receive the pointer to the private data
-associated with the curl handle (set with the \fICURLOPT_PRIVATE(3)\fP option
-to \fIcurl_easy_setopt(3)\fP). Please note that for internal reasons, the
-value is returned as a char pointer, although effectively being a 'void *'.
-(Added in 7.10.3)
+User's private data pointer.
+See \fICURLINFO_PRIVATE(3)\fP
.IP CURLINFO_HTTPAUTH_AVAIL
-Pass a pointer to a long to receive a bitmask indicating the authentication
-method(s) available. The meaning of the bits is explained in the
-\fICURLOPT_HTTPAUTH(3)\fP option for \fIcurl_easy_setopt(3)\fP. (Added in
-7.10.8)
+Available HTTP authentication methods.
+See \fICURLINFO_HTTPAUTH_AVAIL(3)\fP
.IP CURLINFO_PROXYAUTH_AVAIL
-Pass a pointer to a long to receive a bitmask indicating the authentication
-method(s) available for your proxy authentication. (Added in 7.10.8)
+Available HTTP proxy authentication methods.
+See \fICURLINFO_PROXYAUTH_AVAIL(3)\fP
.IP CURLINFO_OS_ERRNO
-Pass a pointer to a long to receive the errno variable from a connect failure.
-Note that the value is only set on failure, it is not reset upon a
-successful operation. (Added in 7.12.2)
+The errno from the last failure to connect.
+See \fICURLINFO_OS_ERRNO(3)\fP
.IP CURLINFO_NUM_CONNECTS
-Pass a pointer to a long to receive how many new connections libcurl had to
-create to achieve the previous transfer (only the successful connects are
-counted). Combined with \fICURLINFO_REDIRECT_COUNT\fP you are able to know
-how many times libcurl successfully reused existing connection(s) or not. See
-the Connection Options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries
-to make persistent connections to save time. (Added in 7.12.3)
+Number of new successful connections used for previous transfer.
+See \fICURLINFO_NUM_CONNECTS(3)\fP
.IP CURLINFO_PRIMARY_IP
-Pass a pointer to a char pointer to receive the pointer to a zero-terminated
-string holding the IP address of the most recent connection done with this
-\fBcurl\fP handle. This string may be IPv6 if that's enabled. Note that you
-get a pointer to a memory area that will be re-used at next request so you
-need to copy the string if you want to keep the information. (Added in 7.19.0)
+IP address of the last connection.
+See \fICURLINFO_PRIMARY_IP(3)\fP
.IP CURLINFO_PRIMARY_PORT
-Pass a pointer to a long to receive the destination port of the most recent
-connection done with this \fBcurl\fP handle. (Added in 7.21.0)
+Port of the last connection.
+See \fICURLINFO_PRIMARY_PORT(3)\fP
.IP CURLINFO_LOCAL_IP
-Pass a pointer to a char pointer to receive the pointer to a zero-terminated
-string holding the local (source) IP address of the most recent connection done
-with this \fBcurl\fP handle. This string may be IPv6 if that's enabled. The
-same restrictions apply as to \fICURLINFO_PRIMARY_IP\fP. (Added in 7.21.0)
+Local-end IP address of last connection.
+See \fICURLINFO_LOCAL_IP(3)\fP
.IP CURLINFO_LOCAL_PORT
-Pass a pointer to a long to receive the local (source) port of the most recent
-connection done with this \fBcurl\fP handle. (Added in 7.21.0)
+Local-end port of last connection.
+See \fICURLINFO_LOCAL_PORT(3)\fP
.IP CURLINFO_COOKIELIST
-Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
-cookies cURL knows (expired ones, too). Don't forget to
-\fIcurl_slist_free_all(3)\fP the list after it has been used. If there are no
-cookies (cookies for the handle have not been enabled or simply none have been
-received) 'struct curl_slist *' will be set to point to NULL. (Added in
-7.14.1)
+List of all known cookies.
+See \fICURLINFO_COOKIELIST(3)\fP
.IP CURLINFO_LASTSOCKET
-Pass a pointer to a long to receive the last socket used by this curl
-session. If the socket is no longer valid, -1 is returned. When you finish
-working with the socket, you must call curl_easy_cleanup() as usual and let
-libcurl close the socket and cleanup other resources associated with the
-handle. This is typically used in combination with
-\fICURLOPT_CONNECT_ONLY(3)\fP. (Added in 7.15.2)
-
-NOTE: this API is not really working on win64, since the SOCKET type on win64
-is 64 bit large while its 'long' is only 32 bits.
+Last socket used.
+See \fICURLINFO_LASTSOCKET(3)\fP
+.IP CURLINFO_ACTIVESOCKET
+The session's active socket.
+See \fICURLINFO_ACTIVESOCKET(3)\fP
.IP CURLINFO_FTP_ENTRY_PATH
-Pass a pointer to a char pointer to receive a pointer to a string holding the
-path of the entry path. That is the initial path libcurl ended up in when
-logging on to the remote FTP server. This stores a NULL as pointer if
-something is wrong. (Added in 7.15.4)
-
-Also works for SFTP since 7.21.4
+The entry path after logging in to an FTP server.
+See \fICURLINFO_FTP_ENTRY_PATH(3)\fP
.IP CURLINFO_CERTINFO
-Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to
-struct that holds a number of linked lists with info about the certificate
-chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the previous
-request was done. The struct reports how many certs it found and then you can
-extract info for each of those certs by following the linked lists. The info
-chain is provided in a series of data in the format "name:content" where the
-content is for the specific named data. See also the certinfo.c example. NOTE:
-this option is only available in libcurl built with OpenSSL, NSS or GSKit
-support. (Added in 7.19.1)
+Certificate chain.
+See \fICURLINFO_CERTINFO(3)\fP
+.IP CURLINFO_TLS_SSL_PTR
+TLS session info that can be used for further processing.
+See \fICURLINFO_TLS_SSL_PTR(3)\fP
.IP CURLINFO_TLS_SESSION
-Pass a pointer to a 'struct curl_tlssessioninfo *'. The pointer will be
-initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an
-enum indicating the SSL library used for the handshake and the respective
-internal TLS session structure of this underlying SSL library.
-
-This may then be used to extract certificate information in a format
-convenient for further processing, such as manual validation. NOTE: this
-option may not be available for all SSL backends; unsupported SSL backends
-will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported;
-this does not mean that no SSL backend was used. (Added in 7.34.0)
-
-.nf
-struct curl_tlssessioninfo {
- curl_sslbackend backend;
- void *internals;
-};
-.fi
-
-The \fIinternals\fP struct member will point to a TLS library specific pointer
-with the following underlying types:
-.RS
-.IP OpenSSL
-SSL_CTX *
-.IP GnuTLS
-gnutls_session_t
-.IP NSS
-PRFileDesc *
-.IP gskit
-gsk_handle
-.RE
-
+TLS session info that can be used for further processing. See
+\fICURLINFO_TLS_SESSION(3)\fP. Deprecated option, use
+\fICURLINFO_TLS_SSL_PTR(3)\fP instead!
.IP CURLINFO_CONDITION_UNMET
-Pass a pointer to a long to receive the number 1 if the condition provided in
-the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
-if this returns a 1 you know that the reason you didn't get data in return is
-because it didn't fulfill the condition. The long ths argument points to will
-get a zero stored if the condition instead was met. (Added in 7.19.4)
+Whether or not a time conditional was met.
+See \fICURLINFO_CONDITION_UNMET(3)\fP
.IP CURLINFO_RTSP_SESSION_ID
-Pass a pointer to a char pointer to receive a pointer to a string holding the
-most recent RTSP Session ID.
-
-Applications wishing to resume an RTSP session on another connection should
-retrieve this info before closing the active connection.
+RTSP session ID.
+See \fICURLINFO_RTSP_SESSION_ID(3)\fP
.IP CURLINFO_RTSP_CLIENT_CSEQ
-Pass a pointer to a long to receive the next CSeq that will be used by the
-application.
+RTSP CSeq that will next be used.
+See \fICURLINFO_RTSP_CLIENT_CSEQ(3)\fP
.IP CURLINFO_RTSP_SERVER_CSEQ
-Pass a pointer to a long to receive the next server CSeq that will be expected
-by the application.
-
-\fI(NOTE: listening for server initiated requests is currently
-unimplemented).\fP
-
-Applications wishing to resume an RTSP session on another connection should
-retrieve this info before closing the active connection.
+RTSP CSeq that will next be expected.
+See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP
.IP CURLINFO_RTSP_CSEQ_RECV
-Pass a pointer to a long to receive the most recently received CSeq from the
-server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you
-may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value.
+RTSP CSeq last received.
+See \fICURLINFO_RTSP_CSEQ_RECV(3)\fP
.SH TIMES
.nf
An overview of the six time values available from curl_easy_getinfo()
diff --git a/docs/libcurl/curl_easy_init.3 b/docs/libcurl/curl_easy_init.3
index 4f7f0042..371a3b81 100644
--- a/docs/libcurl/curl_easy_init.3
+++ b/docs/libcurl/curl_easy_init.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/docs/libcurl/curl_easy_pause.3 b/docs/libcurl/curl_easy_pause.3
index 0f6ad5a3..131fa774 100644
--- a/docs/libcurl/curl_easy_pause.3
+++ b/docs/libcurl/curl_easy_pause.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -62,7 +62,7 @@ function is called again without this bit set. Thus, the read callback
.IP CURLPAUSE_ALL
Convenience define that pauses both directions.
.IP CURLPAUSE_CONT
-Convenience define that unpauses both directions
+Convenience define that unpauses both directions.
.SH RETURN VALUE
CURLE_OK (zero) means that the option was set properly, and a non-zero return
code means something wrong occurred after the new state was set. See the
@@ -79,7 +79,7 @@ Before libcurl 7.32.0, when a specific handle was unpaused with this function,
there was no particular forced rechecking or similar of the socket's state,
which made the continuation of the transfer get delayed until next
multi-socket call invoke or even longer. Alternatively, the user could
-forcibly call for example curl_multi_socket_all(3) - with a rather hefty
+forcibly call for example \fIcurl_multi_socket_all(3)\fP - with a rather hefty
performance penalty.
Starting in libcurl 7.32.0, unpausing a transfer will schedule a timeout
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index fc8c59e5..48c1f311 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -55,7 +55,7 @@ While the \fBeasy_handle\fP is added to a multi handle, it cannot be used by
.SH RETURN VALUE
CURLE_OK (0) means everything was ok, non-zero means an error occurred as
.I <curl/curl.h>
-defines - see \fIlibcurl-errors(3)\fP. If the \fBCURLOPT_ERRORBUFFER(3)\fP was
+defines - see \fIlibcurl-errors(3)\fP. If the \fICURLOPT_ERRORBUFFER(3)\fP was
set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in
the error buffer when non-zero is returned.
.SH EXAMPLE
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index 9de63649..3560cc51 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -41,15 +41,15 @@ data. \fBbuflen\fP is the maximum amount of data you can get in that
buffer. The variable \fBn\fP points to will receive the number of received
bytes.
-To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
-calling \fIcurl_easy_perform(3)\fP or \cIcurl_multi_perform(3)\fP. Note that
+To establish the connection, set \fICURLOPT_CONNECT_ONLY(3)\fP option before
+calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP. Note that
\fIcurl_easy_recv(3)\fP does not work on connections that were created without
this option.
You must ensure that the socket has data to read before calling
\fIcurl_easy_recv(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP -
the socket is used in non-blocking mode internally. Use
-\fIcurl_easy_getinfo(3)\fP with \fBCURLINFO_LASTSOCKET\fP to obtain the
+\fIcurl_easy_getinfo(3)\fP with \fICURLINFO_ACTIVESOCKET(3)\fP to obtain the
socket; use your operating system facilities like \fIselect(2)\fP to check if
it has any data you can read.
.SH AVAILABILITY
diff --git a/docs/libcurl/curl_easy_reset.3 b/docs/libcurl/curl_easy_reset.3
index cb69bddf..0bafb64a 100644
--- a/docs/libcurl/curl_easy_reset.3
+++ b/docs/libcurl/curl_easy_reset.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/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index 6f5a6eaf..2a744398 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -39,7 +39,7 @@ connection set-up.
\fBbuffer\fP is a pointer to the data of length \fBbuflen\fP that you want sent.
The variable \fBn\fP points to will receive the number of sent bytes.
-To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
+To establish the connection, set \fICURLOPT_CONNECT_ONLY(3)\fP option before
calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform()\fP. Note that
\fIcurl_easy_send(3)\fP will not work on connections that were created without
this option.
@@ -47,7 +47,7 @@ this option.
You must ensure that the socket is writable before calling
\fIcurl_easy_send(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP -
the socket is used in non-blocking mode internally. Use
-\fIcurl_easy_getinfo(3)\fP with \fBCURLINFO_LASTSOCKET\fP to obtain the
+\fIcurl_easy_getinfo(3)\fP with \fICURLINFO_ACTIVESOCKET(3)\fP to obtain the
socket; use your operating system facilities like \fIselect(2)\fP to check if
it can be written to.
.SH AVAILABILITY
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 4e5b8dec..75f1ce46 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -50,6 +50,8 @@ really \fICURLOPT_POSTFIELDS(3)\fP, but the alternative that copies the string
\fICURLOPT_COPYPOSTFIELDS(3)\fP has some usage characteristics you need to
read up on.
+The order in which the options are set does not matter.
+
Before version 7.17.0, strings were not copied. Instead the user was forced
keep them available until libcurl no longer needed them.
@@ -151,6 +153,8 @@ Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(
Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
.IP CURLOPT_REDIR_PROTOCOLS
Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
+.IP CURLOPT_DEFAULT_PROTOCOL
+Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
.IP CURLOPT_PROXY
Proxy to use. See \fICURLOPT_PROXY(3)\fP
.IP CURLOPT_PROXYPORT
@@ -161,14 +165,16 @@ Proxy type. See \fICURLOPT_PROXYTYPE(3)\fP
Filter out hosts from proxy use. \fICURLOPT_NOPROXY(3)\fP
.IP CURLOPT_HTTPPROXYTUNNEL
Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
+.IP CURLOPT_CONNECT_TO
+Connect to a specific host and port. See \fICURLOPT_CONNECT_TO(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_NEC
Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
.IP CURLOPT_PROXY_SERVICE_NAME
-Proxy service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
+Proxy authentication service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
.IP CURLOPT_SERVICE_NAME
-SPNEGO service name. \fICURLOPT_SERVICE_NAME(3)\fP
+Authentication service name. \fICURLOPT_SERVICE_NAME(3)\fP
.IP CURLOPT_INTERFACE
Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
.IP CURLOPT_LOCALPORT
@@ -183,6 +189,8 @@ OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
Ask for smaller buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
.IP CURLOPT_PORT
Port number to connect to. See \fICURLOPT_PORT(3)\fP
+.IP CURLOPT_TCP_FASTOPEN
+Enable TFO, TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
.IP CURLOPT_TCP_NODELAY
Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
.IP CURLOPT_ADDRESS_SCOPE
@@ -291,6 +299,15 @@ Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP
.IP CURLOPT_EXPECT_100_TIMEOUT_MS
100-continue timeout. See \fICURLOPT_EXPECT_100_TIMEOUT_MS(3)\fP
+.IP CURLOPT_PIPEWAIT
+Wait on connection to pipeline on it. See \fICURLOPT_PIPEWAIT(3)\fP
+.IP CURLOPT_STREAM_DEPENDS
+This HTTP/2 stream depends on another. See \fICURLOPT_STREAM_DEPENDS(3)\fP
+.IP CURLOPT_STREAM_DEPENDS_E
+This HTTP/2 stream depends on another exclusively. See
+\fICURLOPT_STREAM_DEPENDS_E(3)\fP
+.IP CURLOPT_STREAM_WEIGHT
+Set this HTTP/2 stream's weight. See \fICURLOPT_STREAM_WEIGHT(3)\fP
.SH SMTP OPTIONS
.IP CURLOPT_MAIL_FROM
Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
@@ -301,6 +318,8 @@ Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
.SH TFTP OPTIONS
.IP CURLOPT_TFTP_BLKSIZE
TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
+.IP CURLOPT_TFTP_NO_OPTIONS
+Do not send TFTP options requests. See \fICURLOPT_TFTP_NO_OPTIONS(3)\fP
.SH FTP OPTIONS
.IP CURLOPT_FTPPORT
Use active FTP. See \fICURLOPT_FTPPORT(3)\fP
@@ -523,8 +542,8 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
-}}
+}
.fi
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
-.BR curl_multi_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_multi_setopt "(3), "
diff --git a/docs/libcurl/curl_easy_strerror.3 b/docs/libcurl/curl_easy_strerror.3
index 557d4676..ac941220 100644
--- a/docs/libcurl/curl_easy_strerror.3
+++ b/docs/libcurl/curl_easy_strerror.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/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index 23ce9c3c..06fd6fcb 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.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
@@ -26,8 +26,8 @@ curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
-.BI "char *curl_easy_unescape( CURL *" curl ", char *" url ", int "inlength
-.BI ", int *" outlength " );"
+.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url
+.BI ", int "inlength ", int *" outlength " );"
.ad
.SH DESCRIPTION
This function converts the given URL encoded input string to a "plain string"
diff --git a/docs/libcurl/curl_escape.3 b/docs/libcurl/curl_escape.3
index 75fd51f2..03f02d32 100644
--- a/docs/libcurl/curl_escape.3
+++ b/docs/libcurl/curl_escape.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
@@ -25,7 +25,7 @@ curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
-.BI "char *curl_escape( char *" url ", int "length " );"
+.BI "char *curl_escape( const char *" url ", int "length " );"
.ad
.SH DESCRIPTION
Obsolete function. Use \fIcurl_easy_escape(3)\fP instead!
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index 3e48149e..6923913d 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -32,7 +32,7 @@ curl_formadd - add a section to a multipart/formdata HTTP POST
curl_formadd() is used to append sections when building a multipart/formdata
HTTP POST (sometimes referred to as RFC2388-style posts). Append one section
at a time until you've added all the sections you want included and then you
-pass the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST(3)\fP.
+pass the \fIfirstitem\fP pointer as parameter to \fICURLOPT_HTTPPOST(3)\fP.
\fIlastitem\fP is set after each \fIcurl_formadd(3)\fP call and on repeated
invokes it should be left as set to allow repeated invokes to find the end of
the list faster.
@@ -83,7 +83,18 @@ to send away. libcurl will use the pointer and refer to the data in your
application, so you must make sure it remains until curl no longer needs it.
If the data isn't NUL-terminated, or if you'd like it to contain zero bytes,
you must set its length with \fBCURLFORM_CONTENTSLENGTH\fP.
+.IP CURLFORM_CONTENTLEN
+followed by a curl_off_t value giving the length of the contents. Note that
+for \fICURLFORM_STREAM\fP contents, this option is mandatory.
+
+If you pass a 0 (zero) for this option, libcurl will instead do a strlen() on
+the contents to figure out the size. If you really want to send a zero byte
+content then you must make sure strlen() on the data pointer returns zero.
+
+(Option added in 7.46.0)
.IP CURLFORM_CONTENTSLENGTH
+(This option is deprecated. Use \fICURLFORM_CONTENTLEN\fP instead!)
+
followed by a long giving the length of the contents. Note that for
\fICURLFORM_STREAM\fP contents, this option is mandatory.
@@ -103,6 +114,9 @@ given file match one of the internally known file extensions. For
providing multiple \fBCURLFORM_FILE\fP arguments each followed by the filename
(and each \fICURLFORM_FILE\fP is allowed to have a
\fICURLFORM_CONTENTTYPE\fP).
+
+The given upload file has to exist in its full in the file system already when
+the upload starts, as libcurl needs to read the correct file size beforehand.
.IP CURLFORM_CONTENTTYPE
is used in combination with \fICURLFORM_FILE\fP. Followed by a pointer to a
string which provides the content-type for this part, possibly instead of an
diff --git a/docs/libcurl/curl_formfree.3 b/docs/libcurl/curl_formfree.3
index fd19491c..a2536cd9 100644
--- a/docs/libcurl/curl_formfree.3
+++ b/docs/libcurl/curl_formfree.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,7 +33,7 @@ curl_formfree() is used to clean up data previously built/appended with
typically means after \fIcurl_easy_perform(3)\fP has been called.
The pointer to free is the same pointer you passed to the
-\fBCURLOPT_HTTPPOST(3)\fP option, which is the \fIfirstitem\fP pointer from
+\fICURLOPT_HTTPPOST(3)\fP option, which is the \fIfirstitem\fP pointer from
the \fIcurl_formadd(3)\fP invoke(s).
\fBform\fP is the pointer as returned from a previous call to
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index b5262213..635c487f 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -26,7 +26,7 @@ curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.nf
.B #include <curl/curl.h>
-void curl_formget(struct curl_httppost * form, void *userp,
+int curl_formget(struct curl_httppost * form, void *userp,
curl_formget_callback append );
.SH DESCRIPTION
curl_formget() is used to serialize data previously built/appended with
diff --git a/docs/libcurl/curl_free.3 b/docs/libcurl/curl_free.3
index 9e5570fa..5bbf7453 100644
--- a/docs/libcurl/curl_free.3
+++ b/docs/libcurl/curl_free.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/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index 2e7d7aa7..d09980d0 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.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/docs/libcurl/curl_getenv.3 b/docs/libcurl/curl_getenv.3
index 33554476..c6bee98d 100644
--- a/docs/libcurl/curl_getenv.3
+++ b/docs/libcurl/curl_getenv.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/docs/libcurl/curl_global_cleanup.3 b/docs/libcurl/curl_global_cleanup.3
index 83a54e46..2e3ff036 100644
--- a/docs/libcurl/curl_global_cleanup.3
+++ b/docs/libcurl/curl_global_cleanup.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,7 +28,7 @@ curl_global_cleanup - global libcurl cleanup
.BI "void curl_global_cleanup(void);"
.ad
.SH DESCRIPTION
-This function releases resources acquired by \fBcurl_global_init(3)\fP.
+This function releases resources acquired by \fIcurl_global_init(3)\fP.
You should call \fIcurl_global_cleanup(3)\fP once for each call you make to
\fIcurl_global_init(3)\fP, after you are done using libcurl.
@@ -36,11 +36,11 @@ You should call \fIcurl_global_cleanup(3)\fP once for each call you make to
\fBThis function is not thread safe.\fP You must not call it when any other
thread in the program (i.e. a thread sharing the same memory) is running.
This doesn't just mean no other thread that is using libcurl. Because
-\fBcurl_global_cleanup(3)\fP calls functions of other libraries that are
+\fIcurl_global_cleanup(3)\fP calls functions of other libraries that are
similarly thread unsafe, it could conflict with any other thread that uses
these other libraries.
-See the description in \fBlibcurl(3)\fP of global environment requirements for
+See the description in \fIlibcurl(3)\fP of global environment requirements for
details of how to use this function.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_global_init.3 b/docs/libcurl/curl_global_init.3
index 77172be6..d56df5b3 100644
--- a/docs/libcurl/curl_global_init.3
+++ b/docs/libcurl/curl_global_init.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -50,7 +50,11 @@ This doesn't just mean no other thread that is using libcurl. Because
similarly thread unsafe, it could conflict with any other thread that uses
these other libraries.
-See the description in \fBlibcurl(3)\fP of global environment requirements for
+If you are initializing libcurl from a Windows DLL you should not initialize it
+from DllMain or a static initializer because Windows holds the loader lock
+during that time and it could cause a deadlock.
+
+See the description in \fIlibcurl(3)\fP of global environment requirements for
details of how to use this function.
.SH FLAGS
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index 9cddef7c..7252cf9f 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.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
@@ -36,11 +36,13 @@ This function works exactly as \fIcurl_global_init(3)\fP with one addition: it
allows the application to set callbacks to replace the otherwise used internal
memory functions.
-This man page only adds documentation for the callbacks, see the
-\fIcurl_global_init(3)\fP man page for all the rest. When you use this
-function, all callback arguments must be set to valid function pointers.
+If you are using libcurl from multiple threads or libcurl was built with the
+threaded resolver option then the callback functions must be thread safe. The
+threaded resolver is a common build option to enable (and in some cases the
+default) so we strongly urge you to make your callback functions thread safe.
-The prototypes for the given callbacks should match these:
+All callback arguments must be set to valid function pointers. The
+prototypes for the given callbacks must match these:
.IP "void *malloc_callback(size_t size);"
To replace malloc()
.IP "void free_callback(void *ptr);"
@@ -51,6 +53,9 @@ To replace realloc()
To replace strdup()
.IP "void *calloc_callback(size_t nmemb, size_t size);"
To replace calloc()
+.RE
+This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
+to that man page for documentation.
.SH "CAUTION"
Manipulating these gives considerable powers to the application to severely
screw things up for libcurl. Take care!
diff --git a/docs/libcurl/curl_mprintf.3 b/docs/libcurl/curl_mprintf.3
index cbf10e1a..e861ed9c 100644
--- a/docs/libcurl/curl_mprintf.3
+++ b/docs/libcurl/curl_mprintf.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -91,15 +91,9 @@ returned string must be free()ed by the receiver.
Like curl_maprintf() but takes a va_list pointer argument instead of a
variable amount of arguments.
.RE
-
-To easily use all these cloned functions instead of the normal ones, #define
-_MPRINTF_REPLACE before you include the <curl/mprintf.h> file. Then all the
-normal names like printf, fprintf, sprintf etc will use the curl-functions
-instead.
.SH AVAILABILITY
-These function will be removed from the public libcurl API in a near
-future. They will instead be made "available" by source code access only, and
-then as curlx_-prefixed functions. See lib/README.curlx for further details.
+These functions will be removed from the public libcurl API in the future. Do
+not use them in any new programs or projects.
.SH RETURN VALUE
The \fBcurl_maprintf\fP and \fBcurl_mvaprintf\fP functions return a pointer to
a newly allocated string, or NULL if it failed.
diff --git a/docs/libcurl/curl_multi_add_handle.3 b/docs/libcurl/curl_multi_add_handle.3
index 253b864b..4c294f5a 100644
--- a/docs/libcurl/curl_multi_add_handle.3
+++ b/docs/libcurl/curl_multi_add_handle.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
@@ -31,7 +31,7 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
Adds a standard easy handle to the multi stack. This function call will make
this \fImulti_handle\fP control the specified \fIeasy_handle\fP.
-While an easy handle is added to a multi stack, you can not and you must not
+While an easy handle is added to a multi stack, you cannot and you must not
use \fIcurl_easy_perform(3)\fP on that handle. After having removed the easy
handle from the multi stack again, it is perfectly fine to use it with the
easy interface again.
diff --git a/docs/libcurl/curl_multi_assign.3 b/docs/libcurl/curl_multi_assign.3
index 0a2378de..75cb86b4 100644
--- a/docs/libcurl/curl_multi_assign.3
+++ b/docs/libcurl/curl_multi_assign.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/docs/libcurl/curl_multi_cleanup.3 b/docs/libcurl/curl_multi_cleanup.3
index 50bc8adb..07d92160 100644
--- a/docs/libcurl/curl_multi_cleanup.3
+++ b/docs/libcurl/curl_multi_cleanup.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/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3
index 908ef55f..beef4deb 100644
--- a/docs/libcurl/curl_multi_fdset.3
+++ b/docs/libcurl/curl_multi_fdset.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/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index 03be341b..736183df 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.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/docs/libcurl/curl_multi_init.3 b/docs/libcurl/curl_multi_init.3
index ca9374e1..e84eb768 100644
--- a/docs/libcurl/curl_multi_init.3
+++ b/docs/libcurl/curl_multi_init.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/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index 3ec1fade..d2ae541c 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.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/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index 1c2165b6..b9daae9b 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.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
@@ -28,7 +28,7 @@ curl_multi_remove_handle - remove an easy handle from a multi session
CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
.ad
.SH DESCRIPTION
-Removes a given \fIeasy_handle\fI from the \fImulti_handle\fI. This will make
+Removes a given \fIeasy_handle\fP from the \fImulti_handle\fP. This will make
the specified easy handle be removed from this multi handle's control.
When the easy handle has been removed from a multi stack, it is again
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index 951349f7..d27c5244 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -37,32 +37,36 @@ expects. Read this manual carefully as bad input values may cause libcurl to
behave badly! You can only set one option in each function call.
.SH OPTIONS
-.IP CURLMOPT_SOCKETFUNCTION
-See \fICURLMOPT_SOCKETFUNCTION(3)\fP
-.IP CURLMOPT_SOCKETDATA
-See \fICURLMOPT_SOCKETDATA(3)\fP
-.IP CURLMOPT_PIPELINING
-See \fICURLMOPT_PIPELINING(3)\fP
-.IP CURLMOPT_TIMERFUNCTION
-See \fICURLMOPT_TIMERFUNCTION(3)\fP
-.IP CURLMOPT_TIMERDATA
-See \fICURLMOPT_TIMERDATA(3)\fP
-.IP CURLMOPT_MAXCONNECTS
-See \fICURLMOPT_MAXCONNECTS(3)\fP
+.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
+See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
+.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
+See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
.IP CURLMOPT_MAX_HOST_CONNECTIONS
See \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP
.IP CURLMOPT_MAX_PIPELINE_LENGTH
See \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP
-.IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
-See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
-.IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
-See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
+.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
+See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
+.IP CURLMOPT_MAXCONNECTS
+See \fICURLMOPT_MAXCONNECTS(3)\fP
+.IP CURLMOPT_PIPELINING
+See \fICURLMOPT_PIPELINING(3)\fP
.IP CURLMOPT_PIPELINING_SITE_BL
See \fICURLMOPT_PIPELINING_SITE_BL(3)\fP
.IP CURLMOPT_PIPELINING_SERVER_BL
See \fICURLMOPT_PIPELINING_SERVER_BL(3)\fP
-.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
-See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
+.IP CURLMOPT_PUSHFUNCTION
+See \fICURLMOPT_PUSHFUNCTION(3)\fP
+.IP CURLMOPT_PUSHDATA
+See \fICURLMOPT_PUSHDATA(3)\fP
+.IP CURLMOPT_SOCKETFUNCTION
+See \fICURLMOPT_SOCKETFUNCTION(3)\fP
+.IP CURLMOPT_SOCKETDATA
+See \fICURLMOPT_SOCKETDATA(3)\fP
+.IP CURLMOPT_TIMERFUNCTION
+See \fICURLMOPT_TIMERFUNCTION(3)\fP
+.IP CURLMOPT_TIMERDATA
+See \fICURLMOPT_TIMERDATA(3)\fP
.SH RETURNS
The standard CURLMcode for multi interface error codes. Note that it returns a
CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
diff --git a/docs/libcurl/curl_multi_socket.3 b/docs/libcurl/curl_multi_socket.3
index 6b262f29..52abf1ef 100644
--- a/docs/libcurl/curl_multi_socket.3
+++ b/docs/libcurl/curl_multi_socket.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -43,7 +43,7 @@ decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
which easy handle that completed.
-The \fBcurl_multi_socket_action(3)\fP functions inform the application about
+The \fIcurl_multi_socket_action(3)\fP functions inform the application about
updates in the socket (file descriptor) status by doing none, one, or multiple
calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION
option to \fIcurl_multi_setopt(3)\fP. They update the status with changes
@@ -52,7 +52,7 @@ since the previous time the callback was called.
Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION\fP option with
\fIcurl_multi_setopt(3)\fP. Your application will then get called with
information on how long to wait for socket actions at most before doing the
-timeout action: call the \fBcurl_multi_socket_action(3)\fP function with the
+timeout action: call the \fIcurl_multi_socket_action(3)\fP function with the
\fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the
\fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but
for an event-based system using the callback is far better than relying on
@@ -63,7 +63,7 @@ equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to
0.
Force libcurl to (re-)check all its internal sockets and transfers instead of
-just a single one by calling \fBcurl_multi_socket_all(3)\fP. Note that there
+just a single one by calling \fIcurl_multi_socket_all(3)\fP. Note that there
should not be any reason to use this function!
.SH "CALLBACK DETAILS"
diff --git a/docs/libcurl/curl_multi_socket_action.3 b/docs/libcurl/curl_multi_socket_action.3
index 45b61058..65a3fb39 100644
--- a/docs/libcurl/curl_multi_socket_action.3
+++ b/docs/libcurl/curl_multi_socket_action.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -27,7 +27,8 @@ curl_multi_socket_action \- reads/writes available data given an action
#include <curl/curl.h>
CURLMcode curl_multi_socket_action(CURLM * multi_handle,
- curl_socket_t sockfd, int ev_bitmask,
+ curl_socket_t sockfd,
+ int ev_bitmask,
int *running_handles);
.fi
.SH DESCRIPTION
@@ -50,16 +51,17 @@ decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
which easy handle that completed.
-The \fBcurl_multi_socket_action(3)\fP functions inform the application about
+The \fIcurl_multi_socket_action(3)\fP functions inform the application about
updates in the socket (file descriptor) status by doing none, one, or multiple
-calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION
-option to \fIcurl_multi_setopt(3)\fP. They update the status with changes
-since the previous time the callback was called.
+calls to the socket callback function set with the
+\fICURLMOPT_SOCKETFUNCTION(3)\fP option to \fIcurl_multi_setopt(3)\fP. They
+update the status with changes since the previous time the callback was
+called.
-Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION\fP option with
-\fIcurl_multi_setopt(3)\fP. Your application will then get called with
+Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION(3)\fP option
+with \fIcurl_multi_setopt(3)\fP. Your application will then get called with
information on how long to wait for socket actions at most before doing the
-timeout action: call the \fBcurl_multi_socket_action(3)\fP function with the
+timeout action: call the \fIcurl_multi_socket_action(3)\fP function with the
\fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the
\fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but
for an event-based system using the callback is far better than relying on
@@ -76,7 +78,7 @@ The socket \fBcallback\fP function uses a prototype like this
void *socketp); /* private socket pointer,
\fBNULL\fP if not
previously assigned with
- \fBcurl_multi_assign(3)\fP */
+ \fIcurl_multi_assign(3)\fP */
.fi
The callback MUST return 0.
diff --git a/docs/libcurl/curl_multi_strerror.3 b/docs/libcurl/curl_multi_strerror.3
index 40d0974c..b5aa7afb 100644
--- a/docs/libcurl/curl_multi_strerror.3
+++ b/docs/libcurl/curl_multi_strerror.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/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index f0c90796..71b2b320 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -29,12 +29,12 @@ CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);
.SH DESCRIPTION
An application using the libcurl multi interface should call
-\fBcurl_multi_timeout(3)\fP to figure out how long it should wait for socket
+\fIcurl_multi_timeout(3)\fP to figure out how long it should wait for socket
actions \- at most \- before proceeding.
Proceeding means either doing the socket-style timeout action: call the
-\fBcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
-to CURL_SOCKET_TIMEOUT, or call \fBcurl_multi_perform(3)\fP if you're using
+\fIcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
+to CURL_SOCKET_TIMEOUT, or call \fIcurl_multi_perform(3)\fP if you're using
the simpler and older multi interface approach.
The timeout value returned in the long \fBtimeout\fP points to, is in number
@@ -68,9 +68,9 @@ select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
.SH "RETURN VALUE"
The standard CURLMcode for multi interface error codes.
.SH "TYPICAL USAGE"
-Call \fBcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
-figure out which sockets to wait for by calling \fBcurl_multi_fdset(3)\fP or
-by a previous call to \fBcurl_multi_socket(3)\fP.
+Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
+figure out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP or
+by a previous call to \fIcurl_multi_socket(3)\fP.
.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index 45c2e8c9..9f15c5f8 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -71,6 +71,48 @@ priority read events such as out of band data.
.IP CURL_WAIT_POLLOUT
Bit flag to curl_waitfd.events indicating the socket should poll on write
events such as the socket being clear to write without blocking.
+.SH EXAMPLE
+.nf
+CURL *easy_handle;
+CURLM *multi_handle;
+
+/* add the individual easy handle */
+curl_multi_add_handle(multi_handle, easy_handle);
+
+do {
+ CURLMcode mc;
+ int numfds;
+
+ mc = curl_multi_perform(multi_handle, &still_running);
+
+ if(mc == CURLM_OK ) {
+ /* wait for activity, timeout or "nothing" */
+ mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
+ }
+
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi failed, code %d.\n", mc);
+ break;
+ }
+
+ /* 'numfds' being zero means either a timeout or no file descriptors to
+ wait for. Try timeout on first occurrence, then assume no file
+ descriptors and no file descriptors to wait for means wait for 100
+ milliseconds. */
+
+ if(!numfds) {
+ repeats++; /* count number of repeated zero numfds */
+ if(repeats > 1) {
+ WAITMS(100); /* sleep 100 milliseconds */
+ }
+ }
+ else
+ repeats = 0;
+
+} while(still_running);
+
+curl_multi_remove_handle(multi_handle, easy_handle);
+.fi
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
diff --git a/docs/libcurl/curl_share_cleanup.3 b/docs/libcurl/curl_share_cleanup.3
index 3af1707b..0b265e86 100644
--- a/docs/libcurl/curl_share_cleanup.3
+++ b/docs/libcurl/curl_share_cleanup.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/docs/libcurl/curl_share_init.3 b/docs/libcurl/curl_share_init.3
index 4833a8a8..545ba038 100644
--- a/docs/libcurl/curl_share_init.3
+++ b/docs/libcurl/curl_share_init.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/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index c196743f..55e06f12 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.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
@@ -68,7 +68,8 @@ be used!
SSL session IDs will be shared across the easy handles using this shared
object. This will reduce the time spent in the SSL handshake when reconnecting
to the same server. Note SSL session IDs are reused within the same easy handle
-by default.
+by default. Note this symbol was added in 7.10.3 but was not implemented until
+7.23.0.
.RE
.IP CURLSHOPT_UNSHARE
This option does the opposite of \fICURLSHOPT_SHARE\fP. It specifies that
diff --git a/docs/libcurl/curl_share_strerror.3 b/docs/libcurl/curl_share_strerror.3
index f1bc3986..faa5299d 100644
--- a/docs/libcurl/curl_share_strerror.3
+++ b/docs/libcurl/curl_share_strerror.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/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index 529560e8..fed80292 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,7 +36,7 @@ been appended when this function returns. curl_slist_append() copies the
string.
The list should be freed again (after usage) with
-\fBcurl_slist_free_all(3)\fP.
+\fIcurl_slist_free_all(3)\fP.
.SH RETURN VALUE
A null pointer is returned if anything went wrong, otherwise the new list
pointer is returned.
@@ -46,6 +46,10 @@ pointer is returned.
struct curl_slist *slist=NULL;
slist = curl_slist_append(slist, "pragma:");
+
+ if (slist == NULL)
+ return -1;
+
curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
curl_easy_perform(handle);
diff --git a/docs/libcurl/curl_slist_free_all.3 b/docs/libcurl/curl_slist_free_all.3
index fab3d608..31d81da9 100644
--- a/docs/libcurl/curl_slist_free_all.3
+++ b/docs/libcurl/curl_slist_free_all.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/docs/libcurl/curl_strequal.3 b/docs/libcurl/curl_strequal.3
index ce575d7a..a745f7eb 100644
--- a/docs/libcurl/curl_strequal.3
+++ b/docs/libcurl/curl_strequal.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/docs/libcurl/curl_unescape.3 b/docs/libcurl/curl_unescape.3
index 8d16852b..061fbbf5 100644
--- a/docs/libcurl/curl_unescape.3
+++ b/docs/libcurl/curl_unescape.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
@@ -25,7 +25,7 @@ curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
-.BI "char *curl_unescape( char *" url ", int "length " );"
+.BI "char *curl_unescape( const char *" url ", int "length " );"
.ad
.SH DESCRIPTION
Obsolete function. Use \fIcurl_easy_unescape(3)\fP instead!
diff --git a/docs/libcurl/curl_version.3 b/docs/libcurl/curl_version.3
index 03922c93..4acd73aa 100644
--- a/docs/libcurl/curl_version.3
+++ b/docs/libcurl/curl_version.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/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index e9d5ab70..5244c21b 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.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
@@ -76,9 +76,9 @@ typedef struct {
.fi
\fIage\fP describes what the age of this struct is. The number depends on how
-new the libcurl you're using is. You are however guaranteed to get a struct that you
-have a matching struct for in the header, as you tell libcurl your "age" with
-the input argument.
+new the libcurl you're using is. You are however guaranteed to get a struct
+that you have a matching struct for in the header, as you tell libcurl your
+"age" with the input argument.
\fIversion\fP is just an ascii string for the libcurl version.
@@ -149,6 +149,10 @@ libcurl was built with support for HTTP2.
.IP CURL_VERSION_UNIX_SOCKETS
libcurl was built with support for Unix domain sockets.
(Added in 7.40.0)
+.IP CURL_VERSION_PSL
+libcurl was built with support for Mozilla's Public Suffix List. This makes
+libcurl ignore cookies with a domain that's on the list.
+(Added in 7.47.0)
.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/docs/libcurl/index.html b/docs/libcurl/index.html
index ca773135..f46cc85f 100644
--- a/docs/libcurl/index.html
+++ b/docs/libcurl/index.html
@@ -17,6 +17,7 @@
<br><a href="libcurl-share.html">libcurl-share</a>
<br><a href="libcurl-errors.html">libcurl-errors</a>
<br><a href="libcurl-tutorial.html">libcurl-tutorial</a>
+<br><a href="libcurl-thread.html">libcurl-thread</a>
<H2>Library Functions (A-Z)</H2>
<a href="curl_easy_cleanup.html">curl_easy_cleanup</A>
diff --git a/docs/libcurl/libcurl-easy.3 b/docs/libcurl/libcurl-easy.3
index f8506a26..d112632f 100644
--- a/docs/libcurl/libcurl-easy.3
+++ b/docs/libcurl/libcurl-easy.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/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index 07091b5e..0a21a758 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -74,7 +74,7 @@ After having sent the FTP password to the server, libcurl expects a proper
reply. This error code indicates that an unexpected code was returned.
.IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
During an active FTP session while waiting for the server to connect, the
-\fICURLOPT_ACCEPTTIMOUT_MS(3)\fP (or the internal default) timeout expired.
+\fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP (or the internal default) timeout expired.
.IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
libcurl failed to get a sensible result back from the server as a response to
either a PASV or a EPSV command. The server is flawed.
@@ -247,6 +247,12 @@ Chunk callback reported error.
.IP "CURLE_NO_CONNECTION_AVAILABLE (89)"
(For internal use only, will never be returned by libcurl) No connection
available, the session will be queued. (added in 7.30.0)
+.IP "CURLE_SSL_PINNEDPUBKEYNOTMATCH (90)"
+Failed to match the pinned key specified with \fICURLOPT_PINNEDPUBLICKEY(3)\fP.
+.IP "CURLE_SSL_INVALIDCERTSTATUS (91)"
+Status returned failure when asked with \fICURLOPT_SSL_VERIFYSTATUS(3)\fP.
+.IP "CURLE_HTTP2_STREAM (92)"
+Stream error in the HTTP/2 framing layer.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index f77c366a..a7f3dbbf 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -51,28 +51,27 @@ To use the multi interface, you must first create a 'multi handle' with
\fIcurl_multi_init(3)\fP. This handle is then used as input to all further
curl_multi_* functions.
-With a multi handle and the multi interface you can do any amount of
-simultaneous transfers in parallel. Each single transfer is built up around an
-easy handle. You must create the easy handles you need, and setup the
-appropriate options for each easy handle, as outlined in the \fIlibcurl(3)\fP
-man page, using \fIcurl_easy_setopt(3)\fP.
+With a multi handle and the multi interface you can do several simultaneous
+transfers in parallel. Each single transfer is built up around an easy
+handle. You create all the easy handles you need, and setup the appropriate
+options for each easy handle using \fIcurl_easy_setopt(3)\fP.
There are two flavours of the multi interface, the select() oriented one and
-the event based one we called multi_socket. You will benefit from reading
-through the description of both versions to full understand how they work and
+the event based one we call multi_socket. You will benefit from reading
+through the description of both versions to fully understand how they work and
differentiate. We start out with the select() oriented version.
-When an easy handle is setup for a transfer, then instead of using
+When an easy handle is setup and ready for transfer, then instead of using
\fIcurl_easy_perform(3)\fP like when using the easy interface for transfers,
you should add the easy handle to the multi handle with
-\fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a
-\'multi stack\' because of the fact that it may hold a large amount of easy
-handles.
+\fIcurl_multi_add_handle(3)\fP. You can add more easy handles to a multi
+handle at any point, even if other transfers are already running.
Should you change your mind, the easy handle is again removed from the multi
stack using \fIcurl_multi_remove_handle(3)\fP. Once removed from the multi
handle, you can again use other easy interface functions like
-\fIcurl_easy_perform(3)\fP on the handle or whatever you think is necessary.
+\fIcurl_easy_perform(3)\fP on the handle or whatever you think is
+necessary. You can remove handles at any point in time during transfers.
Adding the easy handle to the multi handle does not start the transfer.
Remember that one of the main ideas with this interface is to let your
@@ -84,16 +83,16 @@ current transfers in the multi stack that are ready to transfer anything. It
may be all, it may be none. When there's nothing more to do for now, it
returns back to the calling application.
-Your application can acquire knowledge from libcurl when it would like to get
-invoked to transfer data, so that you don't have to busy-loop and call that
-\fIcurl_multi_perform(3)\fP like crazy. \fIcurl_multi_fdset(3)\fP offers an
-interface using which you can extract fd_sets from libcurl to use in select()
-or poll() calls in order to get to know when the transfers in the multi stack
-might need attention. This also makes it very easy for your program to wait
-for input on your own private file descriptors at the same time or perhaps
-timeout every now and then, should you want that. \fIcurl_multi_timeout(3)\fP
-also helps you with providing a suitable timeout period for your select()
-call.
+Your application extracts info from libcurl about when it would like to get
+invoked to transfer data or do other work. The most convenient way is to use
+\fIcurl_multi_wait(3)\fP that will help you wait until the application should
+call libcurl again. The older API to accomplish the same thing is
+\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
+select() or poll() calls in order to get to know when the transfers in the
+multi stack might need attention. Both these APIs allow for your program to
+wait for input on your own private file descriptors at the same time
+\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
+period for your select() calls.
\fIcurl_multi_perform(3)\fP stores the number of still running transfers in
one of its input arguments, and by reading that you can figure out when all
@@ -114,9 +113,9 @@ the multi stack. You need to first remove the easy handle with
\fIcurl_easy_cleanup(3)\fP, or possibly set new options to it and add it again
with \fIcurl_multi_add_handle(3)\fP to start another transfer.
-When all transfers in the multi stack are done, cleanup the multi handle with
+When all transfers in the multi stack are done, close the multi handle with
\fIcurl_multi_cleanup(3)\fP. Be careful and please note that you \fBMUST\fP
-invoke separate \fIcurl_easy_cleanup(3)\fP calls on every single easy handle
+invoke separate \fIcurl_easy_cleanup(3)\fP calls for every single easy handle
to clean them up properly.
If you want to re-use an easy handle that was added to the multi handle for
diff --git a/docs/libcurl/libcurl-share.3 b/docs/libcurl/libcurl-share.3
index b46eedae..c7cd6554 100644
--- a/docs/libcurl/libcurl-share.3
+++ b/docs/libcurl/libcurl-share.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/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
new file mode 100644
index 00000000..379ca8ff
--- /dev/null
+++ b/docs/libcurl/libcurl-thread.3
@@ -0,0 +1,105 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 2015 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH libcurl-thread 3 "13 Jul 2015" "libcurl" "libcurl thread safety"
+.SH NAME
+libcurl-thread \- libcurl thread safety
+.SH "Multi-threading with libcurl"
+libcurl is thread safe but has no internal thread synchronization. You may have
+to provide your own locking should you meet any of the thread safety exceptions
+below.
+
+\fBHandles.\fP You must \fBnever\fP share the same handle in multiple threads.
+You can pass the handles around among threads, but you must never use a single
+handle from more than one thread at any given time.
+
+\fBShared objects.\fP You can share certain data between multiple handles by
+using the share interface but you must provide your own locking and set
+\fIcurl_share_setopt(3)\fP CURLSHOPT_LOCKFUNC and CURLSHOPT_UNLOCKFUNC.
+.SH TLS
+If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
+then of course using the underlying SSL library multi-threaded and those libs
+might have their own requirements on this issue. You may need to provide one
+or two functions to allow it to function properly:
+.IP OpenSSL
+OpenSSL 1.1.0 "can be safely used in multi-threaded applications provided that
+support for the underlying OS threading API is built-in."
+
+https://www.openssl.org/docs/manmaster/crypto/threads.html#DESCRIPTION
+
+OpenSSL <= 1.0.2 the user must set callbacks.
+
+https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION
+
+https://curl.haxx.se/libcurl/c/opensslthreadlock.html
+
+.IP GnuTLS
+http://gnutls.org/manual/html_node/Thread-safety.html
+.IP NSS
+thread-safe already without anything required.
+.IP PolarSSL
+Required actions unknown.
+.IP yassl
+Required actions unknown.
+.IP axTLS
+Required actions unknown.
+.IP Secure-Transport
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP WinSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP wolfSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP BoringSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.SH "Other areas of caution"
+.IP Signals
+Signals are used for timing out name resolves (during DNS lookup) - when built
+without using either the c-ares or threaded resolver backends. When using
+multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP option to 1L for
+all handles. Everything will or might work fine except that timeouts are not
+honored during the DNS lookup - which you can work around by building libcurl
+with c-ares support. c-ares is a library that provides asynchronous name
+resolves. On some platforms, libcurl simply will not function properly
+multi-threaded unless this option is set.
+.IP "Name resolving"
+\fBgethostby* functions and other system calls.\fP These functions, provided
+by your operating system, must be thread safe. It is very important that
+libcurl can find and use thread safe versions of these and other system calls,
+as otherwise it can't function fully thread safe. Some operating systems are
+known to have faulty thread implementations. We have previously received
+problem reports on *BSD (at least in the past, they may be working fine these
+days). Some operating systems that are known to have solid and working thread
+support are Linux, Solaris and Windows.
+.IP "curl_global_* functions"
+These functions are not thread safe. If you are using libcurl with multiple
+threads it is especially important that before use you call
+\fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to explicitly
+initialize the library and its dependents, rather than rely on the "lazy"
+fail-safe initialization that takes place the first time
+\fIcurl_easy_init(3)\fP is called. For an in-depth explanation refer to
+\fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
+.IP "Memory functions"
+These functions, provided either by your operating system or your own
+replacements, must be thread safe. You can use \fIcurl_global_init_mem(3)\fP
+to set your own replacement memory functions.
+.IP "Non-safe functions"
+\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 11b01901..3144da3c 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.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
@@ -256,58 +256,8 @@ complication for you. Given simply the URL to a file, libcurl will take care
of all the details needed to get the file moved from one machine to another.
.SH "Multi-threading Issues"
-The first basic rule is that you must \fBnever\fP simultaneously share a
-libcurl handle (be it easy or multi or whatever) between multiple
-threads. Only use one handle in one thread at any time. You can pass the
-handles around among threads, but you must never use a single handle from more
-than one thread at any given time.
-
-libcurl is completely thread safe, except for two issues: signals and SSL/TLS
-handlers. Signals are used for timing out name resolves (during DNS lookup) -
-when built without using either the c-ares or threaded resolver backends.
-
-If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
-then of course using the underlying SSL library multi-threaded and those libs
-might have their own requirements on this issue. Basically, you need to
-provide one or two functions to allow it to function properly. For all
-details, see this:
-
-OpenSSL
-
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
-
-GnuTLS
-
- http://gnutls.org/manual/html_node/Thread-safety.html
-
-NSS
-
- is claimed to be thread-safe already without anything required.
-
-PolarSSL
-
- Required actions unknown.
-
-yassl
-
- Required actions unknown.
-
-axTLS
-
- Required actions unknown.
-
-Secure Transport
-
- The engine is fully thread-safe, and no additional steps are required.
-
-When using multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP
-option to 1 for all handles. Everything will or might work fine except that
-timeouts are not honored during the DNS lookup - which you can work around by
-building libcurl with c-ares support. c-ares is a library that provides
-asynchronous name resolves. On some platforms, libcurl simply will not
-function properly multi-threaded unless this option is set.
-
-Also, note that \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
.SH "When It Doesn't Work"
There will always be times when the transfer fails for some reason. You might
@@ -1005,7 +955,7 @@ or understand incoming cookies and they will just be ignored. However, when
the parser is enabled the cookies will be understood and the cookies will be
kept in memory and used properly in subsequent requests when the same handle
is used. Many times this is enough, and you may not have to save the cookies
-to disk at all. Note that the file you specify to \ICURLOPT_COOKIEFILE(3)\fP
+to disk at all. Note that the file you specify to \fICURLOPT_COOKIEFILE(3)\fP
doesn't have to exist to enable the parser, so a common way to just enable the
parser and not read any cookies is to use the name of a file you know doesn't
exist.
@@ -1096,7 +1046,7 @@ input from potentially untrusted users. Following is a discussion about
some risks in the ways in which applications commonly use libcurl and
potential mitigations of those risks. It is by no means comprehensive, but
shows classes of attacks that robust applications should consider. The
-Common Weakness Enumeration project at http://cwe.mitre.org/ is a good
+Common Weakness Enumeration project at https://cwe.mitre.org/ is a good
reference for many of these and similar types of weaknesses of which
application writers should be aware.
@@ -1136,11 +1086,15 @@ NTLM authentication, HTTPS, FTPS, SCP and SFTP are a few examples.
.IP "Redirects"
The \fICURLOPT_FOLLOWLOCATION(3)\fP option automatically follows HTTP
redirects sent by a remote server. These redirects can refer to any kind of
-URL, not just HTTP. A redirect to a file: URL would cause the libcurl to read
-(or write) arbitrary files from the local filesystem. If the application
-returns the data back to the user (as would happen in some kinds of CGI
-scripts), an attacker could leverage this to read otherwise forbidden data
-(e.g. file://localhost/etc/passwd).
+URL, not just HTTP. By default libcurl will allow all protocols on redirect
+except several disabled for security reasons: Since 7.19.4 FILE and SCP are
+disabled, and since 7.40.0 SMB and SMBS are also disabled.
+
+A redirect to a file: URL would cause the libcurl to read (or write) arbitrary
+files from the local filesystem. If the application returns the data back to
+the user (as would happen in some kinds of CGI scripts), an attacker could
+leverage this to read otherwise forbidden data (e.g.
+file://localhost/etc/passwd).
If authentication credentials are stored in the ~/.netrc file, or Kerberos
is in use, any other URL type (not just file:) that requires
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index 39bcccd4..6618734b 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -97,8 +97,8 @@ Unix-like operating system that ship libcurl as part of their distributions
often don't provide the curl-config tool, but simply install the library and
headers in the common path for this purpose.
-Many Linux and similar sytems use pkg-config to provide build and link options
-about libraries and libcurl supports that as well.
+Many Linux and similar systems use pkg-config to provide build and link
+options about libraries and libcurl supports that as well.
.SH "LIBCURL SYMBOL NAMES"
All public functions in the libcurl interface are prefixed with 'curl_' (with
a lowercase c). You can find other functions in the library source code, but
@@ -111,13 +111,8 @@ libcurl works
.B exactly
the same, on any of the platforms it compiles and builds on.
.SH "THREADS"
-Never ever call curl-functions simultaneously using the same handle from
-several threads. libcurl is thread-safe and can be used in any number of
-threads, but you must use separate curl handles if you want to use libcurl in
-more than one thread simultaneously.
-
-The global environment functions are not thread-safe. See \fBGLOBAL
-CONSTANTS\fP below for details.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
.SH "PERSISTENT CONNECTIONS"
Persistent connections means that libcurl can re-use the same connection for
@@ -199,6 +194,9 @@ object as the program starts up and the destructor as it terminates. As the
author of this libcurl-using module, you can make the constructor call
\fIcurl_global_init(3)\fP and the destructor call \fIcurl_global_cleanup(3)\fP
and satisfy libcurl's requirements without your user having to think about it.
+(Caveat: If you are initializing libcurl from a Windows DLL you should not
+initialize it from DllMain or a static initializer because Windows holds the
+loader lock during that time and it could cause a deadlock.)
\fIcurl_global_init(3)\fP has an argument that tells what particular parts of
the global constant environment to set up. In order to successfully use any
diff --git a/docs/libcurl/libcurl.m4 b/docs/libcurl/libcurl.m4
index 2cf3edd1..53d694d0 100644
--- a/docs/libcurl/libcurl.m4
+++ b/docs/libcurl/libcurl.m4
@@ -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
@@ -82,7 +82,7 @@ AC_DEFUN([LIBCURL_CHECK_CONFIG],
AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP])
AC_ARG_WITH(libcurl,
- AC_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]),
+ AS_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]),
[_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])])
if test "$_libcurl_with" != "no" ; then
@@ -178,7 +178,7 @@ x=CURLOPT_WRITEDATA;
x=CURLOPT_ERRORBUFFER;
x=CURLOPT_STDERR;
x=CURLOPT_VERBOSE;
-if (x) ;
+if (x) {;}
]])],libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no)
CPPFLAGS=$_libcurl_save_cppflags
diff --git a/docs/libcurl/mksymbolsmanpage.pl b/docs/libcurl/mksymbolsmanpage.pl
index 1bca4d07..21053c40 100644
--- a/docs/libcurl/mksymbolsmanpage.pl
+++ b/docs/libcurl/mksymbolsmanpage.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
@@ -39,7 +39,7 @@ print <<HEADER
.\\" *
.\\" * 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/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
new file mode 100644
index 00000000..0896d150
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_ACTIVESOCKET 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_ACTIVESOCKET \- get the active socket
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,
+ curl_socket_t *socket);
+.SH DESCRIPTION
+Pass a pointer to a curl_socket_t to receive the active socket used by this
+curl session. If the socket is no longer valid, \fICURL_SOCKET_BAD\fP is
+returned. When you finish working with the socket, you must call
+\fIcurl_easy_cleanup(3)\fP as usual on the easy handle and let libcurl close
+the socket and cleanup other resources associated with the handle. This is
+typically used in combination with \fICURLOPT_CONNECT_ONLY(3)\fP.
+
+This option was added as a replacement for \fICURLINFO_LASTSOCKET(3)\fP since
+that one isn't working on all platforms.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.45.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_LASTSOCKET "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
new file mode 100644
index 00000000..dceb98b0
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_APPCONNECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the time, in seconds, it took from the
+start until the SSL/SSH connect/handshake to the remote host was completed.
+This time is most often very near to the \fICURLINFO_PRETRANSFER_TIME(3)\fP
+time, except for cases such as HTTP pipelining where the pretransfer time can
+be delayed due to waits in line for the pipeline and more.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CERTINFO.3 b/docs/libcurl/opts/CURLINFO_CERTINFO.3
new file mode 100644
index 00000000..c76daa7a
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CERTINFO 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CERTINFO \- get the TLS certificate chain
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
+ struct curl_certinfo *chainp);
+.SH DESCRIPTION
+Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to
+struct that holds a number of linked lists with info about the certificate
+chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the request was
+made. The struct reports how many certs it found and then you can extract info
+for each of those certs by following the linked lists. The info chain is
+provided in a series of data in the format "name:content" where the content is
+for the specific named data. See also the certinfo.c example.
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option is only working in libcurl built with OpenSSL, NSS or GSKit
+support.
+
+Added in 7.19.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
new file mode 100644
index 00000000..452c261f
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONDITION_UNMET 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the number 1 if the condition provided in
+the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
+if this returns a 1 you know that the reason you didn't get data in return is
+because it didn't fulfill the condition. The long ths argument points to will
+get a zero stored if the condition instead was met.
+.SH PROTOCOLS
+HTTP and some
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
new file mode 100644
index 00000000..1b63e238
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONNECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONNECT_TIME \- get the time until connect
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time in seconds from the start
+until the connection to the remote host (or proxy) was completed.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
new file mode 100644
index 00000000..311f313a
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+ double *content_length);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the content-length of the download. This
+is the value read from the Content-Length: field. Since 7.19.4, this returns
+-1 if the size isn't known.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.6.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_CONTENT_LENGTH_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
new file mode 100644
index 00000000..e40d5ea9
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,
+ double *content_length);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the specified size of the upload. Since
+7.19.4, this returns -1 if the size isn't known.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.6.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
new file mode 100644
index 00000000..7536000c
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONTENT_TYPE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONTENT_TYPE \- get Content-Type
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the content-type of the downloaded
+object. This is the value read from the Content-Type: field. If you get NULL,
+it means that the server didn't send a valid Content-Type header or that the
+protocol used doesn't support this.
+
+The \fBct\fP pointer will be NULL or pointing to private memory you MUST NOT
+free it - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
new file mode 100644
index 00000000..961fd982
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_COOKIELIST 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_COOKIELIST \- get all known cookies
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
+ struct curl_slist **cookies);
+.SH DESCRIPTION
+Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
+cookies cURL knows (expired ones, too). Don't forget to call
+\fIcurl_slist_free_all(3)\fP on the list after it has been used. If there are
+no cookies (cookies for the handle have not been enabled or simply none have
+been received) 'struct curl_slist *' will be set to point to NULL.
+
+Since 7.43.0 cookies that were imported in the Set-Cookie format without a
+domain name are not exported by this option.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.14.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLOPT_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
new file mode 100644
index 00000000..342fd5dc
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_EFFECTIVE_URL 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_EFFECTIVE_URL \- get the last used URL
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);
+.SH DESCRIPTION
+Pass in a pointer to a char pointer and get the last used effective URL.
+
+In cases when you've asked libcurl to follow redirects, it may very well not
+be the same value you set with \fICURLOPT_URL(3)\fP.
+
+The \fBurlp\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME.3 b/docs/libcurl/opts/CURLINFO_FILETIME.3
new file mode 100644
index 00000000..84093eb2
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_FILETIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_FILETIME \- get the remote time of the retrieved document
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the remote time of the retrieved document
+(in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If you get
+-1, it can be because of many reasons (it might be unknown, the server might
+hide it or the server doesn't support the command that tells document time
+etc) and the time of the document is unknown.
+
+Note that you must tell the server to collect this information before the
+transfer is made, by using the \fICURLOPT_FILETIME(3)\fP option to
+\fIcurl_easy_setopt(3)\fP or you will unconditionally get a -1 back.
+.SH PROTOCOLS
+HTTP(S), FTP(S), SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
new file mode 100644
index 00000000..e7d7fcff
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive a pointer to a string holding the
+path of the entry path. That is the initial path libcurl ended up in when
+logging on to the remote FTP server. This stores a NULL as pointer if
+something is wrong.
+
+The \fBpath\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+FTP(S) and SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.4. Works for SFTP since 7.21.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
new file mode 100644
index 00000000..b4b9b578
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_HEADER_SIZE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HEADER_SIZE \- get size of retrieved headers
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the total size of all the headers
+received. Measured in number of bytes.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_REQUEST_SIZE "(3), "
+.BR CURLINFO_SIZE_DOWNLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
new file mode 100644
index 00000000..a5d0e725
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive a bitmask indicating the authentication
+method(s) available according to the previous response. The meaning of the
+bits is explained in the \fICURLOPT_HTTPAUTH(3)\fP option for
+\fIcurl_easy_setopt(3)\fP.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.8
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
new file mode 100644
index 00000000..acfef77f
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the last received HTTP proxy response code
+to a CONNECT request. The returned value will be zero if no such response code
+was available.
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLINFO_RESPONSE_CODE "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
new file mode 100644
index 00000000..8e734531
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_LASTSOCKET 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_LASTSOCKET \- get the last socket used
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);
+.SH DESCRIPTION
+Deprecated since 7.45.0. Use \fICURLINFO_ACTIVESOCKET(3)\fP instead.
+
+Pass a pointer to a long to receive the last socket used by this curl
+session. If the socket is no longer valid, -1 is returned. When you finish
+working with the socket, you must call curl_easy_cleanup() as usual and let
+libcurl close the socket and cleanup other resources associated with the
+handle. This is typically used in combination with
+\fICURLOPT_CONNECT_ONLY(3)\fP.
+
+NOTE: this API is deprecated since it is not working on win64 where the SOCKET
+type is 64 bits large while its 'long' is 32 bits. Use the
+\fICURLINFO_ACTIVESOCKET(3)\fP instead, if possible.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_ACTIVESOCKET "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
new file mode 100644
index 00000000..b2228e22
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_LOCAL_IP 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_LOCAL_IP \- get local IP address of last connection
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a zero-terminated
+string holding the IP address of the local end of most recent connection done
+with this \fBcurl\fP handle. This string may be IPv6 when that is
+enabled. Note that you get a pointer to a memory area that will be re-used at
+next request so you need to copy the string if you want to keep the
+information.
+
+The \fBip\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_PRIMARY_IP "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
new file mode 100644
index 00000000..aa7f418e
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_LOCAL_PORT 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_LOCAL_PORT \- get the latest local port number
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the local port number of the most recent
+connection done with this \fBcurl\fP handle.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_PRIMARY_PORT "(3), " CURLINFO_LOCAL_IP "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
new file mode 100644
index 00000000..68059ec6
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time in seconds from the start
+until the name resolving was completed.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
new file mode 100644
index 00000000..eccff500
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_NUM_CONNECTS 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_NUM_CONNECTS \- get number of created connections
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);
+.SH DESCRIPTION
+Pass a pointer to a long to receive how many new connections libcurl had to
+create to achieve the previous transfer (only the successful connects are
+counted). Combined with \fICURLINFO_REDIRECT_COUNT(3)\fP you are able to know
+how many times libcurl successfully reused existing connection(s) or not. See
+the connection options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries
+to make persistent connections to save time.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
new file mode 100644
index 00000000..b56d40ea
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_OS_ERRNO 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_OS_ERRNO \- get errno number from last connect failure
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the errno variable from a connect failure.
+Note that the value is only set on failure, it is not reset upon a successful
+operation. The number is OS and system specific.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
new file mode 100644
index 00000000..c445ea09
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRETRANSFER_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the time, in seconds, it took from the
+start until the file transfer is just about to begin. This includes all
+pre-transfer commands and negotiations that are specific to the particular
+protocol(s) involved. It does \fInot\fP involve the sending of the protocol-
+specific request that triggers a transfer.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
new file mode 100644
index 00000000..9d276ead
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRIMARY_IP 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRIMARY_IP \- get IP address of last connection
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a zero-terminated
+string holding the IP address of the most recent connection done with this
+\fBcurl\fP handle. This string may be IPv6 when that is enabled. Note that you
+get a pointer to a memory area that will be re-used at next request so you
+need to copy the string if you want to keep the information.
+
+The \fBip\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_PRIMARY_PORT "(3), " CURLINFO_LOCAL_IP "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
new file mode 100644
index 00000000..45ed6a68
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRIMARY_PORT 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRIMARY_PORT \- get the latest destination port number
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the destination port of the most recent
+connection done with this \fBcurl\fP handle.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/docs/libcurl/opts/CURLINFO_PRIVATE.3
new file mode 100644
index 00000000..a7fe9d53
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRIVATE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRIVATE \- get the private pointer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to the private data
+associated with the curl handle (set with the \fICURLOPT_PRIVATE(3)\fP).
+Please note that for internal reasons, the value is returned as a char
+pointer, although effectively being a 'void *'.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLOPT_PRIVATE "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
new file mode 100644
index 00000000..d07c5b95
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive a bitmask indicating the authentication
+method(s) available according to the previous response. The meaning of the
+bits is explained in the \fICURLOPT_PROXYAUTH(3)\fP option for
+\fIcurl_easy_setopt(3)\fP.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.8
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
new file mode 100644
index 00000000..ee1ebbb6
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REDIRECT_COUNT 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REDIRECT_COUNT \- get the number of redirects
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the total number of redirections that were
+actually followed.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
new file mode 100644
index 00000000..1a9e6dfb
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REDIRECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time, in seconds, it took for
+all redirection steps include name lookup, connect, pretransfer and transfer
+before final transaction was started. CURLINFO_REDIRECT_TIME contains the
+complete execution time for multiple redirections.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
new file mode 100644
index 00000000..a7bf7261
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REDIRECT_URL 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP
+take you to if you would enable \fICURLOPT_FOLLOWLOCATION(3)\fP. This can come
+very handy if you think using the built-in libcurl redirect logic isn't good
+enough for you but you would still prefer to avoid implementing all the magic
+of figuring out the new URL.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.18.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
new file mode 100644
index 00000000..6f857353
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REQUEST_SIZE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REQUEST_SIZE \- get size of sent request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the total size of the issued
+requests. This is so far only for HTTP requests. Note that this may be more
+than one request if \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_HEADER_SIZE "(3), "
+.BR CURLINFO_SIZE_DOWNLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
new file mode 100644
index 00000000..b1f48473
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RESPONSE_CODE 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RESPONSE_CODE \- get the last response code
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the last received HTTP, FTP or SMTP
+response code. This option was previously known as CURLINFO_HTTP_CODE in
+libcurl 7.10.7 and earlier. The stored value will be zero if no server
+response code has been received. Note that a proxy's CONNECT response should
+be read with \fICURLINFO_HTTP_CONNECTCODE(3)\fP and not this.
+
+Support for SMTP responses added in 7.25.0.
+.SH PROTOCOLS
+HTTP, FTP and SMTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ CURLcode res;
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+ res = curl_easy_perform(curl);
+ if(res == CURLE_OK) {
+ long response_code;
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.10.8. CURLINFO_HTTP_CODE was added in 7.4.1.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_HTTP_CONNECTCODE "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
new file mode 100644
index 00000000..822fde83
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the next CSeq that will be used by the
+application.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
new file mode 100644
index 00000000..13d13191
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the most recently received CSeq from the
+server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you
+may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this
+value.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
new file mode 100644
index 00000000..571a915c
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the next CSeq that will be expected by the
+application.
+
+Llistening for server initiated requests is currently unimplemented!
+
+Applications wishing to resume an RTSP session on another connection should
+retrieve this info before closing the active connection.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
new file mode 100644
index 00000000..4d4d3f1d
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_SESSION_ID 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive a pointer to a string holding the
+most recent RTSP Session ID.
+
+Applications wishing to resume an RTSP session on another connection should
+retrieve this info before closing the active connection.
+
+The \fBid\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
new file mode 100644
index 00000000..85039ffe
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total amount of bytes that were
+downloaded. The amount is only for the latest transfer and will be reset
+again for each new transfer. This counts actual payload data, what's also
+commonly called body. All meta and header data are excluded and will not be
+counted in this number.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
new file mode 100644
index 00000000..034c6df4
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SIZE_UPLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total amount of bytes that were
+uploaded.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
new file mode 100644
index 00000000..ef1c739e
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SPEED_DOWNLOAD \- get download speed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the average download speed that curl
+measured for the complete download. Measured in bytes/second.
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_SPEED_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
new file mode 100644
index 00000000..f79ea1f1
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SPEED_UPLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SPEED_UPLOAD \- get upload speed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the average upload speed that curl
+measured for the complete upload. Measured in bytes/second.
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_SPEED_DOWNLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
new file mode 100644
index 00000000..c1ebfc9a
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SSL_ENGINES 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
+ struct curl_slist **engine_list);
+.SH DESCRIPTION
+Pass the address of a 'struct curl_slist *' to receive a linked-list of
+OpenSSL crypto-engines supported. Note that engines are normally implemented
+in separate dynamic libraries. Hence not all the returned engines may be
+available at run-time. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
+on the list pointer once you're done with it, as libcurl will not free the
+data for you.
+.SH PROTOCOLS
+All TLS based ones.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.3. Available in OpenSSL builds with "engine" support.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
new file mode 100644
index 00000000..a87ccfe0
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SSL_VERIFYRESULT \- get the result of the certification verification
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the result of the certification
+verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP
+option.
+.SH PROTOCOLS
+All using TLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
new file mode 100644
index 00000000..54643648
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the time, in seconds, it took from the
+start until the first byte is received by libcurl. This includes
+\fICURLINFO_PRETRANSFER_TIME(3)\fP and also the time the server needs to
+calculate the result.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
new file mode 100644
index 00000000..3cc3b655
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_TLS_SESSION 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_TLS_SESSION \- get TLS session info
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
+ struct curl_tlssessioninfo **session);
+.SH DESCRIPTION
+\fBThis option has been superseded\fP by \fICURLINFO_TLS_SSL_PTR(3)\fP which
+was added in 7.48.0. The only reason you would use this option instead is if
+you could be using a version of libcurl earlier than 7.48.0.
+
+This option is exactly the same as \fICURLINFO_TLS_SSL_PTR(3)\fP except in the
+case of OpenSSL. If the session \fIbackend\fP is CURLSSLBACKEND_OPENSSL the
+session \fIinternals\fP pointer varies depending on the option:
+
+CURLINFO_TLS_SESSION OpenSSL session \fIinternals\fP is SSL_CTX *.
+
+CURLINFO_TLS_SSL_PTR OpenSSL session \fIinternals\fP is SSL *.
+
+You can obtain an SSL_CTX pointer from an SSL pointer using OpenSSL function
+SSL_get_SSL_CTX. Therefore unless you need compatibility with older versions of
+libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to that document for more
+information.
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.34.0, and supported OpenSSL, GnuTLS, NSS and gskit only up until
+7.48.0 was released.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_TLS_SSL_PTR "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
new file mode 100644
index 00000000..decf0fca
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -0,0 +1,141 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_TLS_SSL_PTR 3 "23 Feb 2016" "libcurl 7.48.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
+ struct curl_tlssessioninfo **session);
+
+/* if you need compatibility with libcurl < 7.48.0 use
+ CURLINFO_TLS_SESSION instead: */
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
+ struct curl_tlssessioninfo **session);
+.SH DESCRIPTION
+Pass a pointer to a 'struct curl_tlssessioninfo *'. The pointer will be
+initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an
+enum indicating the SSL library used for the handshake and a pointer to the
+respective internal TLS session structure of this underlying SSL library.
+
+This option may be useful for example to extract certificate information in a
+format convenient for further processing, such as manual validation. Refer to
+the \fBLIMITATIONS\fP section.
+
+.nf
+struct curl_tlssessioninfo {
+ curl_sslbackend backend;
+ void *internals;
+};
+.fi
+
+The \fIbackend\fP struct member is one of the defines in the CURLSSLBACKEND_*
+series: CURLSSLBACKEND_NONE (when built without TLS support),
+CURLSSLBACKEND_AXTLS, CURLSSLBACKEND_CYASSL, CURLSSLBACKEND_DARWINSSL,
+CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_MBEDTLS,
+CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_POLARSSL or
+CURLSSLBACKEND_SCHANNEL. (Note that the OpenSSL forks are all reported as just
+OpenSSL here.)
+
+The \fIinternals\fP struct member will point to a TLS library specific pointer
+for the active ("in use") SSL connection, with the following underlying types:
+.RS
+.IP GnuTLS
+gnutls_session_t
+.IP gskit
+gsk_handle
+.IP NSS
+PRFileDesc *
+.IP OpenSSL
+CURLINFO_TLS_SESSION: SSL_CTX *
+
+CURLINFO_TLS_SSL_PTR: SSL *
+.RE
+Since 7.48.0 the \fIinternals\fP member can point to these other SSL backends
+as well:
+.RS
+.IP axTLS
+SSL *
+.IP mbedTLS
+mbedtls_ssl_context *
+.IP PolarSSL
+ssl_context *
+.IP "Secure Channel (WinSSL)"
+CtxtHandle *
+.IP "Secure Transport (DarwinSSL)"
+SSLContext *
+.IP "WolfSSL (formerly CyaSSL)"
+SSL *
+.RE
+
+If the \fIinternals\fP pointer is NULL then either the SSL backend is not
+supported, an SSL session has not yet been established or the connection is no
+longer associated with the easy handle (eg curl_easy_perform has returned).
+.SH LIMITATIONS
+\fBThis option has some limitations that could make it unsafe when it comes to
+the manual verification of certificates.\fP
+
+This option only retrieves the first in-use SSL session pointer for your easy
+handle, however your easy handle may have more than one in-use SSL session if
+using FTP over SSL. That is because the FTP protocol has a control channel and
+a data channel and one or both may be over SSL. \fBCurrently there is no way to
+retrieve a second in-use SSL session associated with an easy handle.\fP
+
+This option has not been thoroughly tested with plaintext protocols that can be
+upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with
+\fICURLOPT_USE_SSL(3)\fP. Though you will be able to retrieve the SSL pointer,
+it's possible that before you can do that \fBdata (including auth) may have
+already been sent over a connection after it was upgraded.\fP
+
+Renegotiation. If unsafe renegotiation or renegotiation in a way that the
+certificate is allowed to change is allowed by your SSL library this may occur
+and the certificate may change, and \fBdata may continue to be sent or received
+after renegotiation but before you are able to get the (possibly) changed SSL
+pointer,\fP with the (possibly) changed certificate information.
+
+If you are using OpenSSL or wolfSSL then \fICURLOPT_SSL_CTX_FUNCTION(3)\fP can
+be used to set a certificate verification callback in the CTX. That is safer
+than using this option to poll for certificate changes and doesn't suffer from
+any of the problems above. There is currently no way in libcurl to set a
+verification callback for the other SSL backends.
+
+How are you using this option? Are you affected by any of these limitations?
+Please let us know by making a comment at
+https://github.com/curl/curl/issues/685
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.48.0.
+
+This option supersedes \fICURLINFO_TLS_SESSION(3)\fP which was added in 7.34.0.
+This option is exactly the same as that option except in the case of OpenSSL.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_TLS_SESSION "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
new file mode 100644
index 00000000..b068a8b8
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_TOTAL_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_TOTAL_TIME \- get total time of previous transfer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time in seconds for the
+previous transfer, including name resolving, TCP connect etc. The double
+represents the time in seconds, including fractions.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
index 66ceab82..ab2d2f63 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.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/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
index 203b6acc..3b4e81d6 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.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/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
index 759ce086..ee9bdca7 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.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/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index 7522d437..2e0352f9 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.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/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
index c2adb457..cac3c719 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.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/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
index 2783a7d8..835c2bd4 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.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/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index c795c48e..4c79b1be 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.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/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index e3ea4b1a..660afecd 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.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/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index cf6e6e7b..8c5f5d41 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.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/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
new file mode 100644
index 00000000..ca9fe8a8
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHDATA 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHDATA \- pointer to pass to push callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
+.fi
+.SH DESCRIPTION
+Set \fIpointer\fP to pass as the last argument to the
+\fICURLMOPT_PUSHFUNCTION(3)\fP callback. The pointer will not be touched or
+used by libcurl itself, only passed on to the callback function.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHFUNCTION "(3), " CURLMOPT_PIPELINING "(3), "
+.BR CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
new file mode 100644
index 00000000..9fe02f8d
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -0,0 +1,133 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHFUNCTION 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num);
+char *curl_pushheader_byname(struct curl_pushheaders *h, const char *name);
+
+int curl_push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp);
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
+ curl_push_callback func);
+.fi
+.SH DESCRIPTION
+This callback gets called when a new HTTP/2 stream is being pushed by the
+server (using the PUSH_PROMISE frame). If no push callback is set, all offered
+pushes will be denied automatically.
+.SH CALLBACK DESCRIPTION
+The callback gets its arguments like this:
+
+\fIparent\fP is the handle of the stream on which this push arrives. The new
+handle has been duphandle()d from the parent, meaning that it has gotten all
+its options inherited. It is then up to the application to alter any options
+if desired.
+
+\fIeasy\fP is a newly created handle that represents this upcoming transfer.
+
+\fInum_headers\fP is the number of name+value pairs that was received and can
+be accessed
+
+\fIheaders\fP is a handle used to access push headers using the accessor
+functions described below. This only accesses and provides the PUSH_PROMISE
+headers, the normal response headers will be provided in the header callback
+as usual.
+
+\fIuserp\fP is the pointer set with \fICURLMOPT_PUSHDATA(3)\fP
+
+If the callback returns CURL_PUSH_OK, the 'easy' handle will be added to the
+multi handle, the callback must not do that by itself.
+
+The callback can access PUSH_PROMISE headers with two accessor
+functions. These functions can only be used from within this callback and they
+can only access the PUSH_PROMISE headers. The normal response headers will be
+passed to the header callback for pushed streams just as for normal streams.
+.IP curl_pushheader_bynum
+Returns the header at index 'num' (or NULL). The returned pointer points to a
+"name:value" string that will be freed when this callback returns.
+.IP curl_pushheader_byname
+Returns the value for the given header name (or NULL). This is a shortcut so
+that the application doesn't have to loop through all headers to find the one
+it is interested in. The data pointed will be freed when this callback
+returns. If more than one header field use the same name, this returns only
+the first one.
+.SH CALLBACK RETURN VALUE
+.IP "CURL_PUSH_OK (0)"
+The application has accepted the stream and it can now start receiving data,
+the ownership of the CURL handle has been taken over by the application.
+.IP "CURL_PUSH_DENY (1)"
+The callback denies the stream and no data for this will reach the
+application, the easy handle will be destroyed by libcurl.
+.IP *
+All other return codes are reserved for future use.
+.SH DEFAULT
+NULL, no callback
+.SH PROTOCOLS
+HTTP(S) (HTTP/2 only)
+.SH EXAMPLE
+.nf
+/* only allow pushes for file names starting with "push-" */
+int push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp)
+{
+ char *headp;
+ int *transfers = (int *)userp;
+ FILE *out;
+ headp = curl_pushheader_byname(headers, ":path");
+ if(headp && !strncmp(headp, "/push-", 6)) {
+ fprintf(stderr, "The PATH is %s\\n", headp);
+
+ /* save the push here */
+ out = fopen("pushed-stream", "wb");
+
+ /* write to this file */
+ curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+ (*transfers)++; /* one more */
+
+ return CURL_PUSH_OK;
+ }
+ return CURL_PUSH_DENY;
+}
+
+curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
+curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+.fi
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHDATA "(3), " CURLMOPT_PIPELINING "(3), " CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
index bf7e6a75..b9cdc834 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.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/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
index d64fe112..113021e7 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "3 Nov 2014" "libcurl 7.39.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
@@ -29,7 +29,7 @@ CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
int socket_callback(CURL *easy, /* easy handle */
curl_socket_t s, /* socket */
- int what, /* see above */
+ int what, /* describes the socket */
void *userp, /* private callback pointer */
void *socketp); /* private socket pointer */
@@ -46,6 +46,18 @@ If the given callback pointer is NULL, no callback will be called. Set the
callback's \fBuserp\fP argument with \fICURLMOPT_SOCKETDATA(3)\fP. See
\fIcurl_multi_socket_action(3)\fP for more details on how the callback is used
and should work.
+
+The \fBwhat\fP parameter informs the callback on the status of the given
+socket. It can hold one of these values:
+.IP CURL_POLL_IN
+Wait for incoming data. For the socket to become readable.
+.IP CURL_POLL_OUT
+Wait for outgoing data. For the socket to become writable.
+.IP CURL_POLL_INOUT
+Wait for incoming abd outgoing data. For the socket to become readable or
+writable.
+.IP CURL_POLL_REMOVE
+The specified socket/file descriptor is no longer used by libcurl.
.SH DEFAULT
NULL (no callback)
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
index 41627da1..9d2b66f9 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.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/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index f509b453..7fcb7a51 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.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/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
index a51c86a8..70325fd9 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -31,11 +31,21 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
Pass a long telling libcurl the maximum number of milliseconds to wait for a
server to connect back to libcurl when an active FTP connection is used.
.SH DEFAULT
-If no timeout is set, the internal default of 60000 (one minute) will be used.
+60000 milliseconds
.SH PROTOCOLS
FTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/path/file");
+
+ /* wait no more than 5 seconds for FTP server responses */
+ curl_easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, 5000L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Added in 7.24.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
index 376799a2..c3126313 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -32,27 +32,49 @@ Pass a char * argument specifying what encoding you'd like.
Sets the contents of the Accept-Encoding: header sent in a HTTP request, and
enables decoding of a response when a Content-Encoding: header is received.
-Three encodings are supported: \fIidentity\fP, which does nothing,
+Three encodings are supported: \fIidentity\fP, meaning non-compressed,
\fIdeflate\fP which requests the server to compress its response using the
zlib algorithm, and \fIgzip\fP which requests the gzip algorithm.
If a zero-length string is set like "", then an Accept-Encoding: header
containing all built-in supported encodings is sent.
+Set this option to NULL to explicitly disable it, which makes libcurl not send
+an Accept-Encoding: header and not decompress contents automatically.
+
You can also opt to just include the Accept-Encoding: header in your request
with \fICURLOPT_HTTPHEADER(3)\fP but then there will be no automatic
decompressing when receiving data.
This is a request, not an order; the server may or may not do it. This option
must be set (to any non-NULL value) or else any unsolicited encoding done by
-the server is ignored. See the special file lib/README.encoding for further
-details.
+the server is ignored.
+
+Servers might respond with Content-Encoding even without getting a
+Accept-Encoding: in the request. Servers might respond with a different
+Content-Encoding than what was asked for in the request.
+
+The Content-Length: servers send for a compressed response is supposed to
+indicate the length of the compressed content so when auto decoding is enabled
+it may not match the sum of bytes reported by the write callbacks (although,
+sending the length of the non-compressed content is a common server mistake).
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable all supported built-in compressions */
+ curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "");
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
This option was called CURLOPT_ENCODING before 7.21.6
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
index 510e3b37..f323279b 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.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/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
index 03522966..c22acf79 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.3
+++ b/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,17 +28,28 @@ CURLOPT_APPEND \- enable appending to the remote file
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
.SH DESCRIPTION
-A parameter set to 1 tells the library to append to the remote file instead of
-overwrite it. This is only useful when uploading to an FTP site.
+A long parameter set to 1 tells the library to append to the remote file
+instead of overwrite it. This is only useful when uploading to an FTP site.
.SH DEFAULT
-0
+0 (disabled)
.SH PROTOCOLS
FTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+
+ curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile");
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ curl_easy_setopt(curl, CURLOPT_APPEND, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
This option was known as CURLOPT_FTPAPPEND up to 7.16.4
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_DIRLISTONLY "(3), " CURLOPT_RESUME_FROM "(3), "
+.BR CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
index f8d5668b..e6a3a085 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.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/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
index 9e31ae92..113118e7 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -47,4 +47,4 @@ Added in 7.10
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_MAX_RECV_SPEED "(3), " CURLOPT_WRITEFUNCTION "(3), "
+.BR CURLOPT_MAX_RECV_SPEED_LARGE "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index 85c9ba30..a05f5c0c 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -43,12 +43,12 @@ If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
.SH DEFAULT
Built-in system specific
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
For SSL engines that don't support certificate files the CURLOPT_CAINFO option
-is ignored. Refer to http://curl.haxx.se/docs/ssl-compared.html
+is ignored. Refer to https://curl.haxx.se/docs/ssl-compared.html
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 6695f9f3..0369f891 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -39,7 +39,7 @@ to some limitation in openssl.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index a508b867..e836e407 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.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
@@ -30,9 +30,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
.SH DESCRIPTION
Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
this enabled, libcurl will extract lots of information and data about the
-certificates in the certificate chain used in the SSL connection. This data may
-then be retrieved after a transfer using \fIcurl_easy_getinfo(3)\fP and its
-option \fICURLINFO_CERTINFO\fP.
+certificates in the certificate chain used in the SSL connection. This data
+may then be retrieved after a transfer using \fIcurl_easy_getinfo(3)\fP and
+its option \fICURLINFO_CERTINFO(3)\fP.
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
index 4dd79077..d31412d2 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.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/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index 4d0ff3da..1ceb2cea 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -29,8 +29,8 @@ CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
.SH DESCRIPTION
Pass a \fIpointer\fP that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_CHUNK_BGN_FUNCTION(3)\fP and
-\fICURL_CHUNK_END_FUNCTION(3)\fP.
+argument to the \fICURLOPT_CHUNK_BGN_FUNCTION(3)\fP and
+\fICURLOPT_CHUNK_END_FUNCTION(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
index 64f829ce..d2b6c55a 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.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/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
index b8af3531..1d6ca06c 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.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/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
index 2594b16d..f4e8bd99 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.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/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index 7f28e635..f1869486 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.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/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index d81118e5..7a24a8b9 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.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
@@ -47,7 +47,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* complete connection within 10000 milliseconds */
- curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10000L);
+ curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, 10000L);
curl_easy_perform(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
index afb3cfdc..61289e8d 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.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
@@ -33,7 +33,7 @@ the required proxy authentication and connection setup, but no data transfer,
and then return.
The option can be used to simply test a connection to a server, but is more
-useful when used with the \fICURLINFO_LASTSOCKET\fP option to
+useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
the application can obtain the most recently used socket for special data
transfers.
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
new file mode 100644
index 00000000..30250214
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -0,0 +1,111 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONNECT_TO 3 "10 April 2016" "libcurl 7.49.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_TO,
+ struct curl_slist *connect_to);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a linked list of strings with "connect to" information to
+use for establishing network connections with this handle. The linked list
+should be a fully valid list of \fBstruct curl_slist\fP structs properly
+filled in. Use \fIcurl_slist_append(3)\fP to create the list and
+\fIcurl_slist_free_all(3)\fP to clean up an entire list.
+
+Each single string should be written using the format
+HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT where HOST is the host of the
+request, PORT is the port of the request, CONNECT-TO-HOST is the host name to
+connect to, and CONNECT-TO-PORT is the port to connect to.
+
+The first string that matches the request's host and port is used.
+
+Dotted numerical IP addresses are supported for HOST and CONNECT-TO-HOST.
+A numerical IPv6 address must be written within [brackets].
+
+Any of the four values may be empty. When the HOST or PORT is empty, the host
+or port will always match (the request's host or port is ignored).
+When CONNECT-TO-HOST or CONNECT-TO-PORT is empty, the "connect to" feature
+will be disabled for the host or port, and the request's host or port will be
+used to establish the network connection.
+
+This option is suitable to direct the request at a specific server, e.g. at a
+specific cluster node in a cluster of servers.
+
+The "connect to" host and port are only used to establish the network
+connection. They do NOT affect the host and port that are used for TLS/SSL
+(e.g. SNI, certificate verification) or for the application protocols.
+
+In contrast to \fICURLOPT_RESOLVE(3)\fP, the option
+\fICURLOPT_CONNECT_TO(3)\fP does not pre-populate the DNS cache and therefore
+it does not affect future transfers of other easy handles that have been added
+to the same multi handle.
+
+The "connect to" host and port are ignored if they are equal to the host and
+the port in the request URL, because connecting to the host and the port in
+the request URL is the default behavior.
+
+If an HTTP proxy is used for a request having a special "connect to" host or
+port, and the "connect to" host or port differs from the requests's host and
+port, the HTTP proxy is automatically switched to tunnel mode for this
+specific request. This is necessary because it is not possible to connect to a
+specific host or port in normal (non-tunnel) mode.
+
+When this option is passed to \fIcurl_easy_setopt(3)\fP, libcurl will not copy
+the entire list so you \fBmust\fP keep it around until you no longer use this
+\fIhandle\fP for a transfer before you call \fIcurl_slist_free_all(3)\fP on
+the list.
+
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl;
+struct curl_slist *connect_to = NULL;
+connect_to = curl_slist_append(NULL, "example.com::server1.example.com:");
+
+curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_perform(curl);
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+}
+
+curl_slist_free_all(connect_to);
+.fi
+.SH AVAILABILITY
+Added in 7.49.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_URL "(3), " CURLOPT_RESOLVE "(3), " CURLOPT_FOLLOWLOCATION "(3), " CURLOPT_HTTPPROXYTUNNEL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
index ebc4d77e..1ff300e2 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.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/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
index 682e1c5c..487492ce 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.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/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
index e8817f86..a1d6a1aa 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -79,4 +79,4 @@ Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_TO_UTF8_FUNCTION "(3), "
+.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_FROM_UTF8_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index a390135f..32c2fc29 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.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/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
index a4c3b02b..00816b15 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.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
@@ -30,8 +30,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It should point to
the file name of your file holding cookie data to read. The cookie data can be
-in either the old Netscape / Mozilla cookie data format or just regular
-HTTP-style headers dumped to a file.
+in either the old Netscape / Mozilla cookie data format or just regular HTTP
+headers (Set-Cookie style) dumped to a file.
It also enables the cookie engine, making libcurl parse and send cookies on
subsequent requests with this handle.
@@ -43,6 +43,14 @@ cookies.
This option only \fBreads\fP cookies. To make libcurl write cookies to file,
see \fICURLOPT_COOKIEJAR(3)\fP.
+Exercise caution if you are using this option and multiple transfers may occur.
+If you use the Set-Cookie format and don't specify a domain then the cookie is
+sent for any domain (even after redirects are followed) and cannot be modified
+by a server-set cookie. If a server sets a cookie of the same name then both
+will be sent on a future transfer to that server, likely not what you intended.
+To address these issues set a domain in Set-Cookie (doing that will include
+sub-domains) or use the Netscape format.
+
If you use this option multiple times, you just add more files to read.
Subsequent files will add more cookies.
.SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
index 936d4d8a..79a37230 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.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
@@ -43,6 +43,9 @@ If the cookie jar file can't be created or written to (when the
error for this. Using \fICURLOPT_VERBOSE(3)\fP or
\fICURLOPT_DEBUGFUNCTION(3)\fP will get a warning to display, but that is the
only visible feedback you get about this possibly lethal situation.
+
+Since 7.43.0 cookies that were imported in the Set-Cookie format without a
+domain name are not exported by this option.
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -55,4 +58,5 @@ Along with HTTP
Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
-.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), " CURLOPT_COOKIELIST "(3), "
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), "
+.BR CURLOPT_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index 937c79db..7de4da88 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,16 +36,15 @@ Such a cookie can be either a single line in Netscape / Mozilla format or just
regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
cookie engine. This adds that single cookie to the internal cookie store.
-If you use the Set-Cookie format and don't specify a domain then the cookie
-is sent for any domain and will not be modified. If a server sets a cookie of
-the same name (or maybe you've imported one) then both will be sent on a future
-transfer to that server, likely not what you intended. Either set a domain in
-Set-Cookie (doing that will include sub domains) or use the Netscape format as
+Exercise caution if you are using this option and multiple transfers may occur.
+If you use the Set-Cookie format and don't specify a domain then the cookie is
+sent for any domain (even after redirects are followed) and cannot be modified
+by a server-set cookie. If a server sets a cookie of the same name (or maybe
+you've imported one) then both will be sent on a future transfer to that
+server, likely not what you intended. To address these issues set a domain in
+Set-Cookie (doing that will include sub-domains) or use the Netscape format as
shown in EXAMPLE.
-Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the
-lists exported by \fICURLINFO_COOKIELIST(3)\fP and \fICURLOPT_COOKIEJAR(3)\fP.
-
Additionally, there are commands available that perform actions if you pass in
these exact strings:
.IP ALL
@@ -101,7 +100,7 @@ were skipped on import are not exported.
*/
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); /* export */
-res = curl_easy_perform(curl); /* cookies imported from cookies.txt */
+curl_easy_perform(curl); /* cookies imported from cookies.txt */
curl_easy_cleanup(curl); /* cookies exported to cookies.txt */
.fi
@@ -117,4 +116,5 @@ RELOAD was added in 7.39.0
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
-.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), " CURLOPT_COOKIE "(3), "
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), " CURLOPT_COOKIE "(3), "
+.BR CURLINFO_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
index 0d560763..ecc3757e 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.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/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
index d35aebd6..001d6fe4 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.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/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
index 32d8b79c..b13a06e6 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.3
+++ b/docs/libcurl/opts/CURLOPT_CRLF.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/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
index adc0e99d..6bb035e7 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.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/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index fd33118a..553d4085 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -30,7 +30,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter.
-When you change the request method by setting \fBCURLOPT_CUSTOMREQUEST(3)\fP
+When you change the request method by setting \fICURLOPT_CUSTOMREQUEST(3)\fP
to something, you don't actually change how libcurl behaves or acts in regards
to the particular request method, it will only change the actual string sent
in the request.
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
index ebdb0c55..27b9cbb3 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.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
@@ -36,7 +36,7 @@ NULL
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/debug.html
+https://curl.haxx.se/libcurl/c/debug.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
index 6c4721b7..bf07499a 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.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
@@ -88,7 +88,7 @@ void dump(const char *text,
size_t c;
unsigned int width=0x10;
- fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
+ fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\\n",
text, (long)size, (long)size);
for(i=0; i<size; i+= width) {
@@ -103,10 +103,12 @@ void dump(const char *text,
}
/* show data on the right */
- for(c = 0; (c < width) && (i+c < size); c++)
- fputc(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.', stream);
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ char x = (ptr[i+c] >= 0x20 && ptr[i+c] < 0x80) ? ptr[i+c] : '.';
+ fputc(x, stream);
+ }
- fputc('\n', stream); /* newline */
+ fputc('\\n', stream); /* newline */
}
}
@@ -167,7 +169,7 @@ int main(void)
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ fprintf(stderr, "curl_easy_perform() failed: %s\\n",
curl_easy_strerror(res));
/* always cleanup */
diff --git a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
new file mode 100644
index 00000000..f7f890ca
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -0,0 +1,79 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "18 Aug 2015" "libcurl 7.45.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
+scheme name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEFAULT_PROTOCOL, char
+*protocol);
+.SH DESCRIPTION
+This option tells libcurl to use \fIprotocol\fP if the URL is missing a scheme
+name.
+
+Use one of these protocol (scheme) names:
+
+dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3,
+pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
+
+An unknown or unsupported protocol causes error
+\fICURLE_UNSUPPORTED_PROTOCOL\fP when libcurl parses a schemeless URL. Parsing
+happens when \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP is
+called. The protocols supported by libcurl will vary depending on how it was
+built. Use \fIcurl_version_info(3)\fP if you need a list of protocol names
+supported by the build of libcurl that you are using.
+
+This option does not change the default proxy protocol (http).
+
+Without this option libcurl would make a guess based on the host, see
+\fICURLOPT_URL(3)\fP for details.
+.SH DEFAULT
+NULL (make a guess based on the host)
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+ /* set a URL without a scheme */
+ curl_easy_setopt(curl, CURLOPT_URL, "example.com");
+
+ /* set the default protocol (scheme) for schemeless URLs */
+ curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.45.0
+.SH RETURN VALUE
+CURLE_OK if the option is supported.
+
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+
+CURLE_UNKNOWN_OPTION if the option is not supported.
+.SH "SEE ALSO"
+.BR CURLOPT_URL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
index a81f9076..07b8ac38 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.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/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
index 93327806..06074101 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.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/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
index c33d7917..f7643980 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.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/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
index f5db645f..ef9f1e26 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.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/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
index 56865bb5..7d82bdf8 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.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/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
index 9f517888..14c9f9bd 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.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/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
index db53c0b9..87f686a2 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.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/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
index 2e72ecc7..ad91c3f0 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,7 +33,7 @@ socket. It will be used to seed the random engine for SSL.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index 577202cf..b64a2a39 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.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
@@ -51,15 +51,33 @@ All
.nf
curl = curl_easy_init();
if(curl) {
- char error[CURL_ERROR_SIZE]
+ CURLcode res;
+ char errbuf[CURL_ERROR_SIZE];
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* provide a buffer to store errors in */
- curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
+ curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
- /* Perform the request */
- curl_easy_perform(curl);
+ /* set the error buffer as empty before performing a request */
+ errbuf[0] = 0;
+
+ /* perform the request */
+ res = curl_easy_perform(curl);
+
+ /* if the request did not complete correctly, show the error
+ information. if no detailed error information was written to errbuf
+ show the more generic information from curl_easy_strerror instead.
+ */
+ if(res != CURLE_OK) {
+ size_t len = strlen(errbuf);
+ fprintf(stderr, "\\nlibcurl: (%d) ", res);
+ if(len)
+ fprintf(stderr, "%s%s", errbuf,
+ ((errbuf[len - 1] != '\\n') ? "\\n" : ""));
+ else
+ fprintf(stderr, "%s\\n", curl_easy_strerror(res));
+ }
}
.fi
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
index 81f4571d..10f3c062 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.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/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index a8267fd3..79474cef 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -39,6 +39,9 @@ response codes will slip through, especially when authentication is involved
You might get some amounts of headers transferred before this situation is
detected, like when a "100-continue" is received as a response to a POST/PUT
and a 401 or 407 is received immediately afterwards.
+
+When this option is used and an error is detected, it will cause the
+connection to get closed.
.SH DEFAULT
0, do not fail on error
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
index 7c57affe..99ba7f7e 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.3
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -31,8 +31,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
Pass a long. If it is 1, libcurl will attempt to get the modification time of
the remote document in this operation. This requires that the remote server
sends the time or replies to a time querying command. The
-\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
-can be used after a transfer to extract the received time (if any).
+\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME(3)\fP
+argument can be used after a transfer to extract the received time (if any).
.SH DEFAULT
0
.SH PROTOCOLS
@@ -40,7 +40,7 @@ HTTP, FTP, SFTP, FILE
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Always
+Always, for SFTP since 7.49.0
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
index a0466fe5..236c19df 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -31,7 +31,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
void *pointer);
.SH DESCRIPTION
Pass a pointer that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_FNMATCH_FUNCTION(3)\fP.
+argument to the \fICURLOPT_FNMATCH_FUNCTION(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
index fc119a9c..04967b89 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.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
@@ -37,7 +37,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
Pass a pointer to your callback function, which should match the prototype
shown above.
-This callback s used for wildcard matching.
+This callback is used for wildcard matching.
Return \fICURL_FNMATCHFUNC_MATCH\fP if pattern matches the string,
\fICURL_FNMATCHFUNC_NOMATCH\fP if not or \fICURL_FNMATCHFUNC_FAIL\fP if an
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
index 3a32caef..094ee05d 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,22 +28,31 @@ CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
.SH DESCRIPTION
-A parameter set to 1 tells the library to follow any Location: header that the
-server sends as part of a HTTP header in a 3xx response.
+A long parameter set to 1 tells the library to follow any Location: header
+that the server sends as part of a HTTP header in a 3xx response. The
+Location: header can specify a relative or an absolute URL to follow.
-This means that libcurl will re-send the same request on the new location and
-follow new Location: headers all the way until no more such headers are
-returned. \fICURLOPT_MAXREDIRS(3)\fP can be used to limit the number of
-redirects libcurl will follow.
+libcurl will issue another request for the new URL and follow new Location:
+headers all the way until no more such headers are returned.
+\fICURLOPT_MAXREDIRS(3)\fP can be used to limit the number of redirects
+libcurl will follow.
-libcurl can limit to what protocols it will automatically follow. The accepted
-protocols are set with \fICURLOPT_REDIR_PROTOCOLS(3)\fP and it excludes the
-FILE protocol by default.
+libcurl limits what protocols it automatically follows to. The accepted
+protocols are set with \fICURLOPT_REDIR_PROTOCOLS(3)\fP. By default libcurl
+will allow all protocols on redirect except those disabled for security
+reasons: Since 7.19.4 FILE and SCP are disabled, and since 7.40.0 SMB and SMBS
+are also disabled.
+
+When following a Location:, the 3xx response code that redirected it also
+dictates which request method it will use in the subsequent request: For 301,
+302 and 303 responses libcurl will switch method to GET unless
+\fICURLOPT_POSTREDIR(3)\fP instructs libcurl otherwise. All other 3xx codes
+will make libcurl send the same method again.
For users who think the existing location following is too naive, too simple
or just lacks features, it is very easy to instead implement your own redirect
follow logic with the use of \fIcurl_easy_getinfo(3)\fP's
-\fICURLINFO_REDIRECT_URL\fP option instead of using
+\fICURLINFO_REDIRECT_URL(3)\fP option instead of using
\fICURLOPT_FOLLOWLOCATION(3)\fP.
.SH DEFAULT
0, disabled
@@ -68,3 +77,4 @@ Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_PROTOCOLS "(3), "
.BR CURLOPT_POSTREDIR "(3), "
+.BR CURLINFO_REDIRECT_URL "(3), ", CURLINFO_REDIRECT_COUNT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
index c588ca53..b8464dfc 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.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/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
index 1caaf61e..ce6e6fe7 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.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/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
index fd87bb23..8e300bc2 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.3
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.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/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
index bfbea9c2..5437b0c7 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.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/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
index 3c342475..0d768d77 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.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/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
index b51e4dd1..57581090 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.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/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
index a52863e8..d28a646e 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.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/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
index 62396b97..280e8f1d 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.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
@@ -59,4 +59,4 @@ Added in 7.15.1
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_FTPLISTONLY "(3), " CURLOPT_FTP_SKIP_PASV_IP "(3), "
+.BR CURLOPT_DIRLISTONLY "(3), " CURLOPT_FTP_SKIP_PASV_IP "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
index 18dbc2fe..45ec304c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.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/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
index b1803fd7..b60c3b10 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.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/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
index 5391285e..47371147 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.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/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
index d26af0c4..181f5a1c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.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/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
index 172985a9..af7a45e9 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.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/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
index b20f3fb8..10f713bb 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.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/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
index 13f3cecb..65ea6ec4 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.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/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index f5a4be8d..b650163d 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.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/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
index c0a45f26..c865c860 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.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/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index f8ed0ab8..b8596d8f 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.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
@@ -85,7 +85,7 @@ static size_t header_callback(char *buffer, size_t size,
size_t nitems, void *userdata)
{
/* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
- /* 'userdata' is set with CURLOPT_WRITEDATA */
+ /* 'userdata' is set with CURLOPT_HEADERDATA */
return nitems * size;
}
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index 7776b921..7053a3af 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.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/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index b87db464..17f1dd32 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.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/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
index 35d75aa5..fc7a3a41 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.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/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
index c14c3878..01de1f3c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.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/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index cd504314..c5ccb1a5 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.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/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
index 0f35b632..974f9f37 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -34,8 +34,8 @@ Tells libcurl you want a multipart/formdata HTTP POST to be made and you
instruct what data to pass on to the server in the \fIformpost\fP argument.
Pass a pointer to a linked list of curl_httppost structs as parameter. The
easiest way to create such a list, is to use \fIcurl_formadd(3)\fP as
-documented. The data in this list must remain intact until you close this curl
-handle again with \fIcurl_easy_cleanup(3)\fP.
+documented. The data in this list must remain intact as long as the curl
+transfer is alive and is using it.
Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP.
@@ -76,3 +76,4 @@ As long as HTTP is enabled
Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_POST "(3), "
+.BR curl_formadd "(3), " curl_formfree "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index f861afbd..6b48a052 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.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/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
index 65472ec6..9338b249 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.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/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
index 26662db3..ddd59d29 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.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/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index c85d1448..96dd4b67 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,11 +28,15 @@ CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
.SH DESCRIPTION
-Pass \fIversion\fP a long, set to one of the values described below. They
-force libcurl to use the specific HTTP versions. This is not sensible to do
-unless you have a good reason. You have to set this option if you want to use
+Pass \fIversion\fP a long, set to one of the values described below. They ask
+libcurl to use the specific HTTP versions. This is not sensible to do unless
+you have a good reason. You have to set this option if you want to use
libcurl's HTTP/2 support.
+Note that the HTTP version is just a request. libcurl will still prioritize to
+re-use an existing connection so it might then re-use a connection using a
+HTTP version you haven't asked for.
+
.IP CURL_HTTP_VERSION_NONE
We don't care about what version the library uses. libcurl will use whatever
it thinks fit.
@@ -41,8 +45,20 @@ Enforce HTTP 1.0 requests.
.IP CURL_HTTP_VERSION_1_1
Enforce HTTP 1.1 requests.
.IP CURL_HTTP_VERSION_2_0
-Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.x if HTTP 2 can't be
+Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.1 if HTTP 2 can't be
negotiated with the server. (Added in 7.33.0)
+
+The alias \fICURL_HTTP_VERSION_2\fP was added in 7.43.0 to better reflect the
+actual protocol name.
+.IP CURL_HTTP_VERSION_2TLS
+Attempt HTTP 2 over TLS (HTTPS) only. libcurl will fall back to HTTP 1.1 if
+HTTP 2 can't be negotiated with the HTTPS server. For clear text HTTP servers,
+libcurl will use 1.1. (Added in 7.47.0)
+.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
+Issue non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade. It requires
+prior knowledge that the server supports HTTP/2 straight away. HTTPS requests
+will still do HTTP/2 the standard way with negotiated protocol version in the
+TLS handshake. (Added in 7.49.0)
.SH DEFAULT
CURL_HTTP_VERSION_NONE
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index 51fd6b08..413ee579 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.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
@@ -22,7 +22,7 @@
.\"
.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 in HTTP response
+CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -30,12 +30,18 @@ CURLOPT_IGNORE_CONTENT_LENGTH \- ignore Content-Length in HTTP response
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
long ignore);
.SH DESCRIPTION
-If \fIignore\fP is set to 1, ignore the Content-Length header in the HTTP
-response. This is useful for Apache 1.x (and similar servers) which will
+If \fIignore\fP is set to 1L, ignore the Content-Length header in the HTTP
+response and ignore asking for or relying on it for FTP transfers.
+
+This is useful for HTTP with Apache 1.x (and similar servers) which will
report incorrect content length for files over 2 gigabytes. If this option is
used, curl will not be able to accurately report progress, and will simply
stop the download when the server ends the connection.
+It is also useful with FTP when for example the file is growing while the
+transfer is in progress which otherwise will unconditionally cause libcurl to
+report error.
+
Only use this option if strictly necessary.
.SH DEFAULT
0
@@ -54,7 +60,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.14.1
+Added in 7.14.1. Support for FTP added in 7.46.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index fd49e21a..088f45d0 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.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/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index 114676d0..f866cd43 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.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/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
index 0890eb6c..77db3723 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.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/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
index 836dfac1..b47d21d9 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.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/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
index b965529d..95e6fe52 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.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/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
index 456080cf..0ef96e2b 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.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/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
index ebfe8dfc..f2dd42eb 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.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/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
index ad9827a4..817f34d5 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.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/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
index 08afb29e..61198eac 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.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/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
index 0ed0c875..9b85b824 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -35,7 +35,7 @@ phrase to load a certificate but you need one to load your private key.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
index 571eba3b..6ebd2f27 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.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
@@ -45,4 +45,4 @@ This option was known as CURLOPT_KRB4LEVEL up to 7.16.3
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
-.BR CURLOPT_KRBLEVEL "(3), " CURLOPT_FTP_SSL "(3), "
+.BR CURLOPT_KRBLEVEL "(3), " CURLOPT_USE_SSL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
index 88ca1f87..e56f0129 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.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/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
index 3a7c701f..e54a1c87 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.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/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
index dde3c6ed..a9ca1928 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -34,7 +34,7 @@ Pass a char * as parameter, which should be pointing to the zero terminated
For more information about the login options please see RFC2384, RFC5092 and
IETF draft draft-earhart-url-smtp-00.txt
-\fBCURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
+\fICURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
options, such as the preferred authentication mechanism via "AUTH=NTLM" or
"AUTH=*", and should be used in conjunction with the \fICURLOPT_USERNAME(3)\fP
option.
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
index 893c1b14..890ea720 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.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/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
index 90b19f2a..ed3b8296 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.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/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
index 4591a01e..bd581f0d 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.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/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
index bf7160eb..0420d493 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.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/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
index 95665e77..01fa62ab 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.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/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
index 2a41b375..8e90a9d2 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -44,7 +44,7 @@ get closed unnecessarily.
If you add this easy handle to a multi handle, this setting is not
acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
-\fICURLMOPT_MAXCONNECTS\fP option.
+\fICURLMOPT_MAXCONNECTS(3)\fP option.
.SH DEFAULT
5
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
index e0ce0660..5f5959a1 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.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/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
index b3130018..630c0b5a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.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/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
index 34608c39..ce625536 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.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/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
index e73ad22b..031f2cd3 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.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/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
index 4893b392..c2c6336f 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.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/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
index 9fb13b32..c453dd38 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC.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/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
index 7291999e..d3ecc957 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.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/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
index 2d22595e..f195fabf 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.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/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
index eb51f462..2a41aba4 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.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/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
index b303b95d..340b9f45 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.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/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
index ebdecb04..8194a5e0 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,6 +36,23 @@ Future versions of libcurl are likely to not have any built-in progress meter
at all.
.SH DEFAULT
1, meaning it normally runs without a progress meter.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable progress meter */
+ curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
.SH RETURN VALUE
Returns CURLE_OK.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
index 7e2e7199..2998a30a 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.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/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
index 27fe1580..dac0710f 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.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/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
index a397c3e3..869b7f6c 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.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/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index d5f461d0..314e0c4a 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.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/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
index b460658f..06ed9e19 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.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/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
index 490aca0d..9b0d3d55 100644
--- a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,12 +28,12 @@ CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
.SH DESCRIPTION
-By setting the long \fIleavit\fP to 1, to explicitly tell libcurl to not alter
-the given path before passing it on to the server.
+Set the long \fIleaveit\fP to 1, to explicitly tell libcurl to not alter the
+given path before passing it on to the server.
-This tells libcurl to NOT squash sequences of "/../" or "/./" that may exist
-in the URL's path part and that is supposed to be removed according to RFC
-3986 section 5.2.4.
+This instructs libcurl to NOT squash sequences of "/../" or "/./" that may
+exist in the URL's path part and that is supposed to be removed according to
+RFC 3986 section 5.2.4.
Some server implementations are known to (erroneously) require the dot dot
sequences to remain in the path and some clients want to pass these on in
@@ -43,7 +43,7 @@ By default libcurl will merge such sequences before using the path.
.SH DEFAULT
0
.SH PROTOCOLS
-All
+All
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -61,3 +61,5 @@ Aded in 7.42.0
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
+.BR CURLOPT_URL "(3), "
+
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
index 94cad31f..4e673bd4 100644
--- a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,23 +28,30 @@ CURLOPT_PINNEDPUBLICKEY \- set pinned public key
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
.SH DESCRIPTION
-Pass a pointer to a zero terminated string as parameter. The string should be
-the file name of your pinned public key. The format expected is "PEM" or "DER".
+Pass a pointer to a zero terminated string as parameter. The string can be the
+file name of your pinned public key. The file format expected is "PEM" or "DER".
+The string can also be any number of base64 encoded sha256 hashes preceded by
+"sha256//" and separated by ";"
When negotiating a TLS or SSL connection, the server sends a certificate
indicating its identity. A public key is extracted from this certificate and
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.
+
+On mismatch, \fICURLE_SSL_PINNEDPUBKEYNOTMATCH\fP is returned.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+ /* OR
+ curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+ */
/* Perform the request */
curl_easy_perform(curl);
@@ -54,9 +61,28 @@ if(curl) {
If you do not have the server's public key file you can extract it from the
server's certificate.
.nf
-openssl x509 -in www.test.com.pem -pubkey -noout > www.test.com.pubkey.pem
+# retrieve the server's certificate if you don't already have it
+#
+# be sure to examine the certificate to see if it is what you expected
+#
+# Windows-specific:
+# - Use NUL instead of /dev/null.
+# - OpenSSL may wait for input instead of disconnecting. Hit enter.
+# - If you don't have sed, then just copy the certificate into a file:
+# Lines from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----.
+#
+openssl s_client -servername www.example.com -connect www.example.com:443 < /dev/null | sed -n "/-----BEGIN/,/-----END/p" > www.example.com.pem
+
+# extract public key in pem format from certificate
+openssl x509 -in www.example.com.pem -pubkey -noout > www.example.com.pubkey.pem
+
+# convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.example.com.pubkey.pem -out www.example.com.pubkey.der
+
+# sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.example.com.pubkey.der | openssl base64
.fi
-The public key is output in PEM format and contains a header, base64 data and a
+The public key in PEM format contains a header, base64 data and a
footer:
.nf
-----BEGIN PUBLIC KEY-----
@@ -64,8 +90,16 @@ footer:
-----END PUBLIC KEY-----
.fi
.SH AVAILABILITY
-Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for
-NSS and wolfSSL/CyaSSL. Other SSL backends not supported.
+PEM/DER support:
+ 7.39.0: OpenSSL, GnuTLS and GSKit
+ 7.43.0: NSS and wolfSSL/CyaSSL
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+sha256 support:
+ 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+Other SSL backends not supported.
.SH RETURN VALUE
Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
index 5f641959..6d0f14e7 100644
--- a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,10 +36,10 @@ libcurl will check for existing connections to re-use and pipeline on. If no
such connection exists it will immediately continue and create a fresh new
connection to use.
-By setting this option to 1 - and having \fICURLMOPT_PIPELINE\fP enabled for
-the multi handle this transfer is associated with - libcurl will instead wait
-for the connection to reveal if it is possible to pipeline/multiplex on before
-it continues. This enables libcurl to much better keep the number of
+By setting this option to 1 - and having \fICURLMOPT_PIPELINING(3)\fP enabled
+for the multi handle this transfer is associated with - libcurl will instead
+wait for the connection to reveal if it is possible to pipeline/multiplex on
+before it continues. This enables libcurl to much better keep the number of
connections to a minimum when using pipelining or multiplexing protocols.
The effect thus becomes that with this option set, libcurl prefers to wait and
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
index 5fd19c79..f47b243a 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.3
+++ b/docs/libcurl/opts/CURLOPT_PORT.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/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
index cd6b6d44..7754c7dc 100644
--- a/docs/libcurl/opts/CURLOPT_POST.3
+++ b/docs/libcurl/opts/CURLOPT_POST.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/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index 27e4510b..f9f9eadc 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.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/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
index 01668056..8db05c68 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.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/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
index 50fc3519..9d0c4017 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.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/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
index 72692fd9..3283a1a4 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.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/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
index aa36bd0f..07aea6e6 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.3
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -32,13 +32,13 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
.SH DESCRIPTION
Pass a bitmask to control how libcurl acts on redirects after POSTs that get a
301, 302 or 303 response back. A parameter with bit 0 set (value
-\fBCURL_REDIR_POST_301\fP) tells the library to respect RFC2616/10.3.2 and not
-convert POST requests into GET requests when following a 301 redirection.
-Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes libcurl maintain the
-request method after a 302 redirect whilst setting bit 2 (value
-\fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method after a
-303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience define that
-sets all three bits.
+\fBCURL_REDIR_POST_301\fP) tells the library to respect RFC 7231 (section
+6.4.2 to 6.4.4) and not convert POST requests into GET requests when following
+a 301 redirection. Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes
+libcurl maintain the request method after a 302 redirect whilst setting bit 2
+(value \fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method
+after a 303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience
+define that sets all three bits.
The non-RFC behaviour is ubiquitous in web browsers, so the library does the
conversion by default to maintain consistency. However, a server may require a
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
index e4163e88..6b95265e 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.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/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index 9907f975..80f2c6b0 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.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/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
index c4785dca..7dc70f12 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.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
@@ -35,7 +35,7 @@ The default value of this parameter is NULL.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
index d8e7a667..b077e3b6 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.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
@@ -75,7 +75,7 @@ users.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
index 958eeeb9..4fecb81d 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.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
@@ -60,6 +60,7 @@ CURLPROTO_RTSP
CURLPROTO_SCP
CURLPROTO_SFTP
CURLPROTO_SMB
+CURLPROTO_SMBS
CURLPROTO_SMTP
CURLPROTO_SMTPS
CURLPROTO_TELNET
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
index b419e51b..f6975bbd 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -29,8 +29,8 @@ CURLOPT_PROXY \- set proxy to use
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
.SH DESCRIPTION
Set the \fIproxy\fP to use for the upcoming request. The parameter should be a
-char * to a zero terminated string holding the host name or dotted IP
-address.
+char * to a zero terminated string holding the host name or dotted numerical
+IP address. A numerical IPv6 address must be written within [brackets].
To specify port number in this string, append :[port] to the end of the host
name. The proxy's port number may optionally be specified with the separate
@@ -61,8 +61,8 @@ option does however override any possibly set environment variables.
Setting the proxy string to "" (an empty string) will explicitly disable the
use of a proxy, even if there is an environment variable set for it.
-A proxy host string given in an environment variable can also include protocol
-scheme (http://) and embedded user + password.
+A proxy host string can also include protocol scheme (http://) and embedded
+user + password.
.SH DEFAULT
Default is NULL, meaning no proxy is used.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
index fe742c03..24dbca5a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.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/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
index bfa7a7a2..bfec6293 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.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/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
index 43536ca1..18272c34 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.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/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
index d8a1bb1f..2380e09e 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.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/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
index 2ce0cc0c..d2d92425 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,7 +33,7 @@ this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_HTTP_1_0\fP
\fICURLPROXY_SOCKS4\fP, \fICURLPROXY_SOCKS5\fP, \fICURLPROXY_SOCKS4A\fP and
\fICURLPROXY_SOCKS5_HOSTNAME\fP. The HTTP type is default.
-If you set \fBCURLOPT_PROXYTYPE(3)\fP to \fICURLPROXY_HTTP_1_0\fP, it will
+If you set \fICURLOPT_PROXYTYPE(3)\fP to \fICURLPROXY_HTTP_1_0\fP, it will
only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP
version used for "regular" HTTP requests is instead controlled with
\fICURLOPT_HTTP_VERSION(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
index c342ec4f..0d7a241f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,7 +33,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
Pass a char * as parameter, which should be pointing to the zero terminated
user name to use for the transfer.
-\fBCURLOPT_PROXYUSERNAME(3)\fP sets the user name to be used in protocol
+\fICURLOPT_PROXYUSERNAME(3)\fP sets the user name to be used in protocol
authentication with the proxy.
To specify the proxy password use the \fICURLOPT_PROXYPASSWORD(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
index bbf0da52..1b47b892 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.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/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
index a6224fb7..a010382f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -22,22 +22,23 @@
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_PROXY_SERVICE_NAME \- proxy service name
+CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
.SH DESCRIPTION
Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name is "HTTP". This option allows you to change it.
-..SH DEFAULT
+service. The default service name is "HTTP" for HTTP based proxies and "rcmd"
+for SOCKS5. This option allows you to change it.
+.SH DEFAULT
See above
.SH PROTOCOLS
-Most
+All network protocols
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.43.0
+Added in 7.43.0 for HTTP proxies, 7.49.0 for SOCKS5 proxies.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
index ae5ede77..2e5c33a4 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.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/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
index bd40b7f8..87c6e063 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.3
+++ b/docs/libcurl/opts/CURLOPT_PUT.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/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
index 8bf3c14a..4dce76df 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -69,6 +69,9 @@ The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
+.IP "statvfs file"
+The statvfs command returns statistics on the file system in which specified
+file resides. (Added in 7.49.0)
.IP "symlink source_file target_file"
See ln.
.RE
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
index 0c2d6884..c8223250 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.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/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
index f5dd555c..375a944c 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.3
+++ b/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -35,9 +35,13 @@ out and X and Y are byte indexes.
HTTP transfers also support several intervals, separated with commas as in
\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
server to send the response document in pieces (using standard MIME separation
-techniques). For RTSP, the formatting of a range should follow RFC2326 Section
-12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should
-be given in npt, utc, or smpte formats.
+techniques). Unfortunately, the HTTP standard (RFC 7233 section 3.1) allows
+servers to ignore range requests so even when you set \fICURLOPT_RANGE(3)\fP
+for a request, you may end up getting the full response sent back.
+
+For RTSP, the formatting of a range should follow RFC2326 Section 12.29. For
+RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should be given in
+npt, utc, or smpte formats.
Pass a NULL to this option to disable the use of ranges.
.SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index a67f4154..ef51264c 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -56,8 +56,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-This option was once known by the older name \fICURLOPT_INFILE\fP, the name
-\fICURLOPT_READDATA\fP was introduced in 7.9.7.
+This option was once known by the older name CURLOPT_INFILE, the name
+\fICURLOPT_READDATA(3)\fP was introduced in 7.9.7.
.SH RETURN VALUE
This will return CURLE_OK.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index edd9bdbf..a43e68b9 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.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
@@ -68,7 +68,7 @@ The default internal read callback is fread().
This is used for all protocols when doing uploads.
.SH EXAMPLE
Here's an example setting a read callback for reading that to upload to an FTP
-site: http://curl.haxx.se/libcurl/c/ftpupload.html
+site: https://curl.haxx.se/libcurl/c/ftpupload.html
.SH AVAILABILITY
CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT
was added in 7.12.1.
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
index fbec9f5c..8bd76f6b 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.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
@@ -32,8 +32,12 @@ Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
limits what protocols libcurl may use in a transfer that it follows to in a
redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
limit specific transfers to only be allowed to use a subset of protocols in
-redirections. By default libcurl will allow all protocols except for FILE and
-SCP.
+redirections.
+
+By default libcurl will allow all protocols on redirect except several disabled
+for security reasons: Since 7.19.4 FILE and SCP are disabled, and since 7.40.0
+SMB and SMBS are also disabled. \fICURLPROTO_ALL\fP enables all protocols on
+redirect, including those disabled for security.
These are the available protocol defines:
.nf
@@ -60,13 +64,14 @@ CURLPROTO_RTSP
CURLPROTO_SCP
CURLPROTO_SFTP
CURLPROTO_SMB
+CURLPROTO_SMBS
CURLPROTO_SMTP
CURLPROTO_SMTPS
CURLPROTO_TELNET
CURLPROTO_TFTP
.fi
.SH DEFAULT
-All protocols except for FILE, SCP and SMB.
+All protocols except for FILE, SCP and since 7.40.0 SMB and SMBS.
.SH PROTOCOLS
All
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index bcb16251..71aae83f 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.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/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index 06a393a7..21027d4c 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -44,12 +44,15 @@ ADDRESS can of course be either IPv4 or IPv6 style addressing.
This option effectively pre-populates the DNS cache with entries for the
host+port pair so redirects and everything that operations against the
-HOST+PORT will instead use your provided ADDRESS. Addresses to set with
-\fICURL_RESOLVE\fP will not time-out from the DNS cache like ordinary
+HOST+PORT will instead use your provided ADDRESS. Addresses set with
+\fICURLOPT_RESOLVE(3)\fP will not time-out from the DNS cache like ordinary
entries.
-You can 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
+The provided ADDRESS set by this option will be used even if
+\fICURLOPT_IPRESOLVE(3)\fP is set to make libcurl use another IP version.
+
+Remove names from the DNS cache again, to stop providing these fake resolves,
+by including a string in the linked list that uses the format
\&"-HOST:PORT". The host name must be prefixed with a dash, and the host name
and port number must exactly match what was already added previously.
.SH DEFAULT
@@ -66,7 +69,8 @@ curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
- res = curl_easy_perform(curl);
+
+ curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
@@ -75,8 +79,8 @@ if(curl) {
curl_slist_free_all(host);
.fi
.SH AVAILABILITY
-Added in 7.21.3
+Added in 7.21.3. Removal support added in 7.42.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_IPRESOLVE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "
+.BR CURLOPT_IPRESOLVE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), " CURLOPT_CONNECT_TO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
index c25c6466..ac6986fd 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.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/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
index bcb30af4..4905f390 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.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/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
index c9510168..92536b95 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.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/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
index 9ab175da..60d1d8b3 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.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/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
index 9e7cf3a5..70c50550 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.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/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
index ec3d3877..cd318993 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.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/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
index 6a10ea02..1abb61f6 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -34,10 +34,10 @@ single session may be controlling \fIrtsp://foo/twister/audio\fP and
appropriate stream using this option. If unset, libcurl will default to
operating on generic server options by passing '*' in the place of the RTSP
Stream URI. This option is distinct from \fICURLOPT_URL(3)\fP. When working
-with RTSP, the \fICURLOPT_STREAM_URI(3)\fP indicates what URL to send to the
-server in the request header while the \fICURLOPT_URL(3)\fP indicates where to
-make the connection to. (e.g. the \fICURLOPT_URL(3)\fP for the above examples
-might be set to \fIrtsp://foo/twister\fP
+with RTSP, the \fICURLOPT_RTSP_STREAM_URI(3)\fP indicates what URL to send to
+the server in the request header while the \fICURLOPT_URL(3)\fP indicates
+where to make the connection to. (e.g. the \fICURLOPT_URL(3)\fP for the above
+examples might be set to \fIrtsp://foo/twister\fP
.SH DEFAULT
'*'
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
index 4d0a4c05..367236b6 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.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/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
index 7714217b..8fe4ee6c 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.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/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
index 830f099c..d4339ec6 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.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/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index bf7e3045..179f0d2b 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.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/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
index 116fdbe7..b9f491b0 100644
--- a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -22,23 +22,24 @@
.\"
.TH CURLOPT_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SERVICE_NAME \- SPNEGO service name
+CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
.SH DESCRIPTION
-Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name is "HTTP". This option allows you to
-change it.
-..SH DEFAULT
+Pass a char * as parameter to a string holding the \fIname\fP of the service
+for DIGEST-MD5, SPNEGO and Kerberos 5 authentication mechanisms. The default
+service names are "ftp", "HTTP", "imap", "pop" and "smtp". This option allows
+you to change them.
+.SH DEFAULT
See above
.SH PROTOCOLS
-Most
+HTTP, FTP, IMAP, POP and SMTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.43.0
+Added in 7.43.0 for HTTP, 7.49.0 for FTP, IMAP, POP3 and SMTP.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
index a483540e..6a0c7b81 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLOPT_SHARE.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/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
index 61c2b5e6..00dd3166 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.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/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
index e99fb79f..6262dc59 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.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/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
index cb318fca..ad0863b7 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.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/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
index d18ea9f9..440f0894 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -22,23 +22,25 @@
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SOCKS5_GSSAPI_SERVICE \- proxy socks gssapi service name
+CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);
.SH DESCRIPTION
-Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name for a SOCKS5 server is
-rcmd/server-fqdn. This option allows you to change it.
+Deprecated since 7.49.0. Use \fICURLOPT_PROXY_SERVICE_NAME(3)\fP instead.
+
+Pass a char * as parameter to a string holding the \fIname\fP of the service.
+The default service name for a SOCKS5 server is "rcmd". This option allows you
+to change it.
.SH DEFAULT
See above
.SH PROTOCOLS
-Most
+All network protocols
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.19.4
+Added in 7.19.4, deprecated in 7.49.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
index 966f7460..2ecca125 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.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/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
index 12e7720d..2ea23602 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.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/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
index 45e7d7a9..67c36738 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.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/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
index 4af9a3bf..21bc0e58 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.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/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
index 85574ced..9ea0c864 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.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/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
index f357f2c9..0c35ed55 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.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/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
index 35f2a199..f9aaeaef 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.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
@@ -35,11 +35,11 @@ libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment
variable is set, and just "id_dsa.pub" in the current directory if HOME is not
set.
-If an empty string is passed, libcurl will pass no public key to libssh2 which
-then tries to compute it from the private key, this is known to work when
-libssh2 1.4.0+ is linked against OpenSSL.
+If NULL (or an empty string) is passed, libcurl will pass no public key to
+libssh2, which then tries to compute it from the private key. This is known
+to work with libssh2 1.4.0+ linked against OpenSSL.
.SH DEFAULT
-As explained above
+NULL
.SH PROTOCOLS
SFTP and SCP
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
index 7ae54f15..b5d68cf7 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -43,7 +43,7 @@ private key with \fICURLOPT_SSLKEY(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
index b19d5178..98df39d7 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,7 +36,7 @@ PKCS#12-encoded files.
.SH DEFAULT
"PEM"
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
index a88a5a72..d0c48a4b 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -30,19 +30,26 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It will be used as
the identifier for the crypto engine you want to use for your private key.
-
-If the crypto device cannot be loaded, \fICURLE_SSL_ENGINE_NOTFOUND\fP is
-returned.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-If built TLS enabled.
+Only if the SSL backend is OpenSSL built with engine support.
.SH RETURN VALUE
-Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
-CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+CURLE_OK - Engine found.
+
+CURLE_SSL_ENGINE_NOTFOUND - Engine not found, or OpenSSL was not built with
+engine support.
+
+CURLE_SSL_ENGINE_INITFAILED - Engine found but initialization failed.
+
+CURLE_NOT_BUILT_IN - Option not built in, OpenSSL is not the SSL backend.
+
+CURLE_UNKNOWN_OPTION - Option not recognized.
+
+CURLE_OUT_OF_MEMORY - Insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_SSLENGINE_DEFAULT "(3), " CURLOPT_SSLKEY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
index 6570df10..0cd8d225 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -28,21 +28,27 @@ CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);
.SH DESCRIPTION
-Pass a long set to 1 as parameter. Sets the actual crypto engine as the
-default for (asymmetric) crypto operations.
+Pass a long set to 1 to make the already specified crypto engine the default
+for (asymmetric) crypto operations.
-If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
-returned.
+This option has no effect unless set after \fICURLOPT_SSLENGINE(3)\fP.
.SH DEFAULT
None
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-If built TLS enabled.
+Only if the SSL backend is OpenSSL built with engine support.
.SH RETURN VALUE
-Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
-CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+CURLE_OK - Engine set as default.
+
+CURLE_SSL_ENGINE_SETFAILED - Engine could not be set as default.
+
+CURLE_NOT_BUILT_IN - Option not built in, OpenSSL is not the SSL backend.
+
+CURLE_UNKNOWN_OPTION - Option not recognized.
+
+CURLE_OUT_OF_MEMORY - Insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_SSLENGINE "(3), " CURLOPT_SSLCERT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
index add69d89..8bc82058 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -38,7 +38,7 @@ present in the keychain or PKCS#12 file containing the certificate.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
index d4916349..7616a3f4 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -38,7 +38,7 @@ engine. You have to set the crypto engine with \fICURLOPT_SSLENGINE(3)\fP.
.SH DEFAULT
"PEM"
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
index a10dabd9..2f40e463 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -52,7 +52,7 @@ TLSv1.2 (Added in 7.34.0)
.SH DEFAULT
CURL_SSLVERSION_DEFAULT
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
index 7e05a590..71833b55 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -40,7 +40,7 @@ compile OpenSSL.
You'll find more details about cipher lists on this URL:
- http://www.openssl.org/docs/apps/ciphers.html
+ https://www.openssl.org/docs/apps/ciphers.html
For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5',
\'rsa_aes_128_sha\', etc. With NSS you don't add/remove ciphers. If one uses
@@ -53,7 +53,7 @@ You'll find more details about the NSS cipher lists on this URL:
.SH DEFAULT
NULL, use internal default
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 977cc12d..be2cf348 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -34,7 +34,7 @@ parameter.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index e3e01707..177947bb 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -50,18 +50,88 @@ callback's error code. Set the \fIuserptr\fP argument with the
This function will get called on all new connections made to a server, during
the SSL negotiation. The SSL_CTX pointer will be a new one every time.
-To use this properly, a non-trivial amount of knowledge of your SSL library
-is necessary. For example, you can use this function to call library-specific
+To use this properly, a non-trivial amount of knowledge of your SSL library is
+necessary. For example, you can use this function to call library-specific
callbacks to add additional validation code for certificates, and even to
-change the actual URI of a HTTPS request (example used in the lib509 test
-case). See also the example section for a replacement of the key, certificate
-and trust file settings.
+change the actual URI of a HTTPS request.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
-TODO
+.nf
+/* OpenSSL specific */
+
+#include <openssl/ssl.h>
+#include <curl/curl.h>
+#include <stdio.h>
+
+static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
+{
+ X509_STORE *store;
+ X509 *cert=NULL;
+ BIO *bio;
+ char *mypem = /* example CA cert PEM - shortened */
+ "-----BEGIN CERTIFICATE-----\n"
+ "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"
+ "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"
+ "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"
+ "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"
+ "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"
+ "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"
+ "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
+ "-----END CERTIFICATE-----\n";
+ /* get a BIO */
+ bio=BIO_new_mem_buf(mypem, -1);
+ /* use it to read the PEM formatted certificate from memory into an X509
+ * structure that SSL can use
+ */
+ PEM_read_bio_X509(bio, &cert, 0, NULL);
+ if(cert == NULL)
+ printf("PEM_read_bio_X509 failed...\n");
+
+ /* get a pointer to the X509 certificate store (which may be empty!) */
+ store=SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
+
+ /* add our certificate to this store */
+ if(X509_STORE_add_cert(store, cert)==0)
+ printf("error adding certificate\n");
+
+ /* decrease reference counts */
+ X509_free(cert);
+ BIO_free(bio);
+
+ /* all set to go */
+ return CURLE_OK;
+}
+
+int main(void)
+{
+ CURL * ch;
+ CURLcode rv;
+
+ rv=curl_global_init(CURL_GLOBAL_ALL);
+ ch=curl_easy_init();
+ rv=curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
+ rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
+
+ /* Retrieve page using cacerts' certificate -> will succeed
+ * load the certificate by installing a function doing the nescessary
+ * "modifications" to the SSL CONTEXT just before link init
+ */
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
+ rv=curl_easy_perform(ch);
+ if(rv==CURLE_OK)
+ printf("*** transfer succeeded ***\n");
+ else
+ printf("*** transfer failed ***\n");
+
+ curl_easy_cleanup(ch);
+ curl_global_cleanup();
+ return rv;
+}
+.fi
.SH AVAILABILITY
Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL
backends not supported.
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
index 6716f721..61863c8c 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.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/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
index 5db9b510..67f0ebec 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.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/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
index 31a05e68..3073dadb 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.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
@@ -37,7 +37,7 @@ round trip when performing a full handshake.
.SH DEFAULT
0
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index 09bcb96c..4943233d 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.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
@@ -30,13 +30,25 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
.SH DESCRIPTION
Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
-\fICURLSSLOPT_ALLOW_BEAST\fP is the only supported bit and by setting this the
-user will tell libcurl to not attempt to use any workarounds for a security
-flaw in the SSL3 and TLS1.0 protocols. If this option isn't used or this bit
-is set to 0, the SSL layer libcurl uses may use a work-around for this flaw
-although it might cause interoperability problems with some (older) SSL
-implementations. WARNING: avoiding this work-around lessens the security, and
-by setting this option to 1 you ask for exactly that.
+\fICURLSSLOPT_ALLOW_BEAST\fP tells libcurl to not attempt to use any
+workarounds for a security flaw in the SSL3 and TLS1.0 protocols. If this
+option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a
+work-around for this flaw although it might cause interoperability problems
+with some (older) SSL implementations. WARNING: avoiding this work-around
+lessens the security, and by setting this option to 1 you ask for exactly that.
+This option is only supported for DarwinSSL, NSS and OpenSSL.
+
+Added in 7.44.0:
+
+\fICURLSSLOPT_NO_REVOKE\fP tells libcurl to disable certificate revocation
+checks for those SSL backends where such behavior is present. \fBCurrently this
+option is only supported for WinSSL (the native Windows SSL library), with an
+exception in the case of Windows' Untrusted Publishers blacklist which it seems
+can't be bypassed.\fP This option may have broader support to accommodate other
+SSL backends in the future.
+https://curl.haxx.se/docs/ssl-compared.html
+
+
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
index 4baa0616..c939465f 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.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/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index fbf20428..15914732 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.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
@@ -64,7 +64,7 @@ also set to zero and cannot be overridden.
.SH DEFAULT
2
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index 81bb5939..5a63481a 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.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
@@ -60,7 +60,7 @@ the correct end-point.
.SH DEFAULT
By default, curl assumes a value of 1.
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
index d7f011a4..30212259 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.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
@@ -38,7 +38,7 @@ extension, the verification will fail.
.SH DEFAULT
0
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index 8ef1a32a..7dfe371f 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.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/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
new file mode 100644
index 00000000..831d2111
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STREAM_DEPENDS 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);
+.SH DESCRIPTION
+Pass a CURL * pointer in \fIdephandle\fP to identify the stream within the
+same connection that this stream is depending upon. This option clears the
+exclusive it and is mutually exclusive to the
+\fICURLOPT_STREAM_DEPENDS_E(3)\fP option.
+
+The spec says "Including a dependency expresses a preference to allocate
+resources to the identified stream rather than to the dependent stream."
+
+This option can be set during transfer.
+
+\fIdephandle\fP must not be the same as \fIhandle\fP, that will cause this
+function to return an error. It must be another easy handle, and it also needs
+to be a handle of a transfer that will be sent over the same HTTP/2 connection
+for this option to have an actual effect.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP/2
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.46.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS_E "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
new file mode 100644
index 00000000..c1d9fd06
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on execlusively
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);
+.SH DESCRIPTION
+Pass a CURL * pointer in \fIdephandle\fP to identify the stream within the
+same connection that this stream is depending upon exclusively. That means it
+depends on it and sets the Exclusive bit.
+
+The spec says "Including a dependency expresses a preference to allocate
+resources to the identified stream rather than to the dependent stream."
+
+Setting a dependency with the exclusive flag for a reprioritized stream causes
+all the dependencies of the new parent stream to become dependent on the
+reprioritized stream.
+
+This option can be set during transfer.
+
+\fIdephandle\fP must not be the same as \fIhandle\fP, that will cause this
+function to return an error. It must be another easy handle, and it also needs
+to be a handle of a transfer that will be sent over the same HTTP/2 connection
+for this option to have an actual effect.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP/2
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.46.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
new file mode 100644
index 00000000..a2b2472a
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STREAM_WEIGHT 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STREAM_WEIGHT \- set numerical stream weight
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);
+.SH DESCRIPTION
+Set the long \fIweight\fP to a number between 1 and 256.
+
+When using HTTP/2, this option sets the individual weight for this particular
+stream used by the easy \fIhandle\fP. Setting and using weights only makes
+sense and is only usable when doing multiple streams over the same
+connections, which thus implies that you use \fICURLMOPT_PIPELINING(3)\fP.
+
+This option can be set during transfer and will then cause the updated weight
+info get sent to the server the next time a HTTP/2 frame is sent to the
+server.
+
+See section 5.3 of RFC 7540 for protocol details:
+https://httpwg.github.io/specs/rfc7540.html#StreamPriority
+
+Streams with the same parent should be allocated resources proportionally
+based on their weight. So if you have two streams going, stream A with weight
+16 and stream B with weight 32, stream B will get two thirds (32/48) of the
+available bandwidth (assuming the server can send off the data equally for
+both streams).
+.SH DEFAULT
+If nothing is set, the HTTP/2 protocol itself will use its own default which
+is 16.
+.SH PROTOCOLS
+HTTP/2
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.46.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STREAM_DEPENDS "(3), " CURLOPT_STREAM_DEPENDS_E "(3), "
+.BR CURLOPT_PIPEWAIT "(3), " CURLMOPT_PIPELINING "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
new file mode 100644
index 00000000..f8f93438
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TCP_FASTOPEN 3 "16 Feb 2016" "libcurl 7.49.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);
+.SH DESCRIPTION
+Pass a long as parameter set to 1 to enable or 0 to disable.
+
+TCP Fast Open (RFC7413) is a mechanism that allows data to be carried in the
+SYN and SYN-ACK packets and consumed by the receiving end during the initial
+connection handshake, saving up to one full round-trip time (RTT).
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.49.0. This option is currently only supported on Linux and OS X
+El Capitan.
+.SH RETURN VALUE
+Returns CURLE_OK if fast open is supported by the operating system, otherwise
+returns CURLE_NOT_BUILT_IN.
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index 941cc488..cc3642fe 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.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/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index d60a3dff..f5f57628 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.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/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index 42bc0b4e..f332a8f4 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.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/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
index bd135167..efb25869 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.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/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
index f5a9bc5a..7a181ede 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.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/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
index 05bc639c..6aafbd14 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.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/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
new file mode 100644
index 00000000..97940fbb
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -0,0 +1,71 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "23 Feb 2016" "libcurl 7.48.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
+.SH DESCRIPTION
+Set \fIonoff\fP to 1L to exclude all TFTP options defined in RFC2347, RFC2348
+and RFC2349 from read and write requests (RRQs/WRQs).
+
+This option improves interop with some legacy servers that do not acknowledge
+or properly implement TFTP options. When this option is used
+\fICURLOPT_TFTP_BLKSIZE(3)\fP is ignored.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+TFTP
+.SH EXAMPLE
+.nf
+size_t write_callback(char *ptr, size_t size, size_t nmemb, void *fp)
+{
+ return fwrite(ptr, size, nmemb, (FILE *)fp);
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+ FILE *fp = fopen("foo.bin", "wb");
+ if(fp) {
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)fp);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
+
+ curl_easy_setopt(curl, CURLOPT_URL, "tftp://example.com/foo.bin");
+
+ /* do not send TFTP options requests */
+ curl_easy_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+
+ fclose(fp);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.48.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
index 66c34ff8..a8fcea7b 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -42,7 +42,21 @@ CURL_TIMECOND_NONE (0)
.SH PROTOCOLS
HTTP, FTP, RTSP, and FILE
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* January 1, 2020 is 1577833200 */
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
+
+ /* If-Modified-Since the above time stamp */
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 6440ffea..45e69b4d 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.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/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index 3727133b..2a7afb10 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.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/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
index 43a3871c..cd745ffa 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,7 +36,21 @@ since 1 Jan 1970, and the time will be used in a condition as specified with
.SH PROTOCOLS
HTTP, FTP, RTSP, and FILE
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* January 1, 2020 is 1577833200 */
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
+
+ /* If-Modified-Since the above time stamp */
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
index 1c8697f7..78fad0ef 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.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/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
index b5cdd5bc..5655e7d7 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.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
@@ -26,19 +26,19 @@ CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, long bitmask);
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
.SH DESCRIPTION
-Pass a long as parameter, which is set to a bitmask, to tell libcurl which
-authentication method(s) you want it to use for TLS authentication.
+Pass a pointer to a zero terminated string as parameter. The string
+should be the method of the TLS authentication. Supported method is "SRP".
-.IP CURL_TLSAUTH_SRP
+.IP SRP
TLS-SRP authentication. Secure Remote Password authentication for TLS is
defined in RFC5054 and provides mutual authentication if both sides have a
shared secret. To use TLS-SRP, you must also set the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP and \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
options.
.SH DEFAULT
-CURL_TLSAUTH_NONE (0)
+blank
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
index c5bb2dfb..5022e4e0 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.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/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
index 6e62413d..aa1759c2 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.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/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
index 7f2a11ca..242da13f 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -36,7 +36,7 @@ HTTP response sent using a compressed Transfer-Encoding that will be
automatically uncompressed by libcurl on reception.
Transfer-Encoding differs slightly from the Content-Encoding you ask for with
-\fBCURLOPT_ACCEPT_ENCODING(3)\fP in that a Transfer-Encoding is strictly meant
+\fICURLOPT_ACCEPT_ENCODING(3)\fP in that a Transfer-Encoding is strictly meant
to be for the transfer and thus MUST be decoded before the data arrives in the
client. Traditionally, Transfer-Encoding has been much less used and supported
by both HTTP clients and HTTP servers.
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
index a659cd2c..299c3ccb 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.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/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
index 68c38607..9e4cf269 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.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/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
index d24bd289..0ad201a1 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.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/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index 6e4824a9..a7d81df2 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -40,9 +40,11 @@ libcurl doesn't validate the syntax or use this variable until the transfer is
issued. Even if you set a crazy value here, \fIcurl_easy_setopt(3)\fP will
still return \fICURLE_OK\fP.
-If the given URL lacks the scheme (such as "http://" or "ftp://" etc) then
-libcurl will attempt to resolve the protocol based on one of the following
-given host names: HTTP, FTP, DICT, LDAP, IMAP, POP3 or SMTP
+If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
+then libcurl will make a guess based on the host. If the outermost sub-domain
+name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
+used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
+setting a default protocol, see \fICURLOPT_DEFAULT_PROTOCOL(3)\fP for details.
Should the protocol, either that specified by the scheme or deduced by libcurl
from the host name, not be supported by libcurl then
@@ -330,4 +332,5 @@ similar is called.
.SH "SEE ALSO"
.BR CURLOPT_VERBOSE "(3), " CURLOPT_PROTOCOLS "(3), "
.BR CURLOPT_FORBID_REUSE "(3), " CURLOPT_FRESH_CONNECT "(3), "
-.BR curl_easy_perform "(3)"
+.BR curl_easy_perform "(3), "
+.BR CURLINFO_REDIRECT_URL "(3), " CURLOPT_PATH_AS_IS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index 4d7036d8..c769e955 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.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/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
index 7546f743..ec600107 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -33,7 +33,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
Pass a char * as parameter, which should be pointing to the zero terminated
user name to use for the transfer.
-\fBCURLOPT_USERNAME(3)\fP sets the user name to be used in protocol
+\fICURLOPT_USERNAME(3)\fP sets the user name to be used in protocol
authentication. You should not use this option together with the (older)
\fICURLOPT_USERPWD(3)\fP option.
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
index 22e920f3..19404f6b 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.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/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
index 348f1b0c..37a224d4 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.3
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.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/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
index 732b8c41..e6a6fd19 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.3
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.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/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
index b567045e..1ca1bedd 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.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
@@ -78,7 +78,7 @@ Using the rules above, a file name pattern can be constructed:
.SH PROTOCOLS
This feature is only supported for FTP download.
.SH EXAMPLE
-See http://curl.haxx.se/libcurl/c/ftp-wildcard.html
+See https://curl.haxx.se/libcurl/c/ftp-wildcard.html
.SH AVAILABILITY
Added in 7.21.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index 0b7a5028..fdb58863 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.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
@@ -49,7 +49,7 @@ A common technique is to use the write callback to store the incoming data
into a dynamically growing allocated buffer, and then this
\fICURLOPT_WRITEDATA(3)\fP is used to point to a struct or the buffer to store
data in. Like in the getinmemory example:
-http://curl.haxx.se/libcurl/c/getinmemory.html
+https://curl.haxx.se/libcurl/c/getinmemory.html
.SH AVAILABILITY
Available in all libcurl versions. This option was formerly known as
\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA(3)\fP was introduced in
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
index f5a45a3c..2c77a4c1 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.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
@@ -76,6 +76,6 @@ This will return CURLE_OK.
.SH EXAMPLE
A common technique is to use this callback to store the incoming data into a
dynamically growing allocated buffer. Like in the getinmemory example:
-http://curl.haxx.se/libcurl/c/getinmemory.html
+https://curl.haxx.se/libcurl/c/getinmemory.html
.SH "SEE ALSO"
.BR CURLOPT_WRITEDATA "(3), " CURLOPT_READFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
index b2c170f6..fc1de8c9 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.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
@@ -37,7 +37,7 @@ The default value of this parameter is NULL.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Added in 7.32.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
index cad81182..9bd89db7 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.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
@@ -72,7 +72,7 @@ users.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Added in 7.32.0. This callback replaces \fICURLOPT_PROGRESSFUNCTION(3)\fP
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
index 2644c883..b6c1feef 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.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/docs/libcurl/opts/Makefile.am b/docs/libcurl/opts/Makefile.am
index 5517811d..49674d5c 100644
--- a/docs/libcurl/opts/Makefile.am
+++ b/docs/libcurl/opts/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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
@@ -22,318 +22,871 @@
AUTOMAKE_OPTIONS = foreign no-dependencies
-man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
- CURLOPT_ADDRESS_SCOPE.3 CURLOPT_APPEND.3 CURLOPT_AUTOREFERER.3 \
- CURLOPT_BUFFERSIZE.3 CURLOPT_CAINFO.3 CURLOPT_CAPATH.3 \
- CURLOPT_CERTINFO.3 CURLOPT_CHUNK_BGN_FUNCTION.3 CURLOPT_CHUNK_DATA.3 \
- CURLOPT_CHUNK_END_FUNCTION.3 CURLOPT_CLOSESOCKETDATA.3 \
- CURLOPT_CLOSESOCKETFUNCTION.3 CURLOPT_CONNECT_ONLY.3 \
- CURLOPT_CONNECTTIMEOUT.3 CURLOPT_CONNECTTIMEOUT_MS.3 \
- CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.3 CURLOPT_COOKIE.3 \
- CURLOPT_COOKIEFILE.3 CURLOPT_COOKIEJAR.3 CURLOPT_COOKIELIST.3 \
- CURLOPT_COOKIESESSION.3 CURLOPT_COPYPOSTFIELDS.3 CURLOPT_CRLF.3 \
- CURLOPT_CRLFILE.3 CURLOPT_CUSTOMREQUEST.3 CURLOPT_DEBUGDATA.3 \
- CURLOPT_DEBUGFUNCTION.3 CURLOPT_DIRLISTONLY.3 \
- CURLOPT_DNS_CACHE_TIMEOUT.3 CURLOPT_DNS_INTERFACE.3 \
- CURLOPT_DNS_LOCAL_IP4.3 CURLOPT_DNS_LOCAL_IP6.3 CURLOPT_DNS_SERVERS.3 \
- CURLOPT_DNS_USE_GLOBAL_CACHE.3 CURLOPT_EGDSOCKET.3 \
- CURLOPT_ERRORBUFFER.3 CURLOPT_EXPECT_100_TIMEOUT_MS.3 \
- CURLOPT_FAILONERROR.3 CURLOPT_FILETIME.3 CURLOPT_FNMATCH_DATA.3 \
- CURLOPT_FNMATCH_FUNCTION.3 CURLOPT_FOLLOWLOCATION.3 \
- CURLOPT_FORBID_REUSE.3 CURLOPT_FRESH_CONNECT.3 CURLOPT_FTP_ACCOUNT.3 \
- CURLOPT_FTP_ALTERNATIVE_TO_USER.3 CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
- CURLOPT_FTP_FILEMETHOD.3 CURLOPT_FTPPORT.3 \
- CURLOPT_FTP_RESPONSE_TIMEOUT.3 CURLOPT_FTP_SKIP_PASV_IP.3 \
- CURLOPT_FTPSSLAUTH.3 CURLOPT_FTP_SSL_CCC.3 CURLOPT_FTP_USE_EPRT.3 \
- CURLOPT_FTP_USE_EPSV.3 CURLOPT_FTP_USE_PRET.3 \
- CURLOPT_GSSAPI_DELEGATION.3 CURLOPT_HEADER.3 CURLOPT_HEADERDATA.3 \
- CURLOPT_HEADERFUNCTION.3 CURLOPT_HEADEROPT.3 CURLOPT_HTTP200ALIASES.3 \
- CURLOPT_HTTPAUTH.3 CURLOPT_HTTP_CONTENT_DECODING.3 CURLOPT_HTTPGET.3 \
- CURLOPT_HTTPHEADER.3 CURLOPT_HTTPPOST.3 CURLOPT_HTTPPROXYTUNNEL.3 \
- CURLOPT_HTTP_TRANSFER_DECODING.3 CURLOPT_HTTP_VERSION.3 \
- CURLOPT_IGNORE_CONTENT_LENGTH.3 CURLOPT_INFILESIZE.3 \
- CURLOPT_INFILESIZE_LARGE.3 CURLOPT_INTERFACE.3 \
- CURLOPT_INTERLEAVEDATA.3 CURLOPT_INTERLEAVEFUNCTION.3 \
- CURLOPT_IOCTLDATA.3 CURLOPT_IOCTLFUNCTION.3 CURLOPT_IPRESOLVE.3 \
- CURLOPT_ISSUERCERT.3 CURLOPT_KEYPASSWD.3 CURLOPT_KRBLEVEL.3 \
- CURLOPT_LOCALPORT.3 CURLOPT_LOCALPORTRANGE.3 CURLOPT_LOGIN_OPTIONS.3 \
- CURLOPT_LOW_SPEED_LIMIT.3 CURLOPT_LOW_SPEED_TIME.3 CURLOPT_MAIL_AUTH.3 \
- CURLOPT_MAIL_FROM.3 CURLOPT_MAIL_RCPT.3 CURLOPT_MAXCONNECTS.3 \
- CURLOPT_MAXFILESIZE.3 CURLOPT_MAXFILESIZE_LARGE.3 \
- CURLOPT_MAX_RECV_SPEED_LARGE.3 CURLOPT_MAXREDIRS.3 \
- CURLOPT_MAX_SEND_SPEED_LARGE.3 CURLOPT_NETRC.3 CURLOPT_NETRC_FILE.3 \
- CURLOPT_NEW_DIRECTORY_PERMS.3 CURLOPT_NEW_FILE_PERMS.3 \
- CURLOPT_NOBODY.3 CURLOPT_NOPROGRESS.3 CURLOPT_NOPROXY.3 \
- CURLOPT_NOSIGNAL.3 CURLOPT_OPENSOCKETDATA.3 \
- CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 \
- CURLOPT_PINNEDPUBLICKEY.3 CURLOPT_PORT.3 CURLOPT_POST.3 \
- CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3 \
- CURLOPT_POSTFIELDSIZE_LARGE.3 CURLOPT_POSTQUOTE.3 CURLOPT_POSTREDIR.3 \
- CURLOPT_PREQUOTE.3 CURLOPT_PRIVATE.3 CURLOPT_PROGRESSDATA.3 \
- CURLOPT_PROGRESSFUNCTION.3 CURLOPT_PROTOCOLS.3 CURLOPT_PROXY.3 \
- CURLOPT_PROXYAUTH.3 CURLOPT_PROXYHEADER.3 CURLOPT_PROXYPASSWORD.3 \
- CURLOPT_PROXYPORT.3 CURLOPT_PROXY_TRANSFER_MODE.3 CURLOPT_PROXYTYPE.3 \
- CURLOPT_PROXYUSERNAME.3 CURLOPT_PROXYUSERPWD.3 CURLOPT_PUT.3 \
- CURLOPT_QUOTE.3 CURLOPT_RANDOM_FILE.3 CURLOPT_RANGE.3 \
- CURLOPT_READDATA.3 CURLOPT_READFUNCTION.3 CURLOPT_REDIR_PROTOCOLS.3 \
- CURLOPT_REFERER.3 CURLOPT_RESOLVE.3 CURLOPT_RESUME_FROM.3 \
- CURLOPT_RESUME_FROM_LARGE.3 CURLOPT_RTSP_CLIENT_CSEQ.3 \
- CURLOPT_RTSP_REQUEST.3 CURLOPT_RTSP_SERVER_CSEQ.3 \
- CURLOPT_RTSP_SESSION_ID.3 CURLOPT_RTSP_STREAM_URI.3 \
- CURLOPT_RTSP_TRANSPORT.3 CURLOPT_SASL_IR.3 CURLOPT_SEEKDATA.3 \
- CURLOPT_SEEKFUNCTION.3 CURLOPT_SHARE.3 CURLOPT_SOCKOPTDATA.3 \
- CURLOPT_SOCKOPTFUNCTION.3 CURLOPT_SOCKS5_GSSAPI_NEC.3 \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.3 CURLOPT_SSH_AUTH_TYPES.3 \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 CURLOPT_SSH_KEYDATA.3 \
- CURLOPT_SSH_KEYFUNCTION.3 CURLOPT_SSH_KNOWNHOSTS.3 \
- CURLOPT_SSH_PRIVATE_KEYFILE.3 CURLOPT_SSH_PUBLIC_KEYFILE.3 \
- CURLOPT_SSLCERT.3 CURLOPT_SSLCERTTYPE.3 CURLOPT_SSL_CIPHER_LIST.3 \
- CURLOPT_SSL_CTX_DATA.3 CURLOPT_SSL_CTX_FUNCTION.3 \
- CURLOPT_SSL_ENABLE_ALPN.3 CURLOPT_SSL_ENABLE_NPN.3 CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSL_FALSESTART.3 CURLOPT_SSLKEY.3 \
- CURLOPT_SSLKEYTYPE.3 CURLOPT_SSL_OPTIONS.3 \
- CURLOPT_SSL_SESSIONID_CACHE.3 CURLOPT_SSL_VERIFYHOST.3 \
- CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSL_VERIFYSTATUS.3 \
- CURLOPT_SSLVERSION.3 CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 \
- CURLOPT_TCP_KEEPIDLE.3 CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 \
- CURLOPT_TELNETOPTIONS.3 CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 \
- CURLOPT_TIMEOUT.3 CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 \
- CURLOPT_TLSAUTH_PASSWORD.3 CURLOPT_TLSAUTH_TYPE.3 \
- CURLOPT_TLSAUTH_USERNAME.3 CURLOPT_TRANSFER_ENCODING.3 \
- CURLOPT_TRANSFERTEXT.3 CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 \
- CURLOPT_URL.3 CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3 \
- CURLOPT_USE_SSL.3 CURLOPT_VERBOSE.3 CURLOPT_WILDCARDMATCH.3 \
- CURLOPT_WRITEDATA.3 CURLOPT_WRITEFUNCTION.3 CURLOPT_XFERINFODATA.3 \
- CURLOPT_XFERINFOFUNCTION.3 CURLOPT_XOAUTH2_BEARER.3 \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 CURLMOPT_MAXCONNECTS.3 \
- CURLMOPT_MAX_HOST_CONNECTIONS.3 CURLMOPT_MAX_PIPELINE_LENGTH.3 \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.3 CURLMOPT_PIPELINING.3 \
- CURLMOPT_PIPELINING_SERVER_BL.3 CURLMOPT_PIPELINING_SITE_BL.3 \
- CURLMOPT_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3 \
- CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3 \
- CURLOPT_PATH_AS_IS.3 CURLOPT_PROXY_SERVICE_NAME.3 \
- CURLOPT_SERVICE_NAME.3 CURLOPT_PIPEWAIT.3
+man_MANS = \
+ CURLINFO_ACTIVESOCKET.3 \
+ CURLINFO_APPCONNECT_TIME.3 \
+ CURLINFO_CERTINFO.3 \
+ CURLINFO_CONDITION_UNMET.3 \
+ CURLINFO_CONNECT_TIME.3 \
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 \
+ CURLINFO_CONTENT_LENGTH_UPLOAD.3 \
+ CURLINFO_CONTENT_TYPE.3 \
+ CURLINFO_COOKIELIST.3 \
+ CURLINFO_EFFECTIVE_URL.3 \
+ CURLINFO_FILETIME.3 \
+ CURLINFO_FTP_ENTRY_PATH.3 \
+ CURLINFO_HEADER_SIZE.3 \
+ CURLINFO_HTTPAUTH_AVAIL.3 \
+ CURLINFO_HTTP_CONNECTCODE.3 \
+ CURLINFO_LASTSOCKET.3 \
+ CURLINFO_LOCAL_IP.3 \
+ CURLINFO_LOCAL_PORT.3 \
+ CURLINFO_NAMELOOKUP_TIME.3 \
+ CURLINFO_NUM_CONNECTS.3 \
+ CURLINFO_OS_ERRNO.3 \
+ CURLINFO_PRETRANSFER_TIME.3 \
+ CURLINFO_PRIMARY_IP.3 \
+ CURLINFO_PRIMARY_PORT.3 \
+ CURLINFO_PRIVATE.3 \
+ CURLINFO_PROXYAUTH_AVAIL.3 \
+ CURLINFO_REDIRECT_COUNT.3 \
+ CURLINFO_REDIRECT_TIME.3 \
+ CURLINFO_REDIRECT_URL.3 \
+ CURLINFO_REQUEST_SIZE.3 \
+ CURLINFO_RESPONSE_CODE.3 \
+ CURLINFO_RTSP_CLIENT_CSEQ.3 \
+ CURLINFO_RTSP_CSEQ_RECV.3 \
+ CURLINFO_RTSP_SERVER_CSEQ.3 \
+ CURLINFO_RTSP_SESSION_ID.3 \
+ CURLINFO_SIZE_DOWNLOAD.3 \
+ CURLINFO_SIZE_UPLOAD.3 \
+ CURLINFO_SPEED_DOWNLOAD.3 \
+ CURLINFO_SPEED_UPLOAD.3 \
+ CURLINFO_SSL_ENGINES.3 \
+ CURLINFO_SSL_VERIFYRESULT.3 \
+ CURLINFO_STARTTRANSFER_TIME.3 \
+ CURLINFO_TLS_SESSION.3 \
+ CURLINFO_TLS_SSL_PTR.3 \
+ CURLINFO_TOTAL_TIME.3 \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 \
+ CURLMOPT_MAXCONNECTS.3 \
+ CURLMOPT_MAX_HOST_CONNECTIONS.3 \
+ CURLMOPT_MAX_PIPELINE_LENGTH.3 \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.3 \
+ CURLMOPT_PIPELINING.3 \
+ CURLMOPT_PIPELINING_SERVER_BL.3 \
+ CURLMOPT_PIPELINING_SITE_BL.3 \
+ CURLMOPT_PUSHDATA.3 \
+ CURLMOPT_PUSHFUNCTION.3 \
+ CURLMOPT_SOCKETDATA.3 \
+ CURLMOPT_SOCKETFUNCTION.3 \
+ CURLMOPT_TIMERDATA.3 \
+ CURLMOPT_TIMERFUNCTION.3 \
+ CURLOPT_ACCEPTTIMEOUT_MS.3 \
+ CURLOPT_ACCEPT_ENCODING.3 \
+ CURLOPT_ADDRESS_SCOPE.3 \
+ CURLOPT_APPEND.3 \
+ CURLOPT_AUTOREFERER.3 \
+ CURLOPT_BUFFERSIZE.3 \
+ CURLOPT_CAINFO.3 \
+ CURLOPT_CAPATH.3 \
+ CURLOPT_CERTINFO.3 \
+ CURLOPT_CHUNK_BGN_FUNCTION.3 \
+ CURLOPT_CHUNK_DATA.3 \
+ CURLOPT_CHUNK_END_FUNCTION.3 \
+ CURLOPT_CLOSESOCKETDATA.3 \
+ CURLOPT_CLOSESOCKETFUNCTION.3 \
+ CURLOPT_CONNECTTIMEOUT.3 \
+ CURLOPT_CONNECTTIMEOUT_MS.3 \
+ CURLOPT_CONNECT_ONLY.3 \
+ CURLOPT_CONNECT_TO.3 \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.3 \
+ CURLOPT_COOKIE.3 \
+ CURLOPT_COOKIEFILE.3 \
+ CURLOPT_COOKIEJAR.3 \
+ CURLOPT_COOKIELIST.3 \
+ CURLOPT_COOKIESESSION.3 \
+ CURLOPT_COPYPOSTFIELDS.3 \
+ CURLOPT_CRLF.3 \
+ CURLOPT_CRLFILE.3 \
+ CURLOPT_CUSTOMREQUEST.3 \
+ CURLOPT_DEBUGDATA.3 \
+ CURLOPT_DEBUGFUNCTION.3 \
+ CURLOPT_DEFAULT_PROTOCOL.3 \
+ CURLOPT_DIRLISTONLY.3 \
+ CURLOPT_DNS_CACHE_TIMEOUT.3 \
+ CURLOPT_DNS_INTERFACE.3 \
+ CURLOPT_DNS_LOCAL_IP4.3 \
+ CURLOPT_DNS_LOCAL_IP6.3 \
+ CURLOPT_DNS_SERVERS.3 \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.3 \
+ CURLOPT_EGDSOCKET.3 \
+ CURLOPT_ERRORBUFFER.3 \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.3 \
+ CURLOPT_FAILONERROR.3 \
+ CURLOPT_FILETIME.3 \
+ CURLOPT_FNMATCH_DATA.3 \
+ CURLOPT_FNMATCH_FUNCTION.3 \
+ CURLOPT_FOLLOWLOCATION.3 \
+ CURLOPT_FORBID_REUSE.3 \
+ CURLOPT_FRESH_CONNECT.3 \
+ CURLOPT_FTPPORT.3 \
+ CURLOPT_FTPSSLAUTH.3 \
+ CURLOPT_FTP_ACCOUNT.3 \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.3 \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
+ CURLOPT_FTP_FILEMETHOD.3 \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.3 \
+ CURLOPT_FTP_SKIP_PASV_IP.3 \
+ CURLOPT_FTP_SSL_CCC.3 \
+ CURLOPT_FTP_USE_EPRT.3 \
+ CURLOPT_FTP_USE_EPSV.3 \
+ CURLOPT_FTP_USE_PRET.3 \
+ CURLOPT_GSSAPI_DELEGATION.3 \
+ CURLOPT_HEADER.3 \
+ CURLOPT_HEADERDATA.3 \
+ CURLOPT_HEADERFUNCTION.3 \
+ CURLOPT_HEADEROPT.3 \
+ CURLOPT_HTTP200ALIASES.3 \
+ CURLOPT_HTTPAUTH.3 \
+ CURLOPT_HTTPGET.3 \
+ CURLOPT_HTTPHEADER.3 \
+ CURLOPT_HTTPPOST.3 \
+ CURLOPT_HTTPPROXYTUNNEL.3 \
+ CURLOPT_HTTP_CONTENT_DECODING.3 \
+ CURLOPT_HTTP_TRANSFER_DECODING.3 \
+ CURLOPT_HTTP_VERSION.3 \
+ CURLOPT_IGNORE_CONTENT_LENGTH.3 \
+ CURLOPT_INFILESIZE.3 \
+ CURLOPT_INFILESIZE_LARGE.3 \
+ CURLOPT_INTERFACE.3 \
+ CURLOPT_INTERLEAVEDATA.3 \
+ CURLOPT_INTERLEAVEFUNCTION.3 \
+ CURLOPT_IOCTLDATA.3 \
+ CURLOPT_IOCTLFUNCTION.3 \
+ CURLOPT_IPRESOLVE.3 \
+ CURLOPT_ISSUERCERT.3 \
+ CURLOPT_KEYPASSWD.3 \
+ CURLOPT_KRBLEVEL.3 \
+ CURLOPT_LOCALPORT.3 \
+ CURLOPT_LOCALPORTRANGE.3 \
+ CURLOPT_LOGIN_OPTIONS.3 \
+ CURLOPT_LOW_SPEED_LIMIT.3 \
+ CURLOPT_LOW_SPEED_TIME.3 \
+ CURLOPT_MAIL_AUTH.3 \
+ CURLOPT_MAIL_FROM.3 \
+ CURLOPT_MAIL_RCPT.3 \
+ CURLOPT_MAXCONNECTS.3 \
+ CURLOPT_MAXFILESIZE.3 \
+ CURLOPT_MAXFILESIZE_LARGE.3 \
+ CURLOPT_MAXREDIRS.3 \
+ CURLOPT_MAX_RECV_SPEED_LARGE.3 \
+ CURLOPT_MAX_SEND_SPEED_LARGE.3 \
+ CURLOPT_NETRC.3 \
+ CURLOPT_NETRC_FILE.3 \
+ CURLOPT_NEW_DIRECTORY_PERMS.3 \
+ CURLOPT_NEW_FILE_PERMS.3 \
+ CURLOPT_NOBODY.3 \
+ CURLOPT_NOPROGRESS.3 \
+ CURLOPT_NOPROXY.3 \
+ CURLOPT_NOSIGNAL.3 \
+ CURLOPT_OPENSOCKETDATA.3 \
+ CURLOPT_OPENSOCKETFUNCTION.3 \
+ CURLOPT_PASSWORD.3 \
+ CURLOPT_PATH_AS_IS.3 \
+ CURLOPT_PINNEDPUBLICKEY.3 \
+ CURLOPT_PIPEWAIT.3 \
+ CURLOPT_PORT.3 \
+ CURLOPT_POST.3 \
+ CURLOPT_POSTFIELDS.3 \
+ CURLOPT_POSTFIELDSIZE.3 \
+ CURLOPT_POSTFIELDSIZE_LARGE.3 \
+ CURLOPT_POSTQUOTE.3 \
+ CURLOPT_POSTREDIR.3 \
+ CURLOPT_PREQUOTE.3 \
+ CURLOPT_PRIVATE.3 \
+ CURLOPT_PROGRESSDATA.3 \
+ CURLOPT_PROGRESSFUNCTION.3 \
+ CURLOPT_PROTOCOLS.3 \
+ CURLOPT_PROXY.3 \
+ CURLOPT_PROXYAUTH.3 \
+ CURLOPT_PROXYHEADER.3 \
+ CURLOPT_PROXYPASSWORD.3 \
+ CURLOPT_PROXYPORT.3 \
+ CURLOPT_PROXYTYPE.3 \
+ CURLOPT_PROXYUSERNAME.3 \
+ CURLOPT_PROXYUSERPWD.3 \
+ CURLOPT_PROXY_SERVICE_NAME.3 \
+ CURLOPT_PROXY_TRANSFER_MODE.3 \
+ CURLOPT_PUT.3 \
+ CURLOPT_QUOTE.3 \
+ CURLOPT_RANDOM_FILE.3 \
+ CURLOPT_RANGE.3 \
+ CURLOPT_READDATA.3 \
+ CURLOPT_READFUNCTION.3 \
+ CURLOPT_REDIR_PROTOCOLS.3 \
+ CURLOPT_REFERER.3 \
+ CURLOPT_RESOLVE.3 \
+ CURLOPT_RESUME_FROM.3 \
+ CURLOPT_RESUME_FROM_LARGE.3 \
+ CURLOPT_RTSP_CLIENT_CSEQ.3 \
+ CURLOPT_RTSP_REQUEST.3 \
+ CURLOPT_RTSP_SERVER_CSEQ.3 \
+ CURLOPT_RTSP_SESSION_ID.3 \
+ CURLOPT_RTSP_STREAM_URI.3 \
+ CURLOPT_RTSP_TRANSPORT.3 \
+ CURLOPT_SASL_IR.3 \
+ CURLOPT_SEEKDATA.3 \
+ CURLOPT_SEEKFUNCTION.3 \
+ CURLOPT_SERVICE_NAME.3 \
+ CURLOPT_SHARE.3 \
+ CURLOPT_SOCKOPTDATA.3 \
+ CURLOPT_SOCKOPTFUNCTION.3 \
+ CURLOPT_SOCKS5_GSSAPI_NEC.3 \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.3 \
+ CURLOPT_SSH_AUTH_TYPES.3 \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 \
+ CURLOPT_SSH_KEYDATA.3 \
+ CURLOPT_SSH_KEYFUNCTION.3 \
+ CURLOPT_SSH_KNOWNHOSTS.3 \
+ CURLOPT_SSH_PRIVATE_KEYFILE.3 \
+ CURLOPT_SSH_PUBLIC_KEYFILE.3 \
+ CURLOPT_SSLCERT.3 \
+ CURLOPT_SSLCERTTYPE.3 \
+ CURLOPT_SSLENGINE.3 \
+ CURLOPT_SSLENGINE_DEFAULT.3 \
+ CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEYTYPE.3 \
+ CURLOPT_SSLVERSION.3 \
+ CURLOPT_SSL_CIPHER_LIST.3 \
+ CURLOPT_SSL_CTX_DATA.3 \
+ CURLOPT_SSL_CTX_FUNCTION.3 \
+ CURLOPT_SSL_ENABLE_ALPN.3 \
+ CURLOPT_SSL_ENABLE_NPN.3 \
+ CURLOPT_SSL_FALSESTART.3 \
+ CURLOPT_SSL_OPTIONS.3 \
+ CURLOPT_SSL_SESSIONID_CACHE.3 \
+ CURLOPT_SSL_VERIFYHOST.3 \
+ CURLOPT_SSL_VERIFYPEER.3 \
+ CURLOPT_SSL_VERIFYSTATUS.3 \
+ CURLOPT_STDERR.3 \
+ CURLOPT_STREAM_DEPENDS.3 \
+ CURLOPT_STREAM_DEPENDS_E.3 \
+ CURLOPT_STREAM_WEIGHT.3 \
+ CURLOPT_TCP_FASTOPEN.3 \
+ CURLOPT_TCP_KEEPALIVE.3 \
+ CURLOPT_TCP_KEEPIDLE.3 \
+ CURLOPT_TCP_KEEPINTVL.3 \
+ CURLOPT_TCP_NODELAY.3 \
+ CURLOPT_TELNETOPTIONS.3 \
+ CURLOPT_TFTP_BLKSIZE.3 \
+ CURLOPT_TFTP_NO_OPTIONS.3 \
+ CURLOPT_TIMECONDITION.3 \
+ CURLOPT_TIMEOUT.3 \
+ CURLOPT_TIMEOUT_MS.3 \
+ CURLOPT_TIMEVALUE.3 \
+ CURLOPT_TLSAUTH_PASSWORD.3 \
+ CURLOPT_TLSAUTH_TYPE.3 \
+ CURLOPT_TLSAUTH_USERNAME.3 \
+ CURLOPT_TRANSFERTEXT.3 \
+ CURLOPT_TRANSFER_ENCODING.3 \
+ CURLOPT_UNIX_SOCKET_PATH.3 \
+ CURLOPT_UNRESTRICTED_AUTH.3 \
+ CURLOPT_UPLOAD.3 \
+ CURLOPT_URL.3 \
+ CURLOPT_USERAGENT.3 \
+ CURLOPT_USERNAME.3 \
+ CURLOPT_USERPWD.3 \
+ CURLOPT_USE_SSL.3 \
+ CURLOPT_VERBOSE.3 \
+ CURLOPT_WILDCARDMATCH.3 \
+ CURLOPT_WRITEDATA.3 \
+ CURLOPT_WRITEFUNCTION.3 \
+ CURLOPT_XFERINFODATA.3 \
+ CURLOPT_XFERINFOFUNCTION.3 \
+ CURLOPT_XOAUTH2_BEARER.3
-HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
- CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html \
- CURLOPT_AUTOREFERER.html CURLOPT_BUFFERSIZE.html CURLOPT_CAINFO.html \
- CURLOPT_CAPATH.html CURLOPT_CERTINFO.html \
- CURLOPT_CHUNK_BGN_FUNCTION.html CURLOPT_CHUNK_DATA.html \
- CURLOPT_CHUNK_END_FUNCTION.html CURLOPT_CLOSESOCKETDATA.html \
- CURLOPT_CLOSESOCKETFUNCTION.html CURLOPT_CONNECT_ONLY.html \
- CURLOPT_CONNECTTIMEOUT.html CURLOPT_CONNECTTIMEOUT_MS.html \
- CURLOPT_CONV_FROM_NETWORK_FUNCTION.html \
- CURLOPT_CONV_FROM_UTF8_FUNCTION.html \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.html CURLOPT_COOKIE.html \
- CURLOPT_COOKIEFILE.html CURLOPT_COOKIEJAR.html CURLOPT_COOKIELIST.html \
- CURLOPT_COOKIESESSION.html CURLOPT_COPYPOSTFIELDS.html \
- CURLOPT_CRLF.html CURLOPT_CRLFILE.html CURLOPT_CUSTOMREQUEST.html \
- CURLOPT_DEBUGDATA.html CURLOPT_DEBUGFUNCTION.html \
- CURLOPT_DIRLISTONLY.html CURLOPT_DNS_CACHE_TIMEOUT.html \
- CURLOPT_DNS_INTERFACE.html CURLOPT_DNS_LOCAL_IP4.html \
- CURLOPT_DNS_LOCAL_IP6.html CURLOPT_DNS_SERVERS.html \
- CURLOPT_DNS_USE_GLOBAL_CACHE.html CURLOPT_EGDSOCKET.html \
- CURLOPT_ERRORBUFFER.html CURLOPT_EXPECT_100_TIMEOUT_MS.html \
- CURLOPT_FAILONERROR.html CURLOPT_FILETIME.html \
- CURLOPT_FNMATCH_DATA.html CURLOPT_FNMATCH_FUNCTION.html \
- CURLOPT_FOLLOWLOCATION.html CURLOPT_FORBID_REUSE.html \
- CURLOPT_FRESH_CONNECT.html CURLOPT_FTP_ACCOUNT.html \
- CURLOPT_FTP_ALTERNATIVE_TO_USER.html \
- CURLOPT_FTP_CREATE_MISSING_DIRS.html CURLOPT_FTP_FILEMETHOD.html \
- CURLOPT_FTPPORT.html CURLOPT_FTP_RESPONSE_TIMEOUT.html \
- CURLOPT_FTP_SKIP_PASV_IP.html CURLOPT_FTPSSLAUTH.html \
- CURLOPT_FTP_SSL_CCC.html CURLOPT_FTP_USE_EPRT.html \
- CURLOPT_FTP_USE_EPSV.html CURLOPT_FTP_USE_PRET.html \
- CURLOPT_GSSAPI_DELEGATION.html CURLOPT_HEADER.html \
- CURLOPT_HEADERDATA.html CURLOPT_HEADERFUNCTION.html \
- CURLOPT_HEADEROPT.html CURLOPT_HTTP200ALIASES.html \
- CURLOPT_HTTPAUTH.html CURLOPT_HTTP_CONTENT_DECODING.html \
- CURLOPT_HTTPGET.html CURLOPT_HTTPHEADER.html CURLOPT_HTTPPOST.html \
- CURLOPT_HTTPPROXYTUNNEL.html CURLOPT_HTTP_TRANSFER_DECODING.html \
- CURLOPT_HTTP_VERSION.html CURLOPT_IGNORE_CONTENT_LENGTH.html \
- CURLOPT_INFILESIZE.html CURLOPT_INFILESIZE_LARGE.html \
- CURLOPT_INTERFACE.html CURLOPT_INTERLEAVEDATA.html \
- CURLOPT_INTERLEAVEFUNCTION.html CURLOPT_IOCTLDATA.html \
- CURLOPT_IOCTLFUNCTION.html CURLOPT_IPRESOLVE.html \
- CURLOPT_ISSUERCERT.html CURLOPT_KEYPASSWD.html CURLOPT_KRBLEVEL.html \
- CURLOPT_LOCALPORT.html CURLOPT_LOCALPORTRANGE.html \
- CURLOPT_LOGIN_OPTIONS.html CURLOPT_LOW_SPEED_LIMIT.html \
- CURLOPT_LOW_SPEED_TIME.html CURLOPT_MAIL_AUTH.html \
- CURLOPT_MAIL_FROM.html CURLOPT_MAIL_RCPT.html CURLOPT_MAXCONNECTS.html \
- CURLOPT_MAXFILESIZE.html CURLOPT_MAXFILESIZE_LARGE.html \
- CURLOPT_MAX_RECV_SPEED_LARGE.html CURLOPT_MAXREDIRS.html \
- CURLOPT_MAX_SEND_SPEED_LARGE.html CURLOPT_NETRC.html \
- CURLOPT_NETRC_FILE.html CURLOPT_NEW_DIRECTORY_PERMS.html \
- CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html \
- CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html \
- CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html \
- CURLOPT_PASSWORD.html CURLOPT_PINNEDPUBLICKEY.html CURLOPT_PORT.html \
- CURLOPT_POST.html CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html \
- CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html \
- CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html \
- CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html \
- CURLOPT_PROTOCOLS.html CURLOPT_PROXY.html CURLOPT_PROXYAUTH.html \
- CURLOPT_PROXYHEADER.html CURLOPT_PROXYPASSWORD.html \
- CURLOPT_PROXYPORT.html CURLOPT_PROXY_TRANSFER_MODE.html \
- CURLOPT_PROXYTYPE.html CURLOPT_PROXYUSERNAME.html \
- CURLOPT_PROXYUSERPWD.html CURLOPT_PUT.html CURLOPT_QUOTE.html \
- CURLOPT_RANDOM_FILE.html CURLOPT_RANGE.html CURLOPT_READDATA.html \
- CURLOPT_READFUNCTION.html CURLOPT_REDIR_PROTOCOLS.html \
- CURLOPT_REFERER.html CURLOPT_RESOLVE.html CURLOPT_RESUME_FROM.html \
- CURLOPT_RESUME_FROM_LARGE.html CURLOPT_RTSP_CLIENT_CSEQ.html \
- CURLOPT_RTSP_REQUEST.html CURLOPT_RTSP_SERVER_CSEQ.html \
- CURLOPT_RTSP_SESSION_ID.html CURLOPT_RTSP_STREAM_URI.html \
- CURLOPT_RTSP_TRANSPORT.html CURLOPT_SASL_IR.html CURLOPT_SEEKDATA.html \
- CURLOPT_SEEKFUNCTION.html CURLOPT_SHARE.html CURLOPT_SOCKOPTDATA.html \
- CURLOPT_SOCKOPTFUNCTION.html CURLOPT_SOCKS5_GSSAPI_NEC.html \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.html CURLOPT_SSH_AUTH_TYPES.html \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html CURLOPT_SSH_KEYDATA.html \
- CURLOPT_SSH_KEYFUNCTION.html CURLOPT_SSH_KNOWNHOSTS.html \
- CURLOPT_SSH_PRIVATE_KEYFILE.html CURLOPT_SSH_PUBLIC_KEYFILE.html \
- CURLOPT_SSLCERT.html CURLOPT_SSLCERTTYPE.html \
- CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html \
- CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html \
- CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html \
- CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSL_FALSESTART.html \
- CURLOPT_SSLKEY.html CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html \
- CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html \
- CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSL_VERIFYSTATUS.html \
- CURLOPT_SSLVERSION.html CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html \
- CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html \
- CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html \
- CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html \
- CURLOPT_TIMEOUT.html CURLOPT_TIMEOUT_MS.html CURLOPT_TIMEVALUE.html \
- CURLOPT_TLSAUTH_PASSWORD.html CURLOPT_TLSAUTH_TYPE.html \
- CURLOPT_TLSAUTH_USERNAME.html CURLOPT_TRANSFER_ENCODING.html \
- CURLOPT_TRANSFERTEXT.html CURLOPT_UNRESTRICTED_AUTH.html \
- CURLOPT_UPLOAD.html CURLOPT_URL.html CURLOPT_USERAGENT.html \
- CURLOPT_USERNAME.html CURLOPT_USERPWD.html CURLOPT_USE_SSL.html \
- CURLOPT_VERBOSE.html CURLOPT_WILDCARDMATCH.html CURLOPT_WRITEDATA.html \
- CURLOPT_WRITEFUNCTION.html CURLOPT_XFERINFODATA.html \
- CURLOPT_XFERINFOFUNCTION.html CURLOPT_XOAUTH2_BEARER.html \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html CURLMOPT_MAXCONNECTS.html \
- CURLMOPT_MAX_HOST_CONNECTIONS.html CURLMOPT_MAX_PIPELINE_LENGTH.html \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.html CURLMOPT_PIPELINING.html \
- CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html \
- CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html \
- CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html \
- CURLOPT_UNIX_SOCKET_PATH.html CURLOPT_PATH_AS_IS.html \
- CURLOPT_PROXY_SERVICE_NAME.html CURLOPT_SERVICE_NAME.html \
- CURLOPT_PIPEWAIT.html
+HTMLPAGES = \
+ CURLINFO_ACTIVESOCKET.html \
+ CURLINFO_APPCONNECT_TIME.html \
+ CURLINFO_CERTINFO.html \
+ CURLINFO_CONDITION_UNMET.html \
+ CURLINFO_CONNECT_TIME.html \
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD.html \
+ CURLINFO_CONTENT_LENGTH_UPLOAD.html \
+ CURLINFO_CONTENT_TYPE.html \
+ CURLINFO_COOKIELIST.html \
+ CURLINFO_EFFECTIVE_URL.html \
+ CURLINFO_FILETIME.html \
+ CURLINFO_FTP_ENTRY_PATH.html \
+ CURLINFO_HEADER_SIZE.html \
+ CURLINFO_HTTPAUTH_AVAIL.html \
+ CURLINFO_HTTP_CONNECTCODE.html \
+ CURLINFO_LASTSOCKET.html \
+ CURLINFO_LOCAL_IP.html \
+ CURLINFO_LOCAL_PORT.html \
+ CURLINFO_NAMELOOKUP_TIME.html \
+ CURLINFO_NUM_CONNECTS.html \
+ CURLINFO_OS_ERRNO.html \
+ CURLINFO_PRETRANSFER_TIME.html \
+ CURLINFO_PRIMARY_IP.html \
+ CURLINFO_PRIMARY_PORT.html \
+ CURLINFO_PRIVATE.html \
+ CURLINFO_PROXYAUTH_AVAIL.html \
+ CURLINFO_REDIRECT_COUNT.html \
+ CURLINFO_REDIRECT_TIME.html \
+ CURLINFO_REDIRECT_URL.html \
+ CURLINFO_REQUEST_SIZE.html \
+ CURLINFO_RESPONSE_CODE.html \
+ CURLINFO_RTSP_CLIENT_CSEQ.html \
+ CURLINFO_RTSP_CSEQ_RECV.html \
+ CURLINFO_RTSP_SERVER_CSEQ.html \
+ CURLINFO_RTSP_SESSION_ID.html \
+ CURLINFO_SIZE_DOWNLOAD.html \
+ CURLINFO_SIZE_UPLOAD.html \
+ CURLINFO_SPEED_DOWNLOAD.html \
+ CURLINFO_SPEED_UPLOAD.html \
+ CURLINFO_SSL_ENGINES.html \
+ CURLINFO_SSL_VERIFYRESULT.html \
+ CURLINFO_STARTTRANSFER_TIME.html \
+ CURLINFO_TLS_SESSION.html \
+ CURLINFO_TLS_SSL_PTR.html \
+ CURLINFO_TOTAL_TIME.html \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html \
+ CURLMOPT_MAXCONNECTS.html \
+ CURLMOPT_MAX_HOST_CONNECTIONS.html \
+ CURLMOPT_MAX_PIPELINE_LENGTH.html \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.html \
+ CURLMOPT_PIPELINING.html \
+ CURLMOPT_PIPELINING_SERVER_BL.html \
+ CURLMOPT_PIPELINING_SITE_BL.html \
+ CURLMOPT_PUSHDATA.html \
+ CURLMOPT_PUSHFUNCTION.html \
+ CURLMOPT_SOCKETDATA.html \
+ CURLMOPT_SOCKETFUNCTION.html \
+ CURLMOPT_TIMERDATA.html \
+ CURLMOPT_TIMERFUNCTION.html \
+ CURLOPT_ACCEPTTIMEOUT_MS.html \
+ CURLOPT_ACCEPT_ENCODING.html \
+ CURLOPT_ADDRESS_SCOPE.html \
+ CURLOPT_APPEND.html \
+ CURLOPT_AUTOREFERER.html \
+ CURLOPT_BUFFERSIZE.html \
+ CURLOPT_CAINFO.html \
+ CURLOPT_CAPATH.html \
+ CURLOPT_CERTINFO.html \
+ CURLOPT_CHUNK_BGN_FUNCTION.html \
+ CURLOPT_CHUNK_DATA.html \
+ CURLOPT_CHUNK_END_FUNCTION.html \
+ CURLOPT_CLOSESOCKETDATA.html \
+ CURLOPT_CLOSESOCKETFUNCTION.html \
+ CURLOPT_CONNECTTIMEOUT.html \
+ CURLOPT_CONNECTTIMEOUT_MS.html \
+ CURLOPT_CONNECT_ONLY.html \
+ CURLOPT_CONNECT_TO.html \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.html \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.html \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.html \
+ CURLOPT_COOKIE.html \
+ CURLOPT_COOKIEFILE.html \
+ CURLOPT_COOKIEJAR.html \
+ CURLOPT_COOKIELIST.html \
+ CURLOPT_COOKIESESSION.html \
+ CURLOPT_COPYPOSTFIELDS.html \
+ CURLOPT_CRLF.html \
+ CURLOPT_CRLFILE.html \
+ CURLOPT_CUSTOMREQUEST.html \
+ CURLOPT_DEBUGDATA.html \
+ CURLOPT_DEBUGFUNCTION.html \
+ CURLOPT_DEFAULT_PROTOCOL.html \
+ CURLOPT_DIRLISTONLY.html \
+ CURLOPT_DNS_CACHE_TIMEOUT.html \
+ CURLOPT_DNS_INTERFACE.html \
+ CURLOPT_DNS_LOCAL_IP4.html \
+ CURLOPT_DNS_LOCAL_IP6.html \
+ CURLOPT_DNS_SERVERS.html \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.html \
+ CURLOPT_EGDSOCKET.html \
+ CURLOPT_ERRORBUFFER.html \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.html \
+ CURLOPT_FAILONERROR.html \
+ CURLOPT_FILETIME.html \
+ CURLOPT_FNMATCH_DATA.html \
+ CURLOPT_FNMATCH_FUNCTION.html \
+ CURLOPT_FOLLOWLOCATION.html \
+ CURLOPT_FORBID_REUSE.html \
+ CURLOPT_FRESH_CONNECT.html \
+ CURLOPT_FTPPORT.html \
+ CURLOPT_FTPSSLAUTH.html \
+ CURLOPT_FTP_ACCOUNT.html \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.html \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.html \
+ CURLOPT_FTP_FILEMETHOD.html \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.html \
+ CURLOPT_FTP_SKIP_PASV_IP.html \
+ CURLOPT_FTP_SSL_CCC.html \
+ CURLOPT_FTP_USE_EPRT.html \
+ CURLOPT_FTP_USE_EPSV.html \
+ CURLOPT_FTP_USE_PRET.html \
+ CURLOPT_GSSAPI_DELEGATION.html \
+ CURLOPT_HEADER.html \
+ CURLOPT_HEADERDATA.html \
+ CURLOPT_HEADERFUNCTION.html \
+ CURLOPT_HEADEROPT.html \
+ CURLOPT_HTTP200ALIASES.html \
+ CURLOPT_HTTPAUTH.html \
+ CURLOPT_HTTPGET.html \
+ CURLOPT_HTTPHEADER.html \
+ CURLOPT_HTTPPOST.html \
+ CURLOPT_HTTPPROXYTUNNEL.html \
+ CURLOPT_HTTP_CONTENT_DECODING.html \
+ CURLOPT_HTTP_TRANSFER_DECODING.html \
+ CURLOPT_HTTP_VERSION.html \
+ CURLOPT_IGNORE_CONTENT_LENGTH.html \
+ CURLOPT_INFILESIZE.html \
+ CURLOPT_INFILESIZE_LARGE.html \
+ CURLOPT_INTERFACE.html \
+ CURLOPT_INTERLEAVEDATA.html \
+ CURLOPT_INTERLEAVEFUNCTION.html \
+ CURLOPT_IOCTLDATA.html \
+ CURLOPT_IOCTLFUNCTION.html \
+ CURLOPT_IPRESOLVE.html \
+ CURLOPT_ISSUERCERT.html \
+ CURLOPT_KEYPASSWD.html \
+ CURLOPT_KRBLEVEL.html \
+ CURLOPT_LOCALPORT.html \
+ CURLOPT_LOCALPORTRANGE.html \
+ CURLOPT_LOGIN_OPTIONS.html \
+ CURLOPT_LOW_SPEED_LIMIT.html \
+ CURLOPT_LOW_SPEED_TIME.html \
+ CURLOPT_MAIL_AUTH.html \
+ CURLOPT_MAIL_FROM.html \
+ CURLOPT_MAIL_RCPT.html \
+ CURLOPT_MAXCONNECTS.html \
+ CURLOPT_MAXFILESIZE.html \
+ CURLOPT_MAXFILESIZE_LARGE.html \
+ CURLOPT_MAXREDIRS.html \
+ CURLOPT_MAX_RECV_SPEED_LARGE.html \
+ CURLOPT_MAX_SEND_SPEED_LARGE.html \
+ CURLOPT_NETRC.html \
+ CURLOPT_NETRC_FILE.html \
+ CURLOPT_NEW_DIRECTORY_PERMS.html \
+ CURLOPT_NEW_FILE_PERMS.html \
+ CURLOPT_NOBODY.html \
+ CURLOPT_NOPROGRESS.html \
+ CURLOPT_NOPROXY.html \
+ CURLOPT_NOSIGNAL.html \
+ CURLOPT_OPENSOCKETDATA.html \
+ CURLOPT_OPENSOCKETFUNCTION.html \
+ CURLOPT_PASSWORD.html \
+ CURLOPT_PATH_AS_IS.html \
+ CURLOPT_PINNEDPUBLICKEY.html \
+ CURLOPT_PIPEWAIT.html \
+ CURLOPT_PORT.html \
+ CURLOPT_POST.html \
+ CURLOPT_POSTFIELDS.html \
+ CURLOPT_POSTFIELDSIZE.html \
+ CURLOPT_POSTFIELDSIZE_LARGE.html \
+ CURLOPT_POSTQUOTE.html \
+ CURLOPT_POSTREDIR.html \
+ CURLOPT_PREQUOTE.html \
+ CURLOPT_PRIVATE.html \
+ CURLOPT_PROGRESSDATA.html \
+ CURLOPT_PROGRESSFUNCTION.html \
+ CURLOPT_PROTOCOLS.html \
+ CURLOPT_PROXY.html \
+ CURLOPT_PROXYAUTH.html \
+ CURLOPT_PROXYHEADER.html \
+ CURLOPT_PROXYPASSWORD.html \
+ CURLOPT_PROXYPORT.html \
+ CURLOPT_PROXYTYPE.html \
+ CURLOPT_PROXYUSERNAME.html \
+ CURLOPT_PROXYUSERPWD.html \
+ CURLOPT_PROXY_SERVICE_NAME.html \
+ CURLOPT_PROXY_TRANSFER_MODE.html \
+ CURLOPT_PUT.html \
+ CURLOPT_QUOTE.html \
+ CURLOPT_RANDOM_FILE.html \
+ CURLOPT_RANGE.html \
+ CURLOPT_READDATA.html \
+ CURLOPT_READFUNCTION.html \
+ CURLOPT_REDIR_PROTOCOLS.html \
+ CURLOPT_REFERER.html \
+ CURLOPT_RESOLVE.html \
+ CURLOPT_RESUME_FROM.html \
+ CURLOPT_RESUME_FROM_LARGE.html \
+ CURLOPT_RTSP_CLIENT_CSEQ.html \
+ CURLOPT_RTSP_REQUEST.html \
+ CURLOPT_RTSP_SERVER_CSEQ.html \
+ CURLOPT_RTSP_SESSION_ID.html \
+ CURLOPT_RTSP_STREAM_URI.html \
+ CURLOPT_RTSP_TRANSPORT.html \
+ CURLOPT_SASL_IR.html \
+ CURLOPT_SEEKDATA.html \
+ CURLOPT_SEEKFUNCTION.html \
+ CURLOPT_SERVICE_NAME.html \
+ CURLOPT_SHARE.html \
+ CURLOPT_SOCKOPTDATA.html \
+ CURLOPT_SOCKOPTFUNCTION.html \
+ CURLOPT_SOCKS5_GSSAPI_NEC.html \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.html \
+ CURLOPT_SSH_AUTH_TYPES.html \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html \
+ CURLOPT_SSH_KEYDATA.html \
+ CURLOPT_SSH_KEYFUNCTION.html \
+ CURLOPT_SSH_KNOWNHOSTS.html \
+ CURLOPT_SSH_PRIVATE_KEYFILE.html \
+ CURLOPT_SSH_PUBLIC_KEYFILE.html \
+ CURLOPT_SSLCERT.html \
+ CURLOPT_SSLCERTTYPE.html \
+ CURLOPT_SSLENGINE.html \
+ CURLOPT_SSLENGINE_DEFAULT.html \
+ CURLOPT_SSLKEY.html \
+ CURLOPT_SSLKEYTYPE.html \
+ CURLOPT_SSLVERSION.html \
+ CURLOPT_SSL_CIPHER_LIST.html \
+ CURLOPT_SSL_CTX_DATA.html \
+ CURLOPT_SSL_CTX_FUNCTION.html \
+ CURLOPT_SSL_ENABLE_ALPN.html \
+ CURLOPT_SSL_ENABLE_NPN.html \
+ CURLOPT_SSL_FALSESTART.html \
+ CURLOPT_SSL_OPTIONS.html \
+ CURLOPT_SSL_SESSIONID_CACHE.html \
+ CURLOPT_SSL_VERIFYHOST.html \
+ CURLOPT_SSL_VERIFYPEER.html \
+ CURLOPT_SSL_VERIFYSTATUS.html \
+ CURLOPT_STDERR.html \
+ CURLOPT_STREAM_DEPENDS.html \
+ CURLOPT_STREAM_DEPENDS_E.html \
+ CURLOPT_STREAM_WEIGHT.html \
+ CURLOPT_TCP_FASTOPEN.html \
+ CURLOPT_TCP_KEEPALIVE.html \
+ CURLOPT_TCP_KEEPIDLE.html \
+ CURLOPT_TCP_KEEPINTVL.html \
+ CURLOPT_TCP_NODELAY.html \
+ CURLOPT_TELNETOPTIONS.html \
+ CURLOPT_TFTP_BLKSIZE.html \
+ CURLOPT_TFTP_NO_OPTIONS.html \
+ CURLOPT_TIMECONDITION.html \
+ CURLOPT_TIMEOUT.html \
+ CURLOPT_TIMEOUT_MS.html \
+ CURLOPT_TIMEVALUE.html \
+ CURLOPT_TLSAUTH_PASSWORD.html \
+ CURLOPT_TLSAUTH_TYPE.html \
+ CURLOPT_TLSAUTH_USERNAME.html \
+ CURLOPT_TRANSFERTEXT.html \
+ CURLOPT_TRANSFER_ENCODING.html \
+ CURLOPT_UNIX_SOCKET_PATH.html \
+ CURLOPT_UNRESTRICTED_AUTH.html \
+ CURLOPT_UPLOAD.html \
+ CURLOPT_URL.html \
+ CURLOPT_USERAGENT.html \
+ CURLOPT_USERNAME.html \
+ CURLOPT_USERPWD.html \
+ CURLOPT_USE_SSL.html \
+ CURLOPT_VERBOSE.html \
+ CURLOPT_WILDCARDMATCH.html \
+ CURLOPT_WRITEDATA.html \
+ CURLOPT_WRITEFUNCTION.html \
+ CURLOPT_XFERINFODATA.html \
+ CURLOPT_XFERINFOFUNCTION.html \
+ CURLOPT_XOAUTH2_BEARER.html
-PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
- CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf \
- CURLOPT_BUFFERSIZE.pdf CURLOPT_CAINFO.pdf CURLOPT_CAPATH.pdf \
- CURLOPT_CERTINFO.pdf CURLOPT_CHUNK_BGN_FUNCTION.pdf \
- CURLOPT_CHUNK_DATA.pdf CURLOPT_CHUNK_END_FUNCTION.pdf \
- CURLOPT_CLOSESOCKETDATA.pdf CURLOPT_CLOSESOCKETFUNCTION.pdf \
- CURLOPT_CONNECT_ONLY.pdf CURLOPT_CONNECTTIMEOUT.pdf \
- CURLOPT_CONNECTTIMEOUT_MS.pdf CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf \
- CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf CURLOPT_COOKIE.pdf \
- CURLOPT_COOKIEFILE.pdf CURLOPT_COOKIEJAR.pdf CURLOPT_COOKIELIST.pdf \
- CURLOPT_COOKIESESSION.pdf CURLOPT_COPYPOSTFIELDS.pdf CURLOPT_CRLF.pdf \
- CURLOPT_CRLFILE.pdf CURLOPT_CUSTOMREQUEST.pdf CURLOPT_DEBUGDATA.pdf \
- CURLOPT_DEBUGFUNCTION.pdf CURLOPT_DIRLISTONLY.pdf \
- CURLOPT_DNS_CACHE_TIMEOUT.pdf CURLOPT_DNS_INTERFACE.pdf \
- CURLOPT_DNS_LOCAL_IP4.pdf CURLOPT_DNS_LOCAL_IP6.pdf \
- CURLOPT_DNS_SERVERS.pdf CURLOPT_DNS_USE_GLOBAL_CACHE.pdf \
- CURLOPT_EGDSOCKET.pdf CURLOPT_ERRORBUFFER.pdf \
- CURLOPT_EXPECT_100_TIMEOUT_MS.pdf CURLOPT_FAILONERROR.pdf \
- CURLOPT_FILETIME.pdf CURLOPT_FNMATCH_DATA.pdf \
- CURLOPT_FNMATCH_FUNCTION.pdf CURLOPT_FOLLOWLOCATION.pdf \
- CURLOPT_FORBID_REUSE.pdf CURLOPT_FRESH_CONNECT.pdf \
- CURLOPT_FTP_ACCOUNT.pdf CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf \
- CURLOPT_FTP_CREATE_MISSING_DIRS.pdf CURLOPT_FTP_FILEMETHOD.pdf \
- CURLOPT_FTPPORT.pdf CURLOPT_FTP_RESPONSE_TIMEOUT.pdf \
- CURLOPT_FTP_SKIP_PASV_IP.pdf CURLOPT_FTPSSLAUTH.pdf \
- CURLOPT_FTP_SSL_CCC.pdf CURLOPT_FTP_USE_EPRT.pdf \
- CURLOPT_FTP_USE_EPSV.pdf CURLOPT_FTP_USE_PRET.pdf \
- CURLOPT_GSSAPI_DELEGATION.pdf CURLOPT_HEADER.pdf \
- CURLOPT_HEADERDATA.pdf CURLOPT_HEADERFUNCTION.pdf \
- CURLOPT_HEADEROPT.pdf CURLOPT_HTTP200ALIASES.pdf CURLOPT_HTTPAUTH.pdf \
- CURLOPT_HTTP_CONTENT_DECODING.pdf CURLOPT_HTTPGET.pdf \
- CURLOPT_HTTPHEADER.pdf CURLOPT_HTTPPOST.pdf \
- CURLOPT_HTTPPROXYTUNNEL.pdf CURLOPT_HTTP_TRANSFER_DECODING.pdf \
- CURLOPT_HTTP_VERSION.pdf CURLOPT_IGNORE_CONTENT_LENGTH.pdf \
- CURLOPT_INFILESIZE.pdf CURLOPT_INFILESIZE_LARGE.pdf \
- CURLOPT_INTERFACE.pdf CURLOPT_INTERLEAVEDATA.pdf \
- CURLOPT_INTERLEAVEFUNCTION.pdf CURLOPT_IOCTLDATA.pdf \
- CURLOPT_IOCTLFUNCTION.pdf CURLOPT_IPRESOLVE.pdf CURLOPT_ISSUERCERT.pdf \
- CURLOPT_KEYPASSWD.pdf CURLOPT_KRBLEVEL.pdf CURLOPT_LOCALPORT.pdf \
- CURLOPT_LOCALPORTRANGE.pdf CURLOPT_LOGIN_OPTIONS.pdf \
- CURLOPT_LOW_SPEED_LIMIT.pdf CURLOPT_LOW_SPEED_TIME.pdf \
- CURLOPT_MAIL_AUTH.pdf CURLOPT_MAIL_FROM.pdf CURLOPT_MAIL_RCPT.pdf \
- CURLOPT_MAXCONNECTS.pdf CURLOPT_MAXFILESIZE.pdf \
- CURLOPT_MAXFILESIZE_LARGE.pdf CURLOPT_MAX_RECV_SPEED_LARGE.pdf \
- CURLOPT_MAXREDIRS.pdf CURLOPT_MAX_SEND_SPEED_LARGE.pdf \
- CURLOPT_NETRC.pdf CURLOPT_NETRC_FILE.pdf \
- CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf \
- CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf \
- CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf \
- CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf \
- CURLOPT_PINNEDPUBLICKEY.pdf CURLOPT_PORT.pdf CURLOPT_POST.pdf \
- CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf \
- CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf \
- CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf \
- CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf \
- CURLOPT_PROTOCOLS.pdf CURLOPT_PROXY.pdf CURLOPT_PROXYAUTH.pdf \
- CURLOPT_PROXYHEADER.pdf CURLOPT_PROXYPASSWORD.pdf \
- CURLOPT_PROXYPORT.pdf CURLOPT_PROXY_TRANSFER_MODE.pdf \
- CURLOPT_PROXYTYPE.pdf CURLOPT_PROXYUSERNAME.pdf \
- CURLOPT_PROXYUSERPWD.pdf CURLOPT_PUT.pdf CURLOPT_QUOTE.pdf \
- CURLOPT_RANDOM_FILE.pdf CURLOPT_RANGE.pdf CURLOPT_READDATA.pdf \
- CURLOPT_READFUNCTION.pdf CURLOPT_REDIR_PROTOCOLS.pdf \
- CURLOPT_REFERER.pdf CURLOPT_RESOLVE.pdf CURLOPT_RESUME_FROM.pdf \
- CURLOPT_RESUME_FROM_LARGE.pdf CURLOPT_RTSP_CLIENT_CSEQ.pdf \
- CURLOPT_RTSP_REQUEST.pdf CURLOPT_RTSP_SERVER_CSEQ.pdf \
- CURLOPT_RTSP_SESSION_ID.pdf CURLOPT_RTSP_STREAM_URI.pdf \
- CURLOPT_RTSP_TRANSPORT.pdf CURLOPT_SASL_IR.pdf CURLOPT_SEEKDATA.pdf \
- CURLOPT_SEEKFUNCTION.pdf CURLOPT_SHARE.pdf CURLOPT_SOCKOPTDATA.pdf \
- CURLOPT_SOCKOPTFUNCTION.pdf CURLOPT_SOCKS5_GSSAPI_NEC.pdf \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf CURLOPT_SSH_AUTH_TYPES.pdf \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf CURLOPT_SSH_KEYDATA.pdf \
- CURLOPT_SSH_KEYFUNCTION.pdf CURLOPT_SSH_KNOWNHOSTS.pdf \
- CURLOPT_SSH_PRIVATE_KEYFILE.pdf CURLOPT_SSH_PUBLIC_KEYFILE.pdf \
- CURLOPT_SSLCERT.pdf CURLOPT_SSLCERTTYPE.pdf \
- CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf \
- CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf \
- CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf \
- CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSL_FALSESTART.pdf \
- CURLOPT_SSLKEY.pdf CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf \
- CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf \
- CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSL_VERIFYSTATUS.pdf \
- CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf CURLOPT_TCP_KEEPALIVE.pdf \
- CURLOPT_TCP_KEEPIDLE.pdf CURLOPT_TCP_KEEPINTVL.pdf \
- CURLOPT_TCP_NODELAY.pdf CURLOPT_TELNETOPTIONS.pdf \
- CURLOPT_TFTP_BLKSIZE.pdf CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf \
- CURLOPT_TIMEOUT_MS.pdf CURLOPT_TIMEVALUE.pdf \
- CURLOPT_TLSAUTH_PASSWORD.pdf CURLOPT_TLSAUTH_TYPE.pdf \
- CURLOPT_TLSAUTH_USERNAME.pdf CURLOPT_TRANSFER_ENCODING.pdf \
- CURLOPT_TRANSFERTEXT.pdf CURLOPT_UNRESTRICTED_AUTH.pdf \
- CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf CURLOPT_USERAGENT.pdf \
- CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf CURLOPT_USE_SSL.pdf \
- CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf CURLOPT_WRITEDATA.pdf \
- CURLOPT_WRITEFUNCTION.pdf CURLOPT_XFERINFODATA.pdf \
- CURLOPT_XFERINFOFUNCTION.pdf CURLOPT_XOAUTH2_BEARER.pdf \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf \
- CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf \
- CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf \
- CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf \
- CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf \
- CURLOPT_UNIX_SOCKET_PATH.pdf CURLOPT_PATH_AS_IS.pdf \
- CURLOPT_PROXY_SERVICE_NAME.pdf CURLOPT_SERVICE_NAME.pdf \
- CURLOPT_PIPEWAIT.pdf
+PDFPAGES = \
+ CURLINFO_ACTIVESOCKET.pdf \
+ CURLINFO_APPCONNECT_TIME.pdf \
+ CURLINFO_CERTINFO.pdf \
+ CURLINFO_CONDITION_UNMET.pdf \
+ CURLINFO_CONNECT_TIME.pdf \
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD.pdf \
+ CURLINFO_CONTENT_LENGTH_UPLOAD.pdf \
+ CURLINFO_CONTENT_TYPE.pdf \
+ CURLINFO_COOKIELIST.pdf \
+ CURLINFO_EFFECTIVE_URL.pdf \
+ CURLINFO_FILETIME.pdf \
+ CURLINFO_FTP_ENTRY_PATH.pdf \
+ CURLINFO_HEADER_SIZE.pdf \
+ CURLINFO_HTTPAUTH_AVAIL.pdf \
+ CURLINFO_HTTP_CONNECTCODE.pdf \
+ CURLINFO_LASTSOCKET.pdf \
+ CURLINFO_LOCAL_IP.pdf \
+ CURLINFO_LOCAL_PORT.pdf \
+ CURLINFO_NAMELOOKUP_TIME.pdf \
+ CURLINFO_NUM_CONNECTS.pdf \
+ CURLINFO_OS_ERRNO.pdf \
+ CURLINFO_PRETRANSFER_TIME.pdf \
+ CURLINFO_PRIMARY_IP.pdf \
+ CURLINFO_PRIMARY_PORT.pdf \
+ CURLINFO_PRIVATE.pdf \
+ CURLINFO_PROXYAUTH_AVAIL.pdf \
+ CURLINFO_REDIRECT_COUNT.pdf \
+ CURLINFO_REDIRECT_TIME.pdf \
+ CURLINFO_REDIRECT_URL.pdf \
+ CURLINFO_REQUEST_SIZE.pdf \
+ CURLINFO_RESPONSE_CODE.pdf \
+ CURLINFO_RTSP_CLIENT_CSEQ.pdf \
+ CURLINFO_RTSP_CSEQ_RECV.pdf \
+ CURLINFO_RTSP_SERVER_CSEQ.pdf \
+ CURLINFO_RTSP_SESSION_ID.pdf \
+ CURLINFO_SIZE_DOWNLOAD.pdf \
+ CURLINFO_SIZE_UPLOAD.pdf \
+ CURLINFO_SPEED_DOWNLOAD.pdf \
+ CURLINFO_SPEED_UPLOAD.pdf \
+ CURLINFO_SSL_ENGINES.pdf \
+ CURLINFO_SSL_VERIFYRESULT.pdf \
+ CURLINFO_STARTTRANSFER_TIME.pdf \
+ CURLINFO_TLS_SESSION.pdf \
+ CURLINFO_TLS_SSL_PTR.pdf \
+ CURLINFO_TOTAL_TIME.pdf \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf \
+ CURLMOPT_MAXCONNECTS.pdf \
+ CURLMOPT_MAX_HOST_CONNECTIONS.pdf \
+ CURLMOPT_MAX_PIPELINE_LENGTH.pdf \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf \
+ CURLMOPT_PIPELINING.pdf \
+ CURLMOPT_PIPELINING_SERVER_BL.pdf \
+ CURLMOPT_PIPELINING_SITE_BL.pdf \
+ CURLMOPT_PUSHDATA.pdf \
+ CURLMOPT_PUSHFUNCTION.pdf \
+ CURLMOPT_SOCKETDATA.pdf \
+ CURLMOPT_SOCKETFUNCTION.pdf \
+ CURLMOPT_TIMERDATA.pdf \
+ CURLMOPT_TIMERFUNCTION.pdf \
+ CURLOPT_ACCEPTTIMEOUT_MS.pdf \
+ CURLOPT_ACCEPT_ENCODING.pdf \
+ CURLOPT_ADDRESS_SCOPE.pdf \
+ CURLOPT_APPEND.pdf \
+ CURLOPT_AUTOREFERER.pdf \
+ CURLOPT_BUFFERSIZE.pdf \
+ CURLOPT_CAINFO.pdf \
+ CURLOPT_CAPATH.pdf \
+ CURLOPT_CERTINFO.pdf \
+ CURLOPT_CHUNK_BGN_FUNCTION.pdf \
+ CURLOPT_CHUNK_DATA.pdf \
+ CURLOPT_CHUNK_END_FUNCTION.pdf \
+ CURLOPT_CLOSESOCKETDATA.pdf \
+ CURLOPT_CLOSESOCKETFUNCTION.pdf \
+ CURLOPT_CONNECTTIMEOUT.pdf \
+ CURLOPT_CONNECTTIMEOUT_MS.pdf \
+ CURLOPT_CONNECT_ONLY.pdf \
+ CURLOPT_CONNECT_TO.pdf \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf \
+ CURLOPT_COOKIE.pdf \
+ CURLOPT_COOKIEFILE.pdf \
+ CURLOPT_COOKIEJAR.pdf \
+ CURLOPT_COOKIELIST.pdf \
+ CURLOPT_COOKIESESSION.pdf \
+ CURLOPT_COPYPOSTFIELDS.pdf \
+ CURLOPT_CRLF.pdf \
+ CURLOPT_CRLFILE.pdf \
+ CURLOPT_CUSTOMREQUEST.pdf \
+ CURLOPT_DEBUGDATA.pdf \
+ CURLOPT_DEBUGFUNCTION.pdf \
+ CURLOPT_DEFAULT_PROTOCOL.pdf \
+ CURLOPT_DIRLISTONLY.pdf \
+ CURLOPT_DNS_CACHE_TIMEOUT.pdf \
+ CURLOPT_DNS_INTERFACE.pdf \
+ CURLOPT_DNS_LOCAL_IP4.pdf \
+ CURLOPT_DNS_LOCAL_IP6.pdf \
+ CURLOPT_DNS_SERVERS.pdf \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.pdf \
+ CURLOPT_EGDSOCKET.pdf \
+ CURLOPT_ERRORBUFFER.pdf \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.pdf \
+ CURLOPT_FAILONERROR.pdf \
+ CURLOPT_FILETIME.pdf \
+ CURLOPT_FNMATCH_DATA.pdf \
+ CURLOPT_FNMATCH_FUNCTION.pdf \
+ CURLOPT_FOLLOWLOCATION.pdf \
+ CURLOPT_FORBID_REUSE.pdf \
+ CURLOPT_FRESH_CONNECT.pdf \
+ CURLOPT_FTPPORT.pdf \
+ CURLOPT_FTPSSLAUTH.pdf \
+ CURLOPT_FTP_ACCOUNT.pdf \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.pdf \
+ CURLOPT_FTP_FILEMETHOD.pdf \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.pdf \
+ CURLOPT_FTP_SKIP_PASV_IP.pdf \
+ CURLOPT_FTP_SSL_CCC.pdf \
+ CURLOPT_FTP_USE_EPRT.pdf \
+ CURLOPT_FTP_USE_EPSV.pdf \
+ CURLOPT_FTP_USE_PRET.pdf \
+ CURLOPT_GSSAPI_DELEGATION.pdf \
+ CURLOPT_HEADER.pdf \
+ CURLOPT_HEADERDATA.pdf \
+ CURLOPT_HEADERFUNCTION.pdf \
+ CURLOPT_HEADEROPT.pdf \
+ CURLOPT_HTTP200ALIASES.pdf \
+ CURLOPT_HTTPAUTH.pdf \
+ CURLOPT_HTTPGET.pdf \
+ CURLOPT_HTTPHEADER.pdf \
+ CURLOPT_HTTPPOST.pdf \
+ CURLOPT_HTTPPROXYTUNNEL.pdf \
+ CURLOPT_HTTP_CONTENT_DECODING.pdf \
+ CURLOPT_HTTP_TRANSFER_DECODING.pdf \
+ CURLOPT_HTTP_VERSION.pdf \
+ CURLOPT_IGNORE_CONTENT_LENGTH.pdf \
+ CURLOPT_INFILESIZE.pdf \
+ CURLOPT_INFILESIZE_LARGE.pdf \
+ CURLOPT_INTERFACE.pdf \
+ CURLOPT_INTERLEAVEDATA.pdf \
+ CURLOPT_INTERLEAVEFUNCTION.pdf \
+ CURLOPT_IOCTLDATA.pdf \
+ CURLOPT_IOCTLFUNCTION.pdf \
+ CURLOPT_IPRESOLVE.pdf \
+ CURLOPT_ISSUERCERT.pdf \
+ CURLOPT_KEYPASSWD.pdf \
+ CURLOPT_KRBLEVEL.pdf \
+ CURLOPT_LOCALPORT.pdf \
+ CURLOPT_LOCALPORTRANGE.pdf \
+ CURLOPT_LOGIN_OPTIONS.pdf \
+ CURLOPT_LOW_SPEED_LIMIT.pdf \
+ CURLOPT_LOW_SPEED_TIME.pdf \
+ CURLOPT_MAIL_AUTH.pdf \
+ CURLOPT_MAIL_FROM.pdf \
+ CURLOPT_MAIL_RCPT.pdf \
+ CURLOPT_MAXCONNECTS.pdf \
+ CURLOPT_MAXFILESIZE.pdf \
+ CURLOPT_MAXFILESIZE_LARGE.pdf \
+ CURLOPT_MAXREDIRS.pdf \
+ CURLOPT_MAX_RECV_SPEED_LARGE.pdf \
+ CURLOPT_MAX_SEND_SPEED_LARGE.pdf \
+ CURLOPT_NETRC.pdf \
+ CURLOPT_NETRC_FILE.pdf \
+ CURLOPT_NEW_DIRECTORY_PERMS.pdf \
+ CURLOPT_NEW_FILE_PERMS.pdf \
+ CURLOPT_NOBODY.pdf \
+ CURLOPT_NOPROGRESS.pdf \
+ CURLOPT_NOPROXY.pdf \
+ CURLOPT_NOSIGNAL.pdf \
+ CURLOPT_OPENSOCKETDATA.pdf \
+ CURLOPT_OPENSOCKETFUNCTION.pdf \
+ CURLOPT_PASSWORD.pdf \
+ CURLOPT_PATH_AS_IS.pdf \
+ CURLOPT_PINNEDPUBLICKEY.pdf \
+ CURLOPT_PIPEWAIT.pdf \
+ CURLOPT_PORT.pdf \
+ CURLOPT_POST.pdf \
+ CURLOPT_POSTFIELDS.pdf \
+ CURLOPT_POSTFIELDSIZE.pdf \
+ CURLOPT_POSTFIELDSIZE_LARGE.pdf \
+ CURLOPT_POSTQUOTE.pdf \
+ CURLOPT_POSTREDIR.pdf \
+ CURLOPT_PREQUOTE.pdf \
+ CURLOPT_PRIVATE.pdf \
+ CURLOPT_PROGRESSDATA.pdf \
+ CURLOPT_PROGRESSFUNCTION.pdf \
+ CURLOPT_PROTOCOLS.pdf \
+ CURLOPT_PROXY.pdf \
+ CURLOPT_PROXYAUTH.pdf \
+ CURLOPT_PROXYHEADER.pdf \
+ CURLOPT_PROXYPASSWORD.pdf \
+ CURLOPT_PROXYPORT.pdf \
+ CURLOPT_PROXYTYPE.pdf \
+ CURLOPT_PROXYUSERNAME.pdf \
+ CURLOPT_PROXYUSERPWD.pdf \
+ CURLOPT_PROXY_SERVICE_NAME.pdf \
+ CURLOPT_PROXY_TRANSFER_MODE.pdf \
+ CURLOPT_PUT.pdf \
+ CURLOPT_QUOTE.pdf \
+ CURLOPT_RANDOM_FILE.pdf \
+ CURLOPT_RANGE.pdf \
+ CURLOPT_READDATA.pdf \
+ CURLOPT_READFUNCTION.pdf \
+ CURLOPT_REDIR_PROTOCOLS.pdf \
+ CURLOPT_REFERER.pdf \
+ CURLOPT_RESOLVE.pdf \
+ CURLOPT_RESUME_FROM.pdf \
+ CURLOPT_RESUME_FROM_LARGE.pdf \
+ CURLOPT_RTSP_CLIENT_CSEQ.pdf \
+ CURLOPT_RTSP_REQUEST.pdf \
+ CURLOPT_RTSP_SERVER_CSEQ.pdf \
+ CURLOPT_RTSP_SESSION_ID.pdf \
+ CURLOPT_RTSP_STREAM_URI.pdf \
+ CURLOPT_RTSP_TRANSPORT.pdf \
+ CURLOPT_SASL_IR.pdf \
+ CURLOPT_SEEKDATA.pdf \
+ CURLOPT_SEEKFUNCTION.pdf \
+ CURLOPT_SERVICE_NAME.pdf \
+ CURLOPT_SHARE.pdf \
+ CURLOPT_SOCKOPTDATA.pdf \
+ CURLOPT_SOCKOPTFUNCTION.pdf \
+ CURLOPT_SOCKS5_GSSAPI_NEC.pdf \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf \
+ CURLOPT_SSH_AUTH_TYPES.pdf \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf \
+ CURLOPT_SSH_KEYDATA.pdf \
+ CURLOPT_SSH_KEYFUNCTION.pdf \
+ CURLOPT_SSH_KNOWNHOSTS.pdf \
+ CURLOPT_SSH_PRIVATE_KEYFILE.pdf \
+ CURLOPT_SSH_PUBLIC_KEYFILE.pdf \
+ CURLOPT_SSLCERT.pdf \
+ CURLOPT_SSLCERTTYPE.pdf \
+ CURLOPT_SSLENGINE.pdf \
+ CURLOPT_SSLENGINE_DEFAULT.pdf \
+ CURLOPT_SSLKEY.pdf \
+ CURLOPT_SSLKEYTYPE.pdf \
+ CURLOPT_SSLVERSION.pdf \
+ CURLOPT_SSL_CIPHER_LIST.pdf \
+ CURLOPT_SSL_CTX_DATA.pdf \
+ CURLOPT_SSL_CTX_FUNCTION.pdf \
+ CURLOPT_SSL_ENABLE_ALPN.pdf \
+ CURLOPT_SSL_ENABLE_NPN.pdf \
+ CURLOPT_SSL_FALSESTART.pdf \
+ CURLOPT_SSL_OPTIONS.pdf \
+ CURLOPT_SSL_SESSIONID_CACHE.pdf \
+ CURLOPT_SSL_VERIFYHOST.pdf \
+ CURLOPT_SSL_VERIFYPEER.pdf \
+ CURLOPT_SSL_VERIFYSTATUS.pdf \
+ CURLOPT_STDERR.pdf \
+ CURLOPT_STREAM_DEPENDS.pdf \
+ CURLOPT_STREAM_DEPENDS_E.pdf \
+ CURLOPT_STREAM_WEIGHT.pdf \
+ CURLOPT_TCP_FASTOPEN.pdf \
+ CURLOPT_TCP_KEEPALIVE.pdf \
+ CURLOPT_TCP_KEEPIDLE.pdf \
+ CURLOPT_TCP_KEEPINTVL.pdf \
+ CURLOPT_TCP_NODELAY.pdf \
+ CURLOPT_TELNETOPTIONS.pdf \
+ CURLOPT_TFTP_BLKSIZE.pdf \
+ CURLOPT_TFTP_NO_OPTIONS.pdf \
+ CURLOPT_TIMECONDITION.pdf \
+ CURLOPT_TIMEOUT.pdf \
+ CURLOPT_TIMEOUT_MS.pdf \
+ CURLOPT_TIMEVALUE.pdf \
+ CURLOPT_TLSAUTH_PASSWORD.pdf \
+ CURLOPT_TLSAUTH_TYPE.pdf \
+ CURLOPT_TLSAUTH_USERNAME.pdf \
+ CURLOPT_TRANSFERTEXT.pdf \
+ CURLOPT_TRANSFER_ENCODING.pdf \
+ CURLOPT_UNIX_SOCKET_PATH.pdf \
+ CURLOPT_UNRESTRICTED_AUTH.pdf \
+ CURLOPT_UPLOAD.pdf \
+ CURLOPT_URL.pdf \
+ CURLOPT_USERAGENT.pdf \
+ CURLOPT_USERNAME.pdf \
+ CURLOPT_USERPWD.pdf \
+ CURLOPT_USE_SSL.pdf \
+ CURLOPT_VERBOSE.pdf \
+ CURLOPT_WILDCARDMATCH.pdf \
+ CURLOPT_WRITEDATA.pdf \
+ CURLOPT_WRITEFUNCTION.pdf \
+ CURLOPT_XFERINFODATA.pdf \
+ CURLOPT_XFERINFOFUNCTION.pdf \
+ CURLOPT_XOAUTH2_BEARER.pdf
CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
-MAN2HTML= roffit --mandir=. < $< >$@
+MAN2HTML= roffit --mandir=. $< >$@
SUFFIXES = .3 .html
diff --git a/docs/libcurl/opts/template.3 b/docs/libcurl/opts/template.3
index 184e471e..7ba220e8 100644
--- a/docs/libcurl/opts/template.3
+++ b/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/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index 8299a517..fa26efbe 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -75,6 +75,7 @@ CURLE_FTP_WRITE_ERROR 7.1 7.17.0
CURLE_FUNCTION_NOT_FOUND 7.1
CURLE_GOT_NOTHING 7.9.1
CURLE_HTTP2 7.38.0
+CURLE_HTTP2_STREAM 7.49.0
CURLE_HTTP_NOT_FOUND 7.1
CURLE_HTTP_PORT_FAILED 7.3 7.12.0
CURLE_HTTP_POST_ERROR 7.1
@@ -164,6 +165,7 @@ CURLFORM_BUFFER 7.9.8
CURLFORM_BUFFERLENGTH 7.9.8
CURLFORM_BUFFERPTR 7.9.8
CURLFORM_CONTENTHEADER 7.9.3
+CURLFORM_CONTENTLEN 7.46.0
CURLFORM_CONTENTSLENGTH 7.9
CURLFORM_CONTENTTYPE 7.9
CURLFORM_COPYCONTENTS 7.9
@@ -199,6 +201,7 @@ CURLGSSAPI_DELEGATION_NONE 7.22.0
CURLGSSAPI_DELEGATION_POLICY_FLAG 7.22.0
CURLHEADER_SEPARATE 7.37.0
CURLHEADER_UNIFIED 7.37.0
+CURLINFO_ACTIVESOCKET 7.45.0
CURLINFO_APPCONNECT_TIME 7.19.0
CURLINFO_CERTINFO 7.19.1
CURLINFO_CONDITION_UNMET 7.19.4
@@ -247,6 +250,7 @@ CURLINFO_RTSP_SESSION_ID 7.20.0
CURLINFO_SIZE_DOWNLOAD 7.4.1
CURLINFO_SIZE_UPLOAD 7.4.1
CURLINFO_SLIST 7.12.3
+CURLINFO_SOCKET 7.45.0
CURLINFO_SPEED_DOWNLOAD 7.4.1
CURLINFO_SPEED_UPLOAD 7.4.1
CURLINFO_SSL_DATA_IN 7.12.1
@@ -256,7 +260,8 @@ CURLINFO_SSL_VERIFYRESULT 7.5
CURLINFO_STARTTRANSFER_TIME 7.9.2
CURLINFO_STRING 7.4.1
CURLINFO_TEXT 7.9.6
-CURLINFO_TLS_SESSION 7.34.0
+CURLINFO_TLS_SESSION 7.34.0 7.48.0
+CURLINFO_TLS_SSL_PTR 7.48.0
CURLINFO_TOTAL_TIME 7.4.1
CURLINFO_TYPEMASK 7.4.1
CURLIOCMD_NOP 7.12.3
@@ -284,6 +289,8 @@ CURLMOPT_MAX_TOTAL_CONNECTIONS 7.30.0
CURLMOPT_PIPELINING 7.16.0
CURLMOPT_PIPELINING_SERVER_BL 7.30.0
CURLMOPT_PIPELINING_SITE_BL 7.30.0
+CURLMOPT_PUSHDATA 7.44.0
+CURLMOPT_PUSHFUNCTION 7.44.0
CURLMOPT_SOCKETDATA 7.15.4
CURLMOPT_SOCKETFUNCTION 7.15.4
CURLMOPT_TIMERDATA 7.16.0
@@ -304,6 +311,7 @@ CURLOPTTYPE_FUNCTIONPOINT 7.1
CURLOPTTYPE_LONG 7.1
CURLOPTTYPE_OBJECTPOINT 7.1
CURLOPTTYPE_OFF_T 7.11.0
+CURLOPTTYPE_STRINGPOINT 7.46.0
CURLOPT_ACCEPTTIMEOUT_MS 7.24.0
CURLOPT_ACCEPT_ENCODING 7.21.6
CURLOPT_ADDRESS_SCOPE 7.19.0
@@ -323,6 +331,7 @@ CURLOPT_CLOSESOCKETFUNCTION 7.21.7
CURLOPT_CONNECTTIMEOUT 7.7
CURLOPT_CONNECTTIMEOUT_MS 7.16.2
CURLOPT_CONNECT_ONLY 7.15.2
+CURLOPT_CONNECT_TO 7.49.0
CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4
CURLOPT_CONV_FROM_UTF8_FUNCTION 7.15.4
CURLOPT_CONV_TO_NETWORK_FUNCTION 7.15.4
@@ -337,6 +346,7 @@ CURLOPT_CRLFILE 7.19.0
CURLOPT_CUSTOMREQUEST 7.1
CURLOPT_DEBUGDATA 7.9.6
CURLOPT_DEBUGFUNCTION 7.9.6
+CURLOPT_DEFAULT_PROTOCOL 7.45.0
CURLOPT_DIRLISTONLY 7.17.0
CURLOPT_DNS_CACHE_TIMEOUT 7.9.3
CURLOPT_DNS_INTERFACE 7.33.0
@@ -484,7 +494,7 @@ CURLOPT_SHARE 7.10
CURLOPT_SOCKOPTDATA 7.16.0
CURLOPT_SOCKOPTFUNCTION 7.16.0
CURLOPT_SOCKS5_GSSAPI_NEC 7.19.4
-CURLOPT_SOCKS5_GSSAPI_SERVICE 7.19.4
+CURLOPT_SOCKS5_GSSAPI_SERVICE 7.19.4 7.49.0
CURLOPT_SOURCE_HOST 7.12.1 - 7.15.5
CURLOPT_SOURCE_PATH 7.12.1 - 7.15.5
CURLOPT_SOURCE_PORT 7.12.1 - 7.15.5
@@ -521,12 +531,17 @@ CURLOPT_SSL_VERIFYHOST 7.8.1
CURLOPT_SSL_VERIFYPEER 7.4.2
CURLOPT_SSL_VERIFYSTATUS 7.41.0
CURLOPT_STDERR 7.1
+CURLOPT_STREAM_DEPENDS 7.46.0
+CURLOPT_STREAM_DEPENDS_E 7.46.0
+CURLOPT_STREAM_WEIGHT 7.46.0
CURLOPT_TCP_KEEPALIVE 7.25.0
CURLOPT_TCP_KEEPIDLE 7.25.0
CURLOPT_TCP_KEEPINTVL 7.25.0
CURLOPT_TCP_NODELAY 7.11.2
+CURLOPT_TCP_FASTOPEN 7.49.0
CURLOPT_TELNETOPTIONS 7.7
CURLOPT_TFTP_BLKSIZE 7.19.4
+CURLOPT_TFTP_NO_OPTIONS 7.48.0
CURLOPT_TIMECONDITION 7.1
CURLOPT_TIMEOUT 7.1
CURLOPT_TIMEOUT_MS 7.16.2
@@ -620,17 +635,22 @@ CURLSSH_AUTH_NONE 7.16.1
CURLSSH_AUTH_PASSWORD 7.16.1
CURLSSH_AUTH_PUBLICKEY 7.16.1
CURLSSLBACKEND_AXTLS 7.38.0
+CURLSSLBACKEND_BORINGSSL 7.49.0
CURLSSLBACKEND_CYASSL 7.34.0
CURLSSLBACKEND_DARWINSSL 7.34.0
CURLSSLBACKEND_GNUTLS 7.34.0
CURLSSLBACKEND_GSKIT 7.34.0
+CURLSSLBACKEND_LIBRESSL 7.49.0
+CURLSSLBACKEND_MBEDTLS 7.46.0
CURLSSLBACKEND_NONE 7.34.0
CURLSSLBACKEND_NSS 7.34.0
CURLSSLBACKEND_OPENSSL 7.34.0
CURLSSLBACKEND_POLARSSL 7.34.0
CURLSSLBACKEND_QSOSSL 7.34.0 - 7.38.1
CURLSSLBACKEND_SCHANNEL 7.34.0
+CURLSSLBACKEND_WOLFSSL 7.49.0
CURLSSLOPT_ALLOW_BEAST 7.25.0
+CURLSSLOPT_NO_REVOKE 7.44.0
CURLUSESSL_ALL 7.17.0
CURLUSESSL_CONTROL 7.17.0
CURLUSESSL_NONE 7.17.0
@@ -648,6 +668,7 @@ CURL_CHUNK_END_FUNC_OK 7.21.0
CURL_CSELECT_ERR 7.16.3
CURL_CSELECT_IN 7.16.3
CURL_CSELECT_OUT 7.16.3
+CURL_DID_MEMORY_FUNC_TYPEDEFS 7.49.0
CURL_EASY_NONE 7.14.0 - 7.15.4
CURL_EASY_TIMEOUT 7.14.0 - 7.15.4
CURL_ERROR_SIZE 7.1
@@ -668,10 +689,20 @@ CURL_GLOBAL_DEFAULT 7.8
CURL_GLOBAL_NOTHING 7.8
CURL_GLOBAL_SSL 7.8
CURL_GLOBAL_WIN32 7.8.1
+CURL_HTTPPOST_BUFFER 7.46.0
+CURL_HTTPPOST_CALLBACK 7.46.0
+CURL_HTTPPOST_FILENAME 7.46.0
+CURL_HTTPPOST_LARGE 7.46.0
+CURL_HTTPPOST_PTRBUFFER 7.46.0
+CURL_HTTPPOST_PTRCONTENTS 7.46.0
+CURL_HTTPPOST_PTRNAME 7.46.0
+CURL_HTTPPOST_READFILE 7.46.0
CURL_HTTP_VERSION_1_0 7.9.1
CURL_HTTP_VERSION_1_1 7.9.1
-CURL_HTTP_VERSION_2_0 7.33.0
CURL_HTTP_VERSION_2 7.43.0
+CURL_HTTP_VERSION_2_0 7.33.0
+CURL_HTTP_VERSION_2TLS 7.47.0
+CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
CURL_HTTP_VERSION_NONE 7.9.1
CURL_IPRESOLVE_V4 7.10.8
CURL_IPRESOLVE_V6 7.10.8
@@ -702,6 +733,8 @@ CURL_POLL_OUT 7.14.0
CURL_POLL_REMOVE 7.14.0
CURL_PROGRESS_BAR 7.1.1 - 7.4.1
CURL_PROGRESS_STATS 7.1.1 - 7.4.1
+CURL_PUSH_DENY 7.44.0
+CURL_PUSH_OK 7.44.0
CURL_READFUNC_ABORT 7.12.1
CURL_READFUNC_PAUSE 7.18.0
CURL_REDIR_GET_ALL 7.19.1
@@ -757,6 +790,7 @@ CURL_VERSION_LARGEFILE 7.11.1
CURL_VERSION_LIBZ 7.10
CURL_VERSION_NTLM 7.10.6
CURL_VERSION_NTLM_WB 7.22.0
+CURL_VERSION_PSL 7.47.0
CURL_VERSION_SPNEGO 7.10.8
CURL_VERSION_SSL 7.10
CURL_VERSION_SSPI 7.13.2
diff --git a/docs/libcurl/symbols.pl b/docs/libcurl/symbols.pl
index a7b76e23..cfcecd03 100755
--- a/docs/libcurl/symbols.pl
+++ b/docs/libcurl/symbols.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/docs/mk-ca-bundle.1 b/docs/mk-ca-bundle.1
index 164c9c34..017bb823 100644
--- a/docs/mk-ca-bundle.1
+++ b/docs/mk-ca-bundle.1
@@ -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
@@ -104,7 +104,7 @@ http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.
.BR curl (1)
.SH HISTORY
\fBmk-ca-bundle\fP is a command line tool that is shipped as part of every
-curl and libcurl release (see http://curl.haxx.se/). It was originally based
+curl and libcurl release (see https://curl.haxx.se/). It was originally based
on the parse-certs script written by Roland Krikava and was later much
improved by Guenter Knauf. This manual page was initially written by Jan
Schaumann \&<jschauma@netmeister.org>.