cookies (cookies for the handle have not been enabled or simply none have been
received) the 'struct curl_slist *' is made a NULL pointer.
-Since 7.43.0 cookies that were imported in the Set-Cookie format without a
-domain name are not exported by this option.
+Cookies that were imported in the Set-Cookie format without a domain name are
+not exported by this option.
# %PROTOCOLS%
# DESCRIPTION
-Deprecated since 7.45.0. Use CURLINFO_ACTIVESOCKET(3) instead.
+Deprecated. Use CURLINFO_ACTIVESOCKET(3) instead.
Pass a pointer to a long to receive the last socket used by this curl
session. If the socket is no longer valid, -1 is returned. When you finish
}
~~~
+# DEPRECATED
+
+Deprecated since 7.45.0.
+
# %AVAILABILITY%
# RETURN VALUE
the new URL.
This URL is also set if the CURLOPT_MAXREDIRS(3) limit prevented a redirect to
-happen (since 7.54.1).
+happen.
# %PROTOCOLS%
CURLINFO_TLS_SESSION(3): **SSL_CTX ***
CURLINFO_TLS_SSL_PTR(3): **SSL ***
-Since 7.48.0 the *internals* member can point to these other SSL backends
-as well:
## mbedTLS
This option supersedes CURLINFO_TLS_SESSION(3) which was added in 7.34.0.
This option is exactly the same as that option except in the case of OpenSSL.
+Non-OpenSSL support was added in 7.48.0.
+
# %AVAILABILITY%
# RETURN VALUE
the application can obtain the most recently used socket for special data
transfers.
-Since 7.86.0, this option can be set to '2' and if WebSocket is used,
-libcurl performs the request and reads all response headers before handing
-over control to the application. For other protocols the behavior of '2'
-is undefined.
+This option can be set to '2' and if WebSocket is used, libcurl performs the
+request and reads all response headers before handing over control to the
+application. For other protocols the behavior of '2' is undefined.
Transfers marked connect only do not reuse any existing connections and
connections marked connect only are not allowed to get reused.
need it until you call curl_easy_cleanup(3) or you set the same option again
to use a different pointer.
-Do not rely on the contents of the buffer unless an error code was returned.
-Since 7.60.0 libcurl initializes the contents of the error buffer to an empty
-string before performing the transfer. For earlier versions if an error code
-was returned but there was no error detail then the buffer was untouched.
+libcurl initializes the contents of the error buffer to an empty string before
+performing a transfer.
Do not attempt to set the contents of the buffer yourself, including in any
callbacks you write that may be called by libcurl. The library may overwrite
}
~~~
+# HISTORY
+
+Before curl 7.60.0, if an error code was returned but there was no error
+detail the buffer was untouched: not initialized.
+
# %AVAILABILITY%
# RETURN VALUE
# DEFAULT
-1 since 7.74.0, was 0 before then.
+1, enabled.
# %PROTOCOLS%
}
~~~
+# HISTORY
+
+Before curl 7.74.0, this option was disabled by default.
+
# %AVAILABILITY%
# RETURN VALUE
"example.com,::1,localhost"
-Since 7.86.0, IP addresses specified to this option can be provided using CIDR
-notation: an appended slash and number specifies the number of "network bits"
-out of the address to use in the comparison. For example "192.168.0.0/16"
-would match all addresses starting with "192.168".
+IP addresses specified to this option can be provided using CIDR notation: an
+appended slash and number specifies the number of "network bits" out of the
+address to use in the comparison. For example "192.168.0.0/16" would match all
+addresses starting with "192.168".
The application does not have to keep the string around after setting this
option.
}
~~~
+# HISTORY
+
+CIDR format support was added in 7.86.0.
+
# %AVAILABILITY%
# RETURN VALUE
If you use POST to an HTTP 1.1 server, you can send data without knowing the
size before starting the POST if you use chunked encoding. You enable this by
-adding a header like "Transfer-Encoding: chunked" with
-CURLOPT_HTTPHEADER(3). With HTTP 1.0 or without chunked transfer, you
-must specify the size in the request. (Since 7.66.0, libcurl automatically
-uses chunked encoding for POSTs if the size is unknown.)
+adding a header like "Transfer-Encoding: chunked" with CURLOPT_HTTPHEADER(3).
+With HTTP 1.0 or without chunked transfer, you must specify the size in the
+request. libcurl automatically uses chunked encoding for POSTs if the size is
+unknown.
When setting CURLOPT_POST(3) to 1, libcurl automatically sets
CURLOPT_NOBODY(3) and CURLOPT_HTTPGET(3) to 0.
## https://
-HTTPS Proxy. (Added in 7.52.0 for OpenSSL and GnuTLS Since 7.87.0, it also
-works for mbedTLS, Rustls, Schannel and wolfSSL.)
+HTTPS Proxy. (with OpenSSL, GnuTLS, mbedTLS, Rustls, Schannel or wolfSSL.)
This uses HTTP/1 by default. Setting CURLOPT_PROXYTYPE(3) to
**CURLPROXY_HTTPS2** allows libcurl to negotiate using HTTP/2 with proxy.
Since 7.50.2, unsupported schemes in proxy strings cause libcurl to return
error.
+Since 7.52.0, it supports HTTPS proxy for OpenSSL.
+
+Since 7.87.0, it supports HTTPS proxy for GnuTLS, for mbedTLS, Rustls,
+Schannel and wolfSSL.
+
# %AVAILABILITY%
# RETURN VALUE
# DEFAULT
-HTTP, HTTPS, FTP and FTPS (Added in 7.65.2).
-
-Older versions defaulted to all protocols except FILE, SCP and since 7.40.0
-SMB and SMBS.
+HTTP, HTTPS, FTP and FTPS
# %PROTOCOLS%
# DEFAULT
-HTTP, HTTPS, FTP and FTPS (Added in 7.65.2).
-
-Older versions defaulted to all protocols except FILE, SCP and since 7.40.0
-SMB and SMBS.
+HTTP, HTTPS, FTP and FTPS
# %PROTOCOLS%
specific socket options. The callback's *purpose* argument identifies the
exact purpose for this particular socket:
-*CURLSOCKTYPE_IPCXN* for actively created connections or since 7.28.0
-*CURLSOCKTYPE_ACCEPT* for FTP when the connection was setup with PORT/EPSV
-(in earlier versions these sockets were not passed to this callback).
+*CURLSOCKTYPE_IPCXN* for actively created connections or *CURLSOCKTYPE_ACCEPT*
+for FTP when the connection was setup with PORT/EPSV (in earlier versions
+these sockets were not passed to this callback).
Future versions of libcurl may support more purposes. libcurl passes the newly
created socket descriptor to the callback in the *curlfd* parameter so
# DESCRIPTION
-Deprecated since 7.49.0. Use CURLOPT_PROXY_SERVICE_NAME(3) instead.
+Deprecated. Use CURLOPT_PROXY_SERVICE_NAME(3) instead.
Pass a char pointer as parameter to a string holding the *name* of the
service. The default service name for a SOCKS5 server is *rcmd*. This option
# DESCRIPTION
-Deprecated since 7.86.0 Setting this option has no function.
+Deprecated. Setting this option has no function.
Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This
option enables/disables NPN in the SSL handshake (if the SSL backend libcurl
# DESCRIPTION
-Pass in a pointer to the *URL* to work with. The parameter should be a
-char * to a null-terminated string which must be URL-encoded in the following
-format:
+Pass in a pointer to the *URL* to work with. The parameter should be a char *
+to a null-terminated string which must be URL-encoded in the following format:
scheme://host:port/path
For a greater explanation of the format please see RFC 3986.
libcurl does not validate the syntax or use the URL until the transfer is
-started. Even if you set a crazy value here, curl_easy_setopt(3) might
-still return *CURLE_OK*.
+started. Even if you set a crazy value here, curl_easy_setopt(3) might still
+return *CURLE_OK*.
If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
then libcurl guesses based on the host. If the outermost subdomain name
matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol gets used,
-otherwise HTTP is used. Since 7.45.0 guessing can be disabled by setting a
-default protocol, see CURLOPT_DEFAULT_PROTOCOL(3) for details.
+otherwise HTTP is used. Scheme guessing can be disabled by setting a default
+protocol, see CURLOPT_DEFAULT_PROTOCOL(3) for details.
Should the protocol, either as specified by the URL scheme or deduced by
libcurl from the hostname, not be supported by libcurl then
curl_version_info(3) for detailed information of which protocols are supported
by the build of libcurl you are using.
-CURLOPT_PROTOCOLS_STR(3) can be used to limit what protocols libcurl may
-use for this transfer, independent of what libcurl has been compiled to
-support. That may be useful if you accept the URL from an external source and
-want to limit the accessibility.
+CURLOPT_PROTOCOLS_STR(3) can be used to limit what protocols libcurl may use
+for this transfer, independent of what libcurl has been compiled to support.
+That may be useful if you accept the URL from an external source and want to
+limit the accessibility.
The CURLOPT_URL(3) string is ignored if CURLOPT_CURLU(3) is set.
-Either CURLOPT_URL(3) or CURLOPT_CURLU(3) must be set before a
-transfer is started.
+Either CURLOPT_URL(3) or CURLOPT_CURLU(3) must be set before a transfer is
+started.
The application does not have to keep the string around after setting this
option.
previous ones. Set it to NULL to disable its use again. Note however that
libcurl needs a URL set to be able to performed a transfer.
-The parser used for handling the URL set with CURLOPT_URL(3) is the same
-that curl_url_set(3) uses.
+The parser used for handling the URL set with CURLOPT_URL(3) is the same that
+curl_url_set(3) uses.
# ENCODING
-The string pointed to in the CURLOPT_URL(3) argument is generally
-expected to be a sequence of characters using an ASCII compatible encoding.
+The string pointed to in the CURLOPT_URL(3) argument is generally expected to
+be a sequence of characters using an ASCII compatible encoding.
If libcurl is built with IDN support, the server name part of the URL can use
an "international name" by using the current encoding (according to locale) or