gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 58/208: --request-target: instead of --strip-path-s


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 58/208: --request-target: instead of --strip-path-slash
Date: Wed, 09 Aug 2017 17:34:15 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to annotated tag gnurl-7.55.0
in repository gnurl.

commit 9b167fd090f596eac828817d48c247eeae53407f
Author: Daniel Stenberg <address@hidden>
AuthorDate: Wed Jun 21 23:35:08 2017 +0200

    --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
---
 docs/cmdline-opts/Makefile.inc                             |  2 +-
 docs/cmdline-opts/request-target.d                         |  8 ++++++++
 docs/cmdline-opts/strip-path-slash.d                       |  7 -------
 docs/libcurl/curl_easy_setopt.3                            |  4 ++--
 docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3                  |  2 +-
 docs/libcurl/opts/CURLOPT_NOBODY.3                         |  2 +-
 ...CURLOPT_STRIP_PATH_SLASH.3 => CURLOPT_REQUEST_TARGET.3} | 14 +++++++-------
 docs/libcurl/opts/Makefile.inc                             |  2 +-
 docs/libcurl/symbols-in-versions                           |  2 +-
 include/curl/curl.h                                        |  4 ++--
 lib/http.c                                                 |  4 ++--
 lib/url.c                                                  |  6 +++---
 lib/urldata.h                                              |  2 +-
 src/tool_cfgable.c                                         |  4 ++--
 src/tool_cfgable.h                                         |  2 +-
 src/tool_getparam.c                                        |  6 +++---
 src/tool_help.c                                            | 12 ++++++------
 src/tool_operate.c                                         |  3 +--
 tests/data/test1298                                        |  6 +++---
 tests/data/test1299                                        |  6 +++---
 20 files changed, 49 insertions(+), 49 deletions(-)

diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc
index edc86fe1a..70d089035 100644
--- a/docs/cmdline-opts/Makefile.inc
+++ b/docs/cmdline-opts/Makefile.inc
@@ -42,6 +42,6 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d 
cacert.d capath.d cer
   tlsauthtype.d tlspassword.d tlsuser.d tlsv1.0.d tlsv1.1.d tlsv1.2.d   \
   tlsv1.3.d tlsv1.d trace-ascii.d trace.d trace-time.d tr-encoding.d    \
   unix-socket.d upload-file.d url.d use-ascii.d user-agent.d user.d     \
-  verbose.d version.d write-out.d xattr.d strip-path-slash.d
+  verbose.d version.d write-out.d xattr.d request-target.d
 
 OTHERPAGES = page-footer page-header
diff --git a/docs/cmdline-opts/request-target.d 
b/docs/cmdline-opts/request-target.d
new file mode 100644
index 000000000..630f8b3b4
--- /dev/null
+++ b/docs/cmdline-opts/request-target.d
@@ -0,0 +1,8 @@
+Long: request-target
+Help: Specify the target for this request
+Protocols: HTTP
+---
+Tells curl to use an alternative "target" (path) instead of using the path as
+provided in the URL. Particularly useful when wanting to issue HTTP requests
+without leading slash or other data that doesn't follow the regular URL
+pattern, like "OPTIONS *".
diff --git a/docs/cmdline-opts/strip-path-slash.d 
b/docs/cmdline-opts/strip-path-slash.d
deleted file mode 100644
index 4aee947dd..000000000
--- a/docs/cmdline-opts/strip-path-slash.d
+++ /dev/null
@@ -1,7 +0,0 @@
-Long: strip-path-slash
-Help: Strip off the first slash of the path
-Protocols: HTTP
----
-Tells curl to strip the leading slash from the path when it sends the path to
-the server. Useful when wanting to issue HTTP requests without leading slash,
-like "OPTIONS *".
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 70e1ee8fd..bf3a0f268 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -303,8 +303,8 @@ Start a new cookie session. See 
\fICURLOPT_COOKIESESSION(3)\fP
 Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
 .IP CURLOPT_HTTPGET
 Do a HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
-.IP CURLOPT_STRIP_PATH_SLASH
-Cut off the leading slash from the path. \fICURLOPT_STRIP_PATH_SLASH(3)\fP
+.IP CURLOPT_REQUEST_TARGET
+Set the request target. \fICURLOPT_REQUEST_TARGET(3)\fP
 .IP CURLOPT_HTTP_VERSION
 HTTP version to use. \fICURLOPT_HTTP_VERSION(3)\fP
 .IP CURLOPT_IGNORE_CONTENT_LENGTH
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 
b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index e53504491..33cce250b 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -108,4 +108,4 @@ Returns CURLE_OK if the option is supported, 
CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
 .SH "SEE ALSO"
 .BR CURLOPT_HTTPHEADER "(3), " CURLOPT_NOBODY "(3), "
-.BR CURLOPT_STRIP_PATH_SLASH "(3), "
+.BR CURLOPT_REQUEST_TARGET "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 
b/docs/libcurl/opts/CURLOPT_NOBODY.3
index d0116a9ed..02590b212 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -57,4 +57,4 @@ Always
 Returns CURLE_OK
 .SH "SEE ALSO"
 .BR CURLOPT_HTTPGET "(3), " CURLOPT_POST "(3), "
-.BR CURLOPT_STRIP_PATH_SLASH "(3), "
+.BR CURLOPT_REQUEST_TARGET "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_STRIP_PATH_SLASH.3 
b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
similarity index 80%
rename from docs/libcurl/opts/CURLOPT_STRIP_PATH_SLASH.3
rename to docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
index 5d0886782..eabefaa2d 100644
--- a/docs/libcurl/opts/CURLOPT_STRIP_PATH_SLASH.3
+++ b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
@@ -20,18 +20,18 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STRIP_PATH_SLASH 3 "17 Jun 2014" "libcurl 7.37.0" 
"curl_easy_setopt options"
+.TH CURLOPT_REQUEST_TARGET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt 
options"
 .SH NAME
-CURLOPT_STRIP_PATH_SLASH \- strip the leading slash from the path
+CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STRIP_PATH_SLASH, value);
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);
 .SH DESCRIPTION
-Pass a long set to 1 to tell libcurl to strip out the leading slash from the
-path when used on the server.
+Pass a char * to string which libcurl uses in the upcoming request instead of
+the path as extracted from the URL.
 .SH DEFAULT
-0 - use the leading slash.
+NULL
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
@@ -42,7 +42,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "OPTIONS");
 
   /* issue an OPTIONS * request (no leading slash) */
-  curl_easy_setopt(curl, CURLOPT_STRIP_PATH_SLASH, 1L);
+  curl_easy_setopt(curl, CURLOPT_REQUEST_TARGET, "*");
 
   /* Perform the request */
   curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc
index 40930dc5d..c094604d9 100644
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@ -231,6 +231,7 @@ man_MANS =                                      \
   CURLOPT_READFUNCTION.3                        \
   CURLOPT_REDIR_PROTOCOLS.3                     \
   CURLOPT_REFERER.3                             \
+  CURLOPT_REQUEST_TARGET.3                      \
   CURLOPT_RESOLVE.3                             \
   CURLOPT_RESUME_FROM.3                         \
   CURLOPT_RESUME_FROM_LARGE.3                   \
@@ -278,7 +279,6 @@ man_MANS =                                      \
   CURLOPT_STREAM_DEPENDS.3                      \
   CURLOPT_STREAM_DEPENDS_E.3                    \
   CURLOPT_STREAM_WEIGHT.3                       \
-  CURLOPT_STRIP_PATH_SLASH.3                    \
   CURLOPT_SUPPRESS_CONNECT_HEADERS.3            \
   CURLOPT_TCP_FASTOPEN.3                        \
   CURLOPT_TCP_KEEPALIVE.3                       \
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index c9a53cb1c..b1a671cd1 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -409,7 +409,6 @@ CURLOPT_HTTPPOST                7.1
 CURLOPT_HTTPPROXYTUNNEL         7.3
 CURLOPT_HTTPREQUEST             7.1           -           7.15.5
 CURLOPT_HTTP_CONTENT_DECODING   7.16.2
-CURLOPT_STRIP_PATH_SLASH        7.55.0
 CURLOPT_HTTP_TRANSFER_DECODING  7.16.2
 CURLOPT_HTTP_VERSION            7.9.1
 CURLOPT_IGNORE_CONTENT_LENGTH   7.14.1
@@ -509,6 +508,7 @@ CURLOPT_READDATA                7.9.7
 CURLOPT_READFUNCTION            7.1
 CURLOPT_REDIR_PROTOCOLS         7.19.4
 CURLOPT_REFERER                 7.1
+CURLOPT_REQUEST_TARGET          7.55.0
 CURLOPT_RESOLVE                 7.21.3
 CURLOPT_RESUME_FROM             7.1
 CURLOPT_RESUME_FROM_LARGE       7.11.0
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 521aa5e78..0b741e82d 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -1780,8 +1780,8 @@ typedef enum {
   /* Suppress proxy CONNECT response headers from user callbacks */
   CINIT(SUPPRESS_CONNECT_HEADERS, LONG, 265),
 
-  /* Strip the initial slash from the path taken from the URL */
-  CINIT(STRIP_PATH_SLASH, LONG, 266),
+  /* The request target, instead of extracted from the URL */
+  CINIT(REQUEST_TARGET, STRINGPOINT, 266),
 
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
diff --git a/lib/http.c b/lib/http.c
index 2d04705ba..b8f4c8a21 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -2269,8 +2269,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   if(result)
     return result;
 
-  if(data->set.strip_path_slash)
-    ppath++;
+  if(data->set.str[STRING_TARGET])
+    ppath = data->set.str[STRING_TARGET];
 
   /* url */
   if(paste_ftp_userpwd)
diff --git a/lib/url.c b/lib/url.c
index 23b243f83..3b3143ab8 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -829,9 +829,9 @@ CURLcode Curl_setopt(struct Curl_easy *data, CURLoption 
option,
          then this can be changed to HEAD later on) */
       data->set.httpreq = HTTPREQ_GET;
     break;
-  case CURLOPT_STRIP_PATH_SLASH:
-    arg = va_arg(param, long);
-    data->set.strip_path_slash = (bool)arg;
+  case CURLOPT_REQUEST_TARGET:
+    result = setstropt(&data->set.str[STRING_TARGET],
+                       va_arg(param, char *));
     break;
   case CURLOPT_FILETIME:
     /*
diff --git a/lib/urldata.h b/lib/urldata.h
index 9310abc17..8c4a029fe 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -1588,7 +1588,7 @@ enum dupstring {
 #ifdef USE_UNIX_SOCKETS
   STRING_UNIX_SOCKET_PATH,      /* path to Unix socket, if used */
 #endif
-
+  STRING_TARGET,                /* CURLOPT_REQUEST_TARGET */
   /* -- end of zero-terminated strings -- */
 
   STRING_LASTZEROTERMINATED,
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
index f00a0d1e7..675e88b45 100644
--- a/src/tool_cfgable.c
+++ b/src/tool_cfgable.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, 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);
 
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index f6536e8e4..8b6e0cfa7 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -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 */
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 642bba832..6cb394139 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -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;
diff --git a/src/tool_help.c b/src/tool_help.c
index 6d36e550f..2acc994d5 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -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",
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 51a9aa9f6..147081438 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -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);
diff --git a/tests/data/test1298 b/tests/data/test1298
index c9c8b383a..061a4e1e0 100644
--- a/tests/data/test1298
+++ b/tests/data/test1298
@@ -3,7 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
---strip-path-slash
+--request-target
 </keywords>
 </info>
 
@@ -32,10 +32,10 @@ Funny-head: yesyes
 http
 </server>
  <name>
-HTTP GET special path with --strip-path-slash
+HTTP GET special path with --request-target
  </name>
  <command>
---strip-path-slash "http://%HOSTIP:%HTTPPORT/XXX"; -H "Testno: 1298"
+--request-target "XXX" "http://%HOSTIP:%HTTPPORT/"; -H "Testno: 1298"
 </command>
 </client>
 
diff --git a/tests/data/test1299 b/tests/data/test1299
index 51bb71248..5ed92da5c 100644
--- a/tests/data/test1299
+++ b/tests/data/test1299
@@ -2,7 +2,7 @@
 <info>
 <keywords>
 HTTP
---strip-path-slash
+--request-target
 </keywords>
 </info>
 
@@ -31,10 +31,10 @@ Funny-head: yesyes
 http
 </server>
  <name>
-Send "OPTIONS *" with --strip-path-slash
+Send "OPTIONS *" with --request-target
  </name>
  <command>
---strip-path-slash -X OPTIONS http://%HOSTIP:%HTTPPORT/* -H "Testno: 1299"
+--request-target "*" -X OPTIONS http://%HOSTIP:%HTTPPORT/ -H "Testno: 1299"
 </command>
 </client>
 

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]