--request-target: instead of --strip-path-slash

... and CURLOPT_REQUEST_TARGET instead of CURLOPT_STRIP_PATH_SLASH.

This option instead provides the full "alternative" target to use in the
request, instead of extracting the path from the URL.

Test 1298 and 1299 updated accordingly.

Idea-by: Evert Pot
Suggestion: https://daniel.haxx.se/blog/2017/06/19/options-with-curl/comment-page-1/#comment-18373

Closes #1593
This commit is contained in:
Daniel Stenberg 2017-06-21 23:35:08 +02:00
parent 8de8f4eb7e
commit 9b167fd090
20 changed files with 49 additions and 49 deletions

View file

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@ -123,7 +123,7 @@ static void free_config_fields(struct OperationConfig *config)
Curl_safefree(config->pubkey);
Curl_safefree(config->hostpubmd5);
Curl_safefree(config->engine);
Curl_safefree(config->request_target);
Curl_safefree(config->customrequest);
Curl_safefree(config->krblevel);

View file

@ -139,12 +139,12 @@ struct OperationConfig {
bool crlf;
char *customrequest;
char *krblevel;
char *request_target;
long httpversion;
bool nobuffer;
bool readbusy; /* set when reading input returns EAGAIN */
bool globoff;
bool use_httpget;
bool strip_path_slash;
bool insecure_ok; /* set TRUE to allow insecure SSL connects */
bool proxy_insecure_ok; /* set TRUE to allow insecure SSL connects
for proxy */

View file

@ -257,7 +257,7 @@ static const struct LongShort aliases[]= {
{"Fs", "form-string", ARG_STRING},
{"g", "globoff", ARG_BOOL},
{"G", "get", ARG_NONE},
{"Ga", "strip-path-slash", ARG_BOOL},
{"Ga", "request-target", ARG_STRING},
{"h", "help", ARG_BOOL},
{"H", "header", ARG_STRING},
{"Hp", "proxy-header", ARG_STRING},
@ -1592,8 +1592,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
break;
case 'G': /* HTTP GET */
if(subletter == 'a') { /* --strip-path-slash */
config->strip_path_slash = TRUE;
if(subletter == 'a') { /* --request-target */
GetStr(&config->request_target, nextarg);
}
else
config->use_httpget = TRUE;

View file

@ -160,8 +160,8 @@ static const struct helptxt helptext[] = {
"Disable URL sequences and ranges using {} and []"},
{"-I, --head",
"Show document info only"},
{"-H, --header <header>",
"Pass custom header LINE to server"},
{"-H, --header <header/@file>",
"Pass custom header(s) to server"},
{"-h, --help",
"This help text"},
{" --hostpubmd5 <md5>",
@ -298,8 +298,8 @@ static const struct helptxt helptext[] = {
"Set a CRL list for proxy"},
{" --proxy-digest",
"Use Digest authentication on the proxy"},
{" --proxy-header <header>",
"Pass custom header LINE to proxy"},
{" --proxy-header <header/@file>",
"Pass custom header(s) to proxy"},
{" --proxy-insecure",
"Do HTTPS proxy connections without verifying the proxy"},
{" --proxy-key <key>",
@ -352,6 +352,8 @@ static const struct helptxt helptext[] = {
"Set the remote file's time on the local output"},
{"-X, --request <command>",
"Specify request command to use"},
{" --request-target",
"Specify the target for this request"},
{" --resolve <host:port:address>",
"Resolve the host+port to this address"},
{" --retry <num>",
@ -400,8 +402,6 @@ static const struct helptxt helptext[] = {
"Use SSLv3"},
{" --stderr",
"Where to redirect stderr"},
{" --strip-path-slash",
"Strip off the first slash of the path"},
{" --suppress-connect-headers",
"Suppress proxy CONNECT response headers"},
{" --tcp-fastopen",

View file

@ -972,8 +972,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
#endif /* !CURL_DISABLE_PROXY */
my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror?1L:0L);
my_setopt(curl, CURLOPT_STRIP_PATH_SLASH,
config->strip_path_slash?1L:0L);
my_setopt(curl, CURLOPT_REQUEST_TARGET, config->request_target);
my_setopt(curl, CURLOPT_UPLOAD, uploadfile?1L:0L);
my_setopt(curl, CURLOPT_DIRLISTONLY, config->dirlistonly?1L:0L);
my_setopt(curl, CURLOPT_APPEND, config->ftp_append?1L:0L);