diff options
author | Patrick Monnerat <patrick@monnerat.net> | 2021-10-25 12:58:37 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-11-15 10:40:03 +0100 |
commit | b20b364764cca2d577640126494fe2b09ae22e5d (patch) | |
tree | 78846a017865e51309fa64bc9bed29c8c6a63b09 /include | |
parent | 6ec28eb68729240cd359803dd2f65cb3d5b03f42 (diff) | |
download | curl-b20b364764cca2d577640126494fe2b09ae22e5d.tar.gz |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/curl/curl.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/curl/curl.h b/include/curl/curl.h index 6b6ac8a05..7b69ce2d6 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -2132,6 +2132,9 @@ typedef enum { * (in seconds) */ CURLOPT(CURLOPT_MAXLIFETIME_CONN, CURLOPTTYPE_LONG, 314), + /* Set MIME option flags. */ + CURLOPT(CURLOPT_MIME_OPTIONS, CURLOPTTYPE_LONG, 315), + CURLOPT_LASTENTRY /* the last unused */ } CURLoption; @@ -2291,6 +2294,9 @@ CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n); typedef struct curl_mime curl_mime; /* Mime context. */ typedef struct curl_mimepart curl_mimepart; /* Mime part context. */ +/* CURLMIMEOPT_ defines are for the CURLOPT_MIME_OPTIONS option. */ +#define CURLMIMEOPT_FORMESCAPE (1<<0) /* Use backslash-escaping for forms. */ + /* * NAME curl_mime_init() * |