mirror of
https://github.com/curl/curl.git
synced 2026-07-29 08:33:06 +03:00
mime: use percent-escaping for multipart form field and file names
Until now, form field and file names where escaped using the backslash-escaping algorithm defined for multipart mails. This commit replaces this with the percent-escaping method for URLs. As this may introduce incompatibilities with server-side applications, a new libcurl option CURLOPT_MIME_OPTIONS with bitmask CURLMIMEOPT_FORMESCAPE is introduced to revert to legacy use of backslash-escaping. This is controlled by new cli tool option --form-escape. New tests and documentation are provided for this feature. Reported by: Ryan Sleevi Fixes #7789 Closes #7805
This commit is contained in:
parent
6ec28eb687
commit
b20b364764
23 changed files with 463 additions and 30 deletions
|
|
@ -138,6 +138,7 @@ static const struct LongShort aliases[]= {
|
|||
{"$h", "retry-delay", ARG_STRING},
|
||||
{"$i", "retry-max-time", ARG_STRING},
|
||||
{"$k", "proxy-negotiate", ARG_BOOL},
|
||||
{"$l", "form-escape", ARG_BOOL},
|
||||
{"$m", "ftp-account", ARG_STRING},
|
||||
{"$n", "proxy-anyauth", ARG_BOOL},
|
||||
{"$o", "trace-time", ARG_BOOL},
|
||||
|
|
@ -988,6 +989,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
break;
|
||||
|
||||
case 'l': /* --form-escape */
|
||||
config->mime_options &= ~CURLMIMEOPT_FORMESCAPE;
|
||||
if(toggle)
|
||||
config->mime_options |= CURLMIMEOPT_FORMESCAPE;
|
||||
break;
|
||||
|
||||
case 'm': /* --ftp-account */
|
||||
GetStr(&config->ftp_account, nextarg);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue