Fixed some typos in documentation
[platform/upstream/curl.git] / docs / libcurl / curl_easy_setopt.3
1 .\" **************************************************************************
2 .\" *                                  _   _ ____  _
3 .\" *  Project                     ___| | | |  _ \| |
4 .\" *                             / __| | | | |_) | |
5 .\" *                            | (__| |_| |  _ <| |___
6 .\" *                             \___|\___/|_| \_\_____|
7 .\" *
8 .\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
9 .\" *
10 .\" * This software is licensed as described in the file COPYING, which
11 .\" * you should have received as part of this distribution. The terms
12 .\" * are also available at http://curl.haxx.se/docs/copyright.html.
13 .\" *
14 .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 .\" * copies of the Software, and permit persons to whom the Software is
16 .\" * furnished to do so, under the terms of the COPYING file.
17 .\" *
18 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 .\" * KIND, either express or implied.
20 .\" *
21 .\" **************************************************************************
22 .\"
23 .TH curl_easy_setopt 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl Manual"
24 .SH NAME
25 curl_easy_setopt \- set options for a curl easy handle
26 .SH SYNOPSIS
27 #include <curl/curl.h>
28
29 CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
30 .SH DESCRIPTION
31 curl_easy_setopt() is used to tell libcurl how to behave. By using the
32 appropriate options to \fIcurl_easy_setopt\fP, you can change libcurl's
33 behavior.  All options are set with the \fIoption\fP followed by a
34 \fIparameter\fP. That parameter can be a \fBlong\fP, a \fBfunction pointer\fP,
35 an \fBobject pointer\fP or a \fBcurl_off_t\fP, depending on what the specific
36 option expects. Read this manual carefully as bad input values may cause
37 libcurl to behave badly!  You can only set one option in each function call. A
38 typical application uses many curl_easy_setopt() calls in the setup phase.
39
40 Options set with this function call are valid for all forthcoming transfers
41 performed using this \fIhandle\fP.  The options are not in any way reset
42 between transfers, so if you want subsequent transfers with different options,
43 you must change them between the transfers. You can optionally reset all
44 options back to internal default with \fIcurl_easy_reset(3)\fP.
45
46 Strings passed to libcurl as 'char *' arguments, are copied by the library;
47 thus the string storage associated to the pointer argument may be overwritten
48 after curl_easy_setopt() returns. Exceptions to this rule are described in
49 the option details below.
50
51 Before version 7.17.0, strings were not copied. Instead the user was forced
52 keep them available until libcurl no longer needed them.
53
54 The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
55 \fIcurl_easy_duphandle(3)\fP call.
56 .SH BEHAVIOR OPTIONS
57 .IP CURLOPT_VERBOSE
58 Set the parameter to 1 to get the library to display a lot of verbose
59 information about its operations. Very useful for libcurl and/or protocol
60 debugging and understanding. The verbose information will be sent to stderr,
61 or the stream set with \fICURLOPT_STDERR\fP.
62
63 You hardly ever want this set in production use, you will almost always want
64 this when you debug/report problems. Another neat option for debugging is the
65 \fICURLOPT_DEBUGFUNCTION\fP.
66 .IP CURLOPT_HEADER
67 A parameter set to 1 tells the library to include the header in the body
68 output. This is only relevant for protocols that actually have headers
69 preceding the data (like HTTP).
70 .IP CURLOPT_NOPROGRESS
71 Pass a long. If set to 1, it tells the library to shut off the progress meter
72 completely. It will also present the \fICURLOPT_PROGRESSFUNCTION\fP from
73 getting called.
74
75 Future versions of libcurl are likely to not have any built-in progress meter
76 at all.
77 .IP CURLOPT_NOSIGNAL
78 Pass a long. If it is 1, libcurl will not use any functions that
79 install signal handlers or any functions that cause signals to be sent to the
80 process. This option is mainly here to allow multi-threaded unix applications
81 to still set/use all timeout options etc, without risking getting signals.
82 (Added in 7.10)
83
84 If this option is set and libcurl has been built with the standard name
85 resolver, timeouts will not occur while the name resolve takes place.
86 Consider building libcurl with c-ares support to enable asynchronous DNS
87 lookups, which enables nice timeouts for name resolves without signals.
88
89 Setting \fICURLOPT_NOSIGNAL\fP to 1 makes libcurl NOT ask the system to ignore
90 SIGPIPE signals, which otherwise are sent by the system when trying to send
91 data to a socket which is closed in the other end. libcurl makes an effort to
92 never cause such SIGPIPEs to trigger, but some operating systems have no way
93 to avoid them and even on those that have there are some corner cases when
94 they may still happen, contrary to our desire. In addition, using
95 \fICURLAUTH_NTLM_WB\fP authentication could cause a SIGCHLD signal to be
96 raised.
97 .IP CURLOPT_WILDCARDMATCH
98 Set this option to 1 if you want to transfer multiple files according to a
99 file name pattern. The pattern can be specified as part of the
100 \fICURLOPT_URL\fP option, using an fnmatch-like pattern (Shell Pattern
101 Matching) in the last part of URL (file name).
102
103 By default, libcurl uses its internal wildcard matching implementation. You
104 can provide your own matching function by the \fICURLOPT_FNMATCH_FUNCTION\fP
105 option.
106
107 This feature is only supported by the FTP download for now.
108
109 A brief introduction of its syntax follows:
110 .RS
111 .IP "* - ASTERISK"
112 \&ftp://example.com/some/path/\fB*.txt\fP (for all txt's from the root
113 directory)
114 .RE
115 .RS
116 .IP "? - QUESTION MARK"
117 Question mark matches any (exactly one) character.
118
119 \&ftp://example.com/some/path/\fBphoto?.jpeg\fP
120 .RE
121 .RS
122 .IP "[ - BRACKET EXPRESSION"
123 The left bracket opens a bracket expression. The question mark and asterisk have
124 no special meaning in a bracket expression. Each bracket expression ends by the
125 right bracket and matches exactly one character. Some examples follow:
126
127 \fB[a-zA-Z0\-9]\fP or \fB[f\-gF\-G]\fP \- character interval
128
129 \fB[abc]\fP - character enumeration
130
131 \fB[^abc]\fP or \fB[!abc]\fP - negation
132
133 \fB[[:\fP\fIname\fP\fB:]]\fP class expression. Supported classes are
134 \fBalnum\fP,\fBlower\fP, \fBspace\fP, \fBalpha\fP, \fBdigit\fP, \fBprint\fP,
135 \fBupper\fP, \fBblank\fP, \fBgraph\fP, \fBxdigit\fP.
136
137 \fB[][-!^]\fP - special case \- matches only '\-', ']', '[', '!' or '^'. These
138 characters have no special purpose.
139
140 \fB[\\[\\]\\\\]\fP - escape syntax. Matches '[', ']' or '\\'.
141
142 Using the rules above, a file name pattern can be constructed:
143
144 \&ftp://example.com/some/path/\fB[a-z[:upper:]\\\\].jpeg\fP
145 .RE
146 .PP
147 (This was added in 7.21.0)
148 .SH CALLBACK OPTIONS
149 .IP CURLOPT_WRITEFUNCTION
150 Pass a pointer to a function that matches the following prototype:
151 \fBsize_t function( char *ptr, size_t size, size_t nmemb, void *userdata);\fP
152 This function gets called by libcurl as soon as there is data received that
153 needs to be saved. The size of the data pointed to by \fIptr\fP is \fIsize\fP
154 multiplied with \fInmemb\fP, it will not be zero terminated. Return the number
155 of bytes actually taken care of. If that amount differs from the amount passed
156 to your function, it'll signal an error to the library. This will abort the
157 transfer and return \fICURLE_WRITE_ERROR\fP.
158
159 From 7.18.0, the function can return CURL_WRITEFUNC_PAUSE which then will
160 cause writing to this connection to become paused. See
161 \fIcurl_easy_pause(3)\fP for further details.
162
163 This function may be called with zero bytes data if the transferred file is
164 empty.
165
166 Set this option to NULL to get the internal default function. The internal
167 default function will write the data to the FILE * given with
168 \fICURLOPT_WRITEDATA\fP.
169
170 Set the \fIuserdata\fP argument with the \fICURLOPT_WRITEDATA\fP option.
171
172 The callback function will be passed as much data as possible in all invokes,
173 but you cannot possibly make any assumptions. It may be one byte, it may be
174 thousands. The maximum amount of body data that can be passed to the write
175 callback is defined in the curl.h header file: CURL_MAX_WRITE_SIZE (the usual
176 default is 16K). If you however have \fICURLOPT_HEADER\fP set, which sends
177 header data to the write callback, you can get up to
178 \fICURL_MAX_HTTP_HEADER\fP bytes of header data passed into it. This usually
179 means 100K.
180 .IP CURLOPT_WRITEDATA
181 Data pointer to pass to the file write function. If you use the
182 \fICURLOPT_WRITEFUNCTION\fP option, this is the pointer you'll get as
183 input. If you don't use a callback, you must pass a 'FILE *' as libcurl will
184 pass this to fwrite() when writing data.
185
186 The internal \fICURLOPT_WRITEFUNCTION\fP will write the data to the FILE *
187 given with this option, or to stdout if this option hasn't been set.
188
189 If you're using libcurl as a win32 DLL, you \fBMUST\fP use the
190 \fICURLOPT_WRITEFUNCTION\fP if you set this option or you will experience
191 crashes.
192
193 This option is also known with the older name \fICURLOPT_FILE\fP, the name
194 \fICURLOPT_WRITEDATA\fP was introduced in 7.9.7.
195 .IP CURLOPT_READFUNCTION
196 Pass a pointer to a function that matches the following prototype:
197 \fBsize_t function( void *ptr, size_t size, size_t nmemb, void *userdata);\fP
198 This function gets called by libcurl as soon as it needs to read data in order
199 to send it to the peer. The data area pointed at by the pointer \fIptr\fP may
200 be filled with at most \fIsize\fP multiplied with \fInmemb\fP number of
201 bytes. Your function must return the actual number of bytes that you stored in
202 that memory area. Returning 0 will signal end-of-file to the library and cause
203 it to stop the current transfer.
204
205 If you stop the current transfer by returning 0 "pre-maturely" (i.e before the
206 server expected it, like when you've said you will upload N bytes and you
207 upload less than N bytes), you may experience that the server "hangs" waiting
208 for the rest of the data that won't come.
209
210 The read callback may return \fICURL_READFUNC_ABORT\fP to stop the current
211 operation immediately, resulting in a \fICURLE_ABORTED_BY_CALLBACK\fP error
212 code from the transfer (Added in 7.12.1)
213
214 From 7.18.0, the function can return CURL_READFUNC_PAUSE which then will cause
215 reading from this connection to become paused. See \fIcurl_easy_pause(3)\fP
216 for further details.
217
218 \fBBugs\fP: when doing TFTP uploads, you must return the exact amount of data
219 that the callback wants, or it will be considered the final packet by the
220 server end and the transfer will end there.
221
222 If you set this callback pointer to NULL, or don't set it at all, the default
223 internal read function will be used. It is doing an fread() on the FILE *
224 userdata set with \fICURLOPT_READDATA\fP.
225 .IP CURLOPT_READDATA
226 Data pointer to pass to the file read function. If you use the
227 \fICURLOPT_READFUNCTION\fP option, this is the pointer you'll get as input. If
228 you don't specify a read callback but instead rely on the default internal
229 read function, this data must be a valid readable FILE *.
230
231 If you're using libcurl as a win32 DLL, you MUST use a
232 \fICURLOPT_READFUNCTION\fP if you set this option.
233
234 This option was also known by the older name \fICURLOPT_INFILE\fP, the name
235 \fICURLOPT_READDATA\fP was introduced in 7.9.7.
236 .IP CURLOPT_IOCTLFUNCTION
237 Pass a pointer to a function that matches the following prototype:
238 \fBcurlioerr function(CURL *handle, int cmd, void *clientp);\fP. This function
239 gets called by libcurl when something special I/O-related needs to be done
240 that the library can't do by itself. For now, rewinding the read data stream
241 is the only action it can request. The rewinding of the read data stream may
242 be necessary when doing a HTTP PUT or POST with a multi-pass authentication
243 method.  (Option added in 7.12.3).
244
245 Use \fICURLOPT_SEEKFUNCTION\fP instead to provide seeking!
246 .IP CURLOPT_IOCTLDATA
247 Pass a pointer that will be untouched by libcurl and passed as the 3rd
248 argument in the ioctl callback set with \fICURLOPT_IOCTLFUNCTION\fP.  (Option
249 added in 7.12.3)
250 .IP CURLOPT_SEEKFUNCTION
251 Pass a pointer to a function that matches the following prototype: \fBint
252 function(void *instream, curl_off_t offset, int origin);\fP This function gets
253 called by libcurl to seek to a certain position in the input stream and can be
254 used to fast forward a file in a resumed upload (instead of reading all
255 uploaded bytes with the normal read function/callback). It is also called to
256 rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication
257 method. The function shall work like "fseek" or "lseek" and accepted SEEK_SET,
258 SEEK_CUR and SEEK_END as argument for origin, although (in 7.18.0) libcurl
259 only passes SEEK_SET. The callback must return 0 (CURL_SEEKFUNC_OK) on
260 success, 1 (CURL_SEEKFUNC_FAIL) to cause the upload operation to fail or 2
261 (CURL_SEEKFUNC_CANTSEEK) to indicate that while the seek failed, libcurl is
262 free to work around the problem if possible. The latter can sometimes be done
263 by instead reading from the input or similar.
264
265 If you forward the input arguments directly to "fseek" or "lseek", note that
266 the data type for \fIoffset\fP is not the same as defined for curl_off_t on
267 many systems! (Option added in 7.18.0)
268 .IP CURLOPT_SEEKDATA
269 Data pointer to pass to the file seek function. If you use the
270 \fICURLOPT_SEEKFUNCTION\fP option, this is the pointer you'll get as input. If
271 you don't specify a seek callback, NULL is passed. (Option added in 7.18.0)
272 .IP CURLOPT_SOCKOPTFUNCTION
273 Pass a pointer to a function that matches the following prototype: \fBint
274 function(void *clientp, curl_socket_t curlfd, curlsocktype purpose);\fP. This
275 function gets called by libcurl after the socket() call but before the
276 connect() call. The callback's \fIpurpose\fP argument identifies the exact
277 purpose for this particular socket, and currently only one value is supported:
278 \fICURLSOCKTYPE_IPCXN\fP for the primary connection (meaning the control
279 connection in the FTP case). Future versions of libcurl may support more
280 purposes. It passes the newly created socket descriptor so additional
281 setsockopt() calls can be done at the user's discretion.  Return 0 (zero) from
282 the callback on success. Return 1 from the callback function to signal an
283 unrecoverable error to the library and it will close the socket and return
284 \fICURLE_COULDNT_CONNECT\fP.  (Option added in 7.16.0)
285
286 Added in 7.21.5, the callback function may return
287 \fICURL_SOCKOPT_ALREADY_CONNECTED\fP, which tells libcurl that the socket is
288 in fact already connected and then libcurl will not attempt to connect it.
289 .IP CURLOPT_SOCKOPTDATA
290 Pass a pointer that will be untouched by libcurl and passed as the first
291 argument in the sockopt callback set with \fICURLOPT_SOCKOPTFUNCTION\fP.
292 (Option added in 7.16.0)
293 .IP CURLOPT_OPENSOCKETFUNCTION
294 Pass a pointer to a function that matches the following prototype:
295 \fBcurl_socket_t function(void *clientp, curlsocktype purpose, struct
296 curl_sockaddr *address);\fP. This function gets called by libcurl instead of
297 the \fIsocket(2)\fP call. The callback's \fIpurpose\fP argument identifies the
298 exact purpose for this particular socket: \fICURLSOCKTYPE_IPCXN\fP is for IP
299 based connections. Future versions of libcurl may support more purposes. It
300 passes the resolved peer address as a \fIaddress\fP argument so the callback
301 can modify the address or refuse to connect at all. The callback function
302 should return the socket or \fICURL_SOCKET_BAD\fP in case no connection could
303 be established or another error was detected. Any additional
304 \fIsetsockopt(2)\fP calls can be done on the socket at the user's discretion.
305 \fICURL_SOCKET_BAD\fP return value from the callback function will signal an
306 unrecoverable error to the library and it will return
307 \fICURLE_COULDNT_CONNECT\fP.  This return code can be used for IP address
308 blacklisting.  The default behavior is:
309 .nf
310    return socket(addr->family, addr->socktype, addr->protocol);
311 .fi
312 (Option added in 7.17.1.)
313 .IP CURLOPT_OPENSOCKETDATA
314 Pass a pointer that will be untouched by libcurl and passed as the first
315 argument in the opensocket callback set with \fICURLOPT_OPENSOCKETFUNCTION\fP.
316 (Option added in 7.17.1.)
317 .IP CURLOPT_CLOSESOCKETFUNCTION
318 Pass a pointer to a function that matches the following prototype: \fBint
319 function(void *clientp, curl_socket_t item);\fP. This function gets called by
320 libcurl instead of the \fIclose(3)\fP or \fIclosesocket(3)\fP call when
321 sockets are closed (not for any other file descriptors). This is pretty much
322 the reverse to the \fICURLOPT_OPENSOCKETFUNCTION\fP option. Return 0 to signal
323 success and 1 if there was an error.  (Option added in 7.21.7)
324 .IP CURLOPT_CLOSESOCKETDATA
325 Pass a pointer that will be untouched by libcurl and passed as the first
326 argument in the closesocket callback set with
327 \fICURLOPT_CLOSESOCKETFUNCTION\fP.  (Option added in 7.21.7)
328 .IP CURLOPT_PROGRESSFUNCTION
329 Pass a pointer to a function that matches the following prototype: \fBint
330 function(void *clientp, double dltotal, double dlnow, double ultotal, double
331 ulnow); \fP. This function gets called by libcurl instead of its internal
332 equivalent with a frequent interval during operation (roughly once per second
333 or sooner) no matter if data is being transferred or not.  Unknown/unused
334 argument values passed to the callback will be set to zero (like if you only
335 download data, the upload size will remain 0). Returning a non-zero value from
336 this callback will cause libcurl to abort the transfer and return
337 \fICURLE_ABORTED_BY_CALLBACK\fP.
338
339 If you transfer data with the multi interface, this function will not be
340 called during periods of idleness unless you call the appropriate libcurl
341 function that performs transfers.
342
343 \fICURLOPT_NOPROGRESS\fP must be set to 0 to make this function actually
344 get called.
345 .IP CURLOPT_PROGRESSDATA
346 Pass a pointer that will be untouched by libcurl and passed as the first
347 argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION\fP.
348 .IP CURLOPT_HEADERFUNCTION
349 Pass a pointer to a function that matches the following prototype:
350 \fBsize_t function( void *ptr, size_t size, size_t nmemb, void
351 *userdata);\fP. This function gets called by libcurl as soon as it has
352 received header data. The header callback will be called once for each header
353 and only complete header lines are passed on to the callback. Parsing headers
354 is very easy using this. The size of the data pointed to by \fIptr\fP is
355 \fIsize\fP multiplied with \fInmemb\fP. Do not assume that the header line is
356 zero terminated! The pointer named \fIuserdata\fP is the one you set with the
357 \fICURLOPT_WRITEHEADER\fP option. The callback function must return the number
358 of bytes actually taken care of. If that amount differs from the amount passed
359 to your function, it'll signal an error to the library. This will abort the
360 transfer and return \fICURL_WRITE_ERROR\fP.
361
362 A complete HTTP header that is passed to this function can be up to
363 \fICURL_MAX_HTTP_HEADER\fP (100K) bytes.
364
365 If this option is not set, or if it is set to NULL, but
366 \fICURLOPT_HEADERDATA\fP (\fICURLOPT_WRITEHEADER\fP) is set to anything but
367 NULL, the function used to accept response data will be used instead. That is,
368 it will be the function specified with \fICURLOPT_WRITEFUNCTION\fP, or if it
369 is not specified or NULL - the default, stream-writing function.
370
371 It's important to note that the callback will be invoked for the headers of
372 all responses received after initiating a request and not just the final
373 response. This includes all responses which occur during authentication
374 negotiation. If you need to operate on only the headers from the final
375 response, you will need to collect headers in the callback yourself and use
376 HTTP status lines, for example, to delimit response boundaries.
377
378 When a server sends a chunked encoded transfer, it may contain a trailer. That
379 trailer is identical to a HTTP header and if such a trailer is received it is
380 passed to the application using this callback as well. There are several ways
381 to detect it being a trailer and not an ordinary header: 1) it comes after the
382 response-body. 2) it comes after the final header line (CR LF) 3) a Trailer:
383 header among the regular response-headers mention what header(s) to expect in
384 the trailer.
385
386 For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get
387 called with the server responses to the commands that libcurl sends.
388 .IP CURLOPT_WRITEHEADER
389 (This option is also known as \fBCURLOPT_HEADERDATA\fP) Pass a pointer to be
390 used to write the header part of the received data to. If you don't use
391 \fICURLOPT_WRITEFUNCTION\fP or \fICURLOPT_HEADERFUNCTION\fP to take care of
392 the writing, this must be a valid FILE * as the internal default will then be
393 a plain fwrite(). See also the \fICURLOPT_HEADERFUNCTION\fP option above on
394 how to set a custom get-all-headers callback.
395 .IP CURLOPT_DEBUGFUNCTION
396 Pass a pointer to a function that matches the following prototype: \fBint
397 curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *);\fP
398 \fICURLOPT_DEBUGFUNCTION\fP replaces the standard debug function used when
399 \fICURLOPT_VERBOSE \fP is in effect. This callback receives debug information,
400 as specified with the \fBcurl_infotype\fP argument. This function must return
401 0.  The data pointed to by the char * passed to this function WILL NOT be zero
402 terminated, but will be exactly of the size as told by the size_t argument.
403
404 Available curl_infotype values:
405 .RS
406 .IP CURLINFO_TEXT
407 The data is informational text.
408 .IP CURLINFO_HEADER_IN
409 The data is header (or header-like) data received from the peer.
410 .IP CURLINFO_HEADER_OUT
411 The data is header (or header-like) data sent to the peer.
412 .IP CURLINFO_DATA_IN
413 The data is protocol data received from the peer.
414 .IP CURLINFO_DATA_OUT
415 The data is protocol data sent to the peer.
416 .RE
417 .IP CURLOPT_DEBUGDATA
418 Pass a pointer to whatever you want passed in to your
419 \fICURLOPT_DEBUGFUNCTION\fP in the last void * argument. This pointer is not
420 used by libcurl, it is only passed to the callback.
421 .IP CURLOPT_SSL_CTX_FUNCTION
422 This option does only function for libcurl powered by OpenSSL. If libcurl was
423 built against another SSL library, this functionality is absent.
424
425 Pass a pointer to a function that matches the following prototype:
426 \fBCURLcode sslctxfun(CURL *curl, void *sslctx, void *parm);\fP This function
427 gets called by libcurl just before the initialization of a SSL connection
428 after having processed all other SSL related options to give a last chance to
429 an application to modify the behaviour of openssl's ssl initialization. The
430 \fIsslctx\fP parameter is actually a pointer to an openssl \fISSL_CTX\fP. If
431 an error is returned no attempt to establish a connection is made and the
432 perform operation will return the error code from this callback function.  Set
433 the \fIparm\fP argument with the \fICURLOPT_SSL_CTX_DATA\fP option. This
434 option was introduced in 7.11.0.
435
436 This function will get called on all new connections made to a server, during
437 the SSL negotiation. The SSL_CTX pointer will be a new one every time.
438
439 To use this properly, a non-trivial amount of knowledge of the openssl
440 libraries is necessary. For example, using this function allows you to use
441 openssl callbacks to add additional validation code for certificates, and even
442 to change the actual URI of a HTTPS request (example used in the lib509 test
443 case).  See also the example section for a replacement of the key, certificate
444 and trust file settings.
445 .IP CURLOPT_SSL_CTX_DATA
446 Data pointer to pass to the ssl context callback set by the option
447 \fICURLOPT_SSL_CTX_FUNCTION\fP, this is the pointer you'll get as third
448 parameter, otherwise \fBNULL\fP. (Added in 7.11.0)
449 .IP CURLOPT_CONV_TO_NETWORK_FUNCTION
450 .IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
451 .IP CURLOPT_CONV_FROM_UTF8_FUNCTION
452 Pass a pointer to a function that matches the following prototype:
453 \fBCURLcode function(char *ptr, size_t length);\fP
454
455 These three options apply to non-ASCII platforms only.  They are available
456 only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built. When
457 this is the case, \fIcurl_version_info(3)\fP will return the CURL_VERSION_CONV
458 feature bit set.
459
460 The data to be converted is in a buffer pointed to by the ptr parameter.  The
461 amount of data to convert is indicated by the length parameter.  The converted
462 data overlays the input data in the buffer pointed to by the ptr parameter.
463 CURLE_OK should be returned upon successful conversion.  A CURLcode return
464 value defined by curl.h, such as CURLE_CONV_FAILED, should be returned if an
465 error was encountered.
466
467 \fBCURLOPT_CONV_TO_NETWORK_FUNCTION\fP and
468 \fBCURLOPT_CONV_FROM_NETWORK_FUNCTION\fP convert between the host encoding and
469 the network encoding.  They are used when commands or ASCII data are
470 sent/received over the network.
471
472 \fBCURLOPT_CONV_FROM_UTF8_FUNCTION\fP is called to convert from UTF8 into the
473 host encoding.  It is required only for SSL processing.
474
475 If you set a callback pointer to NULL, or don't set it at all, the built-in
476 libcurl iconv functions will be used.  If HAVE_ICONV was not defined when
477 libcurl was built, and no callback has been established, conversion will
478 return the CURLE_CONV_REQD error code.
479
480 If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
481 For example:
482
483  \&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
484
485 The iconv code in libcurl will default the network and UTF8 codeset names as
486 follows:
487
488  \&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
489
490  \&#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8"
491
492 You will need to override these definitions if they are different on your
493 system.
494 .IP CURLOPT_INTERLEAVEFUNCTION
495 Pass a pointer to a function that matches the following prototype:
496 \fBsize_t function( void *ptr, size_t size, size_t nmemb, void
497 *userdata)\fP. This function gets called by libcurl as soon as it has received
498 interleaved RTP data. This function gets called for each $ block and therefore
499 contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl
500 writes the interleaved header as well as the included data for each call. The
501 first byte is always an ASCII dollar sign. The dollar sign is followed by a
502 one byte channel identifier and then a 2 byte integer length in network byte
503 order. See \fIRFC2326 Section 10.12\fP for more information on how RTP
504 interleaving behaves. If unset or set to NULL, curl will use the default write
505 function.
506
507 Interleaved RTP poses some challenges for the client application. Since the
508 stream data is sharing the RTSP control connection, it is critical to service
509 the RTP in a timely fashion. If the RTP data is not handled quickly,
510 subsequent response processing may become unreasonably delayed and the
511 connection may close. The application may use \fICURL_RTSPREQ_RECEIVE\fP to
512 service RTP data when no requests are desired. If the application makes a
513 request, (e.g.  \fICURL_RTSPREQ_PAUSE\fP) then the response handler will
514 process any pending RTP data before marking the request as finished.  (Added
515 in 7.20.0)
516 .IP CURLOPT_INTERLEAVEDATA
517 This is the userdata pointer that will be passed to
518 \fICURLOPT_INTERLEAVEFUNCTION\fP when interleaved RTP data is received. (Added
519 in 7.20.0)
520 .IP CURLOPT_CHUNK_BGN_FUNCTION
521 Pass a pointer to a function that matches the following prototype:
522 \fBlong function (const void *transfer_info, void *ptr, int remains)\fP. This
523 function gets called by libcurl before a part of the stream is going to be
524 transferred (if the transfer supports chunks).
525
526 This callback makes sense only when using the \fICURLOPT_WILDCARDMATCH\fP
527 option for now.
528
529 The target of transfer_info parameter is a "feature depended" structure. For
530 the FTP wildcard download, the target is curl_fileinfo structure (see
531 \fIcurl/curl.h\fP).  The parameter ptr is a pointer given by
532 \fICURLOPT_CHUNK_DATA\fP. The parameter remains contains number of chunks
533 remaining per the transfer. If the feature is not available, the parameter has
534 zero value.
535
536 Return \fICURL_CHUNK_BGN_FUNC_OK\fP if everything is fine,
537 \fICURL_CHUNK_BGN_FUNC_SKIP\fP if you want to skip the concrete chunk or
538 \fICURL_CHUNK_BGN_FUNC_FAIL\fP to tell libcurl to stop if some error occurred.
539 (This was added in 7.21.0)
540 .IP CURLOPT_CHUNK_END_FUNCTION
541 Pass a pointer to a function that matches the following prototype:
542 \fBlong function(void *ptr)\fP. This function gets called by libcurl as soon
543 as a part of the stream has been transferred (or skipped).
544
545 Return \fICURL_CHUNK_END_FUNC_OK\fP if everything is fine or
546 \fBCURL_CHUNK_END_FUNC_FAIL\fP to tell the lib to stop if some error occurred.
547 (This was added in 7.21.0)
548 .IP CURLOPT_CHUNK_DATA
549 Pass a pointer that will be untouched by libcurl and passed as the ptr
550 argument to the \fICURL_CHUNK_BGN_FUNTION\fP and \fICURL_CHUNK_END_FUNTION\fP.
551 (This was added in 7.21.0)
552 .IP CURLOPT_FNMATCH_FUNCTION
553 Pass a pointer to a function that matches the following prototype: \fBint
554 function(void *ptr, const char *pattern, const char *string)\fP prototype (see
555 \fIcurl/curl.h\fP). It is used internally for the wildcard matching feature.
556
557 Return \fICURL_FNMATCHFUNC_MATCH\fP if pattern matches the string,
558 \fICURL_FNMATCHFUNC_NOMATCH\fP if not or \fICURL_FNMATCHFUNC_FAIL\fP if an
559 error occurred.  (This was added in 7.21.0)
560 .IP CURLOPT_FNMATCH_DATA
561 Pass a pointer that will be untouched by libcurl and passed as the ptr argument
562 to the \fICURL_FNMATCH_FUNCTION\fP. (This was added in 7.21.0)
563 .SH ERROR OPTIONS
564 .IP CURLOPT_ERRORBUFFER
565 Pass a char * to a buffer that the libcurl may store human readable error
566 messages in. This may be more helpful than just the return code from
567 \fIcurl_easy_perform\fP. The buffer must be at least CURL_ERROR_SIZE big.
568 Although this argument is a 'char *', it does not describe an input string.
569 Therefore the (probably undefined) contents of the buffer is NOT copied by the
570 library. You must keep the associated storage available until libcurl no
571 longer needs it. Failing to do so will cause very odd behavior or even
572 crashes. libcurl will need it until you call \fIcurl_easy_cleanup(3)\fP or you
573 set the same option again to use a different pointer.
574
575 Use \fICURLOPT_VERBOSE\fP and \fICURLOPT_DEBUGFUNCTION\fP to better
576 debug/trace why errors happen.
577
578 If the library does not return an error, the buffer may not have been
579 touched. Do not rely on the contents in those cases.
580
581 .IP CURLOPT_STDERR
582 Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
583 when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
584 .IP CURLOPT_FAILONERROR
585 A parameter set to 1 tells the library to fail silently if the HTTP code
586 returned is equal to or larger than 400. The default action would be to return
587 the page normally, ignoring that code.
588
589 This method is not fail-safe and there are occasions where non-successful
590 response codes will slip through, especially when authentication is involved
591 (response codes 401 and 407).
592
593 You might get some amounts of headers transferred before this situation is
594 detected, like when a "100-continue" is received as a response to a
595 POST/PUT and a 401 or 407 is received immediately afterwards.
596 .SH NETWORK OPTIONS
597 .IP CURLOPT_URL
598 Pass in a pointer to the actual URL to deal with. The parameter should be a
599 char * to a zero terminated string which must be URL-encoded in the following
600 format:
601
602 scheme://host:port/path
603
604 For a greater explanation of the format please see RFC3986.
605
606 If the given URL lacks the scheme, or protocol, part ("http://" or "ftp://"
607 etc), libcurl will attempt to resolve which protocol to use based on the
608 given host mame. If the protocol is not supported, libcurl will return
609 (\fICURLE_UNSUPPORTED_PROTOCOL\fP) when you call \fIcurl_easy_perform(3)\fP
610 or \fIcurl_multi_perform(3)\fP. Use \fIcurl_version_info(3)\fP for detailed
611 information on which protocols are supported.
612
613 The host part of the URL contains the address of the server that you want to
614 connect to. This can be the fully qualified domain name of the server, the
615 local network name of the machine on your network or the IP address of the
616 server or machine represented by either an IPv4 or IPv6 address. For example:
617
618 http://www.example.com/
619
620 http://hostname/
621
622 http://192.168.0.1/
623
624 http://[2001:1890:1112:1::20]/
625
626 It is also possible to specify the user name and password as part of the
627 host, for some protocols, when connecting to servers that require
628 authentication.
629
630 For example the following types of authentication support this:
631
632 http://user:password@www.example.com
633
634 ftp://user:password@ftp.example.com
635
636 pop3://user:password@mail.example.com
637
638 The port is optional and when not specified libcurl will use the default port
639 based on the determined or specified protocol: 80 for HTTP, 21 for FTP and 25
640 for SMTP, etc. The following examples show how to specify the port:
641
642 http://www.example.com:8080/ - This will connect to a web server using port
643 8080 rather than 80.
644
645 smtp://mail.example.com:587/ - This will connect to a SMTP server on the
646 alternative mail port.
647
648 The path part of the URL is protocol specific and whilst some examples are
649 given below this list is not conclusive:
650
651 .B HTTP
652
653 The path part of a HTTP request specifies the file to retrieve and from what
654 directory. If the directory is not specified then the web server's root
655 directory is used. If the file is omitted then the default document will be
656 retrieved for either the directory specified or the root directory. The
657 exact resource returned for each URL is entirely dependent on the server's
658 configuration.
659
660 http://www.example.com - This gets the main page from the web server.
661
662 http://www.example.com/index.html - This returns the main page by explicitly
663 requesting it.
664
665 http://www.example.com/contactus/ - This returns the default document from
666 the contactus directory.
667
668 .B FTP
669
670 The path part of an FTP request specifies the file to retrieve and from what
671 directory. If the file part is omitted then libcurl downloads the directory
672 listing for the directory specified. If the directory is omitted then
673 the directory listing for the root / home directory will be returned.
674
675 ftp://ftp.example.com - This retrieves the directory listing for the root
676 directory.
677
678 ftp://ftp.example.com/readme.txt - This downloads the file readme.txt from the
679 root directory.
680
681 ftp://ftp.example.com/libcurl/readme.txt - This downloads readme.txt from the
682 libcurl directory.
683
684 ftp://user:password@ftp.example.com/readme.txt - This retrieves the readme.txt
685 file from the user's home directory. When a username and password is
686 specified, everything that is specified in the path part is relative to the
687 user's home directory. To retrieve files from the root directory or a
688 directory underneath the root directory then the absolute path must be
689 specified by prepending an additional forward slash to the beginning of the
690 path.
691
692 ftp://user:password@ftp.example.com//readme.txt - This retrieves the readme.txt
693 from the root directory when logging in as a specified user.
694
695 .B SMTP
696
697 The path part of a SMTP request specifies the host name to present during
698 communication with the mail server. If the path is omitted then libcurl will
699 attempt to resolve the local computer's host name. However, this may not
700 return the fully qualified domain name that is required by some mail servers
701 and specifying this path allows you to set an alternative name, such as
702 your machine's fully qualified domain name, which you might have obtained
703 from an external function such as gethostname or getaddrinfo.
704
705 smtp://mail.example.com - This connects to the mail server at example.com and
706 sends your local computer's host name in the HELO / EHLO command.
707
708 smtp://mail.example.com/client.example.com - This will send client.example.com in
709 the HELO / EHLO command to the mail server at example.com.
710
711 .B POP3
712
713 The path part of a POP3 request specifies the mailbox (message) to retrieve.
714 If the mailbox is not specified then a list of waiting messages is returned
715 instead.
716
717 pop3://user:password@mail.example.com - This lists the available messages
718 pop3://user:password@mail.example.com/1 - This retrieves the first message
719
720 .B SCP
721
722 The path part of a SCP request specifies the file to retrieve and from what
723 directory. The file part may not be omitted. The file is taken as an absolute
724 path from the root directory on the server. To specify a path relative to
725 the user's home directory on the server, prepend ~/ to the path portion.
726 If the user name is not embedded in the URL, it can be set with the
727 \fICURLOPT_USERPWD\fP or \fBCURLOPT_USERNAME\fP option.
728
729 scp://user@example.com/etc/issue - This specifies the file /etc/issue
730
731 scp://example.com/~/my-file - This specifies the file my-file in the
732 user's home directory on the server
733
734 .B SFTP
735
736 The path part of a SFTP request specifies the file to retrieve and from what
737 directory. If the file part is omitted then libcurl downloads the directory
738 listing for the directory specified.  If the path ends in a / then a directory
739 listing is returned instead of a file.  If the path is omitted entirely then
740 the directory listing for the root / home directory will be returned.
741 If the user name is not embedded in the URL, it can be set with the
742 \fICURLOPT_USERPWD\fP or \fBCURLOPT_USERNAME\fP option.
743
744 sftp://user:password@example.com/etc/issue - This specifies the file
745 /etc/issue
746
747 sftp://user@example.com/~/my-file - This specifies the file my-file in the
748 user's home directory
749
750 sftp://ssh.example.com/~/Documents/ - This requests a directory listing
751 of the Documents directory under the user's home directory
752
753 .B LDAP
754
755 The path part of a LDAP request can be used to specify the: Distinguished
756 Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field
757 is separated by a question mark and when that field is not required an empty
758 string with the question mark separator should be included.
759
760 ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search
761 with the DN as My Organisation.
762
763 ldap://ldap.example.com/o=My%20Organisation?postalAddress - This will perform
764 the same search but will only return postalAddress attributes.
765
766 ldap://ldap.example.com/?rootDomainNamingContext - This specifies an empty DN
767 and requests information about the rootDomainNamingContext attribute for an
768 Active Directory server.
769
770 For more information about the individual components of a LDAP URL please
771 see RFC4516.
772
773 .B NOTES
774
775 Starting with version 7.20.0, the fragment part of the URI will not be sent as
776 part of the path, which was previously the case.
777
778 \fICURLOPT_URL\fP is the only option that \fBmust\fP be set before
779 \fIcurl_easy_perform(3)\fP is called.
780
781 \fICURLOPT_PROTOCOLS\fP can be used to limit what protocols libcurl will use
782 for this transfer, independent of what libcurl has been compiled to
783 support. That may be useful if you accept the URL from an external source and
784 want to limit the accessibility.
785 .IP CURLOPT_PROTOCOLS
786 Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
787 limits what protocols libcurl may use in the transfer. This allows you to have
788 a libcurl built to support a wide range of protocols but still limit specific
789 transfers to only be allowed to use a subset of them. By default libcurl will
790 accept all protocols it supports. See also
791 \fICURLOPT_REDIR_PROTOCOLS\fP. (Added in 7.19.4)
792 .IP CURLOPT_REDIR_PROTOCOLS
793 Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
794 limits what protocols libcurl may use in a transfer that it follows to in a
795 redirect when \fICURLOPT_FOLLOWLOCATION\fP is enabled. This allows you to
796 limit specific transfers to only be allowed to use a subset of protocols in
797 redirections. By default libcurl will allow all protocols except for FILE and
798 SCP. This is a difference compared to pre-7.19.4 versions which
799 unconditionally would follow to all protocols supported. (Added in 7.19.4)
800 .IP CURLOPT_PROXY
801 Set HTTP proxy to use. The parameter should be a char * to a zero terminated
802 string holding the host name or dotted IP address. To specify port number in
803 this string, append :[port] to the end of the host name. The proxy string may
804 be prefixed with [protocol]:// since any such prefix will be ignored. The
805 proxy's port number may optionally be specified with the separate option. If
806 not specified, libcurl will default to using port 1080 for proxies.
807 \fICURLOPT_PROXYPORT\fP.
808
809 When you tell the library to use a HTTP proxy, libcurl will transparently
810 convert operations to HTTP even if you specify an FTP URL etc. This may have
811 an impact on what other features of the library you can use, such as
812 \fICURLOPT_QUOTE\fP and similar FTP specifics that don't work unless you
813 tunnel through the HTTP proxy. Such tunneling is activated with
814 \fICURLOPT_HTTPPROXYTUNNEL\fP.
815
816 libcurl respects the environment variables \fBhttp_proxy\fP, \fBftp_proxy\fP,
817 \fBall_proxy\fP etc, if any of those are set. The \fICURLOPT_PROXY\fP option
818 does however override any possibly set environment variables.
819
820 Setting the proxy string to "" (an empty string) will explicitly disable the
821 use of a proxy, even if there is an environment variable set for it.
822
823 Since 7.14.1, the proxy host string given in environment variables can be
824 specified the exact same way as the proxy can be set with \fICURLOPT_PROXY\fP,
825 include protocol prefix (http://) and embedded user + password.
826
827 Since 7.21.7, the proxy string may be specified with a protocol:// prefix to
828 specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
829 socks5h:// (the last one to enable socks5 and asking the proxy to do the
830 resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type) to request the
831 specific SOCKS version to be used. No protocol specified, http:// and all
832 others will be treated as HTTP proxies.
833 .IP CURLOPT_PROXYPORT
834 Pass a long with this option to set the proxy port to connect to unless it is
835 specified in the proxy string \fICURLOPT_PROXY\fP.
836 .IP CURLOPT_PROXYTYPE
837 Pass a long with this option to set type of the proxy. Available options for
838 this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_HTTP_1_0\fP (added in 7.19.4),
839 \fICURLPROXY_SOCKS4\fP (added in 7.10), \fICURLPROXY_SOCKS5\fP,
840 \fICURLPROXY_SOCKS4A\fP (added in 7.18.0) and \fICURLPROXY_SOCKS5_HOSTNAME\fP
841 (added in 7.18.0). The HTTP type is default. (Added in 7.10)
842
843 If you set \fBCURLOPT_PROXYTYPE\fP to \fICURLPROXY_HTTP_1_0\fP, it will only
844 affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version
845 used for "regular" HTTP requests is instead controlled with
846 \fICURLOPT_HTTP_VERSION\fP.
847 .IP CURLOPT_NOPROXY
848 Pass a pointer to a zero terminated string. The string consists of a comma
849 separated list of host names that do not require a proxy to get reached, even
850 if one is specified.  The only wildcard available is a single * character,
851 which matches all hosts, and effectively disables the proxy. Each name in this
852 list is matched as either a domain which contains the hostname, or the
853 hostname itself. For example, example.com would match example.com,
854 example.com:80, and www.example.com, but not www.notanexample.com.  (Added in
855 7.19.4)
856 .IP CURLOPT_HTTPPROXYTUNNEL
857 Set the parameter to 1 to make the library tunnel all operations through a
858 given HTTP proxy. There is a big difference between using a proxy and to
859 tunnel through it. If you don't know what this means, you probably don't want
860 this tunneling option.
861 .IP CURLOPT_SOCKS5_GSSAPI_SERVICE
862 Pass a char * as parameter to a string holding the name of the service. The
863 default service name for a SOCKS5 server is rcmd/server-fqdn. This option
864 allows you to change it. (Added in 7.19.4)
865 .IP CURLOPT_SOCKS5_GSSAPI_NEC
866 Pass a long set to 1 to enable or 0 to disable. As part of the gssapi
867 negotiation a protection mode is negotiated. The RFC1961 says in section
868 4.3/4.4 it should be protected, but the NEC reference implementation does not.
869 If enabled, this option allows the unprotected exchange of the protection mode
870 negotiation. (Added in 7.19.4).
871 .IP CURLOPT_INTERFACE
872 Pass a char * as parameter. This sets the interface name to use as outgoing
873 network interface. The name can be an interface name, an IP address, or a host
874 name.
875
876 Starting with 7.24.0: If the parameter starts with "if!" then it is treated as
877 only as interface name and no attempt will ever be named to do treat it as an
878 IP address or to do name resolution on it.  If the parameter starts with
879 \&"host!" it is treated as either an IP address or a hostname.  Hostnames are
880 resolved synchronously.  Using the if! format is highly recommended when using
881 the multi interfaces to avoid allowing the code to block.  If "if!" is
882 specified but the parameter does not match an existing interface,
883 CURLE_INTERFACE_FAILED is returned.
884 .IP CURLOPT_LOCALPORT
885 Pass a long. This sets the local port number of the socket used for
886 connection. This can be used in combination with \fICURLOPT_INTERFACE\fP and
887 you are recommended to use \fICURLOPT_LOCALPORTRANGE\fP as well when this is
888 set. Valid port numbers are 1 - 65535. (Added in 7.15.2)
889 .IP CURLOPT_LOCALPORTRANGE
890 Pass a long. This is the number of attempts libcurl will make to find a
891 working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
892 and adds one to the number for each retry. Setting this to 1 or below will
893 make libcurl do only one try for the exact port number. Port numbers by nature
894 are scarce resources that will be busy at times so setting this value to
895 something too low might cause unnecessary connection setup failures. (Added in
896 7.15.2)
897 .IP CURLOPT_DNS_CACHE_TIMEOUT
898 Pass a long, this sets the timeout in seconds. Name resolves will be kept in
899 memory for this number of seconds. Set to zero to completely disable
900 caching, or set to -1 to make the cached entries remain forever. By default,
901 libcurl caches this info for 60 seconds.
902
903 The name resolve functions of various libc implementations don't re-read name
904 server information unless explicitly told so (for example, by calling
905 \fIres_init(3)\fP). This may cause libcurl to keep using the older server even
906 if DHCP has updated the server info, and this may look like a DNS cache issue
907 to the casual libcurl-app user.
908 .IP CURLOPT_DNS_USE_GLOBAL_CACHE
909 Pass a long. If the value is 1, it tells curl to use a global DNS cache
910 that will survive between easy handle creations and deletions. This is not
911 thread-safe and this will use a global variable.
912
913 \fBWARNING:\fP this option is considered obsolete. Stop using it. Switch over
914 to using the share interface instead! See \fICURLOPT_SHARE\fP and
915 \fIcurl_share_init(3)\fP.
916 .IP CURLOPT_BUFFERSIZE
917 Pass a long specifying your preferred size (in bytes) for the receive buffer
918 in libcurl.  The main point of this would be that the write callback gets
919 called more often and with smaller chunks. This is just treated as a request,
920 not an order. You cannot be guaranteed to actually get the given size. (Added
921 in 7.10)
922
923 This size is by default set as big as possible (CURL_MAX_WRITE_SIZE), so it
924 only makes sense to use this option if you want it smaller.
925 .IP CURLOPT_PORT
926 Pass a long specifying what remote port number to connect to, instead of the
927 one specified in the URL or the default port for the used protocol.
928 .IP CURLOPT_TCP_NODELAY
929 Pass a long specifying whether the TCP_NODELAY option is to be set or cleared
930 (1 = set, 0 = clear). The option is cleared by default. This will have no
931 effect after the connection has been established.
932
933 Setting this option will disable TCP's Nagle algorithm. The purpose of this
934 algorithm is to try to minimize the number of small packets on the network
935 (where "small packets" means TCP segments less than the Maximum Segment Size
936 (MSS) for the network).
937
938 Maximizing the amount of data sent per TCP segment is good because it
939 amortizes the overhead of the send. However, in some cases (most notably
940 telnet or rlogin) small segments may need to be sent without delay. This is
941 less efficient than sending larger amounts of data at a time, and can
942 contribute to congestion on the network if overdone.
943 .IP CURLOPT_ADDRESS_SCOPE
944 Pass a long specifying the scope_id value to use when connecting to IPv6
945 link-local or site-local addresses. (Added in 7.19.0)
946 .IP CURLOPT_TCP_KEEPALIVE
947 Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and
948 frequency of these probes can be controlled by the \fICURLOPT_TCP_KEEPIDLE\fP
949 and \fICURLOPT_TCP_KEEPINTVL\fP options, provided the operating system supports
950 them. Set to 0 (default behavior) to disable keepalive probes (Added in
951 7.25.0).
952 .IP CURLOPT_TCP_KEEPIDLE
953 Pass a long. Sets the delay, in seconds, that the operating system will wait
954 while the connection is idle before sending keepalive probes. Not all operating
955 systems support this option. (Added in 7.25.0)
956 .IP CURLOPT_TCP_KEEPINTVL
957 Pass a long. Sets the interval, in seconds, that the operating system will wait
958 between sending keepalive probes. Not all operating systems support this
959 option. (Added in 7.25.0)
960 .SH NAMES and PASSWORDS OPTIONS (Authentication)
961 .IP CURLOPT_NETRC
962 This parameter controls the preference of libcurl between using user names and
963 passwords from your \fI~/.netrc\fP file, relative to user names and passwords
964 in the URL supplied with \fICURLOPT_URL\fP.
965
966 libcurl uses a user name (and supplied or prompted password) supplied with
967 \fICURLOPT_USERPWD\fP in preference to any of the options controlled by this
968 parameter.
969
970 Pass a long, set to one of the values described below.
971 .RS
972 .IP CURL_NETRC_OPTIONAL
973 The use of your \fI~/.netrc\fP file is optional, and information in the URL is
974 to be preferred.  The file will be scanned for the host and user name (to
975 find the password only) or for the host only, to find the first user name and
976 password after that \fImachine\fP, which ever information is not specified in
977 the URL.
978
979 Undefined values of the option will have this effect.
980 .IP CURL_NETRC_IGNORED
981 The library will ignore the file and use only the information in the URL.
982
983 This is the default.
984 .IP CURL_NETRC_REQUIRED
985 This value tells the library that use of the file is required, to ignore the
986 information in the URL, and to search the file for the host only.
987 .RE
988 Only machine name, user name and password are taken into account
989 (init macros and similar things aren't supported).
990
991 libcurl does not verify that the file has the correct properties set (as the
992 standard Unix ftp client does). It should only be readable by user.
993 .IP CURLOPT_NETRC_FILE
994 Pass a char * as parameter, pointing to a zero terminated string containing
995 the full path name to the file you want libcurl to use as .netrc file. If this
996 option is omitted, and \fICURLOPT_NETRC\fP is set, libcurl will attempt to
997 find a .netrc file in the current user's home directory. (Added in 7.10.9)
998 .IP CURLOPT_USERPWD
999 Pass a char * as parameter, which should be [user name]:[password] to use for
1000 the connection. Use \fICURLOPT_HTTPAUTH\fP to decide the authentication method.
1001
1002 When using NTLM, you can set the domain by prepending it to the user name and
1003 separating the domain and name with a forward (/) or backward slash (\\). Like
1004 this: "domain/user:password" or "domain\\user:password". Some HTTP servers (on
1005 Windows) support this style even for Basic authentication.
1006
1007 When using HTTP and \fICURLOPT_FOLLOWLOCATION\fP, libcurl might perform
1008 several requests to possibly different hosts. libcurl will only send this user
1009 and password information to hosts using the initial host name (unless
1010 \fICURLOPT_UNRESTRICTED_AUTH\fP is set), so if libcurl follows locations to
1011 other hosts it will not send the user and password to those. This is enforced
1012 to prevent accidental information leakage.
1013 .IP CURLOPT_PROXYUSERPWD
1014 Pass a char * as parameter, which should be [user name]:[password] to use for
1015 the connection to the HTTP proxy.  Use \fICURLOPT_PROXYAUTH\fP to decide
1016 the authentication method.
1017 .IP CURLOPT_USERNAME
1018 Pass a char * as parameter, which should be pointing to the zero terminated
1019 user name to use for the transfer.
1020
1021 \fBCURLOPT_USERNAME\fP sets the user name to be used in protocol
1022 authentication. You should not use this option together with the (older)
1023 CURLOPT_USERPWD option.
1024
1025 In order to specify the password to be used in conjunction with the user name
1026 use the \fICURLOPT_PASSWORD\fP option.  (Added in 7.19.1)
1027 .IP CURLOPT_PASSWORD
1028 Pass a char * as parameter, which should be pointing to the zero terminated
1029 password to use for the transfer.
1030
1031 The CURLOPT_PASSWORD option should be used in conjunction with
1032 the \fICURLOPT_USERNAME\fP option. (Added in 7.19.1)
1033 .IP CURLOPT_PROXYUSERNAME
1034 Pass a char * as parameter, which should be pointing to the zero terminated
1035 user name to use for the transfer while connecting to Proxy.
1036
1037 The CURLOPT_PROXYUSERNAME option should be used in same way as the
1038 \fICURLOPT_PROXYUSERPWD\fP is used.  In comparison to
1039 \fICURLOPT_PROXYUSERPWD\fP the CURLOPT_PROXYUSERNAME allows the username to
1040 contain a colon, like in the following example: "sip:user@example.com". The
1041 CURLOPT_PROXYUSERNAME option is an alternative way to set the user name while
1042 connecting to Proxy.  There is no meaning to use it together with the
1043 \fICURLOPT_PROXYUSERPWD\fP option.
1044
1045 In order to specify the password to be used in conjunction with the user name
1046 use the \fICURLOPT_PROXYPASSWORD\fP option.  (Added in 7.19.1)
1047 .IP CURLOPT_PROXYPASSWORD
1048 Pass a char * as parameter, which should be pointing to the zero terminated
1049 password to use for the transfer while connecting to Proxy.
1050
1051 The CURLOPT_PROXYPASSWORD option should be used in conjunction with
1052 the \fICURLOPT_PROXYUSERNAME\fP option. (Added in 7.19.1)
1053 .IP CURLOPT_HTTPAUTH
1054 Pass a long as parameter, which is set to a bitmask, to tell libcurl which
1055 authentication method(s) you want it to use. The available bits are listed
1056 below. If more than one bit is set, libcurl will first query the site to see
1057 which authentication methods it supports and then pick the best one you allow
1058 it to use. For some methods, this will induce an extra network round-trip. Set
1059 the actual name and password with the \fICURLOPT_USERPWD\fP option or
1060 with the \fICURLOPT_USERNAME\fP and the \fICURLOPT_PASSWORD\fP options.
1061 (Added in 7.10.6)
1062 .RS
1063 .IP CURLAUTH_BASIC
1064 HTTP Basic authentication. This is the default choice, and the only method
1065 that is in wide-spread use and supported virtually everywhere. This sends
1066 the user name and password over the network in plain text, easily captured by
1067 others.
1068 .IP CURLAUTH_DIGEST
1069 HTTP Digest authentication.  Digest authentication is defined in RFC2617 and
1070 is a more secure way to do authentication over public networks than the
1071 regular old-fashioned Basic method.
1072 .IP CURLAUTH_DIGEST_IE
1073 HTTP Digest authentication with an IE flavor.  Digest authentication is
1074 defined in RFC2617 and is a more secure way to do authentication over public
1075 networks than the regular old-fashioned Basic method. The IE flavor is simply
1076 that libcurl will use a special "quirk" that IE is known to have used before
1077 version 7 and that some servers require the client to use. (This define was
1078 added in 7.19.3)
1079 .IP CURLAUTH_GSSNEGOTIATE
1080 HTTP GSS-Negotiate authentication. The GSS-Negotiate (also known as plain
1081 \&"Negotiate") method was designed by Microsoft and is used in their web
1082 applications. It is primarily meant as a support for Kerberos5 authentication
1083 but may also be used along with other authentication methods. For more
1084 information see IETF draft draft-brezak-spnego-http-04.txt.
1085
1086 You need to build libcurl with a suitable GSS-API library for this to work.
1087 .IP CURLAUTH_NTLM
1088 HTTP NTLM authentication. A proprietary protocol invented and used by
1089 Microsoft. It uses a challenge-response and hash concept similar to Digest, to
1090 prevent the password from being eavesdropped.
1091
1092 You need to build libcurl with either OpenSSL, GnuTLS or NSS support for this
1093 option to work, or build libcurl on Windows.
1094 .IP CURLAUTH_NTLM_WB
1095 NTLM delegating to winbind helper. Authentication is performed by a separate
1096 binary application that is executed when needed. The name of the application
1097 is specified at compile time but is typically /usr/bin/ntlm_auth
1098 (Added in 7.22.0)
1099
1100 Note that libcurl will fork when necessary to run the winbind application and
1101 kill it when complete, calling waitpid() to await its exit when done. On POSIX
1102 operating systems, killing the process will cause a SIGCHLD signal to be
1103 raised (regardless of whether \fICURLOPT_NOSIGNAL\fP is set), which must be
1104 handled intelligently by the application. In particular, the application must
1105 not unconditionally call wait() in its SIGCHLD signal handler to avoid being
1106 subject to a race condition.  This behavior is subject to change in future
1107 versions of libcurl.
1108 .IP CURLAUTH_ANY
1109 This is a convenience macro that sets all bits and thus makes libcurl pick any
1110 it finds suitable. libcurl will automatically select the one it finds most
1111 secure.
1112 .IP CURLAUTH_ANYSAFE
1113 This is a convenience macro that sets all bits except Basic and thus makes
1114 libcurl pick any it finds suitable. libcurl will automatically select the one
1115 it finds most secure.
1116 .IP CURLAUTH_ONLY
1117 This is a meta symbol. Or this value together with a single specific auth
1118 value to force libcurl to probe for un-restricted auth and if not, only that
1119 single auth algorithm is acceptable. (Added in 7.21.3)
1120 .RE
1121 .IP CURLOPT_TLSAUTH_TYPE
1122 Pass a long as parameter, which is set to a bitmask, to tell libcurl which
1123 authentication method(s) you want it to use for TLS authentication.
1124 .RS
1125 .IP CURLOPT_TLSAUTH_SRP
1126 TLS-SRP authentication. Secure Remote Password authentication for TLS is
1127 defined in RFC5054 and provides mutual authentication if both sides have a
1128 shared secret. To use TLS-SRP, you must also set the
1129 \fICURLOPT_TLSAUTH_USERNAME\fP and \fICURLOPT_TLSAUTH_PASSWORD\fP options.
1130
1131 You need to build libcurl with GnuTLS or OpenSSL with TLS-SRP support for this
1132 to work. (Added in 7.21.4)
1133 .RE
1134 .IP CURLOPT_TLSAUTH_USERNAME
1135 Pass a char * as parameter, which should point to the zero terminated username
1136 to use for the TLS authentication method specified with the
1137 \fICURLOPT_TLSAUTH_TYPE\fP option. Requires that the
1138 \fICURLOPT_TLS_PASSWORD\fP option also be set. (Added in 7.21.4)
1139 .IP CURLOPT_TLSAUTH_PASSWORD
1140 Pass a char * as parameter, which should point to the zero terminated password
1141 to use for the TLS authentication method specified with the
1142 \fICURLOPT_TLSAUTH_TYPE\fP option. Requires that the
1143 \fICURLOPT_TLS_USERNAME\fP option also be set. (Added in 7.21.4)
1144 .IP CURLOPT_PROXYAUTH
1145 Pass a long as parameter, which is set to a bitmask, to tell libcurl which
1146 authentication method(s) you want it to use for your proxy authentication.  If
1147 more than one bit is set, libcurl will first query the site to see what
1148 authentication methods it supports and then pick the best one you allow it to
1149 use. For some methods, this will induce an extra network round-trip. Set the
1150 actual name and password with the \fICURLOPT_PROXYUSERPWD\fP option. The
1151 bitmask can be constructed by or'ing together the bits listed above for the
1152 \fICURLOPT_HTTPAUTH\fP option. As of this writing, only Basic, Digest and NTLM
1153 work. (Added in 7.10.7)
1154 .SH HTTP OPTIONS
1155 .IP CURLOPT_AUTOREFERER
1156 Pass a parameter set to 1 to enable this. When enabled, libcurl will
1157 automatically set the Referer: field in requests where it follows a Location:
1158 redirect.
1159 .IP CURLOPT_ACCEPT_ENCODING
1160 Sets the contents of the Accept-Encoding: header sent in a HTTP request, and
1161 enables decoding of a response when a Content-Encoding: header is received.
1162 Three encodings are supported: \fIidentity\fP, which does nothing,
1163 \fIdeflate\fP which requests the server to compress its response using the
1164 zlib algorithm, and \fIgzip\fP which requests the gzip algorithm.  If a
1165 zero-length string is set, then an Accept-Encoding: header containing all
1166 supported encodings is sent.
1167
1168 This is a request, not an order; the server may or may not do it.  This option
1169 must be set (to any non-NULL value) or else any unsolicited encoding done by
1170 the server is ignored. See the special file lib/README.encoding for details.
1171
1172 (This option was called CURLOPT_ENCODING before 7.21.6)
1173 .IP CURLOPT_TRANSFER_ENCODING
1174 Adds a request for compressed Transfer Encoding in the outgoing HTTP
1175 request. If the server supports this and so desires, it can respond with the
1176 HTTP response sent using a compressed Transfer-Encoding that will be
1177 automatically uncompressed by libcurl on reception.
1178
1179 Transfer-Encoding differs slightly from the Content-Encoding you ask for with
1180 \fBCURLOPT_ACCEPT_ENCODING\fP in that a Transfer-Encoding is strictly meant to
1181 be for the transfer and thus MUST be decoded before the data arrives in the
1182 client. Traditionally, Transfer-Encoding has been much less used and supported
1183 by both HTTP clients and HTTP servers.
1184
1185 (Added in 7.21.6)
1186 .IP CURLOPT_FOLLOWLOCATION
1187 A parameter set to 1 tells the library to follow any Location: header that the
1188 server sends as part of a HTTP header.
1189
1190 This means that the library will re-send the same request on the new location
1191 and follow new Location: headers all the way until no more such headers are
1192 returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects
1193 libcurl will follow.
1194
1195 Since 7.19.4, libcurl can limit what protocols it will automatically
1196 follow. The accepted protocols are set with \fICURLOPT_REDIR_PROTOCOLS\fP and
1197 it excludes the FILE protocol by default.
1198 .IP CURLOPT_UNRESTRICTED_AUTH
1199 A parameter set to 1 tells the library it can continue to send authentication
1200 (user+password) when following locations, even when hostname changed. This
1201 option is meaningful only when setting \fICURLOPT_FOLLOWLOCATION\fP.
1202 .IP CURLOPT_MAXREDIRS
1203 Pass a long. The set number will be the redirection limit. If that many
1204 redirections have been followed, the next redirect will cause an error
1205 (\fICURLE_TOO_MANY_REDIRECTS\fP). This option only makes sense if the
1206 \fICURLOPT_FOLLOWLOCATION\fP is used at the same time. Added in 7.15.1:
1207 Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for
1208 an infinite number of redirects (which is the default)
1209 .IP CURLOPT_POSTREDIR
1210 Pass a bitmask to control how libcurl acts on redirects after POSTs that get a
1211 301, 302 or 303 response back.  A parameter with bit 0 set (value
1212 \fBCURL_REDIR_POST_301\fP) tells the library to respect RFC2616/10.3.2 and not
1213 convert POST requests into GET requests when following a 301 redirection.
1214 Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes libcurl maintain the
1215 request method after a 302 redirect whilst setting bit 2 (value
1216 \fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method after a
1217 303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience define that
1218 sets all three bits.
1219
1220 The non-RFC behaviour is ubiquitous in web browsers, so the library does the
1221 conversion by default to maintain consistency. However, a server may require a
1222 POST to remain a POST after such a redirection. This option is meaningful only
1223 when setting \fICURLOPT_FOLLOWLOCATION\fP.  (Added in 7.17.1) (This option was
1224 known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then)
1225 .IP CURLOPT_PUT
1226 A parameter set to 1 tells the library to use HTTP PUT to transfer data. The
1227 data should be set with \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP.
1228
1229 This option is deprecated and starting with version 7.12.1 you should instead
1230 use \fICURLOPT_UPLOAD\fP.
1231 .IP CURLOPT_POST
1232 A parameter set to 1 tells the library to do a regular HTTP post. This will
1233 also make the library use a "Content-Type:
1234 application/x-www-form-urlencoded" header. (This is by far the most commonly
1235 used POST method).
1236
1237 Use one of \fICURLOPT_POSTFIELDS\fP or \fICURLOPT_COPYPOSTFIELDS\fP options to
1238 specify what data to post and \fICURLOPT_POSTFIELDSIZE\fP or
1239 \fICURLOPT_POSTFIELDSIZE_LARGE\fP to set the data size.
1240
1241 Optionally, you can provide data to POST using the \fICURLOPT_READFUNCTION\fP
1242 and \fICURLOPT_READDATA\fP options but then you must make sure to not set
1243 \fICURLOPT_POSTFIELDS\fP to anything but NULL. When providing data with a
1244 callback, you must transmit it using chunked transfer-encoding or you must set
1245 the size of the data with the \fICURLOPT_POSTFIELDSIZE\fP or
1246 \fICURLOPT_POSTFIELDSIZE_LARGE\fP option. To enable chunked encoding, you
1247 simply pass in the appropriate Transfer-Encoding header, see the
1248 post-callback.c example.
1249
1250 You can override the default POST Content-Type: header by setting your own
1251 with \fICURLOPT_HTTPHEADER\fP.
1252
1253 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
1254 You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
1255
1256 If you use POST to a HTTP 1.1 server, you can send data without knowing the
1257 size before starting the POST if you use chunked encoding. You enable this by
1258 adding a header like "Transfer-Encoding: chunked" with
1259 \fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
1260 specify the size in the request.
1261
1262 When setting \fICURLOPT_POST\fP to 1, it will automatically set
1263 \fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
1264
1265 If you issue a POST request and then want to make a HEAD or GET using the same
1266 re-used handle, you must explicitly set the new request type using
1267 \fICURLOPT_NOBODY\fP or \fICURLOPT_HTTPGET\fP or similar.
1268 .IP CURLOPT_POSTFIELDS
1269 Pass a void * as parameter, which should be the full data to post in a HTTP
1270 POST operation. You must make sure that the data is formatted the way you want
1271 the server to receive it. libcurl will not convert or encode it for you. Most
1272 web servers will assume this data to be url-encoded.
1273
1274 The pointed data are NOT copied by the library: as a consequence, they must
1275 be preserved by the calling application until the transfer finishes.
1276
1277 This POST is a normal application/x-www-form-urlencoded kind (and libcurl will
1278 set that Content-Type by default when this option is used), which is the most
1279 commonly used one by HTML forms. See also the \fICURLOPT_POST\fP. Using
1280 \fICURLOPT_POSTFIELDS\fP implies \fICURLOPT_POST\fP.
1281
1282 If you want to do a zero-byte POST, you need to set
1283 \fICURLOPT_POSTFIELDSIZE\fP explicitly to zero, as simply setting
1284 \fICURLOPT_POSTFIELDS\fP to NULL or "" just effectively disables the sending
1285 of the specified string. libcurl will instead assume that you'll send the POST
1286 data using the read callback!
1287
1288 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
1289 You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
1290
1291 To make multipart/formdata posts (aka RFC2388-posts), check out the
1292 \fICURLOPT_HTTPPOST\fP option.
1293 .IP CURLOPT_POSTFIELDSIZE
1294 If you want to post data to the server without letting libcurl do a strlen()
1295 to measure the data size, this option must be used. When this option is used
1296 you can post fully binary data, which otherwise is likely to fail. If this
1297 size is set to -1, the library will use strlen() to get the size.
1298 .IP CURLOPT_POSTFIELDSIZE_LARGE
1299 Pass a curl_off_t as parameter. Use this to set the size of the
1300 \fICURLOPT_POSTFIELDS\fP data to prevent libcurl from doing strlen() on the
1301 data to figure out the size. This is the large file version of the
1302 \fICURLOPT_POSTFIELDSIZE\fP option. (Added in 7.11.1)
1303 .IP CURLOPT_COPYPOSTFIELDS
1304 Pass a char * as parameter, which should be the full data to post in a HTTP
1305 POST operation. It behaves as the \fICURLOPT_POSTFIELDS\fP option, but the
1306 original data are copied by the library, allowing the application to overwrite
1307 the original data after setting this option.
1308
1309 Because data are copied, care must be taken when using this option in
1310 conjunction with \fICURLOPT_POSTFIELDSIZE\fP or
1311 \fICURLOPT_POSTFIELDSIZE_LARGE\fP: If the size has not been set prior to
1312 \fICURLOPT_COPYPOSTFIELDS\fP, the data are assumed to be a NUL-terminated
1313 string; else the stored size informs the library about the data byte count to
1314 copy. In any case, the size must not be changed after
1315 \fICURLOPT_COPYPOSTFIELDS\fP, unless another \fICURLOPT_POSTFIELDS\fP or
1316 \fICURLOPT_COPYPOSTFIELDS\fP option is issued.
1317 (Added in 7.17.1)
1318 .IP CURLOPT_HTTPPOST
1319 Tells libcurl you want a multipart/formdata HTTP POST to be made and you
1320 instruct what data to pass on to the server.  Pass a pointer to a linked list
1321 of curl_httppost structs as parameter.  The easiest way to create such a
1322 list, is to use \fIcurl_formadd(3)\fP as documented. The data in this list
1323 must remain intact until you close this curl handle again with
1324 \fIcurl_easy_cleanup(3)\fP.
1325
1326 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
1327 You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
1328
1329 When setting \fICURLOPT_HTTPPOST\fP, it will automatically set
1330 \fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
1331 .IP CURLOPT_REFERER
1332 Pass a pointer to a zero terminated string as parameter. It will be used to
1333 set the Referer: header in the http request sent to the remote server. This
1334 can be used to fool servers or scripts. You can also set any custom header
1335 with \fICURLOPT_HTTPHEADER\fP.
1336 .IP CURLOPT_USERAGENT
1337 Pass a pointer to a zero terminated string as parameter. It will be used to
1338 set the User-Agent: header in the http request sent to the remote server. This
1339 can be used to fool servers or scripts. You can also set any custom header
1340 with \fICURLOPT_HTTPHEADER\fP.
1341 .IP CURLOPT_HTTPHEADER
1342 Pass a pointer to a linked list of HTTP headers to pass to the server in your
1343 HTTP request. The linked list should be a fully valid list of \fBstruct
1344 curl_slist\fP structs properly filled in. Use \fIcurl_slist_append(3)\fP to
1345 create the list and \fIcurl_slist_free_all(3)\fP to clean up an entire
1346 list. If you add a header that is otherwise generated and used by libcurl
1347 internally, your added one will be used instead. If you add a header with no
1348 content as in 'Accept:' (no data on the right side of the colon), the
1349 internally used header will get disabled. Thus, using this option you can add
1350 new headers, replace internal headers and remove internal headers. To add a
1351 header with no content, make the content be two quotes: \&"". The headers
1352 included in the linked list must not be CRLF-terminated, because curl adds
1353 CRLF after each header item. Failure to comply with this will result in
1354 strange bugs because the server will most likely ignore part of the headers
1355 you specified.
1356
1357 The first line in a request (containing the method, usually a GET or POST) is
1358 not a header and cannot be replaced using this option. Only the lines
1359 following the request-line are headers. Adding this method line in this list
1360 of headers will only cause your request to send an invalid header.
1361
1362 Pass a NULL to this to reset back to no custom headers.
1363
1364 The most commonly replaced headers have "shortcuts" in the options
1365 \fICURLOPT_COOKIE\fP, \fICURLOPT_USERAGENT\fP and \fICURLOPT_REFERER\fP.
1366 .IP CURLOPT_HTTP200ALIASES
1367 Pass a pointer to a linked list of aliases to be treated as valid HTTP 200
1368 responses.  Some servers respond with a custom header response line.  For
1369 example, IceCast servers respond with "ICY 200 OK".  By including this string
1370 in your list of aliases, the response will be treated as a valid HTTP header
1371 line such as "HTTP/1.0 200 OK". (Added in 7.10.3)
1372
1373 The linked list should be a fully valid list of struct curl_slist structs, and
1374 be properly filled in.  Use \fIcurl_slist_append(3)\fP to create the list and
1375 \fIcurl_slist_free_all(3)\fP to clean up an entire list.
1376
1377 The alias itself is not parsed for any version strings. Before libcurl 7.16.3,
1378 Libcurl used the value set by option \fICURLOPT_HTTP_VERSION\fP, but starting
1379 with 7.16.3 the protocol is assumed to match HTTP 1.0 when an alias matched.
1380 .IP CURLOPT_COOKIE
1381 Pass a pointer to a zero terminated string as parameter. It will be used to
1382 set a cookie in the http request. The format of the string should be
1383 NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie
1384 should contain.
1385
1386 If you need to set multiple cookies, you need to set them all using a single
1387 option and thus you need to concatenate them all in one single string. Set
1388 multiple cookies in one string like this: "name1=content1; name2=content2;"
1389 etc.
1390
1391 This option sets the cookie header explicitly in the outgoing request(s). If
1392 multiple requests are done due to authentication, followed redirections or
1393 similar, they will all get this cookie passed on.
1394
1395 Using this option multiple times will only make the latest string override the
1396 previous ones.
1397 .IP CURLOPT_COOKIEFILE
1398 Pass a pointer to a zero terminated string as parameter. It should contain the
1399 name of your file holding cookie data to read. The cookie data may be in
1400 Netscape / Mozilla cookie data format or just regular HTTP-style headers
1401 dumped to a file.
1402
1403 Given an empty or non-existing file or by passing the empty string (""), this
1404 option will enable cookies for this curl handle, making it understand and
1405 parse received cookies and then use matching cookies in future requests.
1406
1407 If you use this option multiple times, you just add more files to read.
1408 Subsequent files will add more cookies.
1409 .IP CURLOPT_COOKIEJAR
1410 Pass a file name as char *, zero terminated. This will make libcurl write all
1411 internally known cookies to the specified file when \fIcurl_easy_cleanup(3)\fP
1412 is called. If no cookies are known, no file will be created. Specify "-" to
1413 instead have the cookies written to stdout. Using this option also enables
1414 cookies for this session, so if you for example follow a location it will make
1415 matching cookies get sent accordingly.
1416
1417 If the cookie jar file can't be created or written to (when the
1418 \fIcurl_easy_cleanup(3)\fP is called), libcurl will not and cannot report an
1419 error for this. Using \fICURLOPT_VERBOSE\fP or \fICURLOPT_DEBUGFUNCTION\fP
1420 will get a warning to display, but that is the only visible feedback you get
1421 about this possibly lethal situation.
1422 .IP CURLOPT_COOKIESESSION
1423 Pass a long set to 1 to mark this as a new cookie "session". It will force
1424 libcurl to ignore all cookies it is about to load that are "session cookies"
1425 from the previous session. By default, libcurl always stores and loads all
1426 cookies, independent if they are session cookies or not. Session cookies are
1427 cookies without expiry date and they are meant to be alive and existing for
1428 this "session" only.
1429 .IP CURLOPT_COOKIELIST
1430 Pass a char * to a cookie string. Cookie can be either in Netscape / Mozilla
1431 format or just regular HTTP-style header (Set-Cookie: ...) format. If cURL
1432 cookie engine was not enabled it will enable its cookie engine.  Passing a
1433 magic string \&"ALL" will erase all cookies known by cURL. (Added in 7.14.1)
1434 Passing the special string \&"SESS" will only erase all session cookies known
1435 by cURL. (Added in 7.15.4) Passing the special string \&"FLUSH" will write
1436 all cookies known by cURL to the file specified by \fICURLOPT_COOKIEJAR\fP.
1437 (Added in 7.17.1)
1438 .IP CURLOPT_HTTPGET
1439 Pass a long. If the long is 1, this forces the HTTP request to get back
1440 to GET. Usable if a POST, HEAD, PUT, or a custom request has been used
1441 previously using the same curl handle.
1442
1443 When setting \fICURLOPT_HTTPGET\fP to 1, it will automatically set
1444 \fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
1445 .IP CURLOPT_HTTP_VERSION
1446 Pass a long, set to one of the values described below. They force libcurl to
1447 use the specific HTTP versions. This is not sensible to do unless you have a
1448 good reason.
1449 .RS
1450 .IP CURL_HTTP_VERSION_NONE
1451 We don't care about what version the library uses. libcurl will use whatever
1452 it thinks fit.
1453 .IP CURL_HTTP_VERSION_1_0
1454 Enforce HTTP 1.0 requests.
1455 .IP CURL_HTTP_VERSION_1_1
1456 Enforce HTTP 1.1 requests.
1457 .RE
1458 .IP CURLOPT_IGNORE_CONTENT_LENGTH
1459 Ignore the Content-Length header. This is useful for Apache 1.x (and similar
1460 servers) which will report incorrect content length for files over 2
1461 gigabytes. If this option is used, curl will not be able to accurately report
1462 progress, and will simply stop the download when the server ends the
1463 connection. (added in 7.14.1)
1464 .IP CURLOPT_HTTP_CONTENT_DECODING
1465 Pass a long to tell libcurl how to act on content decoding. If set to zero,
1466 content decoding will be disabled. If set to 1 it is enabled. Libcurl has no
1467 default content decoding but requires you to use \fICURLOPT_ENCODING\fP for
1468 that. (added in 7.16.2)
1469 .IP CURLOPT_HTTP_TRANSFER_DECODING
1470 Pass a long to tell libcurl how to act on transfer decoding. If set to zero,
1471 transfer decoding will be disabled, if set to 1 it is enabled
1472 (default). libcurl does chunked transfer decoding by default unless this
1473 option is set to zero. (added in 7.16.2)
1474 .SH SMTP OPTIONS
1475 .IP CURLOPT_MAIL_FROM
1476 Pass a pointer to a zero terminated string as parameter. This should be used
1477 to specify the sender's email address when sending SMTP mail with libcurl.
1478
1479 An originator email address should be specified with angled brackets (<>)
1480 around it, which if not specified, will be added by libcurl from version
1481 7.21.4 onwards. Failing to provide such brackets may cause the server to
1482 reject the email.
1483
1484 If this parameter is not specified then an empty address will be sent to the
1485 mail server which may or may not cause the email to be rejected.
1486
1487 (Added in 7.20.0)
1488 .IP CURLOPT_MAIL_RCPT
1489 Pass a pointer to a linked list of recipients to pass to the server in your
1490 SMTP mail request. The linked list should be a fully valid list of \fBstruct
1491 curl_slist\fP structs properly filled in. Use \fIcurl_slist_append(3)\fP to
1492 create the list and \fIcurl_slist_free_all(3)\fP to clean up an entire list.
1493
1494 Each recipient should be specified within a pair of angled brackets (<>),
1495 however, should you not use an angled bracket as the first character libcurl
1496 will assume you provided a single email address and enclose that address
1497 within brackets for you.
1498
1499 (Added in 7.20.0)
1500 .IP CURLOPT_MAIL_AUTH
1501 Pass a pointer to a zero terminated string as parameter. This will be used
1502 to specify the authentication address (identity) of a submitted message that
1503 is being relayed to another server.
1504
1505 This optional parameter allows co-operating agents in a trusted environment to
1506 communicate the authentication of individual messages and should only be used
1507 by the application program, using libcurl, if the application is itself a
1508 mail server acting in such an environment. If the application is operating as
1509 such and the AUTH address is not known or is invalid, then an empty string
1510 should be used for this parameter.
1511
1512 Unlike CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT, the address should not be
1513 specified within a pair of angled brackets (<>). However, if an empty string
1514 is used then a pair of brackets will be sent by libcurl as required by
1515 RFC2554.
1516
1517 (Added in 7.25.0)
1518 .SH TFTP OPTIONS
1519 .IP CURLOPT_TFTP_BLKSIZE
1520 Specify block size to use for TFTP data transmission. Valid range as per
1521 RFC2348 is 8-65464 bytes. The default of 512 bytes will be used if this option
1522 is not specified. The specified block size will only be used pending support
1523 by the remote server. If the server does not return an option acknowledgement
1524 or returns an option acknowledgement with no blksize, the default of 512 bytes
1525 will be used. (added in 7.19.4)
1526 .SH FTP OPTIONS
1527 .IP CURLOPT_FTPPORT
1528 Pass a pointer to a zero terminated string as parameter. It will be used to
1529 get the IP address to use for the FTP PORT instruction. The PORT instruction
1530 tells the remote server to connect to our specified IP address. The string may
1531 be a plain IP address, a host name, a network interface name (under Unix) or
1532 just a '-' symbol to let the library use your system's default IP
1533 address. Default FTP operations are passive, and thus won't use PORT.
1534
1535 The address can be followed by a ':' to specify a port, optionally followed by
1536 a '-' to specify a port range.  If the port specified is 0, the operating
1537 system will pick a free port.  If a range is provided and all ports in the
1538 range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the
1539 handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by
1540 a port or portrange have to be in brackets.  IPv6 addresses without port/range
1541 specifier can be in brackets.  (added in 7.19.5)
1542
1543 Examples with specified ports:
1544
1545 .nf
1546   eth0:0
1547   192.168.1.2:32000-33000
1548   curl.se:32123
1549   [::1]:1234-4567
1550 .fi
1551
1552 You disable PORT again and go back to using the passive version by setting
1553 this option to NULL.
1554 .IP CURLOPT_QUOTE
1555 Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
1556 prior to your FTP request. This will be done before any other commands are
1557 issued (even before the CWD command for FTP). The linked list should be a
1558 fully valid list of 'struct curl_slist' structs properly filled in with text
1559 strings. Use \fIcurl_slist_append(3)\fP to append strings (commands) to the
1560 list, and clear the entire list afterwards with
1561 \fIcurl_slist_free_all(3)\fP. Disable this operation again by setting a NULL
1562 to this option. When speaking to a FTP (or SFTP since 7.24.0) server, prefix
1563 the command with an asterisk (*) to make libcurl continue even if the command
1564 fails as by default libcurl will stop at first failure.
1565
1566 The set of valid FTP commands depends on the server (see RFC959 for a list of
1567 mandatory commands).
1568
1569 The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd, rename, rm,
1570 rmdir, symlink (see
1571 .BR curl (1))
1572 (SFTP support added in 7.16.3)
1573 .IP CURLOPT_POSTQUOTE
1574 Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
1575 after your FTP transfer request. The commands will only be run if no error
1576 occurred. The linked list should be a fully valid list of struct curl_slist
1577 structs properly filled in as described for \fICURLOPT_QUOTE\fP. Disable this
1578 operation again by setting a NULL to this option.
1579 .IP CURLOPT_PREQUOTE
1580 Pass a pointer to a linked list of FTP commands to pass to the server after
1581 the transfer type is set. The linked list should be a fully valid list of
1582 struct curl_slist structs properly filled in as described for
1583 \fICURLOPT_QUOTE\fP. Disable this operation again by setting a NULL to this
1584 option. Before version 7.16.0, if you also set \fICURLOPT_NOBODY\fP to 1, this
1585 option didn't work.
1586 .IP CURLOPT_DIRLISTONLY
1587 A parameter set to 1 tells the library to just list the names of files in a
1588 directory, instead of doing a full directory listing that would include file
1589 sizes, dates etc. This works for FTP and SFTP URLs.
1590
1591 This causes an FTP NLST command to be sent on an FTP server.  Beware that some
1592 FTP servers list only files in their response to NLST; they might not include
1593 subdirectories and symbolic links.
1594
1595 Setting this option to 1 also implies a directory listing even if the URL
1596 doesn't end with a slash, which otherwise is necessary.
1597
1598 Do NOT use this option if you also use \fICURLOPT_WILDCARDMATCH\fP as it will
1599 effectively break that feature then.
1600
1601 (This option was known as CURLOPT_FTPLISTONLY up to 7.16.4)
1602 .IP CURLOPT_APPEND
1603 A parameter set to 1 tells the library to append to the remote file instead of
1604 overwrite it. This is only useful when uploading to an FTP site.
1605
1606 (This option was known as CURLOPT_FTPAPPEND up to 7.16.4)
1607 .IP CURLOPT_FTP_USE_EPRT
1608 Pass a long. If the value is 1, it tells curl to use the EPRT (and
1609 LPRT) command when doing active FTP downloads (which is enabled by
1610 \fICURLOPT_FTPPORT\fP). Using EPRT means that it will first attempt to use
1611 EPRT and then LPRT before using PORT, but if you pass zero to this
1612 option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
1613
1614 If the server is an IPv6 host, this option will have no effect as of 7.12.3.
1615 .IP CURLOPT_FTP_USE_EPSV
1616 Pass a long. If the value is 1, it tells curl to use the EPSV command
1617 when doing passive FTP downloads (which it always does by default). Using EPSV
1618 means that it will first attempt to use EPSV before using PASV, but if you
1619 pass zero to this option, it will not try using EPSV, only plain PASV.
1620
1621 If the server is an IPv6 host, this option will have no effect as of 7.12.3.
1622 .IP CURLOPT_FTP_USE_PRET
1623 Pass a long. If the value is 1, it tells curl to send a PRET command before
1624 PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard
1625 command for directory listings as well as up and downloads in PASV mode. Has
1626 no effect when using the active FTP transfers mode.  (Added in 7.20.0)
1627 .IP CURLOPT_FTP_CREATE_MISSING_DIRS
1628 Pass a long. If the value is 1, curl will attempt to create any remote
1629 directory that it fails to CWD into. CWD is the command that changes working
1630 directory. (Added in 7.10.7)
1631
1632 This setting also applies to SFTP-connections. curl will attempt to create
1633 the remote directory if it can't obtain a handle to the target-location. The
1634 creation will fail if a file of the same name as the directory to create
1635 already exists or lack of permissions prevents creation. (Added in 7.16.3)
1636
1637 Starting with 7.19.4, you can also set this value to 2, which will make
1638 libcurl retry the CWD command again if the subsequent MKD command fails. This
1639 is especially useful if you're doing many simultaneous connections against the
1640 same server and they all have this option enabled, as then CWD may first fail
1641 but then another connection does MKD before this connection and thus MKD fails
1642 but trying CWD works! 7.19.4 also introduced the \fICURLFTP_CREATE_DIR\fP and
1643 \fICURLFTP_CREATE_DIR_RETRY\fP enum names for these arguments.
1644
1645 Before version 7.19.4, libcurl will simply ignore arguments set to 2 and act
1646 as if 1 was selected.
1647 .IP CURLOPT_FTP_RESPONSE_TIMEOUT
1648 Pass a long.  Causes curl to set a timeout period (in seconds) on the amount
1649 of time that the server is allowed to take in order to generate a response
1650 message for a command before the session is considered hung.  While curl is
1651 waiting for a response, this value overrides \fICURLOPT_TIMEOUT\fP. It is
1652 recommended that if used in conjunction with \fICURLOPT_TIMEOUT\fP, you set
1653 \fICURLOPT_FTP_RESPONSE_TIMEOUT\fP to a value smaller than
1654 \fICURLOPT_TIMEOUT\fP.  (Added in 7.10.8)
1655 .IP CURLOPT_FTP_ALTERNATIVE_TO_USER
1656 Pass a char * as parameter, pointing to a string which will be used to
1657 authenticate if the usual FTP "USER user" and "PASS password" negotiation
1658 fails. This is currently only known to be required when connecting to
1659 Tumbleweed's Secure Transport FTPS server using client certificates for
1660 authentication. (Added in 7.15.5)
1661 .IP CURLOPT_FTP_SKIP_PASV_IP
1662 Pass a long. If set to 1, it instructs libcurl to not use the IP address the
1663 server suggests in its 227-response to libcurl's PASV command when libcurl
1664 connects the data connection. Instead libcurl will re-use the same IP address
1665 it already uses for the control connection. But it will use the port number
1666 from the 227-response. (Added in 7.14.2)
1667
1668 This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
1669 .IP CURLOPT_FTPSSLAUTH
1670 Pass a long using one of the values from below, to alter how libcurl issues
1671 \&"AUTH TLS" or "AUTH SSL" when FTP over SSL is activated (see
1672 \fICURLOPT_USE_SSL\fP). (Added in 7.12.2)
1673 .RS
1674 .IP CURLFTPAUTH_DEFAULT
1675 Allow libcurl to decide.
1676 .IP CURLFTPAUTH_SSL
1677 Try "AUTH SSL" first, and only if that fails try "AUTH TLS".
1678 .IP CURLFTPAUTH_TLS
1679 Try "AUTH TLS" first, and only if that fails try "AUTH SSL".
1680 .RE
1681 .IP CURLOPT_FTP_SSL_CCC
1682 If enabled, this option makes libcurl use CCC (Clear Command Channel). It
1683 shuts down the SSL/TLS layer after authenticating. The rest of the
1684 control channel communication will be unencrypted. This allows NAT routers
1685 to follow the FTP transaction. Pass a long using one of the values below.
1686 (Added in 7.16.1)
1687 .RS
1688 .IP CURLFTPSSL_CCC_NONE
1689 Don't attempt to use CCC.
1690 .IP CURLFTPSSL_CCC_PASSIVE
1691 Do not initiate the shutdown, but wait for the server to do it. Do not send
1692 a reply.
1693 .IP CURLFTPSSL_CCC_ACTIVE
1694 Initiate the shutdown and wait for a reply.
1695 .RE
1696 .IP CURLOPT_FTP_ACCOUNT
1697 Pass a pointer to a zero terminated string (or NULL to disable). When an FTP
1698 server asks for "account data" after user name and password has been provided,
1699 this data is sent off using the ACCT command. (Added in 7.13.0)
1700 .IP CURLOPT_FTP_FILEMETHOD
1701 Pass a long that should have one of the following values. This option controls
1702 what method libcurl should use to reach a file on a FTP(S) server. The
1703 argument should be one of the following alternatives:
1704 .RS
1705 .IP CURLFTPMETHOD_MULTICWD
1706 libcurl does a single CWD operation for each path part in the given URL. For
1707 deep hierarchies this means many commands. This is how RFC1738 says it
1708 should be done. This is the default but the slowest behavior.
1709 .IP CURLFTPMETHOD_NOCWD
1710 libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a
1711 full path to the server for all these commands. This is the fastest behavior.
1712 .IP CURLFTPMETHOD_SINGLECWD
1713 libcurl does one CWD with the full target directory and then operates on the
1714 file \&"normally" (like in the multicwd case). This is somewhat more standards
1715 compliant than 'nocwd' but without the full penalty of 'multicwd'.
1716 .RE
1717 (Added in 7.15.1)
1718 .SH RTSP OPTIONS
1719 .IP CURLOPT_RTSP_REQUEST
1720 Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP
1721 enum values. Unless noted otherwise, commands require the Session ID to be
1722 initialized. (Added in 7.20.0)
1723 .RS
1724 .IP CURL_RTSPREQ_OPTIONS
1725 Used to retrieve the available methods of the server. The application is
1726 responsible for parsing and obeying the response. \fB(The session ID is not
1727 needed for this method.)\fP  (Added in 7.20.0)
1728 .IP CURL_RTSPREQ_DESCRIBE
1729 Used to get the low level description of a stream. The application should note
1730 what formats it understands in the \fI'Accept:'\fP header. Unless set
1731 manually, libcurl will automatically fill in \fI'Accept:
1732 application/sdp'\fP. Time-condition headers will be added to Describe requests
1733 if the \fICURLOPT_TIMECONDITION\fP option is active. \fB(The session ID is not
1734 needed for this method)\fP  (Added in 7.20.0)
1735 .IP CURL_RTSPREQ_ANNOUNCE
1736 When sent by a client, this method changes the description of the session. For
1737 example, if a client is using the server to record a meeting, the client can
1738 use Announce to inform the server of all the meta-information about the
1739 session.  ANNOUNCE acts like a HTTP PUT or POST just like
1740 \fICURL_RTSPREQ_SET_PARAMETER\fP (Added in 7.20.0)
1741 .IP CURL_RTSPREQ_SETUP
1742 Setup is used to initialize the transport layer for the session. The
1743 application must set the desired Transport options for a session by using the
1744 \fICURLOPT_RTSP_TRANSPORT\fP option prior to calling setup. If no session ID
1745 is currently set with \fICURLOPT_RTSP_SESSION_ID\fP, libcurl will extract and
1746 use the session ID in the response to this request. \fB(The session ID is not
1747 needed for this method).\fP  (Added in 7.20.0)
1748 .IP CURL_RTSPREQ_PLAY
1749 Send a Play command to the server. Use the \fICURLOPT_RANGE\fP option to
1750 modify the playback time (e.g. 'npt=10-15').  (Added in 7.20.0)
1751 .IP CURL_RTSPREQ_PAUSE
1752 Send a Pause command to the server. Use the \fICURLOPT_RANGE\fP option with a
1753 single value to indicate when the stream should be halted. (e.g. npt='25')
1754 (Added in 7.20.0)
1755 .IP CURL_RTSPREQ_TEARDOWN
1756 This command terminates an RTSP session. Simply closing a connection does not
1757 terminate the RTSP session since it is valid to control an RTSP session over
1758 different connections.  (Added in 7.20.0)
1759 .IP CURL_RTSPREQ_GET_PARAMETER
1760 Retrieve a parameter from the server. By default, libcurl will automatically
1761 include a \fIContent-Type: text/parameters\fP header on all non-empty requests
1762 unless a custom one is set. GET_PARAMETER acts just like a HTTP PUT or POST
1763 (see \fICURL_RTSPREQ_SET_PARAMETER\fP).
1764 Applications wishing to send a heartbeat message (e.g. in the presence of a
1765 server-specified timeout) should send use an empty GET_PARAMETER request.
1766 (Added in 7.20.0)
1767 .IP CURL_RTSPREQ_SET_PARAMETER
1768 Set a parameter on the server. By default, libcurl will automatically include
1769 a \fIContent-Type: text/parameters\fP header unless a custom one is set. The
1770 interaction with SET_PARAMTER is much like a HTTP PUT or POST. An application
1771 may either use \fICURLOPT_UPLOAD\fP with \fICURLOPT_READDATA\fP like a HTTP
1772 PUT, or it may use \fICURLOPT_POSTFIELDS\fP like a HTTP POST. No chunked
1773 transfers are allowed, so the application must set the
1774 \fICURLOPT_INFILESIZE\fP in the former and \fICURLOPT_POSTFIELDSIZE\fP in the
1775 latter. Also, there is no use of multi-part POSTs within RTSP. (Added in
1776 7.20.0)
1777 .IP CURL_RTSPREQ_RECORD
1778 Used to tell the server to record a session. Use the \fICURLOPT_RANGE\fP
1779 option to modify the record time. (Added in 7.20.0)
1780 .IP CURL_RTSPREQ_RECEIVE
1781 This is a special request because it does not send any data to the server. The
1782 application may call this function in order to receive interleaved RTP
1783 data. It will return after processing one read buffer of data in order to give
1784 the application a chance to run. (Added in 7.20.0)
1785 .RE
1786 .IP CURLOPT_RTSP_SESSION_ID
1787 Pass a char * as a parameter to set the value of the current RTSP Session ID
1788 for the handle. Useful for resuming an in-progress session. Once this value is
1789 set to any non-NULL value, libcurl will return \fICURLE_RTSP_SESSION_ERROR\fP
1790 if ID received from the server does not match. If unset (or set to NULL),
1791 libcurl will automatically set the ID the first time the server sets it in a
1792 response. (Added in 7.20.0)
1793 .IP CURLOPT_RTSP_STREAM_URI
1794 Set the stream URI to operate on by passing a char * . For example, a single
1795 session may be controlling \fIrtsp://foo/twister/audio\fP and
1796 \fIrtsp://foo/twister/video\fP and the application can switch to the
1797 appropriate stream using this option. If unset, libcurl will default to
1798 operating on generic server options by passing '*' in the place of the RTSP
1799 Stream URI. This option is distinct from \fICURLOPT_URL\fP. When working with
1800 RTSP, the \fICURLOPT_STREAM_URI\fP indicates what URL to send to the server in
1801 the request header while the \fICURLOPT_URL\fP indicates where to make the
1802 connection to.  (e.g. the \fICURLOPT_URL\fP for the above examples might be
1803 set to \fIrtsp://foo/twister\fP (Added in 7.20.0)
1804 .IP CURLOPT_RTSP_TRANSPORT
1805 Pass a char * to tell libcurl what to pass for the Transport: header for this
1806 RTSP session. This is mainly a convenience method to avoid needing to set a
1807 custom Transport: header for every SETUP request. The application must set a
1808 Transport: header before issuing a SETUP request. (Added in 7.20.0)
1809 .IP CURLOPT_RTSP_HEADER
1810 This option is simply an alias for \fICURLOPT_HTTP_HEADER\fP. Use this to
1811 replace the standard headers that RTSP and HTTP share. It is also valid to use
1812 the shortcuts such as \fICURLOPT_USERAGENT\fP. (Added in 7.20.0)
1813 .IP CURLOPT_RTSP_CLIENT_CSEQ
1814 Manually set the the CSEQ number to issue for the next RTSP request. Useful if
1815 the application is resuming a previously broken connection. The CSEQ will
1816 increment from this new number henceforth. (Added in 7.20.0)
1817 .IP CURLOPT_RTSP_SERVER_CSEQ
1818 Manually set the CSEQ number to expect for the next RTSP Server->Client
1819 request.  At the moment, this feature (listening for Server requests) is
1820 unimplemented. (Added in 7.20.0)
1821 .SH PROTOCOL OPTIONS
1822 .IP CURLOPT_TRANSFERTEXT
1823 A parameter set to 1 tells the library to use ASCII mode for FTP transfers,
1824 instead of the default binary transfer. For win32 systems it does not set the
1825 stdout to binary mode. This option can be usable when transferring text data
1826 between systems with different views on certain characters, such as newlines
1827 or similar.
1828
1829 libcurl does not do a complete ASCII conversion when doing ASCII transfers
1830 over FTP. This is a known limitation/flaw that nobody has rectified. libcurl
1831 simply sets the mode to ASCII and performs a standard transfer.
1832 .IP CURLOPT_PROXY_TRANSFER_MODE
1833 Pass a long. If the value is set to 1 (one), it tells libcurl to set the
1834 transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by
1835 appending ;type=a or ;type=i to the URL. Without this setting, or it being set
1836 to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT\fP has no effect when doing
1837 FTP via a proxy. Beware that not all proxies support this feature.  (Added in
1838 7.18.0)
1839 .IP CURLOPT_CRLF
1840 Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to
1841 CRLF newlines on transfers. Disable this option again by setting the value to
1842 0 (zero).
1843 .IP CURLOPT_RANGE
1844 Pass a char * as parameter, which should contain the specified range you
1845 want. It should be in the format "X-Y", where X or Y may be left out. HTTP
1846 transfers also support several intervals, separated with commas as in
1847 \fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
1848 server to send the response document in pieces (using standard MIME separation
1849 techniques). For RTSP, the formatting of a range should follow RFC2326
1850 Section 12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges
1851 should be given in npt, utc, or smpte formats.
1852
1853 Pass a NULL to this option to disable the use of ranges.
1854
1855 Ranges work on HTTP, FTP, FILE (since 7.18.0), and RTSP (since 7.20.0)
1856 transfers only.
1857 .IP CURLOPT_RESUME_FROM
1858 Pass a long as parameter. It contains the offset in number of bytes that you
1859 want the transfer to start from. Set this option to 0 to make the transfer
1860 start from the beginning (effectively disabling resume). For FTP, set this
1861 option to -1 to make the transfer start from the end of the target file
1862 (useful to continue an interrupted upload).
1863
1864 When doing uploads with FTP, the resume position is where in the local/source
1865 file libcurl should try to resume the upload from and it will then append the
1866 source file to the remote target file.
1867 .IP CURLOPT_RESUME_FROM_LARGE
1868 Pass a curl_off_t as parameter. It contains the offset in number of bytes that
1869 you want the transfer to start from. (Added in 7.11.0)
1870 .IP CURLOPT_CUSTOMREQUEST
1871 Pass a pointer to a zero terminated string as parameter. It can be used to
1872 specify the request instead of GET or HEAD when performing HTTP based
1873 requests, instead of LIST and NLST when performing FTP directory listings and
1874 instead of LIST and RETR when issuing POP3 based commands. This is
1875 particularly useful, for example, for performing a HTTP DELETE request or a
1876 POP3 DELE command.
1877
1878 Please don't perform this at will, on HTTP based requests, by making sure
1879 your server supports the command you are sending first.
1880  
1881 When you change the request method by setting \fBCURLOPT_CUSTOMREQUEST\fP to
1882 something, you don't actually change how libcurl behaves or acts in regards
1883 to the particular request method, it will only change the actual string sent
1884 in the request.
1885
1886 For example:
1887
1888 With the HTTP protocol when you tell libcurl to do a HEAD request, but then
1889 specify a GET though a custom request libcurl will still act as if it sent a
1890 HEAD. To switch to a proper HEAD use \fICURLOPT_NOBODY\fP, to switch to a
1891 proper POST use \fICURLOPT_POST\fP or \fICURLOPT_POSTFIELDS\fP and to switch
1892 to a proper GET use CURLOPT_HTTPGET.
1893
1894 With the POP3 protocol when you tell libcurl to use a custom request it will
1895 behave like a LIST or RETR command was sent where it expects data to be
1896 returned by the server. As such \fICURLOPT_NOBODY\fP should be used when
1897 specifying commands such as DELE and NOOP for example.
1898
1899 Restore to the internal default by setting this to NULL.
1900
1901 Many people have wrongly used this option to replace the entire request with
1902 their own, including multiple headers and POST contents. While that might
1903 work in many cases, it will cause libcurl to send invalid requests and it
1904 could possibly confuse the remote server badly. Use \fICURLOPT_POST\fP and
1905 \fICURLOPT_POSTFIELDS\fP to set POST data. Use \fICURLOPT_HTTPHEADER\fP to
1906 replace or extend the set of headers sent by libcurl. Use
1907 \fICURLOPT_HTTP_VERSION\fP to change HTTP version.
1908
1909 (Support for POP3 added in 7.26.0)
1910 .IP CURLOPT_FILETIME
1911 Pass a long. If it is 1, libcurl will attempt to get the modification date of
1912 the remote document in this operation. This requires that the remote server
1913 sends the time or replies to a time querying command. The
1914 \fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
1915 can be used after a transfer to extract the received time (if any).
1916 .IP CURLOPT_NOBODY
1917 A parameter set to 1 tells the library to not include the body-part in the
1918 output. This is only relevant for protocols that have separate header and
1919 body parts. On HTTP(S) servers, this will make libcurl do a HEAD request.
1920
1921 To change request to GET, you should use \fICURLOPT_HTTPGET\fP. Change
1922 request to POST with \fICURLOPT_POST\fP etc.
1923 .IP CURLOPT_INFILESIZE
1924 When uploading a file to a remote site, this option should be used to tell
1925 libcurl what the expected size of the infile is. This value should be passed
1926 as a long. See also \fICURLOPT_INFILESIZE_LARGE\fP.
1927
1928 For uploading using SCP, this option or \fICURLOPT_INFILESIZE_LARGE\fP is
1929 mandatory.
1930
1931 When sending emails using SMTP, this command can be used to specify the
1932 optional SIZE parameter for the MAIL FROM command. (Added in 7.23.0)
1933
1934 This option does not limit how much data libcurl will actually send, as that
1935 is controlled entirely by what the read callback returns.
1936 .IP CURLOPT_INFILESIZE_LARGE
1937 When uploading a file to a remote site, this option should be used to tell
1938 libcurl what the expected size of the infile is.  This value should be passed
1939 as a curl_off_t. (Added in 7.11.0)
1940
1941 For uploading using SCP, this option or \fICURLOPT_INFILESIZE\fP is mandatory.
1942
1943 This option does not limit how much data libcurl will actually send, as that
1944 is controlled entirely by what the read callback returns.
1945 .IP CURLOPT_UPLOAD
1946 A parameter set to 1 tells the library to prepare for an upload. The
1947 \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
1948 \fICURLOPT_INFILESIZE_LARGE\fP options are also interesting for uploads. If
1949 the protocol is HTTP, uploading means using the PUT request unless you tell
1950 libcurl otherwise.
1951
1952 Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
1953 You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
1954
1955 If you use PUT to a HTTP 1.1 server, you can upload data without knowing the
1956 size before starting the transfer if you use chunked encoding. You enable this
1957 by adding a header like "Transfer-Encoding: chunked" with
1958 \fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
1959 specify the size.
1960 .IP CURLOPT_MAXFILESIZE
1961 Pass a long as parameter. This allows you to specify the maximum size (in
1962 bytes) of a file to download. If the file requested is larger than this value,
1963 the transfer will not start and CURLE_FILESIZE_EXCEEDED will be returned.
1964
1965 The file size is not always known prior to download, and for such files this
1966 option has no effect even if the file transfer ends up being larger than this
1967 given limit. This concerns both FTP and HTTP transfers.
1968 .IP CURLOPT_MAXFILESIZE_LARGE
1969 Pass a curl_off_t as parameter. This allows you to specify the maximum size
1970 (in bytes) of a file to download. If the file requested is larger than this
1971 value, the transfer will not start and \fICURLE_FILESIZE_EXCEEDED\fP will be
1972 returned. (Added in 7.11.0)
1973
1974 The file size is not always known prior to download, and for such files this
1975 option has no effect even if the file transfer ends up being larger than this
1976 given limit. This concerns both FTP and HTTP transfers.
1977 .IP CURLOPT_TIMECONDITION
1978 Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time
1979 value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
1980 or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP, FTP, RTSP,
1981 and FILE.
1982
1983 The last modification time of a file is not always known and in such instances
1984 this feature will have no effect even if the given time condition would not
1985 have been met. \fIcurl_easy_getinfo(3)\fP with the
1986 \fICURLINFO_CONDITION_UNMET\fP option can be used after a transfer to learn if
1987 a zero-byte successful "transfer" was due to this condition not matching.
1988 .IP CURLOPT_TIMEVALUE
1989 Pass a long as parameter. This should be the time in seconds since 1 Jan 1970,
1990 and the time will be used in a condition as specified with
1991 \fICURLOPT_TIMECONDITION\fP.
1992 .SH CONNECTION OPTIONS
1993 .IP CURLOPT_TIMEOUT
1994 Pass a long as parameter containing the maximum time in seconds that you allow
1995 the libcurl transfer operation to take. Normally, name lookups can take a
1996 considerable time and limiting operations to less than a few minutes risk
1997 aborting perfectly normal operations. This option will cause curl to use the
1998 SIGALRM to enable time-outing system calls.
1999
2000 In unix-like systems, this might cause signals to be used unless
2001 \fICURLOPT_NOSIGNAL\fP is set.
2002
2003 Default timeout is 0 (zero) which means it never times out.
2004 .IP CURLOPT_TIMEOUT_MS
2005 Like \fICURLOPT_TIMEOUT\fP but takes number of milliseconds instead. If
2006 libcurl is built to use the standard system name resolver, that portion
2007 of the transfer will still use full-second resolution for timeouts with
2008 a minimum timeout allowed of one second.
2009 (Added in 7.16.2)
2010 .IP CURLOPT_LOW_SPEED_LIMIT
2011 Pass a long as parameter. It contains the transfer speed in bytes per second
2012 that the transfer should be below during \fICURLOPT_LOW_SPEED_TIME\fP seconds
2013 for the library to consider it too slow and abort.
2014 .IP CURLOPT_LOW_SPEED_TIME
2015 Pass a long as parameter. It contains the time in seconds that the transfer
2016 should be below the \fICURLOPT_LOW_SPEED_LIMIT\fP for the library to consider
2017 it too slow and abort.
2018 .IP CURLOPT_MAX_SEND_SPEED_LARGE
2019 Pass a curl_off_t as parameter.  If an upload exceeds this speed (counted in
2020 bytes per second) on cumulative average during the transfer, the transfer will
2021 pause to keep the average rate less than or equal to the parameter value.
2022 Defaults to unlimited speed. (Added in 7.15.5)
2023 .IP CURLOPT_MAX_RECV_SPEED_LARGE
2024 Pass a curl_off_t as parameter.  If a download exceeds this speed (counted in
2025 bytes per second) on cumulative average during the transfer, the transfer will
2026 pause to keep the average rate less than or equal to the parameter
2027 value. Defaults to unlimited speed. (Added in 7.15.5)
2028 .IP CURLOPT_MAXCONNECTS
2029 Pass a long. The set number will be the persistent connection cache size. The
2030 set amount will be the maximum amount of simultaneously open connections that
2031 libcurl may cache in this easy handle. Default is 5, and there isn't much
2032 point in changing this value unless you are perfectly aware of how this works
2033 and changes libcurl's behaviour. This concerns connections using any of the
2034 protocols that support persistent connections.
2035
2036 When reaching the maximum limit, curl closes the oldest one in the cache to
2037 prevent increasing the number of open connections.
2038
2039 If you already have performed transfers with this curl handle, setting a
2040 smaller MAXCONNECTS than before may cause open connections to get closed
2041 unnecessarily.
2042
2043 If you add this easy handle to a multi handle, this setting is not
2044 acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
2045 \fICURLMOPT_MAXCONNECTS\fP option.
2046 .IP CURLOPT_CLOSEPOLICY
2047 (Obsolete) This option does nothing.
2048 .IP CURLOPT_FRESH_CONNECT
2049 Pass a long. Set to 1 to make the next transfer use a new (fresh) connection
2050 by force. If the connection cache is full before this connection, one of the
2051 existing connections will be closed as according to the selected or default
2052 policy. This option should be used with caution and only if you understand
2053 what it does. Set this to 0 to have libcurl attempt re-using an existing
2054 connection (default behavior).
2055 .IP CURLOPT_FORBID_REUSE
2056 Pass a long. Set to 1 to make the next transfer explicitly close the
2057 connection when done. Normally, libcurl keeps all connections alive when done
2058 with one transfer in case a succeeding one follows that can re-use them.
2059 This option should be used with caution and only if you understand what it
2060 does. Set to 0 to have libcurl keep the connection open for possible later
2061 re-use (default behavior).
2062 .IP CURLOPT_CONNECTTIMEOUT
2063 Pass a long. It should contain the maximum time in seconds that you allow the
2064 connection to the server to take.  This only limits the connection phase, once
2065 it has connected, this option is of no more use. Set to zero to switch to the
2066 default built-in connection timeout - 300 seconds. See also the
2067 \fICURLOPT_TIMEOUT\fP option.
2068
2069 In unix-like systems, this might cause signals to be used unless
2070 \fICURLOPT_NOSIGNAL\fP is set.
2071 .IP CURLOPT_CONNECTTIMEOUT_MS
2072 Like \fICURLOPT_CONNECTTIMEOUT\fP but takes the number of milliseconds
2073 instead. If libcurl is built to use the standard system name resolver,
2074 that portion of the connect will still use full-second resolution for
2075 timeouts with a minimum timeout allowed of one second.
2076 (Added in 7.16.2)
2077 .IP CURLOPT_IPRESOLVE
2078 Allows an application to select what kind of IP addresses to use when
2079 resolving host names. This is only interesting when using host names that
2080 resolve addresses using more than one version of IP. The allowed values are:
2081 .RS
2082 .IP CURL_IPRESOLVE_WHATEVER
2083 Default, resolves addresses to all IP versions that your system allows.
2084 .IP CURL_IPRESOLVE_V4
2085 Resolve to IPv4 addresses.
2086 .IP CURL_IPRESOLVE_V6
2087 Resolve to IPv6 addresses.
2088 .RE
2089 .IP CURLOPT_CONNECT_ONLY
2090 Pass a long. If the parameter equals 1, it tells the library to perform all
2091 the required proxy authentication and connection setup, but no data transfer.
2092 This option is useful only on HTTP URLs.
2093
2094 This option is useful with the \fICURLINFO_LASTSOCKET\fP option to
2095 \fIcurl_easy_getinfo(3)\fP. The library can set up the connection and then the
2096 application can obtain the most recently used socket for special data
2097 transfers. (Added in 7.15.2)
2098 .IP CURLOPT_USE_SSL
2099 Pass a long using one of the values from below, to make libcurl use your
2100 desired level of SSL for the transfer. (Added in 7.11.0)
2101
2102 This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc.
2103
2104 (This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants
2105 were known as CURLFTPSSL_*)
2106 .RS
2107 .IP CURLUSESSL_NONE
2108 Don't attempt to use SSL.
2109 .IP CURLUSESSL_TRY
2110 Try using SSL, proceed as normal otherwise.
2111 .IP CURLUSESSL_CONTROL
2112 Require SSL for the control connection or fail with \fICURLE_USE_SSL_FAILED\fP.
2113 .IP CURLUSESSL_ALL
2114 Require SSL for all communication or fail with \fICURLE_USE_SSL_FAILED\fP.
2115 .RE
2116 .IP CURLOPT_RESOLVE
2117 Pass a pointer to a linked list of strings with host name resolve information
2118 to use for requests with this handle. The linked list should be a fully valid
2119 list of \fBstruct curl_slist\fP structs properly filled in. Use
2120 \fIcurl_slist_append(3)\fP to create the list and \fIcurl_slist_free_all(3)\fP
2121 to clean up an entire list.
2122
2123 Each single name resolve string should be written using the format
2124 HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, PORT is
2125 the port number of the service where libcurl wants to connect to the HOST and
2126 ADDRESS is the numerical IP address. If libcurl is built to support IPv6,
2127 ADDRESS can of course be either IPv4 or IPv6 style addressing.
2128
2129 This option effectively pre-populates the DNS cache with entries for the
2130 host+port pair so redirects and everything that operations against the
2131 HOST+PORT will instead use your provided ADDRESS.
2132
2133 You can remove names from the DNS cache again, to stop providing these fake
2134 resolves, by including a string in the linked list that uses the format
2135 \&"-HOST:PORT". The host name must be prefixed with a dash, and the host name
2136 and port number must exactly match what was already added previously.
2137
2138 (Added in 7.21.3)
2139 .IP CURLOPT_DNS_SERVERS
2140 Set the list of DNS servers to be used instead of the system default.
2141 The format of the dns servers option is:
2142
2143 host[:port][,host[:port]]...
2144
2145 For example:
2146
2147 192.168.1.100,192.168.1.101,3.4.5.6
2148
2149 This option requires that libcurl was built with a resolver backend that
2150 supports this operation. The c-ares backend is the only such one.
2151
2152 (Added in 7.24.0)
2153 .IP CURLOPT_ACCEPTTIMEOUT_MS
2154 Pass a long telling libcurl the maximum number of milliseconds to wait for a
2155 server to connect back to libcurl when an active FTP connection is used. If no
2156 timeout is set, the internal default of 60000 will be used. (Added in 7.24.0)
2157 .SH SSL and SECURITY OPTIONS
2158 .IP CURLOPT_SSLCERT
2159 Pass a pointer to a zero terminated string as parameter. The string should be
2160 the file name of your certificate. The default format is "PEM" and can be
2161 changed with \fICURLOPT_SSLCERTTYPE\fP.
2162
2163 With NSS this can also be the nickname of the certificate you wish to
2164 authenticate with. If you want to use a file from the current directory, please
2165 precede it with "./" prefix, in order to avoid confusion with a nickname.
2166 .IP CURLOPT_SSLCERTTYPE
2167 Pass a pointer to a zero terminated string as parameter. The string should be
2168 the format of your certificate. Supported formats are "PEM" and "DER".  (Added
2169 in 7.9.3)
2170 .IP CURLOPT_SSLKEY
2171 Pass a pointer to a zero terminated string as parameter. The string should be
2172 the file name of your private key. The default format is "PEM" and can be
2173 changed with \fICURLOPT_SSLKEYTYPE\fP.
2174 .IP CURLOPT_SSLKEYTYPE
2175 Pass a pointer to a zero terminated string as parameter. The string should be
2176 the format of your private key. Supported formats are "PEM", "DER" and "ENG".
2177
2178 The format "ENG" enables you to load the private key from a crypto engine. In
2179 this case \fICURLOPT_SSLKEY\fP is used as an identifier passed to the
2180 engine. You have to set the crypto engine with \fICURLOPT_SSLENGINE\fP.
2181 \&"DER" format key file currently does not work because of a bug in OpenSSL.
2182 .IP CURLOPT_KEYPASSWD
2183 Pass a pointer to a zero terminated string as parameter. It will be used as
2184 the password required to use the \fICURLOPT_SSLKEY\fP or
2185 \fICURLOPT_SSH_PRIVATE_KEYFILE\fP private key.
2186 You never needed a pass phrase to load a certificate but you need one to
2187 load your private key.
2188
2189 (This option was known as CURLOPT_SSLKEYPASSWD up to 7.16.4 and
2190 CURLOPT_SSLCERTPASSWD up to 7.9.2)
2191 .IP CURLOPT_SSLENGINE
2192 Pass a pointer to a zero terminated string as parameter. It will be used as
2193 the identifier for the crypto engine you want to use for your private
2194 key.
2195
2196 If the crypto device cannot be loaded, \fICURLE_SSL_ENGINE_NOTFOUND\fP is
2197 returned.
2198 .IP CURLOPT_SSLENGINE_DEFAULT
2199 Sets the actual crypto engine as the default for (asymmetric) crypto
2200 operations.
2201
2202 If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
2203 returned.
2204
2205 Even though this option doesn't need any parameter, in some configurations
2206 \fIcurl_easy_setopt\fP might be defined as a macro taking exactly three
2207 arguments. Therefore, it's recommended to pass 1 as parameter to this option.
2208 .IP CURLOPT_SSLVERSION
2209 Pass a long as parameter to control what version of SSL/TLS to attempt to use.
2210 The available options are:
2211 .RS
2212 .IP CURL_SSLVERSION_DEFAULT
2213 The default action. This will attempt to figure out the remote SSL protocol
2214 version, i.e. either SSLv3 or TLSv1 (but not SSLv2, which became disabled
2215 by default with 7.18.1).
2216 .IP CURL_SSLVERSION_TLSv1
2217 Force TLSv1
2218 .IP CURL_SSLVERSION_SSLv2
2219 Force SSLv2
2220 .IP CURL_SSLVERSION_SSLv3
2221 Force SSLv3
2222 .RE
2223 .IP CURLOPT_SSL_VERIFYPEER
2224 Pass a long as parameter. By default, curl assumes a value of 1.
2225
2226 This option determines whether curl verifies the authenticity of the peer's
2227 certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't.
2228
2229 When negotiating a SSL connection, the server sends a certificate indicating
2230 its identity.  Curl verifies whether the certificate is authentic, i.e. that
2231 you can trust that the server is who the certificate says it is.  This trust
2232 is based on a chain of digital signatures, rooted in certification authority
2233 (CA) certificates you supply.  curl uses a default bundle of CA certificates
2234 (the path for that is determined at build time) and you can specify alternate
2235 certificates with the \fICURLOPT_CAINFO\fP option or the \fICURLOPT_CAPATH\fP
2236 option.
2237
2238 When \fICURLOPT_SSL_VERIFYPEER\fP is nonzero, and the verification fails to
2239 prove that the certificate is authentic, the connection fails.  When the
2240 option is zero, the peer certificate verification succeeds regardless.
2241
2242 Authenticating the certificate is not by itself very useful.  You typically
2243 want to ensure that the server, as authentically identified by its
2244 certificate, is the server you mean to be talking to.  Use
2245 \fICURLOPT_SSL_VERIFYHOST\fP to control that. The check that the host name in
2246 the certificate is valid for the host name you're connecting to is done
2247 independently of the \fICURLOPT_SSL_VERIFYPEER\fP option.
2248 .IP CURLOPT_CAINFO
2249 Pass a char * to a zero terminated string naming a file holding one or more
2250 certificates to verify the peer with.  This makes sense only when used in
2251 combination with the \fICURLOPT_SSL_VERIFYPEER\fP option.  If
2252 \fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_CAINFO\fP need not
2253 even indicate an accessible file.
2254
2255 This option is by default set to the system path where libcurl's cacert bundle
2256 is assumed to be stored, as established at build time.
2257
2258 When built against NSS, this is the directory that the NSS certificate
2259 database resides in.
2260 .IP CURLOPT_ISSUERCERT
2261 Pass a char * to a zero terminated string naming a file holding a CA
2262 certificate in PEM format. If the option is set, an additional check against
2263 the peer certificate is performed to verify the issuer is indeed the one
2264 associated with the certificate provided by the option. This additional check
2265 is useful in multi-level PKI where one needs to enforce that the peer
2266 certificate is from a specific branch of the tree.
2267
2268 This option makes sense only when used in combination with the
2269 \fICURLOPT_SSL_VERIFYPEER\fP option. Otherwise, the result of the check is not
2270 considered as failure.
2271
2272 A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option,
2273 which is returned if the setup of the SSL/TLS session has failed due to a
2274 mismatch with the issuer of peer certificate (\fICURLOPT_SSL_VERIFYPEER\fP has
2275 to be set too for the check to fail). (Added in 7.19.0)
2276 .IP CURLOPT_CAPATH
2277 Pass a char * to a zero terminated string naming a directory holding multiple
2278 CA certificates to verify the peer with. If libcurl is built against OpenSSL,
2279 the certificate directory must be prepared using the openssl c_rehash utility.
2280 This makes sense only when used in combination with the
2281 \fICURLOPT_SSL_VERIFYPEER\fP option.  If \fICURLOPT_SSL_VERIFYPEER\fP is zero,
2282 \fICURLOPT_CAPATH\fP need not even indicate an accessible path.  The
2283 \fICURLOPT_CAPATH\fP function apparently does not work in Windows due to some
2284 limitation in openssl. This option is OpenSSL-specific and does nothing if
2285 libcurl is built to use GnuTLS. NSS-powered libcurl provides the option only
2286 for backward compatibility.
2287 .IP CURLOPT_CRLFILE
2288 Pass a char * to a zero terminated string naming a file with the concatenation
2289 of CRL (in PEM format) to use in the certificate validation that occurs during
2290 the SSL exchange.
2291
2292 When curl is built to use NSS or GnuTLS, there is no way to influence the use
2293 of CRL passed to help in the verification process. When libcurl is built with
2294 OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both
2295 set, requiring CRL check against all the elements of the certificate chain if
2296 a CRL file is passed.
2297
2298 This option makes sense only when used in combination with the
2299 \fICURLOPT_SSL_VERIFYPEER\fP option.
2300
2301 A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It
2302 is returned when the SSL exchange fails because the CRL file cannot be loaded.
2303 A failure in certificate verification due to a revocation information found in
2304 the CRL does not trigger this specific error. (Added in 7.19.0)
2305 .IP CURLOPT_SSL_VERIFYHOST
2306 Pass a long as parameter.
2307
2308 This option determines whether libcurl verifies that the server cert is for
2309 the server it is known as.
2310
2311 When negotiating a SSL connection, the server sends a certificate indicating
2312 its identity.
2313
2314 When \fICURLOPT_SSL_VERIFYHOST\fP is 2, that certificate must indicate that
2315 the server is the server to which you meant to connect, or the connection
2316 fails.
2317
2318 Curl considers the server the intended one when the Common Name field or a
2319 Subject Alternate Name field in the certificate matches the host name in the
2320 URL to which you told Curl to connect.
2321
2322 When the value is 1, the certificate must contain a Common Name field, but it
2323 doesn't matter what name it says.  (This is not ordinarily a useful setting).
2324
2325 When the value is 0, the connection succeeds regardless of the names in the
2326 certificate.
2327
2328 The default value for this option is 2.
2329
2330 This option controls checking the server's certificate's claimed identity.
2331 The server could be lying.  To control lying, see
2332 \fICURLOPT_SSL_VERIFYPEER\fP.  If libcurl is built against NSS and
2333 \fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_SSL_VERIFYHOST\fP
2334 is ignored.
2335
2336 .IP CURLOPT_CERTINFO
2337 Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
2338 this enabled, libcurl (if built with OpenSSL) will extract lots of information
2339 and data about the certificates in the certificate chain used in the SSL
2340 connection. This data is then possible to extract after a transfer using
2341 \fIcurl_easy_getinfo(3)\fP and its option \fICURLINFO_CERTINFO\fP. (Added in
2342 7.19.1)
2343 .IP CURLOPT_RANDOM_FILE
2344 Pass a char * to a zero terminated file name. The file will be used to read
2345 from to seed the random engine for SSL. The more random the specified file is,
2346 the more secure the SSL connection will become.
2347 .IP CURLOPT_EGDSOCKET
2348 Pass a char * to the zero terminated path name to the Entropy Gathering Daemon
2349 socket. It will be used to seed the random engine for SSL.
2350 .IP CURLOPT_SSL_CIPHER_LIST
2351 Pass a char *, pointing to a zero terminated string holding the list of
2352 ciphers to use for the SSL connection. The list must be syntactically correct,
2353 it consists of one or more cipher strings separated by colons. Commas or
2354 spaces are also acceptable separators but colons are normally used, \&!, \&-
2355 and \&+ can be used as operators.
2356
2357 For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA',
2358 \'SHA1+DES\', 'TLSv1' and 'DEFAULT'. The default list is normally set when you
2359 compile OpenSSL.
2360
2361 You'll find more details about cipher lists on this URL:
2362 \fIhttp://www.openssl.org/docs/apps/ciphers.html\fP
2363
2364 For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5',
2365 \'rsa_aes_128_sha\', etc. With NSS you don't add/remove ciphers. If one uses
2366 this option then all known ciphers are disabled and only those passed in
2367 are enabled.
2368
2369 You'll find more details about the NSS cipher lists on this URL:
2370 \fIhttp://directory.fedora.redhat.com/docs/mod_nss.html#Directives\fP
2371
2372 .IP CURLOPT_SSL_SESSIONID_CACHE
2373 Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set
2374 this to 1 to enable it. By default all transfers are done using the
2375 cache. While nothing ever should get hurt by attempting to reuse SSL
2376 session-IDs, there seem to be broken SSL implementations in the wild that may
2377 require you to disable this in order for you to succeed. (Added in 7.16.0)
2378 .IP CURLOPT_SSL_OPTIONS
2379 Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
2380
2381 CURLSSLOPT_ALLOW_BEAST is the only supported bit and by setting this the user
2382 will tell libcurl to not attempt to use any workarounds for a security flaw
2383 in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is
2384 set to 0, the SSL layer libcurl uses may use a work-around for this flaw
2385 although it might cause interoperability problems with some (older) SSL
2386 implementations. WARNING: avoiding this work-around loosens the security, and
2387 by setting this option to 1 you ask for exactly that. (Added in 7.25.0)
2388 .IP CURLOPT_KRBLEVEL
2389 Pass a char * as parameter. Set the kerberos security level for FTP; this also
2390 enables kerberos awareness.  This is a string, \&'clear', \&'safe',
2391 \&'confidential' or \&'private'.  If the string is set but doesn't match one
2392 of these, 'private' will be used. Set the string to NULL to disable kerberos
2393 support for FTP.
2394
2395 (This option was known as CURLOPT_KRB4LEVEL up to 7.16.3)
2396 .IP CURLOPT_GSSAPI_DELEGATION
2397 Set the parameter to CURLGSSAPI_DELEGATION_FLAG to allow unconditional GSSAPI
2398 credential delegation.  The delegation is disabled by default since 7.21.7.
2399 Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG to delegate only if
2400 the OK-AS-DELEGATE flag is set in the service ticket in case this feature is
2401 supported by the GSSAPI implementation and the definition of
2402 GSS_C_DELEG_POLICY_FLAG was available at compile-time.
2403 (Added in 7.22.0)
2404 .SH SSH OPTIONS
2405 .IP CURLOPT_SSH_AUTH_TYPES
2406 Pass a long set to a bitmask consisting of one or more of
2407 CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST,
2408 CURLSSH_AUTH_KEYBOARD. Set CURLSSH_AUTH_ANY to let libcurl pick one. Currently
2409 CURLSSH_AUTH_HOST has no effect. (Added in 7.16.1)
2410 .IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
2411 Pass a char * pointing to a string containing 32 hexadecimal digits. The
2412 string should be the 128 bit MD5 checksum of the remote host's public key, and
2413 libcurl will reject the connection to the host unless the md5sums match. This
2414 option is only for SCP and SFTP transfers. (Added in 7.17.1)
2415 .IP CURLOPT_SSH_PUBLIC_KEYFILE
2416 Pass a char * pointing to a file name for your public key. If not used,
2417 libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment
2418 variable is set, and just "id_dsa.pub" in the current directory if HOME is not
2419 set.  (Added in 7.16.1)
2420 If an empty string is passed, libcurl will pass no public key to libssh2
2421 which then tries to compute it from the private key, this is known to work
2422 when libssh2 1.4.0+ is linked against OpenSSL. (Added in 7.26.0)
2423 .IP CURLOPT_SSH_PRIVATE_KEYFILE
2424 Pass a char * pointing to a file name for your private key. If not used,
2425 libcurl defaults to \fB$HOME/.ssh/id_dsa\fP if the HOME environment variable
2426 is set, and just "id_dsa" in the current directory if HOME is not set.  If the
2427 file is password-protected, set the password with
2428 \fICURLOPT_KEYPASSWD\fP. (Added in 7.16.1)
2429 .IP CURLOPT_SSH_KNOWNHOSTS
2430 Pass a pointer to a zero terminated string holding the file name of the
2431 known_host file to use.  The known_hosts file should use the OpenSSH file
2432 format as supported by libssh2. If this file is specified, libcurl will only
2433 accept connections with hosts that are known and present in that file, with a
2434 matching public key. Use \fICURLOPT_SSH_KEYFUNCTION\fP to alter the default
2435 behavior on host and key (mis)matching. (Added in 7.19.6)
2436 .IP CURLOPT_SSH_KEYFUNCTION
2437 Pass a pointer to a curl_sshkeycallback function. It gets called when the
2438 known_host matching has been done, to allow the application to act and decide
2439 for libcurl how to proceed. The callback will only be called if
2440 \fICURLOPT_SSH_KNOWNHOSTS\fP is also set.
2441
2442 The curl_sshkeycallback function gets passed the CURL handle, the key from the
2443 known_hosts file, the key from the remote site, info from libcurl on the
2444 matching status and a custom pointer (set with \fICURLOPT_SSH_KEYDATA\fP). It
2445 MUST return one of the following return codes to tell libcurl how to act:
2446 .RS
2447 .IP CURLKHSTAT_FINE_ADD_TO_FILE
2448 The host+key is accepted and libcurl will append it to the known_hosts file
2449 before continuing with the connection. This will also add the host+key combo
2450 to the known_host pool kept in memory if it wasn't already present there. The
2451 adding of data to the file is done by completely replacing the file with a new
2452 copy, so the permissions of the file must allow this.
2453 .IP CURLKHSTAT_FINE
2454 The host+key is accepted libcurl will continue with the connection. This will
2455 also add the host+key combo to the known_host pool kept in memory if it wasn't
2456 already present there.
2457 .IP CURLKHSTAT_REJECT
2458 The host+key is rejected. libcurl will deny the connection to continue and it
2459 will be closed.
2460 .IP CURLKHSTAT_DEFER
2461 The host+key is rejected, but the SSH connection is asked to be kept alive.
2462 This feature could be used when the app wants to somehow return back and act
2463 on the host+key situation and then retry without needing the overhead of
2464 setting it up from scratch again.
2465 .RE
2466  (Added in 7.19.6)
2467 .IP CURLOPT_SSH_KEYDATA
2468 Pass a void * as parameter. This pointer will be passed along verbatim to the
2469 callback set with \fICURLOPT_SSH_KEYFUNCTION\fP. (Added in 7.19.6)
2470 .SH OTHER OPTIONS
2471 .IP CURLOPT_PRIVATE
2472 Pass a void * as parameter, pointing to data that should be associated with
2473 this curl handle.  The pointer can subsequently be retrieved using
2474 \fIcurl_easy_getinfo(3)\fP with the CURLINFO_PRIVATE option. libcurl itself
2475 does nothing with this data. (Added in 7.10.3)
2476 .IP CURLOPT_SHARE
2477 Pass a share handle as a parameter. The share handle must have been created by
2478 a previous call to \fIcurl_share_init(3)\fP. Setting this option, will make
2479 this curl handle use the data from the shared handle instead of keeping the
2480 data to itself. This enables several curl handles to share data. If the curl
2481 handles are used simultaneously in multiple threads, you \fBMUST\fP use the
2482 locking methods in the share handle. See \fIcurl_share_setopt(3)\fP for
2483 details.
2484
2485 If you add a share that is set to share cookies, your easy handle will use
2486 that cookie cache and get the cookie engine enabled. If you unshare an object
2487 that was using cookies (or change to another object that doesn't share
2488 cookies), the easy handle will get its cookie engine disabled.
2489
2490 Data that the share object is not set to share will be dealt with the usual
2491 way, as if no share was used.
2492 .IP CURLOPT_NEW_FILE_PERMS
2493 Pass a long as a parameter, containing the value of the permissions that will
2494 be assigned to newly created files on the remote server.  The default value is
2495 \fI0644\fP, but any valid value can be used.  The only protocols that can use
2496 this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP. (Added in 7.16.4)
2497 .IP CURLOPT_NEW_DIRECTORY_PERMS
2498 Pass a long as a parameter, containing the value of the permissions that will
2499 be assigned to newly created directories on the remote server.  The default
2500 value is \fI0755\fP, but any valid value can be used.  The only protocols that
2501 can use this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP.
2502 (Added in 7.16.4)
2503 .SH TELNET OPTIONS
2504 .IP CURLOPT_TELNETOPTIONS
2505 Provide a pointer to a curl_slist with variables to pass to the telnet
2506 negotiations. The variables should be in the format <option=value>. libcurl
2507 supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET
2508 standard for details.
2509 .SH RETURN VALUE
2510 CURLE_OK (zero) means that the option was set properly, non-zero means an
2511 error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
2512 man page for the full list with descriptions.
2513
2514 If you try to set an option that libcurl doesn't know about, perhaps because
2515 the library is too old to support it or the option was removed in a recent
2516 version, this function will return \fICURLE_FAILED_INIT\fP.
2517 .SH "SEE ALSO"
2518 .BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3)"