Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR
... as replacements for deprecated CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the 32 bit limit the old ones are facing. CURLINFO_PROTCOOL is now deprecated. The curl tool is updated to use the new options. Added test 1597 to verify the libcurl protocol parser. Closes #8992
- Loading branch information
Showing
24 changed files
with
487 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
.\" ************************************************************************** | ||
.\" * _ _ ____ _ | ||
.\" * Project ___| | | | _ \| | | ||
.\" * / __| | | | |_) | | | ||
.\" * | (__| |_| | _ <| |___ | ||
.\" * \___|\___/|_| \_\_____| | ||
.\" * | ||
.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al. | ||
.\" * | ||
.\" * This software is licensed as described in the file COPYING, which | ||
.\" * you should have received as part of this distribution. The terms | ||
.\" * are also available at https://curl.se/docs/copyright.html. | ||
.\" * | ||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell | ||
.\" * copies of the Software, and permit persons to whom the Software is | ||
.\" * furnished to do so, under the terms of the COPYING file. | ||
.\" * | ||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
.\" * KIND, either express or implied. | ||
.\" * | ||
.\" * SPDX-License-Identifier: curl | ||
.\" * | ||
.\" ************************************************************************** | ||
.\" | ||
.TH CURLOPT_PROTOCOLS_STR 3 "11 Jun 2022" "libcurl 7.85.0" "curl_easy_setopt options" | ||
.SH NAME | ||
CURLOPT_PROTOCOLS_STR \- allowed protocols | ||
.SH SYNOPSIS | ||
.nf | ||
#include <curl/curl.h> | ||
|
||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS_STR, char *spec); | ||
.fi | ||
.SH DESCRIPTION | ||
Pass a pointer to a string that holds a comma-separated list of case | ||
insensitive protocol names (URL schemes) to allow in the transfer. This | ||
option allows applications to use libcurl built to support a wide range of | ||
protocols but still limit specific transfers to only be allowed to use a | ||
subset of them. By default, libcurl accepts all protocols it was built with | ||
support for. See also \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP. | ||
|
||
If trying to set a non-existing protocol or if no matching protocol at all is | ||
set, it returns error. | ||
|
||
These are the available protocols: | ||
|
||
DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, | ||
POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP, SMB, | ||
SMBS, SMTP, SMTPS, TELNET, TFTP | ||
|
||
You can set "ALL" as a short-cut to enable all protocols. Note that by setting | ||
all, you may enable protocols that were not supported the day you write this | ||
but are introduced in a future libcurl version. | ||
|
||
\fIcurl_version_info(3)\fP can be used to get a list of all supported | ||
protocols in the current libcurl. \fICURLINFO_SCHEME(3)\fP is the recommended | ||
way to figure out the protocol used in a previous transfer. | ||
.SH DEFAULT | ||
All protocols built-in | ||
.SH PROTOCOLS | ||
All | ||
.SH EXAMPLE | ||
.nf | ||
curl = curl_easy_init(); | ||
if(curl) { | ||
/* pass in the URL from an external source */ | ||
curl_easy_setopt(curl, CURLOPT_URL, argv[1]); | ||
|
||
/* only allow HTTP, TFTP and SFTP */ | ||
curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, "http,tftp,sftp"); | ||
|
||
/* Perform the request */ | ||
curl_easy_perform(curl); | ||
} | ||
.fi | ||
.SH AVAILABILITY | ||
Added in 7.85.0 | ||
.SH RETURN VALUE | ||
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. | ||
.SH "SEE ALSO" | ||
.BR CURLOPT_REDIR_PROTOCOLS_STR "(3), " CURLOPT_URL "(3), " | ||
.BR curl_version_info "(3), " CURLINFO_SCHEME "(3), " |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
.\" ************************************************************************** | ||
.\" * _ _ ____ _ | ||
.\" * Project ___| | | | _ \| | | ||
.\" * / __| | | | |_) | | | ||
.\" * | (__| |_| | _ <| |___ | ||
.\" * \___|\___/|_| \_\_____| | ||
.\" * | ||
.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al. | ||
.\" * | ||
.\" * This software is licensed as described in the file COPYING, which | ||
.\" * you should have received as part of this distribution. The terms | ||
.\" * are also available at https://curl.se/docs/copyright.html. | ||
.\" * | ||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell | ||
.\" * copies of the Software, and permit persons to whom the Software is | ||
.\" * furnished to do so, under the terms of the COPYING file. | ||
.\" * | ||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
.\" * KIND, either express or implied. | ||
.\" * | ||
.\" * SPDX-License-Identifier: curl | ||
.\" * | ||
.\" ************************************************************************** | ||
.\" | ||
.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" | ||
.SH NAME | ||
CURLOPT_REDIR_PROTOCOLS_STR \- protocols allowed to redirect to | ||
.SH SYNOPSIS | ||
.nf | ||
#include <curl/curl.h> | ||
|
||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS_STR, | ||
char *spec); | ||
.fi | ||
.SH DESCRIPTION | ||
Pass a pointer to a string that holds a comma-separated list of case | ||
insensitive protocol names (URL schemes). That list limits what protocols | ||
libcurl may use in a transfer that it follows to in a redirect when | ||
\fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This option allows applications to | ||
limit specific transfers to only be allowed to use a subset of protocols in | ||
redirections. | ||
|
||
Protocols denied by \fICURLOPT_PROTOCOLS_STR(3)\fP are not overridden by this | ||
option. | ||
|
||
By default libcurl will allow HTTP, HTTPS, FTP and FTPS on redirects (since | ||
7.65.2). Older versions of libcurl allowed all protocols on redirect except | ||
several disabled for security reasons: Since 7.19.4 FILE and SCP are disabled, | ||
and since 7.40.0 SMB and SMBS are also disabled. | ||
|
||
These are the available protocols: | ||
|
||
DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, | ||
POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP, SMB, | ||
SMBS, SMTP, SMTPS, TELNET, TFTP | ||
|
||
You can set "ALL" as a short-cut to enable all protocols. Note that by setting | ||
all, you may enable protocols that were not supported the day you write this | ||
but are introduced in a future libcurl version. | ||
|
||
If trying to set a non-existing protocol or if no matching protocol at all is | ||
set, it returns error. | ||
.SH 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. | ||
.SH PROTOCOLS | ||
All | ||
.SH EXAMPLE | ||
.nf | ||
curl = curl_easy_init(); | ||
if(curl) { | ||
/* pass in the URL from an external source */ | ||
curl_easy_setopt(curl, CURLOPT_URL, argv[1]); | ||
|
||
/* only allow redirects to HTTP and HTTPS URLs */ | ||
curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR, "http,https"); | ||
|
||
/* Perform the request */ | ||
curl_easy_perform(curl); | ||
} | ||
.fi | ||
.SH AVAILABILITY | ||
Added in 7.85.0. | ||
.SH RETURN VALUE | ||
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. | ||
.SH "SEE ALSO" | ||
.BR CURLOPT_PROTOCOLS_STR "(3), " |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.