Compare commits

..

175 Commits

Author SHA1 Message Date
Daniel Stenberg
df5169fa35 RELEASE-NOTES: synced with 4cb2521595 2014-07-16 16:29:02 +02:00
Daniel Stenberg
4cb2521595 test506: verify aa68848451
After the fixed cookie lock deadlock, this test now passes and it
detects double-locking and double-unlocking of mutexes.
2014-07-16 00:09:58 +02:00
Yousuke Kimoto
aa68848451 cookie: avoid mutex deadlock
... by removing the extra mutex locks around th call to
Curl_flush_cookies() which takes care of the locking itself already.

Bug: http://curl.haxx.se/mail/lib-2014-02/0184.html
2014-07-15 23:50:56 +02:00
Daniel Stenberg
f069b40f9d gnutls: fix compiler warning
conversion to 'int' from 'long int' may alter its value
2014-07-15 21:28:10 +02:00
Dan Fandrich
4da6e0c966 test320: strip off the actual negotiated cipher width
It's irrelevant to the test, and will change depending on which SSL
library is being used by libcurl.
2014-07-15 01:01:39 +02:00
Dan Fandrich
9087b7e8f5 gnutls: detect lack of SRP support in GnuTLS at run-time and try without
Reported-by: David Woodhouse
2014-07-14 22:31:11 +02:00
Michał Górny
08b27e0892 configure: respect host tool prefix for krb5-config
Use ${host_alias}-krb5-config if available. This improves cross-
compilation support and fixes multilib on Gentoo (at least).
2014-07-14 20:49:28 +02:00
David Woodhouse
98866008a9 gnutls: handle IP address in cert name check
Before GnuTLS 3.3.6, the gnutls_x509_crt_check_hostname() function
didn't actually check IP addresses in SubjectAltName, even though it was
explicitly documented as doing so. So do it ourselves...
2014-07-14 20:14:15 +02:00
Dan Fandrich
08c8d5b89a build: set _POSIX_PTHREAD_SEMANTICS on Solaris to get proper getpwuid_r 2014-07-14 20:11:08 +02:00
Daniel Stenberg
eb3e383390 RELEASE-NOTES: next one is called 7.37.1 2014-07-14 19:30:50 +02:00
Dan Fandrich
425459b8ae gnutls: improved error message if setting cipher list fails
Reported-by: David Woodhouse
2014-07-13 01:32:11 +02:00
Dan Fandrich
763c51780c netrc: fixed thread safety problem by using getpwuid_r if available
The old way using getpwuid could cause problems in programs that enable
reading from netrc files simultaneously in multiple threads.

Reported-by: David Woodhouse
2014-07-13 00:27:22 +02:00
Dan Fandrich
6c6ba59e6b RELEASE-NOTES: add the reporter of the previous bug fix 2014-07-12 23:40:07 +02:00
Dan Fandrich
135c2dc14f netrc: treat failure to find home dir same as missing netrc file
This previously caused a fatal error (with a confusing error code, at
that).

Reported by: Glen A Johnson Jr.
2014-07-12 20:22:09 +02:00
Steve Holme
4a67b3e650 RELEASE-NOTES: Synced with aaaf9e50ec 2014-07-12 15:23:39 +01:00
Steve Holme
aaaf9e50ec ntlm_wb: Fixed buffer size not being large enough for NTLMv2 sessions
Bug: http://curl.haxx.se/mail/lib-2014-07/0103.html
Reported-by: David Woodhouse
2014-07-12 14:56:47 +01:00
Steve Holme
8a120710cc build: Fixed overridden compiler PDB settings in VC7 to VC12
The curl tool project files for VC7 to VC12 would override the default
setting with the output filename being the same as the linker PDB file.
As such the compiler file would be overwritten with the linker file
for all debug builds.

To avoid this overwrite and for consistency with the libcurl project
files, removed the setting to force the default filename to be used.
2014-07-12 14:46:36 +01:00
Dan Fandrich
816979e3b8 tests: added globbing keyword to URL globbing tests 2014-07-12 01:52:07 +02:00
Dan Fandrich
45c93dad1d Fixed some "statement not reached" warnings 2014-07-12 01:45:26 +02:00
Dan Fandrich
efc71583e7 gnutls: fixed a couple of uninitialized variable references 2014-07-12 01:31:12 +02:00
Dan Fandrich
3d2e1724cb gnutls: fixed compilation against versions < 2.12.0
The AES-GCM ciphers were added to GnuTLS as late as ver. 3.0.1 but
the code path in which they're referenced here is only ever used for
somewhat older GnuTLS versions. This caused undeclared identifier errors
when compiling against those.
2014-07-12 00:33:16 +02:00
Dan Fandrich
447c31ce9d gnutls: explicitly added SRP to the priority string
This seems to have become necessary for SRP support to work starting
with GnuTLS ver. 2.99.0. Since support for SRP was added to GnuTLS
before the function that takes this priority string, there should be no
issue with backward compatibility.
2014-07-12 00:11:44 +02:00
Dan Fandrich
d582c272a6 tests: adjust for capitalization differences in newer gnutls-serv 2014-07-11 23:47:48 +02:00
Dan Fandrich
4dc3a57718 test320/1/2/4: fix the port number substitution variables
These tests have been broken since commit 1958fe57 in Oct. 2011
2014-07-11 23:47:33 +02:00
Dan Fandrich
d033fc8323 tests: document more test identifiers and variables 2014-07-11 23:33:55 +02:00
Dan Fandrich
baf8b57b1d gnutls: ignore invalid certificate dates with VERIFYPEER disabled
This makes the behaviour consistent with what happens if a date can
be extracted from the certificate but is expired.
2014-07-11 23:21:31 +02:00
Steve Holme
f9b80cded7 CURLOPT_UPLOAD: Corrected argument type 2014-07-10 22:30:43 +01:00
Daniel Stenberg
6273b23a05 FAQ: expand the thread-safe section
... with a mention of *NOSIGNAL, based on talk in bug #1386
2014-07-09 22:07:36 -05:00
Dan Fandrich
1cef8f0bc3 url.c: Fixed memory leak on OOM
This showed itself on some systems with torture failures
in tests 1060 and 1061
2014-07-09 23:55:12 +02:00
Dan Fandrich
3ae2b6cd7f Update instances of some obsolete CURLOPTs to their new names 2014-07-05 22:47:13 +02:00
Marcel Raad
8ffe6f5b57 compiler warnings: potentially uninitialized variables
... pointed out by MSVC2013

Bug: http://curl.haxx.se/bug/view.cgi?id=1391
2014-07-05 01:42:10 +02:00
Kamil Dudka
ca2aa61b66 nss: make the list of CRL items global
Otherwise NSS could use an already freed item for another connection.
2014-07-04 13:15:03 +02:00
Kamil Dudka
52cd5ac21c nss: fix a memory leak when CURLOPT_CRLFILE is used 2014-07-04 08:25:05 +02:00
Kamil Dudka
caa4db8a51 nss: make crl_der allocated on heap
... and spell it as crl_der instead of crlDER
2014-07-04 00:37:40 +02:00
Kamil Dudka
2968f957aa nss: let nss_{cache,load}_crl return CURLcode 2014-07-04 00:20:59 +02:00
Kamil Dudka
0cd368c2ef tool: oops, forgot to include <plarenas.h>
... that contains the declaration of PL_ArenaFinish()
2014-07-03 20:36:49 +02:00
Kamil Dudka
d343033f3d tool: call PL_ArenaFinish() on exit if NSPR is used
This prevents valgrind from reporting still reachable memory allocated
by NSPR arenas (mainly the freelist).

Reported-by: Hubert Kario
2014-07-03 20:27:20 +02:00
Dimitrios Siganos
22eb00f937 example: use correct type (long) for CURLOPT_FOLLOWLOCATION 2014-07-03 22:47:28 +02:00
Dimitrios Siganos
afbd5f978e Document type of argument for CURLOPT_FOLLOWLOCATION. 2014-07-03 22:44:45 +02:00
Dimitrios Siganos
7441c6d7af Document type of argument for CURLOPT_ERRORBUFFER. 2014-07-03 22:44:45 +02:00
Dimitrios Siganos
3e0443239a Document type of argument for CURLOPT_COPYPOSTFIELDS. 2014-07-03 22:44:45 +02:00
Dimitrios Siganos
8b8cc85d8d Document type of argument for CURLOPT_ADDRESS_SCOPE. 2014-07-03 22:44:45 +02:00
Daniel Stenberg
97db9fb653 curl.1: minor language fix
Bug: http://curl.haxx.se/mail/archive-2014-07/0006.html
2014-07-03 22:37:43 +02:00
Ray Satiro
907520c4b9 progress callback: skip last callback update on errors
When an error has been detected, skip the final forced call to the
progress callback by making sure to pass the current return code
variable in the Curl_done() call in the CURLM_STATE_DONE state.

This avoids the "extra" callback that could occur even if you returned
error from the progress callback.

Bug: http://curl.haxx.se/mail/lib-2014-06/0062.html
Reported by: Jonathan Cardoso Machado
2014-07-02 23:53:25 +02:00
Dan Fandrich
1c1d9a3a86 opts: fixed some CURLOPT references so they get turned into links 2014-07-02 21:40:39 +02:00
Kamil Dudka
24c3cdce88 tool: 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.
2014-07-02 18:11:05 +02:00
Kamil Dudka
7581dee10a nss: make the fallback to SSLv3 work again
This feature was unintentionally disabled by commit ff92fcfb.
2014-07-02 18:11:05 +02:00
Kamil Dudka
7c21558503 nss: do not abort on connection failure
... due to calling SSL_VersionRangeGet() with NULL file descriptor

reported-by: upstream tests 305 and 404
2014-07-02 17:59:03 +02:00
Dan Fandrich
46a886cd48 opts: Document the socket callback function parameters 2014-07-01 08:12:11 +02:00
Steve Holme
1b6bc02fb9 opts: Fixed some typos 2014-06-28 12:40:06 +01:00
Dan Fandrich
057cc2e915 curl_easy_setopt.3: fixed the error code for an unsupported option 2014-06-25 22:33:32 +02:00
Dan Fandrich
d8287ca8bc opts: added some DEFAULT and RETURN VALUE sections 2014-06-24 00:00:34 +02:00
Daniel Stenberg
cf1f8d4528 libcurl docs: man page edits
mainly to improve how the web versions render
2014-06-21 23:52:06 +02:00
Dan Fandrich
c66c2dd755 curl_easy_setopt.3: fixed some typos 2014-06-21 20:43:04 +02:00
Daniel Stenberg
c7e491f9c2 lib man pages: update easy setopt option references
... by using the "\fIopt(3)\fP" syntax they will be linked properly when
the web version of the page is generated.
2014-06-21 20:21:47 +02:00
Daniel Stenberg
7d618c477f opts: the CURLOPT_SSL_ENABLE_*PN options are enabled by default 2014-06-21 20:03:35 +02:00
Colin Hogben
0ab9e0c9d9 lib: documentation updates in README.hostip
c-ares now does support IPv6;
avoid implying threaded resolver is Windows-only;
two referenced source files were renamed in 7de2f92
2014-06-21 19:49:48 +02:00
Daniel Stenberg
ac5b6f8082 curl_easy_setopt.3: CURLOPT_POSTFIELDS is the exception
... to the always-copy-char *-argument.

And fix some minor mistakes.
2014-06-21 19:46:45 +02:00
Daniel Stenberg
ecacdb3430 curl_easy_setopt.3: refer to the individual man pages
With all the new individual option man pages created, this now refers to
each separate one instead of duplicaing the info. Also makes this page
easier to overview.
2014-06-21 15:45:50 +02:00
Dan Fandrich
d4cc9db64d opts: fixed mancheck for out-of-tree builds 2014-06-21 11:22:04 +02:00
Daniel Stenberg
31b28a0942 curl_easy_setopt.3: shorten
shorten descriptions, mostly refer to the separate descriptions
2014-06-21 00:04:13 +02:00
Daniel Stenberg
25a975408e CURLOPT_DNS_LOCAL_IP4.3: better short desc 2014-06-21 00:04:13 +02:00
Dan Fandrich
c088f29b98 opts: document CURLE_OUT_OF_MEMORY among other return values 2014-06-20 23:43:46 +02:00
Dan Fandrich
59d5b4ce06 opts: fixed some typos 2014-06-20 23:31:06 +02:00
Daniel Stenberg
68d1bea5fc opts: various corrections 2014-06-20 01:10:34 +02:00
Daniel Stenberg
662f749cec opts: add the rest of the options
... and fixed mancheck to ignore obsolete options
2014-06-20 01:02:49 +02:00
Daniel Stenberg
290e1bbe0d opts: the final bunch of options as man pages
Now all current options have their own man pages.
2014-06-20 00:58:18 +02:00
Daniel Stenberg
a6cd174b2e opts: 37 additional man pages 2014-06-19 17:59:13 +02:00
Daniel Stenberg
fede49532d CURLOPT_URL: move up the text from "Notes" 2014-06-19 15:11:49 +02:00
Daniel Stenberg
49078ae363 ROADMAP: removed, now ROADMAP.md 2014-06-19 15:11:28 +02:00
Daniel Stenberg
42d199b1f1 ROADMAP.md: make it markdown formatted 2014-06-19 14:16:14 +02:00
Daniel Stenberg
00d84a2f3e ROADMAP: initial commit of "curl the next few years"
To be further discussed, debated and edited
2014-06-19 14:08:12 +02:00
Daniel Stenberg
c31e6d223a opts: more man pages 2014-06-19 13:53:13 +02:00
Daniel Stenberg
47311e4c7e CURLOPT_UNRESTRICTED_AUTH.3: added missing 'T' 2014-06-19 08:40:51 +02:00
Daniel Stenberg
ba1d831cf1 opts: makefile now includes all current man pages 2014-06-19 00:08:18 +02:00
Daniel Stenberg
ae353b0b20 opts: 11 more man pages 2014-06-19 00:03:17 +02:00
Dan Fandrich
efbffa2fb7 opts: document CURLE_OUT_OF_MEMORY as RETURN VALUE 2014-06-18 23:28:13 +02:00
Dan Fandrich
479675f23e opts: fixed a couple of typos 2014-06-18 23:07:08 +02:00
Patrick Monnerat
ce656065ba OS400: make it compilable again. Make RPG binding up to date. 2014-06-18 20:22:44 +02:00
Patrick Monnerat
fdee523452 buildconf: do not search tools in current directory. 2014-06-18 15:41:06 +02:00
Dan Fandrich
ade380a7aa curl.h: renamed CURLOPT_DEPRECATEDx to CURLOPT_OBSOLETEx
This is consistent with the existing obsolete error code naming
convention.
2014-06-18 15:10:02 +02:00
Daniel Stenberg
8fab76e8f3 opts: 16 more man pages 2014-06-18 14:40:26 +02:00
Daniel Stenberg
c3954ffb25 opts: more man pages 2014-06-18 13:18:58 +02:00
Daniel Stenberg
38bf85fd61 CURLOPT_READFUNCTION.3: add short desc 2014-06-18 11:55:13 +02:00
Daniel Stenberg
de6b89262e CURLOPT_LOW_SPEED_LIMIT.3: language 2014-06-18 11:54:42 +02:00
Daniel Stenberg
e34bdc3187 opts: 4 more man pages 2014-06-18 11:45:22 +02:00
Daniel Stenberg
1a876a37cf opts: add all existing man pages to the dist 2014-06-18 10:18:00 +02:00
Daniel Stenberg
082d5300db libcurl build: use correct dir when cd'ing to opts for pdf building 2014-06-18 10:15:07 +02:00
Dan Fandrich
a6d666e1a6 tests: Use CURLOPT_READDATA instead of the obsolete CURLOPT_INFILE 2014-06-18 01:17:23 +02:00
Dan Fandrich
455bfedc84 opts: fixed a few typos 2014-06-18 00:54:30 +02:00
Daniel Stenberg
38d517fcd4 opts: 29 more options as man pages 2014-06-18 00:30:02 +02:00
Daniel Stenberg
b46f295900 curl.h: moved two really old deprecated symbols
... from the CINIT() enum
2014-06-17 23:36:29 +02:00
Daniel Stenberg
0890bb6a51 opts: 9 more options as separate man pages 2014-06-17 18:04:40 +02:00
Daniel Stenberg
0042557598 opts: 3 more options as man pages 2014-06-17 16:48:16 +02:00
Daniel Stenberg
d865376c1d opts: 7 more setopt options as individual man pages 2014-06-17 11:39:26 +02:00
Daniel Stenberg
0219d4e04e opts template: provide a filled in error code phrase 2014-06-17 11:38:51 +02:00
Daniel Stenberg
c522c7ba88 CURLOPT_SOCKOPTFUNCTION.3: clarify return code 2014-06-17 10:10:13 +02:00
Daniel Stenberg
5fcef972b2 curl.h: reverse the enum/define setup for old symbols
We now provide the "real" names in the CINIT() macro setup for CURLOPT_*
symbols, and we provide backwards compatibility defines for the old
symbols as defines instead of vice versa.

This allows us to better use the CINIT() list to check for existing and
current option names.
2014-06-17 10:02:41 +02:00
Daniel Stenberg
89a2178bc9 CURLOPT_WRITEDATA.3: move version info to AVAILABILITY 2014-06-17 10:02:14 +02:00
Daniel Stenberg
5d746fc98c opts: 4 more options with stand-alone man pages 2014-06-17 09:54:58 +02:00
Daniel Stenberg
d8aa360058 CURLOPT_READFUNCTION.3: see also the seekfunction 2014-06-17 09:54:40 +02:00
Daniel Stenberg
a6882a3a49 CURLOPT_IOCTLFUNCTION.3: fill in short desc 2014-06-17 08:12:14 +02:00
Dan Fandrich
4a2da38bed CURLOPT_READDATA.3: fixed typo 2014-06-17 00:47:25 +02:00
Michał Górny
c3c4fd2671 tool_metalink: Support polarssl as digest provider 2014-06-17 00:42:53 +02:00
Daniel Stenberg
b56dff79ad opts: initial makefile
with a bonus first rough 'mancheck' target to see which man pages that
are still missing
2014-06-17 00:29:02 +02:00
Daniel Stenberg
e029243727 CURLOPT_IOCTLFUNCTION.3: initial man page 2014-06-17 00:15:41 +02:00
Daniel Stenberg
bb71f1aa25 CURLOPT_WRITEFUNCTION: changed the order of some sentences
First explain the data then describe what the callback should return.
2014-06-17 00:02:22 +02:00
Daniel Stenberg
b203377df7 CURLOPT_WRITEFUNCTION.3: improved language
Suggestions-by: Jeff Pohlmeyer
2014-06-16 23:55:30 +02:00
Daniel Stenberg
28b698858c opts docs: 3 more options in their own man pages 2014-06-16 23:01:12 +02:00
Daniel Stenberg
7ad9cb12b2 template: a template for adding new option man pages
Inludes all the sections to consider.
2014-06-16 22:16:13 +02:00
Daniel Stenberg
a5e498b543 CURLOPT_WRITEFUNCTION: add RETURN VALUE and DEFAULT sections 2014-06-16 22:01:08 +02:00
MAN-AT-ARMS
93ec89042e curlbuild: fix GCC build on SPARC systems without configure script 2014-06-16 21:44:28 +02:00
Daniel Stenberg
e810ddbb70 CURLOPT_WRITEFUNCTION: initial man page 2014-06-16 20:27:37 +02:00
Daniel Stenberg
0761f17560 CURLOPT_WILDCARDMATCH: initial man page 2014-06-16 20:27:28 +02:00
Daniel Stenberg
0795e5c8b9 CURLOPT_VERBOSE: initial man page 2014-06-16 20:27:18 +02:00
Daniel Stenberg
49b3c145ee CURLOPT_NOSIGNAL: initial man page 2014-06-16 20:27:07 +02:00
Daniel Stenberg
801a683007 CURLOPT_NOPROGRESS: initial man page 2014-06-16 20:26:53 +02:00
Daniel Stenberg
7e109995fd CURLOPT_HEADER: initial man page 2014-06-16 20:26:32 +02:00
Dan Fandrich
34d02aff71 sasl: Added back qop argument mistakenly removed in e95ca7ce
This caused segfaults on tests 823 869 907.
2014-06-15 14:11:35 +02:00
Dan Fandrich
ce6c691da1 test1398: Added test to Makefile.am 2014-06-15 12:28:43 +02:00
Dan Fandrich
740ebcd86e https: Fix build when http2 is disabled 2014-06-15 12:24:47 +02:00
Daniel Stenberg
c06e76f6fe http2: better return code error checking 2014-06-14 00:11:01 +02:00
Lindley French
964e43c5e2 conncache: move the connection counter to the cache struct
The static connection counter caused a race condition. Moving the
connection id counter into conncache solves it, as well as simplifying
the related logic.
2014-06-13 15:05:24 +02:00
Daniel Stenberg
d5d98c1297 http2: avoid segfault when usint the plain-text http2
This regression was introduced when *init was split into *init and
*setup...
2014-06-12 23:38:09 +02:00
Steve Holme
1b478d6ac3 RELEASE-NOTES: Synced with 3aa1329e0a 2014-06-11 22:59:14 +01:00
Daniel Stenberg
3aa1329e0a curl_sasl: revert the goto for error bailout
They were added because of an older code path that used allocations and
should not have been left in the code. With this change the logic goes
back to how it was.
2014-06-11 23:32:10 +02:00
Daniel Stenberg
e95ca7cec9 NTLM: set a fake entropy for debug builds with CURL_ENTROPY set
Curl_rand() will return a dummy and repatable random value for this
case. Makes it possible to write test cases that verify output.

Also, fake timestamp with CURL_FORCETIME set.

Only when built debug enabled of course.

Curl_ssl_random() was not used anymore so it has been
removed. Curl_rand() is enough.

create_digest_md5_message: generate base64 instead of hex string

curl_sasl: also fix memory leaks in some OOM situations
2014-06-11 23:15:48 +02:00
Steve Holme
ceacbacd14 tests: Disabled NTLM tests for non-debug builds
Added required "debug" feature, missed in commit 1c9aaa0bac, as NTLMv2
calls Curl_rand() which can only be fixed to a specific entropy in
debug builds.
2014-06-11 21:24:59 +01:00
Steve Holme
51bb067a42 Curl_rand: Use a fake entropy for debug builds when CURL_ENTROPY set 2014-06-11 21:13:40 +01:00
Marcel Raad
bde0d89c3d getinfo: HTTP CONNECT code not reset between transfers
httpproxycode is not reset in Curl_initinfo, so a 407 is not reset even
if curl_easy_reset is called between transfers.

Bug: http://curl.haxx.se/bug/view.cgi?id=1380
2014-06-10 22:44:51 +02:00
Alessandro Ghedini
e9344390ee transfer: fix info messages when switching method on 301 and 302
The method change is forbidden by the obsolete RFC2616, but libcurl did
it anyway for compatibility reasons. The new RFC7231 allows this
behaviour so there's no need for the scary "Violate RFC 2616/10.3.x"
notice. Also update the comments accordingly.
2014-06-09 08:29:37 +02:00
Steve Holme
8223972af2 winbuild: Don't USE_WINSSL when WITH_SSL is being used
Regression of commit d39bbcfa8d when compiling against OpenSSL.
2014-06-06 14:14:30 +01:00
Steve Holme
2b2e8e0e4b RELEASE-NOTES: Synced with 99303bcde5 2014-06-05 23:56:56 +01:00
Steve Holme
99303bcde5 build: Fixed Visual Studio static OpenSSL builds following commit c50ce85918 2014-06-05 23:44:37 +01:00
Steve Holme
f997787d89 winbuild: Fixed static OpenSSL builds following commit c50ce85918 2014-06-05 23:19:00 +01:00
Steve Holme
65467cf9cb config-win32.h: Updated for VC12
Bug: http://curl.haxx.se/bug/view.cgi?id=1378
Reported and Patched-by: Marcel Raad
2014-06-05 22:44:46 +01:00
Daniel Stenberg
5468a2122c KNOWN_BUGS: #83 was addressed with commit c50ce85918 2014-06-04 18:21:33 +00:00
Daniel Stenberg
c50ce85918 Curl_ossl_init: call OPENSSL_config for initing engines
Bug: http://curl.haxx.se/mail/lib-2014-06/0003.html
Reported-by: Дмитрий Фалько
2014-06-03 22:15:38 +02:00
Daniel Stenberg
bbd3dc611e random: use Curl_rand() for proper random data
The SASL/Digest previously used the current time's seconds +
microseconds to add randomness but it is much better to instead get more
data from Curl_rand().

It will also allow us to easier "fake" that for debug builds on demand
in a future.
2014-06-03 18:25:48 +02:00
Steve Holme
62a26ec696 curl_sasl: Fixed copy/paste error of now.tv_sec in commit eefeb73af4 2014-06-02 23:15:15 +01:00
Daniel Stenberg
1b59ef6990 RELEASE-NOTES: synced with d603ed6753 2014-06-02 11:41:41 +02:00
Daniel Stenberg
d603ed6753 KNOWN_BUGS: #30 was fixed in 0bc4938eec, 7.37.0 2014-06-01 19:59:17 +02:00
Steve Holme
1eb308275a curl_sasl: Fixed compilation warning under DEBUGBUILD 2014-06-01 12:29:16 +01:00
Steve Holme
e8c1bf8840 tests: Fixed up DIGEST-MD5 tests following commit eefeb73af4 2014-06-01 12:18:05 +01:00
Steve Holme
eefeb73af4 curl_sasl: Extended native DIGEST-MD5 cnonce to be a 32-byte hex string
Rather than use a short 8-byte hex string, extended the cnonce to be
32-bytes long, like Windows SSPI does.

Used a combination of random data as well as the current date and
time for the generation.
2014-06-01 11:18:12 +01:00
Steve Holme
aa6be2ef13 curl_sasl_sspi: Fixed corrupt hostname in DIGEST-MD5 SPN generation 2014-06-01 10:35:52 +01:00
Dan Fandrich
9597b0ebcb tests: Fix portability issue with the tftpd server and timeouts
gcc spit out warning: variable 'x' might be clobbered by 'longjmp' or
'vfork' messages for a few variables.  These automatic variables were
expected to be changed between a setjmp/longjmp and hold their values,
so are now marked volatile.
2014-05-29 09:39:39 +02:00
Steve Holme
bcbaed8165 RELEASE-NOTES: Synced with 2a615a2b64 2014-05-28 23:27:45 +01:00
Steve Holme
2a615a2b64 build: Use $(TargetDir) and $(TargetName) macros for VC .lib output files
As with commit 11397eb6dd, use $(TargetDir) and $(TargetName) for the
Import Library output rather than $(OutDir)\$(ProjectName)d.lib and
$(OutDir)\$(ProjectName).lib.
2014-05-28 23:12:58 +01:00
Steve Holme
11397eb6dd build: Use $(TargetDir) and $(TargetName) macros for VC .pdb output files
Like with the curl tool project files use $(TargetDir)$(TargetName).pdb
rather than $(OutDir)$(ProjectName)d.pdb for the Program Database File
output.
2014-05-28 21:49:20 +01:00
Daniel Stenberg
b99f8e8b4e gnutls: allow building with nghttp2 but without ALPN support
It might not be the most useful combo, but...
2014-05-28 00:30:23 +02:00
Alessandro Ghedini
345bfab518 gnutls: don't use deprecated type names anymore 2014-05-28 00:27:33 +02:00
Brad Spencer
fb4937a311 select: with winsock, avoid passing unsupported arguments to select()
"Any two of the parameters, readfds, writefds, or exceptfds, can be
given as null. At least one must be non-null, and any non-null
descriptor set must contain at least one handle to a socket."

http://msdn.microsoft.com/en-ca/library/windows/desktop/ms740141(v=vs.85).aspx

When using select(), cURL doesn't adhere to this (WinSock-specific)
rule, and can ask to monitor empty fd_sets, which leads to select()
returning WSAEINVAL (i.e. EINVAL) and connections failing in mysterious
ways as a result (at least when using the curl_multi_socket_action()
interface).

Bug: http://curl.haxx.se/mail/lib-2014-05/0278.html
2014-05-27 23:58:28 +02:00
Daniel Stenberg
1b89456509 url-parser: only use if_nametoindex if detected by configure
The previous #ifdef detection wasn't good enough.

Bug: http://curl.haxx.se/mail/lib-2014-05/0260.html
Reported-by: Chris Young
2014-05-26 22:10:15 +02:00
Daniel Stenberg
9d85d4746b curl_version_info.3: returns a pointer to a static struct
And clarify that age 3 means 7.16.1 or later.
2014-05-26 11:53:49 +02:00
Fabian Frank
1439dfb576 polarssl: add ALPN support
PolarSSL added ALPN support in their 1.3.6 release.

See:
https://polarssl.org/tech-updates/releases/polarssl-1.3.6-released
2014-05-25 23:11:24 +02:00
Daniel Stenberg
ac6da721a3 curl_easy_reset: reset the URL
Make sure that the URL is reset and cleared.

Bug: http://curl.haxx.se/mail/lib-2014-05/0235.html
Reported-by: Jonathan Cardoso Machado
2014-05-24 19:06:11 +02:00
Daniel Stenberg
b3d0e4e243 configure: fix the nghttp2 detection when not found 2014-05-24 13:54:28 +02:00
Daniel Stenberg
2ddd69ef9a configure: detect nghttp2 by default 2014-05-23 17:01:14 +02:00
Tatsuhiro Tsujikawa
c7638d93b0 openssl: Fix uninitialized variable use in NPN callback
OpenSSL passes out and outlen variable uninitialized to
select_next_proto_cb callback function.  If the callback function
returns SSL_TLSEXT_ERR_OK, the caller assumes the callback filled
values in out and outlen and processes as such.  Previously, if there
is no overlap in protocol lists, curl code does not fill any values in
these variables and returns SSL_TLSEXT_ERR_OK, which means we are
triggering undefined behavior.  valgrind warns this.

This patch fixes this issue by fallback to HTTP/1.1 if there is no
overlap.
2014-05-23 17:00:07 +02:00
Daniel Stenberg
3b65aeda52 curl.1: clarify that -u can't specify a user with colon 2014-05-23 14:34:03 +02:00
Steve Holme
290d615b46 README: Added Test Suite to the TODO list 2014-05-22 23:12:44 +01:00
Steve Holme
a9388b73b1 build: Use CURLX_* file lists for Visual Studio curl tool project generation 2014-05-22 23:10:38 +01:00
Steve Holme
a7999da39e tool_getparam.c: Fixed compilation warnings
There is an implicit conversion from "unsigned long" to "long"
2014-05-22 21:01:51 +01:00
Steve Holme
415c982afb RELEASE-NOTES: Synced with f634355868 2014-05-22 20:31:34 +01:00
Dan Fandrich
f634355868 http: Fix a compiler warning when http2 support is disabled 2014-05-22 08:38:26 +02:00
Steve Holme
461d45ea7a build: Fixed incorrect reference to curl_setup.h in Visual Studio files
Fixed a copy / paste error from my 2011 project files.
2014-05-22 01:53:50 +01:00
Nick Zitzmann
32e9275edb darwinssl: fix lint & build warnings in the previous commit 2014-05-21 19:21:15 -05:00
Vilmos Nebehaj
cd2cedf002 Add support for --cacert in DarwinSSL.
Security Framework on OS X makes it possible to supply extra anchor (CA)
certificates via the Certificate, Key, and Trust Services API. This
commit makes the '--cacert' option work using this API.

More information:

https://developer.apple.com/library/mac/documentation/security/Reference/certifkeytrustservices/Reference/reference.html

The HTTPS tests now pass on OS X except 314, which requires the '--crl'
option to work.
2014-05-21 18:48:14 -05:00
Steve Holme
c6d5f80d8b http.c: Fixed compilation warning
warning: suggest braces around empty body in an 'else' statement
2014-05-22 00:40:07 +01:00
Steve Holme
691985ceb0 bits.close: Fixed compilation warning
warning: implicit declaration of function 'connclose'
2014-05-22 00:29:21 +01:00
Daniel Stenberg
df13f8e8c2 bits.close: introduce connection close tracking
Make all code use connclose() and connkeep() when changing the "close
state" for a connection. These two macros take a string argument with an
explanation, and debug builds of curl will include that in the debug
output. Helps tracking connection re-use/close issues.
2014-05-22 00:34:10 +02:00
Steve Holme
491767418b Makefile.inc: Added curlx headers to assist Visual Studio project generation 2014-05-21 23:12:22 +01:00
Steve Holme
e8b7431305 build: Renamed CURLX_ONES file list definition to CURLX_CFILES
Renamed the CURLX_ONES file list definition in order to a) try and be
consistent with other file lists and b) to allow for the addition of
the curlx header files, which will assist with Visual Studio project
files generation rather than hard coding those files.
2014-05-21 23:11:51 +01:00
Steve Holme
ddf4719694 bump: Start working on the next release 2014-05-21 23:05:45 +01:00
391 changed files with 14447 additions and 4149 deletions

View File

@@ -275,6 +275,8 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
win32_src_srcs='$(CURL_CFILES)'; \ win32_src_srcs='$(CURL_CFILES)'; \
win32_src_hdrs='$(CURL_HFILES)'; \ win32_src_hdrs='$(CURL_HFILES)'; \
win32_src_rc='$(CURL_RCFILES)'; \ win32_src_rc='$(CURL_RCFILES)'; \
win32_src_x_srcs='$(CURLX_CFILES)'; \
win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
\ \
sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \ sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \ sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
@@ -282,6 +284,8 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \ sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \ sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \ sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
\ \
awk_code='\ awk_code='\
function gen_element(type, dir, file)\ function gen_element(type, dir, file)\
@@ -363,6 +367,20 @@ function gen_element(type, dir, file)\
split(src_rc, arr);\ split(src_rc, arr);\
for(val in arr) gen_element(proj_type, "src", arr[val]);\ for(val in arr) gen_element(proj_type, "src", arr[val]);\
}\ }\
else if($$0 == "CURL_SRC_X_C_FILES") {\
split(src_x_srcs, arr);\
for(val in arr) {\
sub(/..\/lib\//, "", arr[val]);\
gen_element(proj_type, "lib", arr[val]);\
}\
}\
else if($$0 == "CURL_SRC_X_H_FILES") {\
split(src_x_hdrs, arr);\
for(val in arr) {\
sub(/..\/lib\//, "", arr[val]);\
gen_element(proj_type, "lib", arr[val]);\
}\
}\
else\ else\
printf("%s\r\n", $$0);\ printf("%s\r\n", $$0);\
}';\ }';\
@@ -381,6 +399,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
\ \
echo "generating '$(VC7_LIBVCPROJ)'"; \ echo "generating '$(VC7_LIBVCPROJ)'"; \
@@ -397,6 +417,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
\ \
echo "generating '$(VC71_LIBVCPROJ)'"; \ echo "generating '$(VC71_LIBVCPROJ)'"; \
@@ -413,6 +435,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
\ \
echo "generating '$(VC8_LIBVCPROJ)'"; \ echo "generating '$(VC8_LIBVCPROJ)'"; \
@@ -429,6 +453,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
\ \
echo "generating '$(VC9_LIBVCPROJ)'"; \ echo "generating '$(VC9_LIBVCPROJ)'"; \
@@ -445,6 +471,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
\ \
echo "generating '$(VC10_LIBVCXPROJ)'"; \ echo "generating '$(VC10_LIBVCXPROJ)'"; \
@@ -461,6 +489,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
\ \
echo "generating '$(VC11_LIBVCXPROJ)'"; \ echo "generating '$(VC11_LIBVCXPROJ)'"; \
@@ -477,6 +507,8 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \ "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
\ \
echo "generating '$(VC12_LIBVCXPROJ)'"; \ echo "generating '$(VC12_LIBVCXPROJ)'"; \
@@ -493,4 +525,6 @@ function gen_element(type, dir, file)\
-v src_srcs="$$sorted_src_srcs" \ -v src_srcs="$$sorted_src_srcs" \
-v src_hdrs="$$sorted_src_hdrs" \ -v src_hdrs="$$sorted_src_hdrs" \
-v src_rc="$$win32_src_rc" \ -v src_rc="$$win32_src_rc" \
-v src_x_srcs="$$sorted_src_x_srcs" \
-v src_x_hdrs="$$sorted_src_x_hdrs" \
"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };) "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)

View File

@@ -1,87 +1,67 @@
Curl and libcurl 7.37.0 Curl and libcurl 7.37.1
Public curl releases: 139 Public curl releases: 140
Command line options: 161 Command line options: 162
curl_easy_setopt() options: 206 curl_easy_setopt() options: 208
Public functions in libcurl: 58 Public functions in libcurl: 58
Contributors: 1137 Contributors: 1155
This release includes the following changes: This release includes the following changes:
o URL parser: IPv6 zone identifiers are now supported o bits.close: introduce connection close tracking
o CURLOPT_PROXYHEADER: set headers for proxy-only o darwinssl: Add support for --cacert
o CURLOPT_HEADEROPT: added o polarssl: add ALPN support
o curl: add --proxy-header o docs: Added new option man pages
o sasl: Added support for DIGEST-MD5 via Windows SSPI
o sasl: Added DIGEST-MD5 qop-option validation in native challange handling
o imap: Expanded mailbox SEARCH support to use URL query strings [7]
o imap: Extended FETCH support to include PARTIAL URL specifier [7]
o nss: implement non-blocking SSL handshake
o build: Reworked Visual Studio project files
o poll: enable poll on darwin13
o mk-ca-bundle: added -p
o libtests: add a wait_ms() function
This release includes the following bugfixes: This release includes the following bugfixes:
o mkhelp: generate code for --disable-manual as well [1] o build: Fixed incorrect reference to curl_setup.h in Visual Studio files
o hostcheck: added a system include to define struct in_addr o build: Use $(TargetDir) and $(TargetName) macros for .pdb and .lib output
o winbuild: added warnless.c to fix build o curl.1: clarify that -u can't specify a user with colon [1]
o Makefile.vc6: added warnless.c to fix build o openssl: Fix uninitialized variable use in NPN callback
o smtp: Fixed login denied when server doesn't support AUTH capability [2] o curl_easy_reset: reset the URL [2]
o smtp: Fixed login denied with a RFC-821 based server [2] o curl_version_info.3: returns a pointer to a static struct
o curl: stop interpreting IPv6 literals as glob patterns o url-parser: only use if_nametoindex if detected by configure [3]
o http2: remove _DRAFT09 from the NPN_HTTP2 enum o select: with winsock, avoid passing unsupported arguments to select() [4]
o http2: let openssl mention the exact protocol negotiated o gnutls: don't use deprecated type names anymore
o http2+openssl: fix compiler warnings in ALPN using code o gnutls: allow building with nghttp2 but without ALPN support
o ftp: in passive data connect wait for happy eyeballs sockets [3] o tests: Fix portability issue with the tftpd server
o HTTP: don't send Content-Length: 0 _and_ Expect: 100-continue [4] o curl_sasl_sspi: Fixed corrupt hostname in DIGEST-MD5 SPN
o http2: Compile with current nghttp2, which supports h2-11 [5] o curl_sasl: extended native DIGEST-MD5 cnonce to be a 32-byte hex string
o http_negotiate_sspi: Fixed compilation when USE_HTTP_NEGOTIATE not defined o random: use Curl_rand() for proper random data [5]
o strerror: fix comment about vxworks' strerror_r buffer size [6] o Curl_ossl_init: call OPENSSL_config for initing engines [6]
o url: only use if_nametoindex() if IFNAMSIZ is available o config-win32.h: Updated for VC12 [7]
o imap: Fixed untagged response detection when no data after command o winbuild: Don't USE_WINSSL when WITH_SSL is being used
o various: fix possible dereference of null pointer o getinfo: HTTP CONNECT code not reset between transfers [8]
o various: fix use of uninitialized variable o Curl_rand: Use a fake entropy for debug builds when CURL_ENTROPY set
o various: fix use of non-null terminated strings o http2: avoid segfault when using the plain-text http2
o telnet.c: check sscanf results before passing them to snprintf o conncache: move the connection counter to the cache struct
o parsedate.c: check sscanf result before passing it to strlen o http2: better return code error checking
o sockfilt.c: free memory in case of memory allocation errors o curlbuild: fix GCC build on SPARC systems without configure script
o sockfilt.c: ignore non-key-events and continue waiting for input o tool_metalink: Support polarssl as digest provider
o sockfilt.c: properly handle disk files, pipes and character input o curl.h: reverse the enum/define setup for old symbols
o sockfilt.c: fixed getting stuck waiting for MinGW stdin pipe o curl.h: moved two really old deprecated symbols
o sockfilt.c: clean up threaded approach and add documentation o curl.h: renamed CURLOPT_DEPRECATEDx to CURLOPT_OBSOLETEx
o configure: use the nghttp2 path correctly with pkg-config [8] o buildconf: do not search tools in current directory.
o curl_global_init_mem: bump initialized even if already initialized [9] o OS400: make it compilable again. Make RPG binding up to date
o gtls: fix NULL pointer dereference [10] o nss: do not abort on connection failure (failing tests 305 and 404)
o cyassl: Use error-ssl.h when available o nss: make the fallback to SSLv3 work again
o handler: make 'protocol' always specified as a single bit [11] o tool: prevent valgrind from reporting possibly lost memory (nss only)
o INFILESIZE: fields in UserDefined must not be changed run-time o progress callback: skip last callback update on errors [9]
o openssl: biomem->data is not zero terminated o nss: fix a memory leak when CURLOPT_CRLFILE is used
o config-win32.h: Fixed HAVE_LONGLONG for Visual Studio .NET 2003 and up o compiler warnings: potentially uninitialized variables [10]
o curl_ntlm_core: Fixed use of long long for VC6 and VC7 o url.c: Fixed memory leak on OOM
o SNI: strip off a single trailing dot from host name [12] o gnutls: ignore invalid certificate dates with VERIFYPEER disabled
o curl: bail on cookie use when built with disabled cookies o gnutls: fix SRP support with versions of GnuTLS from 2.99.0
o curl_easy_setopt.3: added the proto for CURLOPT_SSH_KNOWNHOSTS o gnutls: fixed a couple of uninitialized variable references
o curl_multi_cleanup: ignore SIGPIPE better [13] o gnutls: fixed compilation against versions < 2.12.0
o schannel: don't use the connect-timeout during send [14] o build: Fixed overridden compiler PDB settings in VC7 to VC12
o mprintf: allow %.s with data not being zero terminated o ntlm_wb: Fixed buffer size not being large enough for NTLMv2 sessions [11]
o tool_help: Fixed missing --login-options option o netrc: don't abort if home dir cannot be found
o configure: Don't set LD_LIBRARY_PATH when cross-compiling o netrc: fixed thread safety problem by using getpwuid_r if available
o http: auth failure on duplicated 'WWW-Authenticate: Negotiate' header [15] o cookie: avoid mutex deadlock [12]
o cacertinmem: fix memory leak [16] o configure: respect host tool prefix for krb5-config
o lib1506: make sure the transfers are not within the same ms [17] o gnutls: handle IP address in cert name check
o Makefile.b32: Fixed for vtls changes [18]
o sasl: Fixed missing qop in the client's challenge-response message
o openssl: unbreak PKCS12 support [19]
o darwinssl: fix potential crash with a P12 file [20]
o timers: fix timer regression involving redirects / reconnects [21]
o CURLINFO_SSL_VERIFYRESULT: made more reliable [22]
o HTTP: fixed connection re-use [23]
o configure: add SPNEGO to supported features [24]
o configure: add GSS-API to supported features [25]
o ALPN: fix typo in http/1.1 identifier
o http2: make connection re-use work [26]
This release includes the following known bugs: This release includes the following known bugs:
@@ -90,41 +70,26 @@ This release includes the following known bugs:
This release would not have looked like this without help, code, reports and This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Aaro Koskinen, Cody Mack, Damian Dixon, Dan Fandrich, Daniel Johnson, Alessandro Ghedini, Brad Spencer, Chris Young, Colin Hogben, Dan Fandrich,
Daniel Stenberg, David Woodhouse, Dilyan Palauzov, Fabian Frank, Daniel Stenberg, David Woodhouse, Dimitrios Siganos, Fabian Frank,
Ivo Bellin Salarin, Jeff King, Jeroen Koekkoek, Jon Torrey, Kamil Dudka, Glen A Johnson Jr., Hubert Kario, Jeff Pohlmeyer, Jonathan Cardoso Machado,
Larry Lin, Leon Winter, Maciej Puzio, Marc Hoersken, Michael Osipov, Kamil Dudka, Lindley French, Marcel Raad, Michał Górny, Nick Zitzmann,
Nick Zitzmann, Patrick Watson, Paul Marks, Radu Simionescu, Remi Gacogne, Patrick Monnerat, Ray Satiro, Steve Holme, Tatsuhiro Tsujikawa,
Ryan Braud, Steve Holme, Tatsuhiro Tsujikawa, Till Maas, Tom Sparrow, Vilmos Nebehaj, Yousuke Kimoto, Dmitry Falko
Török Edwin, Vijay Panghal,
Thanks! (and sorry if I forgot to mention someone) Thanks! (and sorry if I forgot to mention someone)
References to bug reports and discussions on issues: References to bug reports and discussions on issues:
[1] = http://curl.haxx.se/bug/view.cgi?id=1350 [1] = http://curl.haxx.se/bug/view.cgi?id=1375
[2] = http://curl.haxx.se/mail/lib-2014-03/0173.html [2] = http://curl.haxx.se/mail/lib-2014-05/0235.html
[3] = http://curl.haxx.se/mail/lib-2014-02/0135.html (ruined) [3] = http://curl.haxx.se/mail/lib-2014-05/0260.html
[4] = http://curl.haxx.se/bug/view.cgi?id=1349 [4] = http://curl.haxx.se/mail/lib-2014-05/0278.html
[5] = http://curl.haxx.se/mail/lib-2014-04/0053.html [5] = http://curl.haxx.se/mail/lib-2014-06/0001.html
[6] = http://curl.haxx.se/mail/lib-2014-04/0063.html [6] = http://curl.haxx.se/mail/lib-2014-06/0003.html
[7] = http://curl.haxx.se/mail/lib-2014-04/0067.html [7] = http://curl.haxx.se/bug/view.cgi?id=1378
[8] = http://curl.haxx.se/mail/lib-2014-04/0159.html [8] = http://curl.haxx.se/bug/view.cgi?id=1380
[9] = http://curl.haxx.se/bug/view.cgi?id=1362 [9] = http://curl.haxx.se/mail/lib-2014-06/0062.html
[10] = http://curl.haxx.se/mail/lib-2014-04/0145.html [10] = http://curl.haxx.se/bug/view.cgi?id=1391
[11] = https://github.com/bagder/curl/pull/97 [11] = http://curl.haxx.se/mail/lib-2014-07/0103.html
[12] = http://curl.haxx.se/mail/lib-2014-04/0161.html [12] = http://curl.haxx.se/mail/lib-2014-02/0184.html
[13] = http://thread.gmane.org/gmane.comp.version-control.git/238242
[14] = http://curl.haxx.se/bug/view.cgi?id=1352
[15] = https://bugzilla.redhat.com/1093348
[16] = http://curl.haxx.se/bug/view.cgi?id=1368
[17] = http://curl.haxx.se/mail/lib-2014-05/0081.html
[18] = http://curl.haxx.se/mail/lib-2014-05/0025.html
[19] = http://curl.haxx.se/bug/view.cgi?id=1371
[20] = http://curl.haxx.se/bug/view.cgi?id=1369
[21] = http://curl.haxx.se/mail/lib-2014-05/0147.html
[22] = http://curl.haxx.se/mail/lib-2014-04/0203.html
[23] = http://curl.haxx.se/mail/lib-2014-05/0127.html
[24] = http://curl.haxx.se/bug/view.cgi?id=1343
[25] = http://curl.haxx.se/bug/view.cgi?id=1344
[26] = http://curl.haxx.se/bug/view.cgi?id=1374

View File

@@ -32,6 +32,7 @@ die(){
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# findtool works as 'which' but we use a different name to make it more # findtool works as 'which' but we use a different name to make it more
# obvious we aren't using 'which'! ;-) # obvious we aren't using 'which'! ;-)
# Unlike 'which' does, the current directory is ignored.
# #
findtool(){ findtool(){
file="$1" file="$1"
@@ -49,7 +50,7 @@ findtool(){
do do
IFS=$old_IFS IFS=$old_IFS
# echo "checks for $file in $path" >&2 # echo "checks for $file in $path" >&2
if test -f "$path/$file"; then if test "$path" -a "$path" != '.' -a -f "$path/$file"; then
echo "$path/$file" echo "$path/$file"
return return
fi fi

View File

@@ -1209,7 +1209,9 @@ if test x"$want_gss" = xyes; then
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
if test -z "$GSSAPI_INCS"; then if test -z "$GSSAPI_INCS"; then
if test -f "$GSSAPI_ROOT/bin/krb5-config"; then if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi` GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
elif test "$GSSAPI_ROOT" != "yes"; then elif test "$GSSAPI_ROOT" != "yes"; then
GSSAPI_INCS="-I$GSSAPI_ROOT/include" GSSAPI_INCS="-I$GSSAPI_ROOT/include"
@@ -1301,7 +1303,12 @@ if test x"$want_gss" = xyes; then
LIBS="-lgss $LIBS" LIBS="-lgss $LIBS"
;; ;;
*) *)
if test -f "$GSSAPI_ROOT/bin/krb5-config"; then if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
dnl krb5-config doesn't have --libs-only-L or similar, put everything
dnl into LIBS
gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
LIBS="$gss_libs $LIBS"
elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
dnl krb5-config doesn't have --libs-only-L or similar, put everything dnl krb5-config doesn't have --libs-only-L or similar, put everything
dnl into LIBS dnl into LIBS
gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi` gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
@@ -2732,8 +2739,7 @@ dnl **********************************************************************
dnl Check for nghttp2 dnl Check for nghttp2
dnl ********************************************************************** dnl **********************************************************************
AC_MSG_CHECKING([whether to build with nghttp2]) OPT_H2="yes"
OPT_H2="no"
AC_ARG_WITH(nghttp2, AC_ARG_WITH(nghttp2,
AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage]) AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]), AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
@@ -2742,24 +2748,16 @@ case "$OPT_H2" in
no) no)
dnl --without-nghttp2 option used dnl --without-nghttp2 option used
want_h2="no" want_h2="no"
AC_MSG_RESULT([no])
;;
default)
dnl configure option not specified
want_h2="no"
AC_MSG_RESULT([no])
;; ;;
yes) yes)
dnl --with-nghttp2 option used without path dnl --with-nghttp2 option used without path
want_h2="yes" want_h2="default"
want_h2_path="" want_h2_path=""
AC_MSG_RESULT([yes])
;; ;;
*) *)
dnl --with-nghttp2 option used with path dnl --with-nghttp2 option used with path
want_h2="yes" want_h2="yes"
want_h2_path="$withval/lib/pkgconfig" want_h2_path="$withval/lib/pkgconfig"
AC_MSG_RESULT([yes ($withval)])
;; ;;
esac esac
@@ -2785,31 +2783,34 @@ if test X"$want_h2" != Xno; then
$PKGCONFIG --libs-only-L libnghttp2` $PKGCONFIG --libs-only-L libnghttp2`
AC_MSG_NOTICE([-L is $LD_H2]) AC_MSG_NOTICE([-L is $LD_H2])
LDFLAGS="$LDFLAGS $LD_H2"
CPPFLAGS="$CPPFLAGS $CPP_H2"
LIBS="$LIB_H2 $LIBS"
AC_CHECK_LIB(nghttp2, nghttp2_session_client_new,
[
AC_CHECK_HEADERS(nghttp2/nghttp2.h,
curl_h2_msg="enabled (nghttp2)"
NGHTTP2_ENABLED=1
AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
AC_SUBST(USE_NGHTTP2, [1])
)
],
dnl not found, revert back to clean variables
LDFLAGS=$CLEANLDFLAGS
CPPFLAGS=$CLEANCPPFLAGS
LIBS=$CLEANLIBS
)
else else
dnl To avoid link errors, we do not allow --libnghttp2 without dnl no nghttp2 pkg-config found, deal with it
dnl a pkgconfig file if test X"$want_h2" != Xdefault; then
AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.]) dnl To avoid link errors, we do not allow --with-nghttp2 without
dnl a pkgconfig file
AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
fi
fi fi
LDFLAGS="$LDFLAGS $LD_H2"
CPPFLAGS="$CPPFLAGS $CPP_H2"
LIBS="$LIB_H2 $LIBS"
AC_CHECK_LIB(nghttp2, nghttp2_session_client_new,
[
AC_CHECK_HEADERS(nghttp2/nghttp2.h,
curl_h2_msg="enabled (nghttp2)"
NGHTTP2_ENABLED=1
AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
AC_SUBST(USE_NGHTTP2, [1])
)
],
dnl not found, revert back to clean variables
LDFLAGS=$CLEANLDFLAGS
CPPFLAGS=$CLEANCPPFLAGS
LIBS=$CLEANLIBS
)
fi fi
dnl ********************************************************************** dnl **********************************************************************
@@ -3039,8 +3040,10 @@ AC_CHECK_FUNCS([fork \
getppid \ getppid \
getprotobyname \ getprotobyname \
getpwuid \ getpwuid \
getpwuid_r \
getrlimit \ getrlimit \
gettimeofday \ gettimeofday \
if_nametoindex \
inet_addr \ inet_addr \
perror \ perror \
pipe \ pipe \
@@ -3511,6 +3514,7 @@ AC_CONFIG_FILES([Makefile \
docs/Makefile \ docs/Makefile \
docs/examples/Makefile \ docs/examples/Makefile \
docs/libcurl/Makefile \ docs/libcurl/Makefile \
docs/libcurl/opts/Makefile \
include/Makefile \ include/Makefile \
include/curl/Makefile \ include/curl/Makefile \
src/Makefile \ src/Makefile \

View File

@@ -1099,6 +1099,12 @@ FAQ
your system has such. Note that you must never share the same handle in your system has such. Note that you must never share the same handle in
multiple threads. 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 If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
need to provide one or two locking functions: need to provide one or two locking functions:

View File

@@ -33,7 +33,7 @@ Portability
want it to remain functional and buildable with these and later versions want it to remain functional and buildable with these and later versions
(older versions may still work but is not what we work hard to maintain): (older versions may still work but is not what we work hard to maintain):
OpenSSL 0.9.6 OpenSSL 0.9.7
GnuTLS 1.2 GnuTLS 1.2
zlib 1.1.4 zlib 1.1.4
libssh2 0.16 libssh2 0.16

View File

@@ -25,14 +25,6 @@ may have been fixed since this was written!
84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS 84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
backends, so relying on this information in a generic app is flaky. backends, so relying on this information in a generic app is flaky.
83. curl is unable to load non-default openssl engines, because openssl isn't
initialized properly. This seems to require OpenSSL_config() or
CONF_modules_load_file() to be used by libcurl but the first seems to not
work and we've gotten not reports from tests with the latter. Possibly we
need to discuss with OpenSSL developers how this is supposed to be done. We
need users with actual external openssl engines for testing to work on this.
http://curl.haxx.se/bug/view.cgi?id=1208
82. When building with the Windows Borland compiler, it fails because the 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 "tlib" tool doesn't support hyphens (minus signs) in file names and we have
such in the build. such in the build.
@@ -179,9 +171,6 @@ may have been fixed since this was written!
run that might be needed only for building libcurl. Further, curl-config run that might be needed only for building libcurl. Further, curl-config
--cflags suffers from the same effects with CFLAGS/CPPFLAGS. --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
30. You need to use -g to the command line tool in order to use RFC2732-style
or RFC6874-style IPv6 numerical addresses in URLs.
26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in 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 "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 to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=535

88
docs/ROADMAP.md Normal file
View File

@@ -0,0 +1,88 @@
curl the next few years - perhaps
=======================
Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
intended to serve as a guideline for others for information, feedback and
possible participation.
New stuff - libcurl
===================
1. http2 test suite
2. http2 multiplexing/pipelining
3. SPDY
4. SRV records
5. HTTPS to proxy
6. 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
7. HTTP Digest authentication via Windows SSPI
8. GSSAPI authentication in the email protocols
9. 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
10. SASL authentication in LDAP
11. Simplify the SMTP email interface so that programmers don't have to
construct the body of an email that contains all the headers, alternative
content, images and attachments - maintain raw interface so that
programmers that want to do this can
12. Allow the email protocols to return the capabilities before
authenticating. This will allow an application to decide on the best
authentication mechanism
13. Allow Windows threading model to be replaced by Win32 pthreads port
14. Implement a dynamic buffer size to allow SFTP to use much larger buffers
and possibly allow the size to be customizable by applications. Use less
memory when handles are not in use?
New stuff - curl
================
1. Embed a language interpreter (lua?). For that middle ground where curl
isnt enough and a libcurl binding feels “too much”. Build-time conditional
of course.
2. Simplify the SMTP command line so that the headers and multi-part content
don't have to be constructed before calling curl
Improve
=======
1. build for windows (considered hard by many users)
2. curl -h output (considered overwhelming to users)
3. we have > 160 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
4. docs (considered "bad" by users but how do we make it better?)
A - split up curl_easy_setopt.3
B - split up curl.1
5. authentication framework (consider merging HTTP and SASL authentication to
give one API for protocols to call)
6. Perform some of the clean up from the TODO document, removing old
definitions and such like that are currently earmarked to be removed years
ago
Remove
======
1. cmake support (nobody maintains it)
2. makefile.vc files as there is no point in maintaining two sets of Windows
makefiles. Note: These are currently being used by the Windows autobuilds

View File

@@ -103,8 +103,8 @@ any response data to the terminal.
If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
friend. friend.
.SH OPTIONS .SH OPTIONS
Options start with one or two dashes. Many of the options require an addition Options start with one or two dashes. Many of the options require an
value next to it. additional value next to them.
The short "single-dash" form of the options, -d for example, may be used with The short "single-dash" form of the options, -d for example, may be used with
or without a space between it and its value, although a space is a recommended or without a space between it and its value, although a space is a recommended
@@ -1629,6 +1629,10 @@ Specify the user name and password to use for server authentication. Overrides
If you simply specify the user name, curl will prompt for a password. If you simply specify the user name, curl will prompt for a password.
The user name and passwords are split up on the first colon, which makes it
impossible to use a colon in the user name with this option. The password can,
still.
If you use an SSPI-enabled curl binary and perform NTLM authentication, you If you use an SSPI-enabled curl binary and perform NTLM authentication, you
can force curl to select the user name and password from your environment by can force curl to select the user name and password from your environment by
specifying a single colon with this option: "-u :". specifying a single colon with this option: "-u :".

View File

@@ -125,7 +125,7 @@ int main(void)
rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction); rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout); rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction); rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
rv=curl_easy_setopt(ch,CURLOPT_WRITEHEADER, stderr); rv=curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM"); rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L); rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L);
rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/"); rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");

View File

@@ -58,7 +58,7 @@ int main(void)
/* If you intend to use this on windows with a libcurl DLL, you must use /* If you intend to use this on windows with a libcurl DLL, you must use
CURLOPT_WRITEFUNCTION as well */ CURLOPT_WRITEFUNCTION as well */
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile); curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile);
res = curl_easy_perform(curl); res = curl_easy_perform(curl);
/* Check for errors */ /* Check for errors */
if(res != CURLE_OK) if(res != CURLE_OK)

View File

@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
curl_easy_setopt(curl, CURLOPT_URL, argv[1]); curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp); curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_perform(curl); curl_easy_perform(curl);

View File

@@ -224,7 +224,7 @@ int main(int argc, char * const argv[])
if (curl != NULL) { if (curl != NULL) {
my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L); my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L); my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
my_curl_easy_setopt(curl, CURLOPT_WRITEHEADER, stdout); my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
my_curl_easy_setopt(curl, CURLOPT_URL, url); my_curl_easy_setopt(curl, CURLOPT_URL, url);
/* request server options */ /* request server options */

View File

@@ -66,7 +66,7 @@ int main(void)
} }
/* we want the headers be written to this file handle */ /* we want the headers be written to this file handle */
curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER, headerfile); curl_easy_setopt(curl_handle, CURLOPT_HEADERDATA, headerfile);
/* we want the body be written to this file handle instead of stdout */ /* we want the body be written to this file handle instead of stdout */
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile);

View File

@@ -75,7 +75,7 @@ int main(void)
if(curl) { if(curl) {
/* what call to write: */ /* what call to write: */
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site"); curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, headerfile); curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
for(i = 0; i < 1; i++) /* single-iteration loop, just to break out from */ for(i = 0; i < 1; i++) /* single-iteration loop, just to break out from */
{ {

View File

@@ -63,9 +63,8 @@ int main(int argc, char *argv[])
pagefile = fopen(pagefilename, "wb"); pagefile = fopen(pagefilename, "wb");
if (pagefile) { if (pagefile) {
/* write the page body to this file handle. CURLOPT_FILE is also known as /* write the page body to this file handle */
CURLOPT_WRITEDATA*/ curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
curl_easy_setopt(curl_handle, CURLOPT_FILE, pagefile);
/* get it! */ /* get it! */
curl_easy_perform(curl_handle); curl_easy_perform(curl_handle);

View File

@@ -184,7 +184,7 @@ int main(void)
rv = curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction); rv = curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
rv = curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout); rv = curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
rv = curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction); rv = curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
rv = curl_easy_setopt(ch,CURLOPT_WRITEHEADER, stderr); rv = curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
rv = curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM"); rv = curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
/* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is /* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is

View File

@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___ # | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____| # \___|\___/|_| \_\_____|
# #
# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. # Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
# #
# This software is licensed as described in the file COPYING, which # This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms # you should have received as part of this distribution. The terms
@@ -22,6 +22,8 @@
AUTOMAKE_OPTIONS = foreign no-dependencies AUTOMAKE_OPTIONS = foreign no-dependencies
SUBDIRS = opts
man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \
curl_easy_perform.3 curl_easy_setopt.3 curl_easy_duphandle.3 \ curl_easy_perform.3 curl_easy_setopt.3 curl_easy_duphandle.3 \
curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3 \ curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3 \
@@ -91,11 +93,13 @@ MAN2HTML= roffit --mandir=. < $< >$@
SUFFIXES = .3 .html SUFFIXES = .3 .html
html: $(HTMLPAGES) html: $(HTMLPAGES)
cd opts; make html
.3.html: .3.html:
$(MAN2HTML) $(MAN2HTML)
pdf: $(PDFPAGES) pdf: $(PDFPAGES)
cd opts; make pdf
.3.pdf: .3.pdf:
@(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \ @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \

View File

@@ -60,9 +60,9 @@ Pass a pointer to a long to receive the remote time of the retrieved document
-1, it can be because of many reasons (unknown, the server hides it or the -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 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 of the document is unknown. Note that you must tell the server to collect this
information before the transfer is made, by using the CURLOPT_FILETIME option information before the transfer is made, by using the
to \fIcurl_easy_setopt(3)\fP or you will unconditionally get a -1 back. (Added \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or you will
in 7.5) unconditionally get a -1 back. (Added in 7.5)
.IP CURLINFO_TOTAL_TIME .IP CURLINFO_TOTAL_TIME
Pass a pointer to a double to receive the total time in seconds for the Pass a pointer to a double to receive the total time in seconds for the
previous transfer, including name resolving, TCP connect etc. previous transfer, including name resolving, TCP connect etc.
@@ -99,10 +99,10 @@ Pass a pointer to a long to receive the total number of redirections that were
actually followed. (Added in 7.9.7) actually followed. (Added in 7.9.7)
.IP CURLINFO_REDIRECT_URL .IP CURLINFO_REDIRECT_URL
Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP
take you to if you would enable CURLOPT_FOLLOWLOCATION. This can come very take you to if you would enable \fICURLOPT_FOLLOWLOCATION(3)\fP. This can come
handy if you think using the built-in libcurl redirect logic isn't good enough very handy if you think using the built-in libcurl redirect logic isn't good
for you but you would still prefer to avoid implementing all the magic of enough for you but you would still prefer to avoid implementing all the magic
figuring out the new URL. (Added in 7.18.2) of figuring out the new URL. (Added in 7.18.2)
.IP CURLINFO_SIZE_UPLOAD .IP CURLINFO_SIZE_UPLOAD
Pass a pointer to a double to receive the total amount of bytes that were Pass a pointer to a double to receive the total amount of bytes that were
uploaded. uploaded.
@@ -127,8 +127,8 @@ requests. This is so far only for HTTP requests. Note that this may be more
than one request if FOLLOWLOCATION is true. than one request if FOLLOWLOCATION is true.
.IP CURLINFO_SSL_VERIFYRESULT .IP CURLINFO_SSL_VERIFYRESULT
Pass a pointer to a long to receive the result of the certification Pass a pointer to a long to receive the result of the certification
verification that was requested (using the CURLOPT_SSL_VERIFYPEER option to verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP
\fIcurl_easy_setopt(3)\fP). option to \fIcurl_easy_setopt(3)\fP).
.IP CURLINFO_SSL_ENGINES .IP CURLINFO_SSL_ENGINES
Pass the address of a 'struct curl_slist *' to receive a linked-list of Pass the address of a 'struct curl_slist *' to receive a linked-list of
OpenSSL crypto-engines supported. Note that engines are normally implemented OpenSSL crypto-engines supported. Note that engines are normally implemented
@@ -150,14 +150,15 @@ it means that the server didn't send a valid Content-Type header or that the
protocol used doesn't support this. protocol used doesn't support this.
.IP CURLINFO_PRIVATE .IP CURLINFO_PRIVATE
Pass a pointer to a char pointer to receive the pointer to the private data Pass a pointer to a char pointer to receive the pointer to the private data
associated with the curl handle (set with the CURLOPT_PRIVATE option to associated with the curl handle (set with the \fICURLOPT_PRIVATE(3)\fP option
\fIcurl_easy_setopt(3)\fP). Please note that for internal reasons, the 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 *'. value is returned as a char pointer, although effectively being a 'void *'.
(Added in 7.10.3) (Added in 7.10.3)
.IP CURLINFO_HTTPAUTH_AVAIL .IP CURLINFO_HTTPAUTH_AVAIL
Pass a pointer to a long to receive a bitmask indicating the authentication 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 method(s) available. The meaning of the bits is explained in the
CURLOPT_HTTPAUTH option for \fIcurl_easy_setopt(3)\fP. (Added in 7.10.8) \fICURLOPT_HTTPAUTH(3)\fP option for \fIcurl_easy_setopt(3)\fP. (Added in
7.10.8)
.IP CURLINFO_PROXYAUTH_AVAIL .IP CURLINFO_PROXYAUTH_AVAIL
Pass a pointer to a long to receive a bitmask indicating the authentication 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) method(s) available for your proxy authentication. (Added in 7.10.8)
@@ -201,8 +202,8 @@ 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 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 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 libcurl close the socket and cleanup other resources associated with the
handle. This is typically used in combination with \fICURLOPT_CONNECT_ONLY\fP. handle. This is typically used in combination with
(Added in 7.15.2) \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 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. is 64 bit large while its 'long' is only 32 bits.
@@ -216,13 +217,13 @@ Also works for SFTP since 7.21.4
.IP CURLINFO_CERTINFO .IP CURLINFO_CERTINFO
Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to 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 struct that holds a number of linked lists with info about the certificate
chain, assuming you had CURLOPT_CERTINFO enabled when the previous request was chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the previous
done. The struct reports how many certs it found and then you can extract info request was done. The struct reports how many certs it found and then you can
for each of those certs by following the linked lists. The info chain is extract info for each of those certs by following the linked lists. The info
provided in a series of data in the format "name:content" where the content is chain is provided in a series of data in the format "name:content" where the
for the specific named data. See also the certinfo.c example. NOTE: this content is for the specific named data. See also the certinfo.c example. NOTE:
option is only available in libcurl built with OpenSSL, NSS, GSKit or QsoSSL this option is only available in libcurl built with OpenSSL, NSS, GSKit or
support. (Added in 7.19.1) QsoSSL support. (Added in 7.19.1)
.IP CURLINFO_TLS_SESSION .IP CURLINFO_TLS_SESSION
Pass a pointer to a 'struct curl_tlsinfo *'. The pointer will be initialized Pass a pointer to a 'struct curl_tlsinfo *'. The pointer will be initialized
to refer to a 'struct curl_tlsinfo *' that will contain an enum indicating the to refer to a 'struct curl_tlsinfo *' that will contain an enum indicating the
@@ -237,8 +238,8 @@ this does not mean that no SSL backend was used. (Added in 7.34.0)
.IP CURLINFO_CONDITION_UNMET .IP CURLINFO_CONDITION_UNMET
Pass a pointer to a long to receive the number 1 if the condition provided in 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\fP). Alas, if the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
this returns a 1 you know that the reason you didn't get data in return is 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 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) get a zero stored if the condition instead was met. (Added in 7.19.4)
.IP CURLINFO_RTSP_SESSION_ID .IP CURLINFO_RTSP_SESSION_ID

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -41,8 +41,8 @@ the writing is later unpaused.
While it may feel tempting, take care and notice that you cannot call this While it may feel tempting, take care and notice that you cannot call this
function from another thread. To unpause, you may for example call it from the function from another thread. To unpause, you may for example call it from the
progress callback (see \fIcurl_easy_setopt(3)\fP's progress callback (see \fIcurl_easy_setopt(3)\fP's
\fICURLOPT_PROGRESSFUNCTION\fP), which gets called at least once per second, \fICURLOPT_PROGRESSFUNCTION(3)\fP), which gets called at least once per
even if the connection is paused. second, even if the connection is paused.
When this function is called to unpause reading, the chance is high that you When this function is called to unpause reading, the chance is high that you
will get your write callback called before this function returns. will get your write callback called before this function returns.
@@ -55,11 +55,11 @@ connection. The following bits can be used:
.IP CURLPAUSE_RECV .IP CURLPAUSE_RECV
Pause receiving data. There will be no data received on this connection until Pause receiving data. There will be no data received on this connection until
this function is called again without this bit set. Thus, the write callback this function is called again without this bit set. Thus, the write callback
(\fICURLOPT_WRITEFUNCTION\fP) won't be called. (\fICURLOPT_WRITEFUNCTION(3)\fP) won't be called.
.IP CURLPAUSE_SEND .IP CURLPAUSE_SEND
Pause sending data. There will be no data sent on this connection until this Pause sending data. There will be no data sent on this connection until this
function is called again without this bit set. Thus, the read callback function is called again without this bit set. Thus, the read callback
(\fICURLOPT_READFUNCTION\fP) won't be called. (\fICURLOPT_READFUNCTION(3)\fP) won't be called.
.IP CURLPAUSE_ALL .IP CURLPAUSE_ALL
Convenience define that pauses both directions. Convenience define that pauses both directions.
.IP CURLPAUSE_CONT .IP CURLPAUSE_CONT

View File

@@ -55,7 +55,7 @@ While the \fBeasy_handle\fP is added to a multi handle, it cannot be used by
.SH RETURN VALUE .SH RETURN VALUE
CURLE_OK (0) means everything was ok, non-zero means an error occurred as CURLE_OK (0) means everything was ok, non-zero means an error occurred as
.I <curl/curl.h> .I <curl/curl.h>
defines - see \fIlibcurl-errors(3)\fP. If the \fBCURLOPT_ERRORBUFFER\fP was defines - see \fIlibcurl-errors(3)\fP. If the \fBCURLOPT_ERRORBUFFER(3)\fP was
set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in
the error buffer when non-zero is returned. the error buffer when non-zero is returned.
.SH "SEE ALSO" .SH "SEE ALSO"

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -41,7 +41,7 @@ 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 buffer. The variable \fBn\fP points to will receive the number of received
bytes. bytes.
To establish the connection, set \fBCURLOPT_CONNECT_ONLY\fP option before To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_recv(3)\fP does not calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_recv(3)\fP does not
work on connections that were created without this option. work on connections that were created without this option.

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -39,7 +39,7 @@ connection set-up.
\fBbuffer\fP is a pointer to the data of length \fBbuflen\fP that you want sent. \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. The variable \fBn\fP points to will receive the number of sent bytes.
To establish the connection, set \fBCURLOPT_CONNECT_ONLY\fP option before To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_send(3)\fP will not calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_send(3)\fP will not
work on connections that were created without this option. work on connections that were created without this option.

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -48,4 +48,4 @@ Added in 7.15.4 and replaces the old \fIcurl_unescape(3)\fP function.
.SH RETURN VALUE .SH RETURN VALUE
A pointer to a zero terminated string or NULL if it failed. A pointer to a zero terminated string or NULL if it failed.
.SH "SEE ALSO" .SH "SEE ALSO"
.I curl_easy_escape(3), curl_free(3), RFC 2396 .BR curl_easy_escape "(3), " curl_free "(3)," RFC 2396

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -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 curl_formadd() is used to append sections when building a multipart/formdata
HTTP POST (sometimes referred to as RFC2388-style posts). Append one section 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 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\fP. pass the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST(3)\fP.
\fIlastitem\fP is set after each \fIcurl_formadd(3)\fP call and on repeated \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 invokes it should be left as set to allow repeated invokes to find the end of
the list faster. the list faster.
@@ -45,7 +45,7 @@ the function itself. You must call \fIcurl_formfree(3)\fP on the
\fIfirstitem\fP after the form post has been done to free the resources. \fIfirstitem\fP after the form post has been done to free the resources.
Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual. You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
First, there are some basics you need to understand about multipart/formdata First, there are some basics you need to understand about multipart/formdata
posts. Each part consists of at least a NAME and a CONTENTS part. If the part posts. Each part consists of at least a NAME and a CONTENTS part. If the part
@@ -121,12 +121,13 @@ to the buffer to be uploaded. This buffer must not be freed until after
is used in combination with \fICURLFORM_BUFFER\fP. The parameter is a is used in combination with \fICURLFORM_BUFFER\fP. The parameter is a
long which gives the length of the buffer. long which gives the length of the buffer.
.IP CURLFORM_STREAM .IP CURLFORM_STREAM
Tells libcurl to use the \fICURLOPT_READFUNCTION\fP callback to get data. The Tells libcurl to use the \fICURLOPT_READFUNCTION(3)\fP callback to get
parameter you pass to \fICURLFORM_STREAM\fP is the pointer passed on to the data. The parameter you pass to \fICURLFORM_STREAM\fP is the pointer passed on
read callback's fourth argument. If you want the part to look like a file to the read callback's fourth argument. If you want the part to look like a
upload one, set the \fICURLFORM_FILENAME\fP parameter as well. Note that when file upload one, set the \fICURLFORM_FILENAME\fP parameter as well. Note that
using \fICURLFORM_STREAM\fP, \fICURLFORM_CONTENTSLENGTH\fP must also be set when using \fICURLFORM_STREAM\fP, \fICURLFORM_CONTENTSLENGTH\fP must also be
with the total expected length of the part. (Option added in libcurl 7.18.2) set with the total expected length of the part. (Option added in libcurl
7.18.2)
.IP CURLFORM_ARRAY .IP CURLFORM_ARRAY
Another possibility to send options to curl_formadd() is the Another possibility to send options to curl_formadd() is the
\fBCURLFORM_ARRAY\fP option, that passes a struct curl_forms array pointer as \fBCURLFORM_ARRAY\fP option, that passes a struct curl_forms array pointer as
@@ -142,7 +143,7 @@ the POST occurs, if you free it before the post completes you may experience
problems. problems.
When you've passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using When you've passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using
the \fICURLOPT_HTTPPOST\fP option), you must not free the list until after the \fICURLOPT_HTTPPOST(3)\fP option), you must not free the list until after
you've called \fIcurl_easy_cleanup(3)\fP for the curl handle. you've called \fIcurl_easy_cleanup(3)\fP for the curl handle.
See example below. See example below.

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -33,8 +33,8 @@ curl_formfree() is used to clean up data previously built/appended with
typically means after \fIcurl_easy_perform(3)\fP has been called. typically means after \fIcurl_easy_perform(3)\fP has been called.
The pointer to free is the same pointer you passed to the The pointer to free is the same pointer you passed to the
\fBCURLOPT_HTTPPOST\fP option, which is the \fIfirstitem\fP pointer from the \fBCURLOPT_HTTPPOST(3)\fP option, which is the \fIfirstitem\fP pointer from
\fIcurl_formadd(3)\fP invoke(s). the \fIcurl_formadd(3)\fP invoke(s).
\fBform\fP is the pointer as returned from a previous call to \fBform\fP is the pointer as returned from a previous call to
\fIcurl_formadd(3)\fP and may be NULL. \fIcurl_formadd(3)\fP and may be NULL.

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -32,4 +32,4 @@ curl_free reclaims memory that has been obtained through a libcurl call. Use
curl_free() instead of free() to avoid anomalies that can result from curl_free() instead of free() to avoid anomalies that can result from
differences in memory management between your application and libcurl. differences in memory management between your application and libcurl.
.SH "SEE ALSO" .SH "SEE ALSO"
.I curl_unescape(3) .BR curl_unescape "(3)"

View File

@@ -38,10 +38,10 @@ use \fIcurl_easy_perform(3)\fP on that handle. After having removed the handle
from the multi stack again, it is perfectly fine to use it with the easy from the multi stack again, it is perfectly fine to use it with the easy
interface again. interface again.
If the easy handle is not set to use a shared (CURLOPT_SHARE) or global DNS If the easy handle is not set to use a shared (\fICURLOPT_SHARE(3)\fP) or
cache (CURLOPT_DNS_USE_GLOBAL_CACHE), it will be made to use the DNS cache global DNS cache (\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP), it will be made to
that is shared between all easy handles within the multi handle when use the DNS cache that is shared between all easy handles within the multi
\fIcurl_multi_add_handle(3)\fP is called. handle when \fIcurl_multi_add_handle(3)\fP is called.
If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really
should if you're working event-based with \fIcurl_multi_socket_action(3)\fP should if you're working event-based with \fIcurl_multi_socket_action(3)\fP

View File

@@ -92,7 +92,7 @@ When the cache is full, curl closes the oldest one in the cache to prevent the
number of open connections from increasing. number of open connections from increasing.
This option is for the multi handle's use only, when using the easy interface This option is for the multi handle's use only, when using the easy interface
you should instead use the \fICURLOPT_MAXCONNECTS\fP option. you should instead use the \fICURLOPT_MAXCONNECTS(3)\fP option.
See \fICURLMOPT_MAX_TOTAL_CONNECTIONS\fP for limiting the number of active See \fICURLMOPT_MAX_TOTAL_CONNECTIONS\fP for limiting the number of active
connections. connections.

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -33,9 +33,9 @@ share-functions, sometimes referred to as a share handle in some places in the
documentation. This init call MUST have a corresponding call to documentation. This init call MUST have a corresponding call to
\fIcurl_share_cleanup\fP when all operations using the share are complete. \fIcurl_share_cleanup\fP when all operations using the share are complete.
This \fIshare handle\fP is what you pass to curl using the \fICURLOPT_SHARE\fP This \fIshare handle\fP is what you pass to curl using the
option with \fIcurl_easy_setopt(3)\fP, to make that specific curl handle use \fICURLOPT_SHARE(3)\fP option with \fIcurl_easy_setopt(3)\fP, to make that
the data in this share. specific curl handle use the data in this share.
.SH RETURN VALUE .SH RETURN VALUE
If this function returns NULL, something went wrong (out of memory, etc.) If this function returns NULL, something went wrong (out of memory, etc.)
and therefore the share object was not created. and therefore the share object was not created.

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -38,11 +38,11 @@ converted to their plain text versions.
If the 'length' argument is set to 0, curl_unescape() will use strlen() on the If the 'length' argument is set to 0, curl_unescape() will use strlen() on the
input 'url' string to find out the size. input 'url' string to find out the size.
You must curl_free() the returned string when you're done with it. You must \fIcurl_free(3)\fP the returned string when you're done with it.
.SH AVAILABILITY .SH AVAILABILITY
Since 7.15.4, \fIcurl_easy_unescape(3)\fP should be used. This function will Since 7.15.4, \fIcurl_easy_unescape(3)\fP should be used. This function will
be removed in a future release. be removed in a future release.
.SH RETURN VALUE .SH RETURN VALUE
A pointer to a zero terminated string or NULL if it failed. A pointer to a zero terminated string or NULL if it failed.
.SH "SEE ALSO" .SH "SEE ALSO"
.I curl_easy_escape(3), curl_easy_unescape(3), curl_free(3), RFC 2396 .br curl_easy_escape "(3)," curl_easy_unescape "(3)," curl_free "(3)," RFC 2396

View File

@@ -29,7 +29,7 @@ curl_version_info - returns run-time libcurl version info
.BI "curl_version_info_data *curl_version_info( CURLversion "type ");" .BI "curl_version_info_data *curl_version_info( CURLversion "type ");"
.ad .ad
.SH DESCRIPTION .SH DESCRIPTION
Returns a pointer to a filled in struct with information about various Returns a pointer to a filled in static struct with information about various
features in the running version of libcurl. \fItype\fP should be set to the features in the running version of libcurl. \fItype\fP should be set to the
version of this functionality by the time you write your program. This way, version of this functionality by the time you write your program. This way,
libcurl will always return a proper struct that your program understands, libcurl will always return a proper struct that your program understands,
@@ -66,7 +66,8 @@ typedef struct {
/* when 'age' is 2 or higher, the member below also exists: */ /* when 'age' is 2 or higher, the member below also exists: */
const char *libidn; /* human readable string */ const char *libidn; /* human readable string */
/* when 'age' is 3 or higher, the members below also exist: */ /* when 'age' is 3 or higher (7.16.1 or later), the members below also
exist */
int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */ int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */
const char *libssh_version; /* human readable string */ const char *libssh_version; /* human readable string */

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -28,11 +28,11 @@ This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included. Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode" .SH "CURLcode"
Almost all "easy" interface functions return a CURLcode error code. No matter Almost all "easy" interface functions return a CURLcode error code. No matter
what, using the \fIcurl_easy_setopt(3)\fP option \fICURLOPT_ERRORBUFFER\fP is what, using the \fIcurl_easy_setopt(3)\fP option \fICURLOPT_ERRORBUFFER(3)\fP
a good idea as it will give you a human readable error string that may offer is a good idea as it will give you a human readable error string that may
more details about the cause of the error than just the error code. offer more details about the cause of the error than just the error code.
\fIcurl_easy_strerror(3)\fP can be called to get an error string from a \fIcurl_easy_strerror(3)\fP can be called to get an error string from a given
given CURLcode number. CURLcode number.
CURLcode is one of the following: CURLcode is one of the following:
.IP "CURLE_OK (0)" .IP "CURLE_OK (0)"
@@ -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. reply. This error code indicates that an unexpected code was returned.
.IP "CURLE_FTP_ACCEPT_TIMEOUT (12)" .IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
During an active FTP session while waiting for the server to connect, the During an active FTP session while waiting for the server to connect, the
\fICURLOPT_ACCEPTTIMOUT_MS\fP (or the internal default) timeout expired. \fICURLOPT_ACCEPTTIMOUT_MS(3)\fP (or the internal default) timeout expired.
.IP "CURLE_FTP_WEIRD_PASV_REPLY (13)" .IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
libcurl failed to get a sensible result back from the server as a response to 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. either a PASV or a EPSV command. The server is flawed.
@@ -97,8 +97,8 @@ When sending custom "QUOTE" commands to the remote server, one of the commands
returned an error code that was 400 or higher (for FTP) or otherwise returned an error code that was 400 or higher (for FTP) or otherwise
indicated unsuccessful completion of the command. indicated unsuccessful completion of the command.
.IP "CURLE_HTTP_RETURNED_ERROR (22)" .IP "CURLE_HTTP_RETURNED_ERROR (22)"
This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server This is returned if \fICURLOPT_FAILONERROR(3)\fP is set TRUE and the HTTP
returns an error code that is >= 400. server returns an error code that is >= 400.
.IP "CURLE_WRITE_ERROR (23)" .IP "CURLE_WRITE_ERROR (23)"
An error occurred when writing received data to a local file, or an error was An error occurred when writing received data to a local file, or an error was
returned to libcurl from a write callback. returned to libcurl from a write callback.
@@ -116,7 +116,8 @@ Operation timeout. The specified time-out period was reached according to the
conditions. conditions.
.IP "CURLE_FTP_PORT_FAILED (30)" .IP "CURLE_FTP_PORT_FAILED (30)"
The FTP PORT command returned error. This mostly happens when you haven't The FTP PORT command returned error. This mostly happens when you haven't
specified a good enough address for libcurl to use. See \fICURLOPT_FTPPORT\fP. specified a good enough address for libcurl to use. See
\fICURLOPT_FTPPORT(3)\fP.
.IP "CURLE_FTP_COULDNT_USE_REST (31)" .IP "CURLE_FTP_COULDNT_USE_REST (31)"
The FTP REST command returned error. This should never happen if the server is The FTP REST command returned error. This should never happen if the server is
sane. sane.
@@ -148,10 +149,10 @@ Internal error. A function was called with a bad parameter.
.IP "CURLE_INTERFACE_FAILED (45)" .IP "CURLE_INTERFACE_FAILED (45)"
Interface error. A specified outgoing interface could not be used. Set which Interface error. A specified outgoing interface could not be used. Set which
interface to use for outgoing connections' source IP address with interface to use for outgoing connections' source IP address with
CURLOPT_INTERFACE. \fICURLOPT_INTERFACE(3)\fP.
.IP "CURLE_TOO_MANY_REDIRECTS (47)" .IP "CURLE_TOO_MANY_REDIRECTS (47)"
Too many redirects. When following redirects, libcurl hit the maximum amount. Too many redirects. When following redirects, libcurl hit the maximum amount.
Set your limit with CURLOPT_MAXREDIRS. Set your limit with \fICURLOPT_MAXREDIRS(3)\fP.
.IP "CURLE_UNKNOWN_OPTION (48)" .IP "CURLE_UNKNOWN_OPTION (48)"
An option passed to libcurl is not recognized/known. Refer to the appropriate An option passed to libcurl is not recognized/known. Refer to the appropriate
documentation. This is most likely a problem in the program that uses documentation. This is most likely a problem in the program that uses
@@ -229,7 +230,7 @@ Failed to load CRL file (Added in 7.19.0)
Issuer check failed (Added in 7.19.0) Issuer check failed (Added in 7.19.0)
.IP "CURLE_FTP_PRET_FAILED (84)" .IP "CURLE_FTP_PRET_FAILED (84)"
The FTP server does not understand the PRET command at all or does not support The FTP server does not understand the PRET command at all or does not support
the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST\fP, a the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST(3)\fP, a
custom LIST command will be sent with PRET CMD before PASV as well. (Added in custom LIST command will be sent with PRET CMD before PASV as well. (Added in
7.20.0) 7.20.0)
.IP "CURLE_RTSP_CSEQ_ERROR (85)" .IP "CURLE_RTSP_CSEQ_ERROR (85)"

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -51,11 +51,12 @@ using this multi-threaded. You set lock and unlock functions with
\fIcurl_share_setopt(3)\fP too. \fIcurl_share_setopt(3)\fP too.
Then, you make an easy handle to use this share, you set the Then, you make an easy handle to use this share, you set the
\fICURLOPT_SHARE\fP option with \fIcurl_easy_setopt(3)\fP, and pass in share \fICURLOPT_SHARE(3)\fP option with \fIcurl_easy_setopt(3)\fP, and pass in
handle. You can make any number of easy handles share the same share handle. share handle. You can make any number of easy handles share the same share
handle.
To make an easy handle stop using that particular share, you set To make an easy handle stop using that particular share, you set
\fICURLOPT_SHARE\fP to NULL for that easy handle. To make a handle stop \fICURLOPT_SHARE(3)\fP to NULL for that easy handle. To make a handle stop
sharing a particular data, you can \fICURLSHOPT_UNSHARE\fP it. sharing a particular data, you can \fICURLSHOPT_UNSHARE\fP it.
When you're done using the share, make sure that no easy handle is still using When you're done using the share, make sure that no easy handle is still using

View File

@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___ .\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____| .\" * \___|\___/|_| \_\_____|
.\" * .\" *
.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * .\" *
.\" * This software is licensed as described in the file COPYING, which .\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms .\" * you should have received as part of this distribution. The terms
@@ -170,8 +170,8 @@ terminated with a zero byte. When you set strings with
\fIcurl_easy_setopt(3)\fP, libcurl makes its own copy so that they don't \fIcurl_easy_setopt(3)\fP, libcurl makes its own copy so that they don't
need to be kept around in your application after being set[4]. need to be kept around in your application after being set[4].
One of the most basic properties to set in the handle is the URL. You set One of the most basic properties to set in the handle is the URL. You set your
your preferred URL to transfer with CURLOPT_URL in a manner similar to: preferred URL to transfer with \fICURLOPT_URL(3)\fP in a manner similar to:
.nf .nf
curl_easy_setopt(handle, CURLOPT_URL, "http://domain.com/"); curl_easy_setopt(handle, CURLOPT_URL, "http://domain.com/");
@@ -197,27 +197,27 @@ by setting another property:
Using that property, you can easily pass local data between your application Using that property, you can easily pass local data between your application
and the function that gets invoked by libcurl. libcurl itself won't touch the and the function that gets invoked by libcurl. libcurl itself won't touch the
data you pass with \fICURLOPT_WRITEDATA\fP. data you pass with \fICURLOPT_WRITEDATA(3)\fP.
libcurl offers its own default internal callback that will take care of the data libcurl offers its own default internal callback that will take care of the
if you don't set the callback with \fICURLOPT_WRITEFUNCTION\fP. It will then data if you don't set the callback with \fICURLOPT_WRITEFUNCTION(3)\fP. It
simply output the received data to stdout. You can have the default callback will then simply output the received data to stdout. You can have the default
write the data to a different file handle by passing a 'FILE *' to a file callback write the data to a different file handle by passing a 'FILE *' to a
opened for writing with the \fICURLOPT_WRITEDATA\fP option. file opened for writing with the \fICURLOPT_WRITEDATA(3)\fP option.
Now, we need to take a step back and have a deep breath. Here's one of those Now, we need to take a step back and have a deep breath. Here's one of those
rare platform-dependent nitpicks. Did you spot it? On some platforms[2], rare platform-dependent nitpicks. Did you spot it? On some platforms[2],
libcurl won't be able to operate on files opened by the program. Thus, if you libcurl won't be able to operate on files opened by the program. Thus, if you
use the default callback and pass in an open file with use the default callback and pass in an open file with
\fICURLOPT_WRITEDATA\fP, it will crash. You should therefore avoid this to \fICURLOPT_WRITEDATA(3)\fP, it will crash. You should therefore avoid this to
make your program run fine virtually everywhere. make your program run fine virtually everywhere.
(\fICURLOPT_WRITEDATA\fP was formerly known as \fICURLOPT_FILE\fP. Both names (\fICURLOPT_WRITEDATA(3)\fP was formerly known as \fICURLOPT_FILE\fP. Both
still work and do the same thing). names still work and do the same thing).
If you're using libcurl as a win32 DLL, you MUST use the If you're using libcurl as a win32 DLL, you MUST use the
\fICURLOPT_WRITEFUNCTION\fP if you set \fICURLOPT_WRITEDATA\fP - or you will \fICURLOPT_WRITEFUNCTION(3)\fP if you set \fICURLOPT_WRITEDATA(3)\fP - or you
experience crashes. will experience crashes.
There are of course many more options you can set, and we'll get back to a few There are of course many more options you can set, and we'll get back to a few
of them later. Let's instead continue to the actual transfer: of them later. Let's instead continue to the actual transfer:
@@ -234,8 +234,8 @@ passed to it, libcurl will abort the operation and return with an error code.
When the transfer is complete, the function returns a return code that informs When the transfer is complete, the function returns a return code that informs
you if it succeeded in its mission or not. If a return code isn't enough for you if it succeeded in its mission or not. If a return code isn't enough for
you, you can use the CURLOPT_ERRORBUFFER to point libcurl to a buffer of yours you, you can use the \fICURLOPT_ERRORBUFFER(3)\fP to point libcurl to a buffer
where it'll store a human readable error message as well. of yours where it'll store a human readable error message as well.
If you then want to transfer another file, the handle is ready to be used If you then want to transfer another file, the handle is ready to be used
again. Mind you, it is even preferred that you re-use an existing handle if again. Mind you, it is even preferred that you re-use an existing handle if
@@ -293,14 +293,14 @@ Secure Transport
The engine is fully thread-safe, and no additional steps are required. The engine is fully thread-safe, and no additional steps are required.
When using multiple threads you should set the CURLOPT_NOSIGNAL option to 1 When using multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP
for all handles. Everything will or might work fine except that timeouts are option to 1 for all handles. Everything will or might work fine except that
not honored during the DNS lookup - which you can work around by building timeouts are not honored during the DNS lookup - which you can work around by
libcurl with c-ares support. c-ares is a library that provides asynchronous building libcurl with c-ares support. c-ares is a library that provides
name resolves. On some platforms, libcurl simply will not function properly asynchronous name resolves. On some platforms, libcurl simply will not
multi-threaded unless this option is set. function properly multi-threaded unless this option is set.
Also, note that CURLOPT_DNS_USE_GLOBAL_CACHE is not thread-safe. Also, note that \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
.SH "When It Doesn't Work" .SH "When It Doesn't Work"
There will always be times when the transfer fails for some reason. You might There will always be times when the transfer fails for some reason. You might
@@ -308,23 +308,23 @@ have set the wrong libcurl option or misunderstood what the libcurl option
actually does, or the remote server might return non-standard replies that actually does, or the remote server might return non-standard replies that
confuse the library which then confuses your program. confuse the library which then confuses your program.
There's one golden rule when these things occur: set the CURLOPT_VERBOSE There's one golden rule when these things occur: set the
option to 1. It'll cause the library to spew out the entire protocol \fICURLOPT_VERBOSE(3)\fP option to 1. It'll cause the library to spew out the
details it sends, some internal info and some received protocol data as well entire protocol details it sends, some internal info and some received
(especially when using FTP). If you're using HTTP, adding the headers in the protocol data as well (especially when using FTP). If you're using HTTP,
received output to study is also a clever way to get a better understanding adding the headers in the received output to study is also a clever way to get
why the server behaves the way it does. Include headers in the normal body a better understanding why the server behaves the way it does. Include headers
output with CURLOPT_HEADER set 1. in the normal body output with \fICURLOPT_HEADER(3)\fP set 1.
Of course, there are bugs left. We need to know about them to be able Of course, there are bugs left. We need to know about them to be able to fix
to fix them, so we're quite dependent on your bug reports! When you do report them, so we're quite dependent on your bug reports! When you do report
suspected bugs in libcurl, please include as many details as you possibly can: a suspected bugs in libcurl, please include as many details as you possibly can:
protocol dump that CURLOPT_VERBOSE produces, library version, as much as a protocol dump that \fICURLOPT_VERBOSE(3)\fP produces, library version, as
possible of your code that uses libcurl, operating system name and version, much as possible of your code that uses libcurl, operating system name and
compiler name and version etc. version, compiler name and version etc.
If CURLOPT_VERBOSE is not enough, you increase the level of debug data your If \fICURLOPT_VERBOSE(3)\fP is not enough, you increase the level of debug
application receive by using the CURLOPT_DEBUGFUNCTION. data your application receive by using the \fICURLOPT_DEBUGFUNCTION(3)\fP.
Getting some in-depth knowledge about the protocols involved is never wrong, Getting some in-depth knowledge about the protocols involved is never wrong,
and if you're trying to do funny things, you might very well understand and if you're trying to do funny things, you might very well understand
@@ -363,7 +363,7 @@ Tell libcurl that we want to upload:
A few protocols won't behave properly when uploads are done without any prior A few protocols won't behave properly when uploads are done without any prior
knowledge of the expected file size. So, set the upload file size using the knowledge of the expected file size. So, set the upload file size using the
CURLOPT_INFILESIZE_LARGE for all known file sizes like this[1]: \fICURLOPT_INFILESIZE_LARGE(3)\fP for all known file sizes like this[1]:
.nf .nf
/* in this example, file_size must be an curl_off_t variable */ /* in this example, file_size must be an curl_off_t variable */
@@ -393,15 +393,15 @@ them URL encoded, as %XX where XX is a two-digit hexadecimal number.
libcurl also provides options to set various passwords. The user name and libcurl also provides options to set various passwords. The user name and
password as shown embedded in the URL can instead get set with the password as shown embedded in the URL can instead get set with the
CURLOPT_USERPWD option. The argument passed to libcurl should be a char * to \fICURLOPT_USERPWD(3)\fP option. The argument passed to libcurl should be a
a string in the format "user:password". In a manner like this: char * to a string in the format "user:password". In a manner like this:
curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret"); curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret");
Another case where name and password might be needed at times, is for those Another case where name and password might be needed at times, is for those
users who need to authenticate themselves to a proxy they use. libcurl offers users who need to authenticate themselves to a proxy they use. libcurl offers
another option for this, the CURLOPT_PROXYUSERPWD. It is used quite similar another option for this, the \fICURLOPT_PROXYUSERPWD(3)\fP. It is used quite
to the CURLOPT_USERPWD option like this: similar to the \fICURLOPT_USERPWD(3)\fP option like this:
curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret"); curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret");
@@ -412,7 +412,7 @@ chapter), as it might contain the password in plain text. libcurl has the
ability to use this file to figure out what set of user name and password to ability to use this file to figure out what set of user name and password to
use for a particular host. As an extension to the normal functionality, use for a particular host. As an extension to the normal functionality,
libcurl also supports this file for non-FTP protocols such as HTTP. To make libcurl also supports this file for non-FTP protocols such as HTTP. To make
curl use this file, use the CURLOPT_NETRC option: curl use this file, use the \fICURLOPT_NETRC(3)\fP option:
curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L); curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
@@ -443,12 +443,12 @@ password in clear-text in the HTTP request, base64-encoded. This is insecure.
At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM, At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM,
Negotiate, GSS-Negotiate and SPNEGO. You can tell libcurl which one to use Negotiate, GSS-Negotiate and SPNEGO. You can tell libcurl which one to use
with CURLOPT_HTTPAUTH as in: with \fICURLOPT_HTTPAUTH(3)\fP as in:
curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
And when you send authentication to a proxy, you can also set authentication And when you send authentication to a proxy, you can also set authentication
type the same way but instead with CURLOPT_PROXYAUTH: type the same way but instead with \fICURLOPT_PROXYAUTH(3)\fP:
curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM); curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
@@ -484,8 +484,8 @@ libcurl to post it all to the remote site:
.fi .fi
Simple enough, huh? Since you set the POST options with the Simple enough, huh? Since you set the POST options with the
CURLOPT_POSTFIELDS, this automatically switches the handle to use POST in the \fICURLOPT_POSTFIELDS(3)\fP, this automatically switches the handle to use
upcoming request. POST in the upcoming request.
Ok, so what if you want to post binary data that also requires you to set the Ok, so what if you want to post binary data that also requires you to set the
Content-Type: header of the post? Well, binary posts prevent libcurl from Content-Type: header of the post? Well, binary posts prevent libcurl from
@@ -576,14 +576,14 @@ post handle:
Since all options on an easyhandle are "sticky", they remain the same until Since all options on an easyhandle are "sticky", they remain the same until
changed even if you do call \fIcurl_easy_perform(3)\fP, you may need to tell changed even if you do call \fIcurl_easy_perform(3)\fP, you may need to tell
curl to go back to a plain GET request if you intend to do one as your curl to go back to a plain GET request if you intend to do one as your next
next request. You force an easyhandle to go back to GET by using the request. You force an easyhandle to go back to GET by using the
CURLOPT_HTTPGET option: \fICURLOPT_HTTPGET(3)\fP option:
curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L); curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
Just setting CURLOPT_POSTFIELDS to "" or NULL will *not* stop libcurl from Just setting \fICURLOPT_POSTFIELDS(3)\fP to "" or NULL will *not* stop libcurl
doing a POST. It will just make it POST without any data to send! from doing a POST. It will just make it POST without any data to send!
.SH "Showing Progress" .SH "Showing Progress"
@@ -591,16 +591,16 @@ For historical and traditional reasons, libcurl has a built-in progress meter
that can be switched on and then makes it present a progress meter in your that can be switched on and then makes it present a progress meter in your
terminal. terminal.
Switch on the progress meter by, oddly enough, setting CURLOPT_NOPROGRESS to Switch on the progress meter by, oddly enough, setting
zero. This option is set to 1 by default. \fICURLOPT_NOPROGRESS(3)\fP to zero. This option is set to 1 by default.
For most applications however, the built-in progress meter is useless and For most applications however, the built-in progress meter is useless and
what instead is interesting is the ability to specify a progress what instead is interesting is the ability to specify a progress
callback. The function pointer you pass to libcurl will then be called on callback. The function pointer you pass to libcurl will then be called on
irregular intervals with information about the current transfer. irregular intervals with information about the current transfer.
Set the progress callback by using CURLOPT_PROGRESSFUNCTION. And pass a Set the progress callback by using \fICURLOPT_PROGRESSFUNCTION(3)\fP. And pass
pointer to a function that matches this prototype: a pointer to a function that matches this prototype:
.nf .nf
int progress_callback(void *clientp, int progress_callback(void *clientp,
@@ -612,7 +612,7 @@ pointer to a function that matches this prototype:
If any of the input arguments is unknown, a 0 will be passed. The first If any of the input arguments is unknown, a 0 will be passed. The first
argument, the 'clientp' is the pointer you pass to libcurl with argument, the 'clientp' is the pointer you pass to libcurl with
CURLOPT_PROGRESSDATA. libcurl won't touch it. \fICURLOPT_PROGRESSDATA(3)\fP. libcurl won't touch it.
.SH "libcurl with C++" .SH "libcurl with C++"
@@ -671,11 +671,12 @@ pass that information similar to this:
curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password"); curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password");
If you want to, you can specify the host name only in the CURLOPT_PROXY If you want to, you can specify the host name only in the
option, and set the port number separately with CURLOPT_PROXYPORT. \fICURLOPT_PROXY(3)\fP option, and set the port number separately with
\fICURLOPT_PROXYPORT(3)\fP.
Tell libcurl what kind of proxy it is with CURLOPT_PROXYTYPE (if not, it will Tell libcurl what kind of proxy it is with \fICURLOPT_PROXYTYPE(3)\fP (if not,
default to assume a HTTP proxy): it will default to assume a HTTP proxy):
curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
@@ -704,7 +705,8 @@ variable may say so. If 'no_proxy' is a plain asterisk ("*") it matches all
hosts. hosts.
To explicitly disable libcurl's checking for and using the proxy environment To explicitly disable libcurl's checking for and using the proxy environment
variables, set the proxy name to "" - an empty string - with CURLOPT_PROXY. variables, set the proxy name to "" - an empty string - with
\fICURLOPT_PROXY(3)\fP.
.IP "SSL and Proxies" .IP "SSL and Proxies"
SSL is for secure point-to-point connections. This involves strong encryption SSL is for secure point-to-point connections. This involves strong encryption
@@ -800,21 +802,21 @@ may also be added in the future.
Each easy handle will attempt to keep the last few connections alive for a Each easy handle will attempt to keep the last few connections alive for a
while in case they are to be used again. You can set the size of this "cache" while in case they are to be used again. You can set the size of this "cache"
with the CURLOPT_MAXCONNECTS option. Default is 5. There is very seldom any with the \fICURLOPT_MAXCONNECTS(3)\fP option. Default is 5. There is very
point in changing this value, and if you think of changing this it is often seldom any point in changing this value, and if you think of changing this it
just a matter of thinking again. is often just a matter of thinking again.
To force your upcoming request to not use an already existing connection (it To force your upcoming request to not use an already existing connection (it
will even close one first if there happens to be one alive to the same host will even close one first if there happens to be one alive to the same host
you're about to operate on), you can do that by setting CURLOPT_FRESH_CONNECT you're about to operate on), you can do that by setting
to 1. In a similar spirit, you can also forbid the upcoming request to be \fICURLOPT_FRESH_CONNECT(3)\fP to 1. In a similar spirit, you can also forbid
"lying" around and possibly get re-used after the request by setting the upcoming request to be "lying" around and possibly get re-used after the
CURLOPT_FORBID_REUSE to 1. request by setting \fICURLOPT_FORBID_REUSE(3)\fP to 1.
.SH "HTTP Headers Used by libcurl" .SH "HTTP Headers Used by libcurl"
When you use libcurl to do HTTP requests, it'll pass along a series of headers When you use libcurl to do HTTP requests, it'll pass along a series of headers
automatically. It might be good for you to know and understand these. You automatically. It might be good for you to know and understand these. You
can replace or remove them by using the CURLOPT_HTTPHEADER option. can replace or remove them by using the \fICURLOPT_HTTPHEADER(3)\fP option.
.IP "Host" .IP "Host"
This header is required by HTTP 1.1 and even many 1.0 servers and should be This header is required by HTTP 1.1 and even many 1.0 servers and should be
@@ -843,8 +845,8 @@ libcurl is your friend here too.
.IP CUSTOMREQUEST .IP CUSTOMREQUEST
If just changing the actual HTTP request keyword is what you want, like when If just changing the actual HTTP request keyword is what you want, like when
GET, HEAD or POST is not good enough for you, CURLOPT_CUSTOMREQUEST is there GET, HEAD or POST is not good enough for you, \fICURLOPT_CUSTOMREQUEST(3)\fP
for you. It is very simple to use: is there for you. It is very simple to use:
curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST"); curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
@@ -939,28 +941,29 @@ A little example that deletes a given file before an operation:
If you would instead want this operation (or chain of operations) to happen If you would instead want this operation (or chain of operations) to happen
_after_ the data transfer took place the option to \fIcurl_easy_setopt(3)\fP _after_ the data transfer took place the option to \fIcurl_easy_setopt(3)\fP
would instead be called CURLOPT_POSTQUOTE and used the exact same way. would instead be called \fICURLOPT_POSTQUOTE(3)\fP and used the exact same
way.
The custom FTP command will be issued to the server in the same order they are The custom FTP command will be issued to the server in the same order they are
added to the list, and if a command gets an error code returned back from the added to the list, and if a command gets an error code returned back from the
server, no more commands will be issued and libcurl will bail out with an server, no more commands will be issued and libcurl will bail out with an
error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send error code (CURLE_QUOTE_ERROR). Note that if you use \fICURLOPT_QUOTE(3)\fP to
commands before a transfer, no transfer will actually take place when a quote send commands before a transfer, no transfer will actually take place when a
command has failed. quote command has failed.
If you set the CURLOPT_HEADER to 1, you will tell libcurl to get If you set the \fICURLOPT_HEADER(3)\fP to 1, you will tell libcurl to get
information about the target file and output "headers" about it. The headers information about the target file and output "headers" about it. The headers
will be in "HTTP-style", looking like they do in HTTP. will be in "HTTP-style", looking like they do in HTTP.
The option to enable headers or to run custom FTP commands may be useful to The option to enable headers or to run custom FTP commands may be useful to
combine with CURLOPT_NOBODY. If this option is set, no actual file content combine with \fICURLOPT_NOBODY(3)\fP. If this option is set, no actual file
transfer will be performed. content transfer will be performed.
.IP "FTP Custom CUSTOMREQUEST" .IP "FTP Custom CUSTOMREQUEST"
If you do want to list the contents of a FTP directory using your own defined FTP If you do want to list the contents of a FTP directory using your own defined
command, CURLOPT_CUSTOMREQUEST will do just that. "NLST" is the default one FTP command, \fICURLOPT_CUSTOMREQUEST(3)\fP will do just that. "NLST" is the
for listing directories but you're free to pass in your idea of a good default one for listing directories but you're free to pass in your idea of a
alternative. good alternative.
.SH "Cookies Without Chocolate Chips" .SH "Cookies Without Chocolate Chips"
In the HTTP sense, a cookie is a name with an associated value. A server sends In the HTTP sense, a cookie is a name with an associated value. A server sends
@@ -975,8 +978,8 @@ update them. Server use cookies to "track" users and to keep "sessions".
Cookies are sent from server to clients with the header Set-Cookie: and Cookies are sent from server to clients with the header Set-Cookie: and
they're sent from clients to servers with the Cookie: header. they're sent from clients to servers with the Cookie: header.
To just send whatever cookie you want to a server, you can use CURLOPT_COOKIE To just send whatever cookie you want to a server, you can use
to set a cookie string like this: \fICURLOPT_COOKIE(3)\fP to set a cookie string like this:
curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;"); curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
@@ -987,29 +990,30 @@ are then used accordingly on later requests.
One way to do this, is to save all headers you receive in a plain file and One way to do this, is to save all headers you receive in a plain file and
when you make a request, you tell libcurl to read the previous headers to when you make a request, you tell libcurl to read the previous headers to
figure out which cookies to use. Set the header file to read cookies from with figure out which cookies to use. Set the header file to read cookies from with
CURLOPT_COOKIEFILE. \fICURLOPT_COOKIEFILE(3)\fP.
The CURLOPT_COOKIEFILE option also automatically enables the cookie parser in The \fICURLOPT_COOKIEFILE(3)\fP option also automatically enables the cookie
libcurl. Until the cookie parser is enabled, libcurl will not parse or parser in libcurl. Until the cookie parser is enabled, libcurl will not parse
understand incoming cookies and they will just be ignored. However, when the or understand incoming cookies and they will just be ignored. However, when
parser is enabled the cookies will be understood and the cookies will be kept the parser is enabled the cookies will be understood and the cookies will be
in memory and used properly in subsequent requests when the same handle is kept in memory and used properly in subsequent requests when the same handle
used. Many times this is enough, and you may not have to save the cookies to is used. Many times this is enough, and you may not have to save the cookies
disk at all. Note that the file you specify to CURLOPT_COOKIEFILE doesn't have to disk at all. Note that the file you specify to \ICURLOPT_COOKIEFILE(3)\fP
to exist to enable the parser, so a common way to just enable the parser and doesn't have to exist to enable the parser, so a common way to just enable the
not read any cookies is to use the name of a file you know doesn't exist. parser and not read any cookies is to use the name of a file you know doesn't
exist.
If you would rather use existing cookies that you've previously received with If you would rather use existing cookies that you've previously received with
your Netscape or Mozilla browsers, you can make libcurl use that cookie file your Netscape or Mozilla browsers, you can make libcurl use that cookie file
as input. The CURLOPT_COOKIEFILE is used for that too, as libcurl will as input. The \fICURLOPT_COOKIEFILE(3)\fP is used for that too, as libcurl
automatically find out what kind of file it is and act accordingly. will automatically find out what kind of file it is and act accordingly.
Perhaps the most advanced cookie operation libcurl offers, is saving the Perhaps the most advanced cookie operation libcurl offers, is saving the
entire internal cookie state back into a Netscape/Mozilla formatted cookie entire internal cookie state back into a Netscape/Mozilla formatted cookie
file. We call that the cookie-jar. When you set a file name with file. We call that the cookie-jar. When you set a file name with
CURLOPT_COOKIEJAR, that file name will be created and all received cookies \fICURLOPT_COOKIEJAR(3)\fP, that file name will be created and all received
will be stored in it when \fIcurl_easy_cleanup(3)\fP is called. This enables cookies will be stored in it when \fIcurl_easy_cleanup(3)\fP is called. This
cookies to get passed on properly between multiple handles without any enables cookies to get passed on properly between multiple handles without any
information getting lost. information getting lost.
.SH "FTP Peculiarities We Need" .SH "FTP Peculiarities We Need"
@@ -1028,36 +1032,36 @@ work it tries PASV instead. (EPSV is an extension to the original FTP spec
and does not exist nor work on all FTP servers.) and does not exist nor work on all FTP servers.)
You can prevent libcurl from first trying the EPSV command by setting You can prevent libcurl from first trying the EPSV command by setting
CURLOPT_FTP_USE_EPSV to zero. \fICURLOPT_FTP_USE_EPSV(3)\fP to zero.
In some cases, you will prefer to have the server connect back to you for the In some cases, you will prefer to have the server connect back to you for the
second connection. This might be when the server is perhaps behind a firewall second connection. This might be when the server is perhaps behind a firewall
or something and only allows connections on a single port. libcurl then or something and only allows connections on a single port. libcurl then
informs the remote server which IP address and port number to connect to. informs the remote server which IP address and port number to connect to.
This is made with the CURLOPT_FTPPORT option. If you set it to "-", libcurl This is made with the \fICURLOPT_FTPPORT(3)\fP option. If you set it to "-",
will use your system's "default IP address". If you want to use a particular libcurl will use your system's "default IP address". If you want to use a
IP, you can set the full IP address, a host name to resolve to an IP address particular IP, you can set the full IP address, a host name to resolve to an
or even a local network interface name that libcurl will get the IP address IP address or even a local network interface name that libcurl will get the IP
from. address from.
When doing the "PORT" approach, libcurl will attempt to use the EPRT and the When doing the "PORT" approach, libcurl will attempt to use the EPRT and the
LPRT before trying PORT, as they work with more protocols. You can disable LPRT before trying PORT, as they work with more protocols. You can disable
this behavior by setting CURLOPT_FTP_USE_EPRT to zero. this behavior by setting \fICURLOPT_FTP_USE_EPRT(3)\fP to zero.
.SH "Headers Equal Fun" .SH "Headers Equal Fun"
Some protocols provide "headers", meta-data separated from the normal Some protocols provide "headers", meta-data separated from the normal
data. These headers are by default not included in the normal data stream, data. These headers are by default not included in the normal data stream, but
but you can make them appear in the data stream by setting CURLOPT_HEADER to you can make them appear in the data stream by setting \fICURLOPT_HEADER(3)\fP
1. to 1.
What might be even more useful, is libcurl's ability to separate the headers What might be even more useful, is libcurl's ability to separate the headers
from the data and thus make the callbacks differ. You can for example set a from the data and thus make the callbacks differ. You can for example set a
different pointer to pass to the ordinary write callback by setting different pointer to pass to the ordinary write callback by setting
CURLOPT_WRITEHEADER. \fICURLOPT_HEADERDATA(3)\fP.
Or, you can set an entirely separate function to receive the headers, by Or, you can set an entirely separate function to receive the headers, by using
using CURLOPT_HEADERFUNCTION. \fICURLOPT_HEADERFUNCTION(3)\fP.
The headers are passed to the callback function one by one, and you can The headers are passed to the callback function one by one, and you can
depend on that fact. It makes it easier for you to add custom header parsers depend on that fact. It makes it easier for you to add custom header parsers
@@ -1123,13 +1127,13 @@ don't let snoopers see your password: HTTP with Digest, NTLM or GSS
authentication, HTTPS, FTPS, SCP, SFTP and FTP-Kerberos are a few examples. authentication, HTTPS, FTPS, SCP, SFTP and FTP-Kerberos are a few examples.
.IP "Redirects" .IP "Redirects"
The CURLOPT_FOLLOWLOCATION option automatically follows HTTP redirects sent The \fICURLOPT_FOLLOWLOCATION(3)\fP option automatically follows HTTP
by a remote server. These redirects can refer to any kind of URL, not just redirects sent by a remote server. These redirects can refer to any kind of
HTTP. A redirect to a file: URL would cause the libcurl to read (or write) URL, not just HTTP. A redirect to a file: URL would cause the libcurl to read
arbitrary files from the local filesystem. If the application returns (or write) arbitrary files from the local filesystem. If the application
the data back to the user (as would happen in some kinds of CGI scripts), returns the data back to the user (as would happen in some kinds of CGI
an attacker could leverage this to read otherwise forbidden data (e.g. scripts), an attacker could leverage this to read otherwise forbidden data
file://localhost/etc/passwd). (e.g. file://localhost/etc/passwd).
If authentication credentials are stored in the ~/.netrc file, or Kerberos If authentication credentials are stored in the ~/.netrc file, or Kerberos
is in use, any other URL type (not just file:) that requires is in use, any other URL type (not just file:) that requires
@@ -1142,19 +1146,20 @@ the user running the libcurl application, SCP: or SFTP: URLs could access
password or private-key protected resources, password or private-key protected resources,
e.g. sftp://user@some-internal-server/etc/passwd e.g. sftp://user@some-internal-server/etc/passwd
The CURLOPT_REDIR_PROTOCOLS and CURLOPT_NETRC options can be used to The \fICURLOPT_REDIR_PROTOCOLS(3)\fP and \fICURLOPT_NETRC(3)\fP options can be
mitigate against this kind of attack. used to mitigate against this kind of attack.
A redirect can also specify a location available only on the machine running A redirect can also specify a location available only on the machine running
libcurl, including servers hidden behind a firewall from the attacker. libcurl, including servers hidden behind a firewall from the attacker.
e.g. http://127.0.0.1/ or http://intranet/delete-stuff.cgi?delete=all or e.g. http://127.0.0.1/ or http://intranet/delete-stuff.cgi?delete=all or
tftp://bootp-server/pc-config-data tftp://bootp-server/pc-config-data
Apps can mitigate against this by disabling CURLOPT_FOLLOWLOCATION and Apps can mitigate against this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP
handling redirects itself, sanitizing URLs as necessary. Alternately, an and handling redirects itself, sanitizing URLs as necessary. Alternately, an
app could leave CURLOPT_FOLLOWLOCATION enabled but set CURLOPT_REDIR_PROTOCOLS app could leave \fICURLOPT_FOLLOWLOCATION(3)\fP enabled but set
and install a CURLOPT_OPENSOCKETFUNCTION callback function in which addresses \fICURLOPT_REDIR_PROTOCOLS(3)\fP and install a
are sanitized before use. \fICURLOPT_OPENSOCKETFUNCTION(3)\fP callback function in which addresses are
sanitized before use.
.IP "Private Resources" .IP "Private Resources"
A user who can control the DNS server of a domain being passed in within a URL A user who can control the DNS server of a domain being passed in within a URL
@@ -1162,21 +1167,21 @@ can change the address of the host to a local, private address which a
server-side libcurl-using application could then use. e.g. the innocuous URL server-side libcurl-using application could then use. e.g. the innocuous URL
http://fuzzybunnies.example.com/ could actually resolve to the IP address of a http://fuzzybunnies.example.com/ could actually resolve to the IP address of a
server behind a firewall, such as 127.0.0.1 or 10.1.2.3. Apps can mitigate server behind a firewall, such as 127.0.0.1 or 10.1.2.3. Apps can mitigate
against this by setting a CURLOPT_OPENSOCKETFUNCTION and checking the address against this by setting a \fICURLOPT_OPENSOCKETFUNCTION(3)\fP and checking the
before a connection. address before a connection.
All the malicious scenarios regarding redirected URLs apply just as well All the malicious scenarios regarding redirected URLs apply just as well to
to non-redirected URLs, if the user is allowed to specify an arbitrary URL non-redirected URLs, if the user is allowed to specify an arbitrary URL that
that could point to a private resource. For example, a web app providing could point to a private resource. For example, a web app providing a
a translation service might happily translate file://localhost/etc/passwd translation service might happily translate file://localhost/etc/passwd and
and display the result. Apps can mitigate against this with the display the result. Apps can mitigate against this with the
CURLOPT_PROTOCOLS option as well as by similar mitigation techniques for \fICURLOPT_PROTOCOLS(3)\fP option as well as by similar mitigation techniques
redirections. for redirections.
A malicious FTP server could in response to the PASV command return an A malicious FTP server could in response to the PASV command return an IP
IP address and port number for a server local to the app running libcurl address and port number for a server local to the app running libcurl but
but behind a firewall. Apps can mitigate against this by using the behind a firewall. Apps can mitigate against this by using the
CURLOPT_FTP_SKIP_PASV_IP option or CURLOPT_FTPPORT. \fICURLOPT_FTP_SKIP_PASV_IP(3)\fP option or \fICURLOPT_FTPPORT(3)\fP.
.IP "IPv6 Addresses" .IP "IPv6 Addresses"
libcurl will normally handle IPv6 addresses transparently and just as easily libcurl will normally handle IPv6 addresses transparently and just as easily
@@ -1193,25 +1198,25 @@ can be used to limit resolved addresses to IPv4 only and bypass these issues.
.IP Uploads .IP Uploads
When uploading, a redirect can cause a local (or remote) file to be When uploading, a redirect can cause a local (or remote) file to be
overwritten. Apps must not allow any unsanitized URL to be passed in overwritten. Apps must not allow any unsanitized URL to be passed in for
for uploads. Also, CURLOPT_FOLLOWLOCATION should not be used on uploads. uploads. Also, \fICURLOPT_FOLLOWLOCATION(3)\fP should not be used on uploads.
Instead, the app should handle redirects itself, sanitizing each URL first. Instead, the app should handle redirects itself, sanitizing each URL first.
.IP Authentication .IP Authentication
Use of CURLOPT_UNRESTRICTED_AUTH could cause authentication information to Use of \fICURLOPT_UNRESTRICTED_AUTH(3)\fP could cause authentication
be sent to an unknown second server. Apps can mitigate against this information to be sent to an unknown second server. Apps can mitigate against
by disabling CURLOPT_FOLLOWLOCATION and handling redirects itself, this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP and handling redirects
sanitizing where necessary. itself, sanitizing where necessary.
Use of the CURLAUTH_ANY option to CURLOPT_HTTPAUTH could result in user Use of the CURLAUTH_ANY option to \fICURLOPT_HTTPAUTH(3)\fP could result in
name and password being sent in clear text to an HTTP server. Instead, user name and password being sent in clear text to an HTTP server. Instead,
use CURLAUTH_ANYSAFE which ensures that the password is encrypted over use CURLAUTH_ANYSAFE which ensures that the password is encrypted over the
the network, or else fail the request. network, or else fail the request.
Use of the CURLUSESSL_TRY option to CURLOPT_USE_SSL could result in user Use of the CURLUSESSL_TRY option to \fICURLOPT_USE_SSL(3)\fP could result in
name and password being sent in clear text to an FTP server. Instead, user name and password being sent in clear text to an FTP server. Instead,
use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or else
else fail the request. fail the request.
.IP Cookies .IP Cookies
If cookies are enabled and cached, then a user could craft a URL which If cookies are enabled and cached, then a user could craft a URL which
@@ -1227,34 +1232,35 @@ scp://user:pass@host/a;date >/tmp/test;
Apps must not allow unsanitized SCP: URLs to be passed in for downloads. Apps must not allow unsanitized SCP: URLs to be passed in for downloads.
.IP "Denial of Service" .IP "Denial of Service"
A malicious server could cause libcurl to effectively hang by sending A malicious server could cause libcurl to effectively hang by sending a
a trickle of data through, or even no data at all but just keeping the TCP trickle of data through, or even no data at all but just keeping the TCP
connection open. This could result in a denial-of-service attack. The connection open. This could result in a denial-of-service attack. The
CURLOPT_TIMEOUT and/or CURLOPT_LOW_SPEED_LIMIT options can be used to \fICURLOPT_TIMEOUT(3)\fP and/or \fICURLOPT_LOW_SPEED_LIMIT(3)\fP options can
mitigate against this. be used to mitigate against this.
A malicious server could cause libcurl to effectively hang by starting to A malicious server could cause libcurl to effectively hang by starting to send
send data, then severing the connection without cleanly closing the data, then severing the connection without cleanly closing the TCP connection.
TCP connection. The app could install a CURLOPT_SOCKOPTFUNCTION callback The app could install a \fICURLOPT_SOCKOPTFUNCTION(3)\fP callback function and
function and set the TCP SO_KEEPALIVE option to mitigate against this. set the TCP SO_KEEPALIVE option to mitigate against this. Setting one of the
Setting one of the timeout options would also work against this attack. timeout options would also work against this attack.
A malicious server could cause libcurl to download an infinite amount of A malicious server could cause libcurl to download an infinite amount of data,
data, potentially causing all of memory or disk to be filled. Setting potentially causing all of memory or disk to be filled. Setting the
the CURLOPT_MAXFILESIZE_LARGE option is not sufficient to guard against this. \fICURLOPT_MAXFILESIZE_LARGE(3)\fP option is not sufficient to guard against
Instead, the app should monitor the amount of data received within the this. Instead, the app should monitor the amount of data received within the
write or progress callback and abort once the limit is reached. write or progress callback and abort once the limit is reached.
A malicious HTTP server could cause an infinite redirection loop, causing a A malicious HTTP server could cause an infinite redirection loop, causing a
denial-of-service. This can be mitigated by using the CURLOPT_MAXREDIRS denial-of-service. This can be mitigated by using the
option. \fICURLOPT_MAXREDIRS(3)\fP option.
.IP "Arbitrary Headers" .IP "Arbitrary Headers"
User-supplied data must be sanitized when used in options like User-supplied data must be sanitized when used in options like
CURLOPT_USERAGENT, CURLOPT_HTTPHEADER, CURLOPT_POSTFIELDS and others that \fICURLOPT_USERAGENT(3)\fP, \fICURLOPT_HTTPHEADER(3)\fP,
are used to generate structured data. Characters like embedded carriage \fICURLOPT_POSTFIELDS(3)\fP and others that are used to generate structured
returns or ampersands could allow the user to create additional headers or data. Characters like embedded carriage returns or ampersands could allow the
fields that could cause malicious transactions. user to create additional headers or fields that could cause malicious
transactions.
.IP "Server-supplied Names" .IP "Server-supplied Names"
A server can supply data which the application may, in some cases, use as A server can supply data which the application may, in some cases, use as
@@ -1266,9 +1272,9 @@ names to avoid the possibility of a malicious server supplying one like
"/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc". "/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc".
.IP "Server Certificates" .IP "Server Certificates"
A secure application should never use the CURLOPT_SSL_VERIFYPEER option to A secure application should never use the \fICURLOPT_SSL_VERIFYPEER(3)\fP
disable certificate validation. There are numerous attacks that are enabled option to disable certificate validation. There are numerous attacks that are
by apps that fail to properly validate server TLS/SSL certificates, enabled by apps that fail to properly validate server TLS/SSL certificates,
thus enabling a malicious server to spoof a legitimate one. HTTPS without thus enabling a malicious server to spoof a legitimate one. HTTPS without
validated certificates is potentially as insecure as a plain HTTP connection. validated certificates is potentially as insecure as a plain HTTP connection.

View File

@@ -153,7 +153,7 @@ int x;
curl_easy_setopt(NULL,CURLOPT_URL,NULL); curl_easy_setopt(NULL,CURLOPT_URL,NULL);
x=CURL_ERROR_SIZE; x=CURL_ERROR_SIZE;
x=CURLOPT_WRITEFUNCTION; x=CURLOPT_WRITEFUNCTION;
x=CURLOPT_FILE; x=CURLOPT_WRITEDATA;
x=CURLOPT_ERRORBUFFER; x=CURLOPT_ERRORBUFFER;
x=CURLOPT_STDERR; x=CURLOPT_STDERR;
x=CURLOPT_VERBOSE; x=CURLOPT_VERBOSE;

View File

@@ -0,0 +1,44 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_ACCEPTTIMEOUT_MS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
.SH DESCRIPTION
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.
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.24.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "

View File

@@ -0,0 +1,62 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_ACCEPT_ENCODING 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);
.SH DESCRIPTION
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,
\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.
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.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
This option was called CURLOPT_ENCODING before 7.21.6
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_TRANSFER_ENCODING "(3), " CURLOPT_HTTPHEADER "(3), "

View File

@@ -0,0 +1,44 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_ADDRESS_SCOPE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope for local IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);
.SH DESCRIPTION
Pass a long specifying the scope_id value to use when connecting to IPv6
link-local or site-local addresses.
.SH DEFAULT
0
.SH PROTOCOLS
All, when using IPv6
.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 CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "

View File

@@ -0,0 +1,44 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_APPEND 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>
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.
.SH DEFAULT
0
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.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), "

View File

@@ -0,0 +1,45 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_AUTOREFERER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
.SH DESCRIPTION
Pass a parameter set to 1 to enable this. When enabled, libcurl will
automatically set the Referer: header field in HTTP requests where it follows
a Location: redirect.
.SH DEFAULT
0, disabled
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Along with HTTP
.SH RETURN VALUE
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_REFERER "(3), " CURLOPT_FOLLOWLOCATION "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_BUFFERSIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);
.SH DESCRIPTION
Pass a long specifying your preferred \fIsize\fP (in bytes) for the receive
buffer in libcurl. The main point of this would be that the write callback
gets called more often and with smaller chunks. This is just treated as a
request, not an order. You cannot be guaranteed to actually get the given
size.
This size is by default set as big as possible (\fICURL_MAX_WRITE_SIZE\fP), so
it only makes sense to use this option if you want it smaller.
.SH DEFAULT
CURL_MAX_WRITE_SIZE
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
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), "

View File

@@ -0,0 +1,55 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CAINFO 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);
.SH DESCRIPTION
Pass a char * to a zero terminated string naming a file holding one or more
certificates to verify the peer with.
If \fICURLOPT_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the
server's certificate, \fICURLOPT_CAINFO(3)\fP need not even indicate an
accessible file.
This option is by default set to the system path where libcurl's cacert bundle
is assumed to be stored, as established at build time.
If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
(libnsspem.so) needs to be available for this option to work properly.
.SH DEFAULT
Built-in system specific
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
If built TLS enabled
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_SSL_VERIFYHOST "(3), "

View File

@@ -0,0 +1,53 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CAPATH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
.SH DESCRIPTION
Pass a char * to a zero terminated string naming a directory holding multiple
CA certificates to verify the peer with. If libcurl is built against OpenSSL,
the certificate directory must be prepared using the openssl c_rehash utility.
This makes sense only when used in combination with the
\fICURLOPT_SSL_VERIFYPEER(3)\fP option. If \fICURLOPT_SSL_VERIFYPEER(3)\fP is
zero, \fICURLOPT_CAPATH(3)\fP need not even indicate an accessible path. The
\fICURLOPT_CAPATH(3)\fP function apparently does not work in Windows due to
some limitation in openssl.
.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
This option is OpenSSL-specific and does nothing if libcurl is built to use
GnuTLS. NSS-powered libcurl provides the option only for backward
compatibility.
.SH RETURN VALUE
Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "

View File

@@ -0,0 +1,48 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CERTINFO 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>
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 (if built with OpenSSL, NSS, GSKit or QsoSSL) 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.
.SH DEFAULT
0
.SH PROTOCOLS
All TLS-based
.SH EXAMPLE
TODO
.SH AVAILABILITY
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 CURLOPT_CAINFO "(3), " CURLOPT_SSL_VERIFYPEER "(3), "

View File

@@ -0,0 +1,69 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CHUNK_BGN_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>
long chunk_bgn_callback(const void *transfer_info, void *ptr,
int remains);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
chunk_bgn_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
This callback function gets called by libcurl before a part of the stream is
going to be transferred (if the transfer supports chunks).
The \fItransfer_info\fP pointer will point to a struct curl_fileinfo with
details about the file that is about to get transfered.
This callback makes sense only when using the \fICURLOPT_WILDCARDMATCH(3)\fP
option for now.
The target of transfer_info parameter is a "feature depended" structure. For
the FTP wildcard download, the target is curl_fileinfo structure (see
\fIcurl/curl.h\fP). The parameter \fIptr\fP is a pointer given by
\fICURLOPT_CHUNK_DATA(3)\fP. The parameter remains contains number of chunks
remaining per the transfer. If the feature is not available, the parameter has
zero value.
Return \fICURL_CHUNK_BGN_FUNC_OK\fP if everything is fine,
\fICURL_CHUNK_BGN_FUNC_SKIP\fP if you want to skip the concrete chunk or
\fICURL_CHUNK_BGN_FUNC_FAIL\fP to tell libcurl to stop if some error occurred.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
This was 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 CURLOPT_CHUNK_END_FUNCTION "(3), " CURLOPT_WILDCARDMATCH "(3), "

View File

@@ -0,0 +1,45 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CHUNK_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>
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_FUNTION(3)\fP and
\fICURL_CHUNK_END_FUNTION(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.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 CURLOPT_CHUNK_BGN_FUNCTION "(3), " CURLOPT_WILDCARDMATCH "(3), "

View File

@@ -0,0 +1,54 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CHUNK_END_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>
long chunk_end_callback(void *ptr);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
chunk_end_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
This function gets called by libcurl as soon as a part of the stream has been
transferred (or skipped).
Return \fICURL_CHUNK_END_FUNC_OK\fP if everything is fine or
\fBCURL_CHUNK_END_FUNC_FAIL\fP to tell the lib to stop if some error occurred.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.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 CURLOPT_WILDCARDMATCH "(3), " CURLOPT_CHUNK_BGN_FUNCTION "(3), "

View File

@@ -0,0 +1,45 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CLOSESOCKETDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);
.SH DESCRIPTION
Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
argument in the closesocket callback set with
\fICURLOPT_CLOSESOCKETFUNCTION(3)\fP.
.SH DEFAULT
The default value of this parameter is NULL.
.SH PROTOCOLS
All except file:
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.21.7
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_CLOSESOCKETFUNCTION "(3), " CURLOPT_OPENSOCKETFUNCTION "(3), "

View File

@@ -0,0 +1,56 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CLOSESOCKETFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>
int closesocket_callback(void *clientp, curl_socket_t item);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION, closesocket_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
This callback function gets called by libcurl instead of the \fIclose(3)\fP or
\fIclosesocket(3)\fP call when sockets are closed (not for any other file
descriptors). This is pretty much the reverse to the
\fICURLOPT_OPENSOCKETFUNCTION(3)\fP option. Return 0 to signal success and 1
if there was an error.
The \fIclientp\fP pointer is set with
\fICURLOPT_CLOSESOCKETDATA(3)\fP. \fIitem\fP is the socket libcurl wants to be
closed.
.SH DEFAULT
By default libcurl uses the standard socket close function.
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.21.7
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_CLOSESOCKETDATA "(3), " CURLOPT_OPENSOCKETFUNCTION "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CONNECTTIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);
.SH DESCRIPTION
Pass a long. It should contain the maximum time in seconds that you allow the
connection phase to the server to take. This only limits the connection
phase, it has no impact once it has connected. Set to zero to switch to the
default built-in connection timeout - 300 seconds. See also the
\fICURLOPT_TIMEOUT(3)\fP option.
In unix-like systems, this might cause signals to be used unless
\fICURLOPT_NOSIGNAL(3)\fP is set.
.SH DEFAULT
300
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CONNECTTIMEOUT_MS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);
.SH DESCRIPTION
Pass a long. It should contain the maximum time in milliseconds that you allow
the connection phase to the server to take. This only limits the connection
phase, it has no impact once it has connected. Set to zero to switch to the
default built-in connection timeout - 300 seconds. See also the
\fICURLOPT_TIMEOUT_MS(3)\fP option.
In unix-like systems, this might cause signals to be used unless
\fICURLOPT_NOSIGNAL(3)\fP is set.
.SH DEFAULT
300000
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "

View File

@@ -0,0 +1,51 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_ONLY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);
.SH DESCRIPTION
Pass a long. If the parameter equals 1, it tells the library to perform all
the required proxy authentication and connection setup, but no data transfer,
and then return. This option is implemented for HTTP, SMTP and POP3.
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
\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.
.SH DEFAULT
0
.SH PROTOCOLS
HTTP, SMTP and POP3
.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 CURLOPT_VERBOSE "(3), " CURLOPT_HTTPPROXYTUNNEL "(3), "

View File

@@ -0,0 +1,82 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CONV_FROM_NETWORK_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode conv_callback(char *ptr, size_t length);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
conv_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
CURL_VERSION_CONV feature bit set if this option is provided.
The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
The amount of data to convert is indicated by the \fIlength\fP parameter. The
converted data overlays the input data in the buffer pointed to by the ptr
parameter. \fICURLE_OK\fP must be returned upon successful conversion. A
CURLcode return value defined by curl.h, such as \fICURLE_CONV_FAILED\fP,
should be returned if an error was encountered.
\fBCURLOPT_CONV_FROM_NETWORK_FUNCTION\fP converts to host encoding from the
network encoding. It is used when commands or ASCII data are received over
the network.
If you set a callback pointer to NULL, or don't set it at all, the built-in
libcurl iconv functions will be used. If HAVE_ICONV was not defined when
libcurl was built, and no callback has been established, conversion will
return the CURLE_CONV_REQD error code.
If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
For example:
\&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
The iconv code in libcurl will default the network and UTF8 codeset names as
follows:
\&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
\&#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
You will need to override these definitions if they are different on your
system.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP, SMTP, IMAP, POP3
.SH EXAMPLE
TODO
.SH AVAILABILITY
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_TO_NETWORK_FUNCTION "(3), " CURLOPT_CONV_FROM_UTF8_FUNCTION "(3), "

View File

@@ -0,0 +1,81 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CONV_FROM_UTF8_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode conv_callback(char *ptr, size_t length);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
conv_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
CURL_VERSION_CONV feature bit set if this option is provided.
The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
The amount of data to convert is indicated by the \fIlength\fP parameter. The
converted data overlays the input data in the buffer pointed to by the ptr
parameter. \fICURLE_OK\fP must be returned upon successful conversion. A
CURLcode return value defined by curl.h, such as \fICURLE_CONV_FAILED\fP,
should be returned if an error was encountered.
\fBCURLOPT_CONV_FROM_UTF8_FUNCTION\fP converts to host encoding from UTF8
encoding. It is required only for SSL processing.
If you set a callback pointer to NULL, or don't set it at all, the built-in
libcurl iconv functions will be used. If HAVE_ICONV was not defined when
libcurl was built, and no callback has been established, conversion will
return the CURLE_CONV_REQD error code.
If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
For example:
\&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
The iconv code in libcurl will default the network and UTF8 codeset names as
follows:
\&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
\&#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
You will need to override these definitions if they are different on your
system.
.SH DEFAULT
NULL
.SH PROTOCOLS
TLS-based protocols.
.SH EXAMPLE
TODO
.SH AVAILABILITY
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_TO_NETWORK_FUNCTION "(3), " CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), "

View File

@@ -0,0 +1,82 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CONV_TO_NETWORK_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode conv_callback(char *ptr, size_t length);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
conv_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
CURL_VERSION_CONV feature bit set if this option is provided.
The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
The amount of data to convert is indicated by the \fIlength\fP parameter. The
converted data overlays the input data in the buffer pointed to by the ptr
parameter. \fICURLE_OK\fP must be returned upon successful conversion. A
CURLcode return value defined by curl.h, such as \fICURLE_CONV_FAILED\fP,
should be returned if an error was encountered.
\fBCURLOPT_CONV_TO_NETWORK_FUNCTION\fP converts from host encoding to the
network encoding. It is used when commands or ASCII data are sent over the
network.
If you set a callback pointer to NULL, or don't set it at all, the built-in
libcurl iconv functions will be used. If HAVE_ICONV was not defined when
libcurl was built, and no callback has been established, conversion will
return the CURLE_CONV_REQD error code.
If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
For example:
\&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
The iconv code in libcurl will default the network and UTF8 codeset names as
follows:
\&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
\&#define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8"
You will need to override these definitions if they are different on your
system.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP, SMTP, IMAP, POP3
.SH EXAMPLE
TODO
.SH AVAILABILITY
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), "

View File

@@ -0,0 +1,62 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_COOKIE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It will be used to
set a cookie in the HTTP request. The format of the string should be
NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie
should contain.
If you need to set multiple cookies, set them all using a single option
concatenated like this: "name1=content1; name2=content2;" etc.
This option sets the cookie header explicitly in the outgoing request(s). If
multiple requests are done due to authentication, followed redirections or
similar, they will all get this cookie passed on.
Using this option multiple times will only make the latest string override the
previous ones.
This option will not enable the cookie engine. Use \fICURLOPT_COOKIEFILE(3)\fP
or \fICURLOPT_COOKIEJAR(3)\fP to enable parsing and sending cookies
automatically.
.SH DEFAULT
NULL, no cookies
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
If HTTP is enabled
.SH RETURN VALUE
Returns CURLE_OK if HTTP is enabled, 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), "
.BR CURLOPT_HTTPHEADER "(3), "

View File

@@ -0,0 +1,59 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_COOKIEFILE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It should point to
the file name of your file holding cookie data to read. The cookie data can be
in either the old Netscape / Mozilla cookie data format or just regular
HTTP-style headers dumped to a file.
It also enables the cookie engine, making libcurl parse and send cookies on
subsequent requests with this handle.
Given an empty or non-existing file or by passing the empty string ("") to
this option, you can enable the cookie engine without reading any initial
cookies.
This option only \fBreads\fP cookies. To make libcurl write cookies to file,
see \fICURLOPT_COOKIEJAR(3)\fP.
If you use this option multiple times, you just add more files to read.
Subsequent files will add more cookies.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
As long as HTTP is supported
.SH RETURN VALUE
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_COOKIE "(3), " CURLOPT_COOKIEJAR "(3), "

View File

@@ -0,0 +1,58 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_COOKIEJAR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);
.SH DESCRIPTION
Pass a \fIfilename\fP as char *, zero terminated. This will make libcurl write
all internally known cookies to the specified file when
\fIcurl_easy_cleanup(3)\fP is called. If no cookies are known, no file will be
created. Specify "-" as filename to instead have the cookies written to
stdout. Using this option also enables cookies for this session, so if you for
example follow a location it will make matching cookies get sent accordingly.
Note that libcurl doesn't read any cookies from the cookie jar. If you want to
read cookies from a file, use \fICURLOPT_COOKIEFILE(3)\fP.
If the cookie jar file can't be created or written to (when the
\fIcurl_easy_cleanup(3)\fP is called), libcurl will not and cannot report an
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.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Along with HTTP
.SH RETURN VALUE
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), "

View File

@@ -0,0 +1,65 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_COOKIELIST 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
char *cookie);
.SH DESCRIPTION
Pass a char * to a \fIcookie\fP string.
Such a cookie can be either a single line in Netscape / Mozilla format or just
regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
cookie engine. This adds that single cookie to the internal cookie store.
Additionally, there are commands available that perform actions if you pass in
these exact strings:
.IP ALL
erases all cookies held in memory
.IP SESS
erases all session cookies held in memory
.IP FLUSH
writes all known cookies to the file specified by \fICURLOPT_COOKIEJAR(3)\fP
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
ALL was added in 7.14.1
SESS was added in 7.15.4
FLUSH was added in 7.17.1
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), "

View File

@@ -0,0 +1,51 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_COOKIESESSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);
.SH DESCRIPTION
Pass a long set to 1 to mark this as a new cookie "session". It will force
libcurl to ignore all cookies it is about to load that are "session cookies"
from the previous session. By default, libcurl always stores and loads all
cookies, independent if they are session cookies or not. Session cookies are
cookies without expiry date and they are meant to be alive and existing for
this "session" only.
A "session" is usually defined in browser land for as long as you have your
browser up, more or less.
.SH DEFAULT
0
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Along with HTTP
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), "

View File

@@ -0,0 +1,56 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_COPYPOSTFIELDS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);
.SH DESCRIPTION
Pass a char * as parameter, which should be the full data to post in a HTTP
POST operation. It behaves as the \fICURLOPT_POSTFIELDS(3)\fP option, but the
original data is instead copied by the library, allowing the application to
overwrite the original data after setting this option.
Because data are copied, care must be taken when using this option in
conjunction with \fICURLOPT_POSTFIELDSIZE(3)\fP or
\fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP: If the size has not been set prior to
\fICURLOPT_COPYPOSTFIELDS(3)\fP, the data is assumed to be a zero terminated
string; else the stored size informs the library about the byte count to
copy. In any case, the size must not be changed after
\fICURLOPT_COPYPOSTFIELDS(3)\fP, unless another \fICURLOPT_POSTFIELDS(3)\fP or
\fICURLOPT_COPYPOSTFIELDS(3)\fP option is issued.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.17.1
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_POSTFIELDSIZE "(3), "

View File

@@ -0,0 +1,47 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CRLF 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);
.SH DESCRIPTION
Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to
CRLF newlines on transfers. Disable this option again by setting the value to
0 (zero).
This is a legacy option of questionable use.
.SH DEFAULT
0
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_TO_NETWORK_FUNCTION "(3), "

View File

@@ -0,0 +1,60 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CRLFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);
.SH DESCRIPTION
Pass a char * to a zero terminated string naming a \fIfile\fP with the
concatenation of CRL (in PEM format) to use in the certificate validation that
occurs during the SSL exchange.
When curl is built to use NSS or GnuTLS, there is no way to influence the use
of CRL passed to help in the verification process. When libcurl is built with
OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both
set, requiring CRL check against all the elements of the certificate chain if
a CRL file is passed.
This option makes sense only when used in combination with the
\fICURLOPT_SSL_VERIFYPEER(3)\fP option.
A specific error code (\fICURLE_SSL_CRL_BADFILE\fP) is defined with the
option. It is returned when the SSL exchange fails because the CRL file cannot
be loaded. A failure in certificate verification due to a revocation
information found in the CRL does not trigger this specific error.
.SH DEFAULT
NULL
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.19.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_SSL_VERIFYHOST "(3), "

View File

@@ -0,0 +1,95 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_CUSTOMREQUEST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>
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
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.
Restore to the internal default by setting this to NULL.
This option can be used to specify the request:
.IP HTTP
Instead of GET or HEAD when performing HTTP based requests. This is
particularly useful, for example, for performing a HTTP DELETE request.
For example:
When you tell libcurl to do a HEAD request, but then specify a GET though a
custom request libcurl will still act as if it sent a HEAD. To switch to a
proper HEAD use \fICURLOPT_NOBODY(3)\fP, to switch to a proper POST use
\fICURLOPT_POST(3)\fP or \fICURLOPT_POSTFIELDS(3)\fP and to switch to a proper
GET use \fICURLOPT_HTTPGET(3)\fP.
Many people have wrongly used this option to replace the entire request with
their own, including multiple headers and POST contents. While that might work
in many cases, it will cause libcurl to send invalid requests and it could
possibly confuse the remote server badly. Use \fICURLOPT_POST(3)\fP and
\fICURLOPT_POSTFIELDS(3)\fP to set POST data. Use \fICURLOPT_HTTPHEADER(3)\fP
to replace or extend the set of headers sent by libcurl. Use
\fICURLOPT_HTTP_VERSION(3)\fP to change HTTP version.
.IP FTP
Instead of LIST and NLST when performing FTP directory listings.
.IP IMAP
Instead of LIST when issuing IMAP based requests.
.IP POP3
Instead of LIST and RETR when issuing POP3 based requests.
For example:
When you tell libcurl to use a custom request it will behave like a LIST or
RETR command was sent where it expects data to be returned by the server. As
such \fICURLOPT_NOBODY(3)\fP should be used when specifying commands such as
DELE and NOOP for example.
.IP SMTP
Instead of a HELP or VRFY when issuing SMTP based requests.
For example:
Normally a multiline response is returned which can be used, in conjunction
with \fICURLOPT_MAIL_RCPT(3)\fP, to specify an EXPN request. If the
\fICURLOPT_NOBODY(3)\fP option is specified then the request can be used to
issue NOOP and RSET commands.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP, FTP, IMAP, POP3
.SH EXAMPLE
TODO
.SH AVAILABILITY
IMAP is supported since 7.30.0, POP3 since 7.26.0 and SMTP since 7.34.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_HTTPHEADER "(3), " CURLOPT_NOBODY "(3), "

View File

@@ -0,0 +1,45 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DEBUGDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);
.SH DESCRIPTION
Pass a \fIpointer\fP to whatever you want passed in to your
\fICURLOPT_DEBUGFUNCTION(3)\fP in the last void * argument. This pointer is
not used by libcurl, it is only passed to the callback.
.SH DEFAULT
NULL
.SH PROTOCOLS
All
.SH EXAMPLE
http://curl.haxx.se/libcurl/c/debug.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "

View File

@@ -0,0 +1,88 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DEBUGFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>
typedef enum {
CURLINFO_TEXT = 0,
CURLINFO_HEADER_IN, /* 1 */
CURLINFO_HEADER_OUT, /* 2 */
CURLINFO_DATA_IN, /* 3 */
CURLINFO_DATA_OUT, /* 4 */
CURLINFO_SSL_DATA_IN, /* 5 */
CURLINFO_SSL_DATA_OUT, /* 6 */
CURLINFO_END
} curl_infotype;
int debug_callback(CURL *handle,
curl_infotype type,
char *data,
size_t size,
void *userptr);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
debug_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
\fICURLOPT_DEBUGFUNCTION(3)\fP replaces the standard debug function used when
\fICURLOPT_VERBOSE(3)\fP is in effect. This callback receives debug
information, as specified in the \fItype\fP argument. This function must
return 0. The \fIdata\fP pointed to by the char * passed to this function WILL
NOT be zero terminated, but will be exactly of the \fIsize\fP as told by the
\fIsize\fP argument.
The \fIuserptr\fP argument is the pointer set with \fICURLOPT_DEBUGDATA(3)\fP.
Available curl_infotype values:
.IP CURLINFO_TEXT
The data is informational text.
.IP CURLINFO_HEADER_IN
The data is header (or header-like) data received from the peer.
.IP CURLINFO_HEADER_OUT
The data is header (or header-like) data sent to the peer.
.IP CURLINFO_DATA_IN
The data is protocol data received from the peer.
.IP CURLINFO_DATA_OUT
The data is protocol data sent to the peer.
.IP CURLINFO_SSL_DATA_OUT
The data is SSL/TLS (binary) data sent to the peer.
.IP CURLINFO_SSL_DATA_IN
The data is SSL/TLS (binary) data received from the peer.
.SH DEFAULT
NULL
.SH PROTOCOLS
All
.SH EXAMPLE
http://curl.haxx.se/libcurl/c/debug.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_VERBOSE "(3), " CURLOPT_DEBUGDATA "(3), "

View File

@@ -0,0 +1,55 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DIRLISTONLY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
.SH DESCRIPTION
A parameter set to 1 tells the library to just list the names of files in a
directory, instead of doing a full directory listing that would include file
sizes, dates etc. This works for FTP and SFTP URLs.
This causes an FTP NLST command to be sent on an FTP server. Beware that some
FTP servers list only files in their response to NLST; they might not include
subdirectories and symbolic links.
Setting this option to 1 also implies a directory listing even if the URL
doesn't end with a slash, which otherwise is necessary.
Do NOT use this option if you also use \fICURLOPT_WILDCARDMATCH(3)\fP as it
will effectively break that feature then.
.SH DEFAULT
0, disabled
.SH PROTOCOLS
FTP and SFTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
This option was known as CURLOPT_FTPLISTONLY 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_CUSTOMREQUEST "(3), "

View File

@@ -0,0 +1,56 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DNS_CACHE_TIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
.SH DESCRIPTION
Pass a long, this sets the timeout in seconds. Name resolves will be kept in
memory and used for this number of seconds. Set to zero to completely disable
caching, or set to -1 to make the cached entries remain forever. By default,
libcurl caches this info for 60 seconds.
The name resolve functions of various libc implementations don't re-read name
server information unless explicitly told so (for example, by calling
\fIres_init(3)\fP). This may cause libcurl to keep using the older server even
if DHCP has updated the server info, and this may look like a DNS cache issue
to the casual libcurl-app user.
Note that DNS entries have a "TTL" property but libcurl doesn't use that. This
DNS cache timeout is entirely speculative that a name will resolve to the same
address for a certain small amount of time into the future.
.SH DEFAULT
60
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_DNS_USE_GLOBAL_CACHE "(3), " CURLOPT_DNS_SERVERS "(3), "

View File

@@ -0,0 +1,48 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DNS_INTERFACE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);
.SH DESCRIPTION
Pass a char * as parameter. Set the name of the network interface that the DNS
resolver should bind to. This must be an interface name (not an address). Set
this option to NULL to use the default setting (don't bind to a specific
interface).
.SH DEFAULT
NULL
.SH PROTOCOLS
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.33.0. This option also requires that libcurl was built with a
resolver backend that supports this operation. The c-ares backend is the only
such one.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
or CURLE_NOT_BUILT_IN if support was disabled at compile-time.
.SH "SEE ALSO"
.BR CURLOPT_DNS_SERVERS "(3), " CURLOPT_DNS_LOCAL_IP4 "(3), "

View File

@@ -0,0 +1,51 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DNS_LOCAL_IP4 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);
.SH DESCRIPTION
Set the local IPv4 \fIaddress\fP that the resolver should bind to. The
argument should be of type char * and contain a single numerical IPv4 address
as a string. Set this option to NULL to use the default setting (don't bind
to a specific IP address).
.SH DEFAULT
NULL
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
This option requires that libcurl was built with a resolver backend that
supports this operation. The c-ares backend is the only such one.
Added in 7.33.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
CURLE_NOT_BUILT_IN if support was disabled at compile-time, or
CURLE_BAD_FUNCTION_ARGUMENT when given a bad address.
.SH "SEE ALSO"
.BR CURLOPT_DNS_INTERFACE "(3), " CURLOPT_DNS_LOCAL_IP4 "(3), "

View File

@@ -0,0 +1,51 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DNS_LOCAL_IP6 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);
.SH DESCRIPTION
Set the local IPv6 \fIaddress\fP that the resolver should bind to. The
argument should be of type char * and contain a single IPv6 address as a
string. Set this option to NULL to use the default setting (don't bind to a
specific IP address).
.SH DEFAULT
NULL
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
This option requires that libcurl was built with a resolver backend that
supports this operation. The c-ares backend is the only such one.
Added in 7.33.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
CURLE_NOT_BUILT_IN if support was disabled at compile-time, or
CURLE_BAD_FUNCTION_ARGUMENT when given a bad address.
.SH "SEE ALSO"
.BR CURLOPT_DNS_INTERFACE "(3), " CURLOPT_DNS_LOCAL_IP4 "(3), "

View File

@@ -0,0 +1,56 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DNS_SERVERS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);
.SH DESCRIPTION
Pass a char * that is the list of DNS servers to be used instead of the system
default. The format of the dns servers option is:
host[:port][,host[:port]]...
For example:
192.168.1.100,192.168.1.101,3.4.5.6
.SH DEFAULT
NULL - use system default
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
This option requires that libcurl was built with a resolver backend that
supports this operation. The c-ares backend is the only such one.
Added in 7.24.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
CURLE_NOT_BUILT_IN if support was disabled at compile-time,
CURLE_BAD_FUNCTION_ARGUMENT when given an invalid server list, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_DNS_LOCAL_IP4 "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_DNS_USE_GLOBAL_CACHE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,
long enable);
.SH DESCRIPTION
Pass a long. If the \fIenable\fP value is 1, it tells curl to use a global DNS
cache that will survive between easy handle creations and deletions. This is
not thread-safe and this will use a global variable.
\fBWARNING:\fP this option is considered obsolete. Stop using it. Switch over
to using the share interface instead! See \fICURLOPT_SHARE(3)\fP and
\fIcurl_share_init(3)\fP.
.SH DEFAULT
0
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Subject for removal in the future. Do not use!
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_SHARE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "

View File

@@ -0,0 +1,45 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_EGDSOCKET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
.SH DESCRIPTION
Pass a char * to the zero terminated path name to the Entropy Gathering Daemon
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.
.SH EXAMPLE
TODO
.SH AVAILABILITY
If built TLS enabled. Only the OpenSSL and GnuTLS backends will use this.
.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.
.SH "SEE ALSO"
.BR CURLOPT_RANDOM_FILE "(3), "

View File

@@ -0,0 +1,57 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_ERRORBUFFER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);
.SH DESCRIPTION
Pass a char * to a buffer that the libcurl may store human readable error
messages in on failures or problems. This may be more helpful than just the
return code from \fIcurl_easy_perform(3)\fP and related functions. The buffer
\fBmust be at least CURL_ERROR_SIZE bytes big\fP.
You must keep the associated buffer available until libcurl no longer needs
it. Failing to do so will cause very odd behavior or even crashes. libcurl
will need it until you call \fIcurl_easy_cleanup(3)\fP or you set the same
option again to use a different pointer.
Consider \fICURLOPT_VERBOSE(3)\fP and \fICURLOPT_DEBUGFUNCTION(3)\fP to better
debug and trace why errors happen.
If the library does not return an error, the buffer may not have been
touched. Do not rely on the contents in those cases.
.SH DEFAULT
NULL
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_DEBUGFUNCTION "(3), " CURLOPT_VERBOSE "(3), "

View File

@@ -0,0 +1,49 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_EXPECT_100_TIMEOUT_MS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
long milliseconds);
.SH DESCRIPTION
Pass a long to tell libcurl the number of \fImilliseconds\fP to wait for a
server response with the HTTP status 100 (Continue), 417 (Expectation Failed)
or similar after sending a HTTP request containing an Expect: 100-continue
header. If this times out before a response is received, the request body is
sent anyway.
.SH DEFAULT
1000 milliseconds
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.36.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_POST "(3), " CURLOPT_HTTPPOST "(3), "

View File

@@ -0,0 +1,53 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FAILONERROR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);
.SH DESCRIPTION
A long parameter set to 1 tells the library to fail the request if the HTTP
code returned is equal to or larger than 400. The default action would be to
return the page normally, ignoring that code.
This method is not fail-safe and there are occasions where non-successful
response codes will slip through, especially when authentication is involved
(response codes 401 and 407).
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.
.SH DEFAULT
0, do not fail on error
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Along with HTTP
.SH RETURN VALUE
Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_HTTP200ALIASES "(3), "

View File

@@ -0,0 +1,47 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FILETIME 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
.SH DESCRIPTION
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).
.SH DEFAULT
0
.SH PROTOCOLS
HTTP, FTP, SFTP, FILE
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR curl_easy_getinfo "(3), "

View File

@@ -0,0 +1,46 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FNMATCH_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>
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.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.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 CURLOPT_FNMATCH_FUNCTION "(3), " CURLOPT_WILDCARDMATCH "(3), "

View File

@@ -0,0 +1,56 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FNMATCH_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>
int fnmatch_callback(void *ptr,
const char *pattern,
const char *string);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
fnmatch_callback);
.SH DESCRIPTION
Pass a pointer to your callback function, which should match the prototype
shown above.
This callback s 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
error occurred.
.SH DEFAULT
NULL == an internal function for wildcard matching.
.SH PROTOCOLS
FTP
.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 CURLOPT_FNMATCH_DATA "(3), " CURLOPT_DEBUGFUNCTION "(3), "

View File

@@ -0,0 +1,53 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FOLLOWLOCATION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>
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.
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 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.
.SH DEFAULT
0, disabled
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Along with HTTP
.SH RETURN VALUE
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_PROTOCOLS "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FORBID_REUSE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);
.SH DESCRIPTION
Pass a long. Set \fIclose\fP to 1 to make libcurl explicitly close the
connection when done with the transfer. Normally, libcurl keeps all
connections alive when done with one transfer in case a succeeding one follows
that can re-use them. This option should be used with caution and only if you
understand what it does as it can seriously impact performance.
Set to 0 to have libcurl keep the connection open for possible later re-use
(default behavior).
.SH DEFAULT
0
.SH PROTOCOLS
Most
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXCONNECTS "(3), "

View File

@@ -0,0 +1,52 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FRESH_CONNECT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);
.SH DESCRIPTION
Pass a long. Set to 1 to make the next transfer use a new (fresh) connection
by force instead of trying to re-use an existing one. This option should be
used with caution and only if you understand what it does as it may seriously
impact performance.
Related functionality is \fICURLOPT_FORBID_REUSE(3)\fP which makes sure the
connection is closed after use so that it won't be re-used.
Set \fIfresh\fP to 0 to have libcurl attempt re-using an existing connection
(default behavior).
.SH DEFAULT
0
.SH PROTOCOLS
Most
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_FORBID_REUSE "(3), "

View File

@@ -0,0 +1,72 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTPPORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It specifies that the
FTP transfer will be made actively and the given string will be used to get
the IP address to use for the FTP PORT instruction.
The PORT instruction tells the remote server to connect to our specified IP
address. The string may be a plain IP address, a host name, a network
interface name (under Unix) or just a '-' symbol to let the library use your
system's default IP address. Default FTP operations are passive, and thus
won't use PORT.
The address can be followed by a ':' to specify a port, optionally followed by
a '-' to specify a port range. If the port specified is 0, the operating
system will pick a free port. If a range is provided and all ports in the
range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the
handle. Invalid port/range settings are ignored. IPv6 addresses followed by
a port or portrange have to be in brackets. IPv6 addresses without port/range
specifier can be in brackets.
Examples with specified ports:
.nf
eth0:0
192.168.1.2:32000-33000
curl.se:32123
[::1]:1234-4567
.fi
You disable PORT again and go back to using the passive version by setting
this option to NULL.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Port range support was added in 7.19.5
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_FTP_USE_EPRT "(3), " CURLOPT_FTP_USE_EPSV "(3), "

View File

@@ -0,0 +1,53 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTPSSLAUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPSSLAUTH \- set order to attemp TSL vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);
.SH DESCRIPTION
Pass a long using one of the values from below, to alter how libcurl issues
\&"AUTH TLS" or "AUTH SSL" when FTP over SSL is activated. This is only
interesting if \fICURLOPT_USE_SSL(3)\fP is also set.
Possible \fIorder\fP values:
.IP CURLFTPAUTH_DEFAULT
Allow libcurl to decide.
.IP CURLFTPAUTH_SSL
Try "AUTH SSL" first, and only if that fails try "AUTH TLS".
.IP CURLFTPAUTH_TLS
Try "AUTH TLS" first, and only if that fails try "AUTH SSL".
.SH DEFAULT
CURLFTPAUTH_DEFAULT
.SH PROTOCOLS
FTP
.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 CURLOPT_USE_SSL "(3), " CURLOPT_FTP_SSL_CCC "(3), "

View File

@@ -0,0 +1,46 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_ACCOUNT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);
.SH DESCRIPTION
Pass a pointer to a zero terminated string (or NULL to disable). When an FTP
server asks for "account data" after user name and password has been provided,
this data is sent off using the ACCT command.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.13.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_USERNAME "(3), " CURLOPT_PASSWORD "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_ALTERNATIVE_TO_USER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
char *cmd);
.SH DESCRIPTION
Pass a char * as parameter, pointing to a string which will be used to
authenticate if the usual FTP "USER user" and "PASS password" negotiation
fails. This is currently only known to be required when connecting to
Tumbleweed's Secure Transport FTPS server using client certificates for
authentication.
.SH DEFAULT
NULL
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.15.5
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_FTP_RESPONSE_TIMEOUT "(3), "

View File

@@ -0,0 +1,70 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_CREATE_MISSING_DIRS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>
typedef enum {
CURLFTP_CREATE_DIR_NONE,
CURLFTP_CREATE_DIR,
CURLFTP_CREATE_DIR_RETRY
} curl_ftpcreatedir;
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
long create);
.SH DESCRIPTION
Pass a long telling libcurl to \fIcreate\fP the dir. If the value is
\fICURLFTP_CREATE_DIR\fP (1), libcurl will attempt to create any remote
directory that it fails to "move" into.
For FTP requests, that means a CWD command fails. CWD being the command that
changes working directory.
For SFTP requests, libcurl will attempt to create the remote directory if it
can't obtain a handle to the target-location. The creation will fail if a file
of the same name as the directory to create already exists or lack of
permissions prevents creation.
Setting \fIcreate\fP to \fICURLFTP_CREATE_DIR_RETRY\fP (2), tells libcurl to
retry the CWD command again if the subsequent MKD command fails. This is
especially useful if you're doing many simultaneous connections against the
same server and they all have this option enabled, as then CWD may first fail
but then another connection does MKD before this connection and thus MKD fails
but trying CWD works!
.SH DEFAULT
CURLFTP_CREATE_DIR_NONE (0)
.SH PROTOCOLS
FTP and SFTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.10.7. SFTP support added in 7.16.3. The retry option was added in
7.19.4.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if the
create value is not.
.SH "SEE ALSO"
.BR CURLOPT_FTP_FILEMETHOD "(3), " CURLOPT_FTP_USE_EPSV "(3), "

View File

@@ -0,0 +1,62 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_FILEMETHOD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
long method);
.SH DESCRIPTION
Pass a long telling libcurl which \fImethod\fP to use to reach a file on a
FTP(S) server.
This option exists because some server implementations aren't compliant to
what the standards say should work.
The argument should be one of the following alternatives:
.IP CURLFTPMETHOD_MULTICWD
libcurl does a single CWD operation for each path part in the given URL. For
deep hierarchies this means many commands. This is how RFC1738 says it should
be done. This is the default but the slowest behavior.
.IP CURLFTPMETHOD_NOCWD
libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a
full path to the server for all these commands. This is the fastest behavior.
.IP CURLFTPMETHOD_SINGLECWD
libcurl does one CWD with the full target directory and then operates on the
file \&"normally" (like in the multicwd case). This is somewhat more standards
compliant than 'nocwd' but without the full penalty of 'multicwd'.
.SH DEFAULT
CURLFTPMETHOD_MULTICWD
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
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), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_RESPONSE_TIMEOUT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);
.SH DESCRIPTION
Pass a long. Causes libcurl to set a \fItimeout\fP period (in seconds) on the
amount of time that the server is allowed to take in order to send a response
message for a command before the session is considered dead. While libcurl is
waiting for a response, this value overrides \fICURLOPT_TIMEOUT(3)\fP. It is
recommended that if used in conjunction with \fICURLOPT_TIMEOUT(3)\fP, you set
\fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP to a value smaller than
\fICURLOPT_TIMEOUT(3)\fP.
.SH DEFAULT
None
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.10.8
.SH RETURN VALUE
Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), "
.BR CURLOPT_LOW_SPEED_LIMIT "(3), "

View File

@@ -0,0 +1,52 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_SKIP_PASV_IP 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);
.SH DESCRIPTION
Pass a long. If \fIskip\fP is set to 1, it instructs libcurl to not use the IP
address the server suggests in its 227-response to libcurl's PASV command when
libcurl connects the data connection. Instead libcurl will re-use the same IP
address it already uses for the control connection. But it will use the port
number from the 227-response.
This option thus allows libcurl to work around broken server installations
that due to NATs, firewalls or incompetence report the wrong IP address back.
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
.SH DEFAULT
0
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.14.2
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_FTPPORT "(3), " CURLOPT_FTP_USE_EPRT "(3), "

View File

@@ -0,0 +1,54 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_SSL_CCC 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,
long how);
.SH DESCRIPTION
If enabled, this option makes libcurl use CCC (Clear Command Channel). It
shuts down the SSL/TLS layer after authenticating. The rest of the control
channel communication will be unencrypted. This allows NAT routers to follow
the FTP transaction. Pass a long using one of the values below
.IP CURLFTPSSL_CCC_NONE
Don't attempt to use CCC.
.IP CURLFTPSSL_CCC_PASSIVE
Do not initiate the shutdown, but wait for the server to do it. Do not send a
reply.
.IP CURLFTPSSL_CCC_ACTIVE
Initiate the shutdown and wait for a reply.
.SH DEFAULT
CURLFTPSSL_CCC_NONE
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.16.1
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_USE_SSL "(3), " CURLOPT_FTPSSLAUTH "(3), "

View File

@@ -0,0 +1,47 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_USE_EPRT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);
.SH DESCRIPTION
Pass a long. If the value is 1, it tells curl to use the EPRT command when
doing active FTP downloads (which is enabled by
\fICURLOPT_FTPPORT(3)\fP). Using EPRT means that it will first attempt to use
EPRT before using PORT, but if you pass zero to this option, it will not try
using EPRT, only plain PORT.
If the server is an IPv6 host, this option will have no effect as EPRT is
necessary then.
.SH DEFAULT
.SH PROTOCOLS
.SH EXAMPLE
.SH AVAILABILITY
Added in 7.10.5
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_FTP_USE_EPSV "(3), " CURLOPT_FTPPORT "(3), "

View File

@@ -0,0 +1,48 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_USE_EPSV 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);
.SH DESCRIPTION
Pass \fIepsv\fP as a long. If the value is 1, it tells curl to use the EPSV
command when doing passive FTP downloads (which it does by default). Using
EPSV means that it will first attempt to use EPSV before using PASV, but if
you pass zero to this option, it will not try using EPSV, only plain PASV.
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
.SH DEFAULT
1
.SH PROTOCOLS
FTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Along with FTP
.SH RETURN VALUE
Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_FTP_USE_EPRT "(3), " CURLOPT_FTPPORT "(3), "

View File

@@ -0,0 +1,46 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_FTP_USE_PRET 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);
.SH DESCRIPTION
Pass a long. If the value is 1, it tells curl to send a PRET command before
PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard
command for directory listings as well as up and downloads in PASV mode. Has
no effect when using the active FTP transfers mode.
.SH DEFAULT
0
.SH PROTOCOLS
FTP
.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 CURLOPT_FTP_USE_EPRT "(3), " CURLOPT_FTP_USE_EPSV "(3), "

View File

@@ -0,0 +1,48 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_GSSAPI_DELEGATION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);
.SH DESCRIPTION
Set the long parameter \fIlevel\fP to CURLGSSAPI_DELEGATION_FLAG to allow
unconditional GSSAPI credential delegation. The delegation is disabled by
default since 7.21.7. Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG
to delegate only if the OK-AS-DELEGATE flag is set in the service ticket in
case this feature is supported by the GSSAPI implementation and the definition
of GSS_C_DELEG_POLICY_FLAG was available at compile-time.
.SH DEFAULT
CURLGSSAPI_DELEGATION_NONE
.SH PROTOCOLS
HTTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
Added in 7.22.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_HTTPAUTH "(3), " CURLOPT_PROXYAUTH "(3), "

View File

@@ -0,0 +1,46 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_HEADER 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);
.SH DESCRIPTION
Pass in \fIonoff\fP set to 1 to tell the library to include the header in the
body output for requests with this \fIhandle\fP. This option is relevant for
protocols that actually have headers or other meta-data (like HTTP and FTP).
When asking to get the header info passed to the same callback as the body, it
is not possible to accurately separate them again without detailed knowledge
about the protocol in use.
It is often better to use \fICURLOPT_HEADERFUNCTION(3)\fP to get the header
data separately.
.SH DEFAULT
0
.SH RETURN VALUE
Returns CURLE_OK.
.SH "SEE ALSO"
.BR CURLOPT_HEADERFUNCTION "(3), "

View File

@@ -0,0 +1,50 @@
.\" **************************************************************************
.\" * _ _ ____ _
.\" * Project ___| | | | _ \| |
.\" * / __| | | | |_) | |
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file 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_HEADERDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);
.SH DESCRIPTION
Pass a \fIpointer\fP to be used to write the header part of the received data
to.
If \fICURLOPT_WRITEFUNCTION(3)\fP or \fICURLOPT_HEADERFUNCTION(3)\fP is used,
\fIpointer\fP will be passed in to the respective callback.
If neither of those options are set, \fIpointer\fP must be a valid FILE * and
it will be used by a plain fwrite() to write headers to.
.SH DEFAULT
NULL
.SH PROTOCOLS
All
.SH EXAMPLE
TODO
.SH AVAILABILITY
Always
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
.BR CURLOPT_HEADERFUNCTION "(3), " CURLOPT_WRITEFUNCTION "(3), "

Some files were not shown because too many files have changed in this diff Show More