diff options
author | Alex Deymo <deymo@google.com> | 2016-06-28 14:49:26 -0700 |
---|---|---|
committer | Alex Deymo <deymo@google.com> | 2016-10-05 13:53:03 -0700 |
commit | d15eaac64ca1a7244824d660ea84e8815a23d058 (patch) | |
tree | 0630dd6935f70bb2c0510d35cd575fb5965b699c /docs | |
parent | c82860f685c499d45558e481609cad29fcffd2f8 (diff) | |
download | external_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')
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 @@ -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 @@ -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/ @@ -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>. |