mirror of
https://github.com/cesanta/mongoose.git
synced 2025-08-06 05:26:15 +08:00
Expose mg_url_decode to the API
This commit is contained in:
parent
ce26234ace
commit
cfbaf7f1ae
13
mongoose.c
13
mongoose.c
@ -1635,13 +1635,8 @@ int mg_printf(struct mg_connection *conn, const char *fmt, ...) {
|
|||||||
return mg_vprintf(conn, fmt, ap);
|
return mg_vprintf(conn, fmt, ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// URL-decode input buffer into destination buffer.
|
int mg_url_decode(const char *src, int src_len, char *dst,
|
||||||
// 0-terminate the destination buffer. Return the length of decoded data.
|
int dst_len, int is_form_url_encoded) {
|
||||||
// form-url-encoded data differs from URI encoding in a way that it
|
|
||||||
// uses '+' as character for space, see RFC 1866 section 8.2.1
|
|
||||||
// http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt
|
|
||||||
static int url_decode(const char *src, int src_len, char *dst,
|
|
||||||
int dst_len, int is_form_url_encoded) {
|
|
||||||
int i, j, a, b;
|
int i, j, a, b;
|
||||||
#define HEXTOI(x) (isdigit(x) ? x - '0' : x - 'W')
|
#define HEXTOI(x) (isdigit(x) ? x - '0' : x - 'W')
|
||||||
|
|
||||||
@ -1698,7 +1693,7 @@ int mg_get_var(const char *data, size_t data_len, const char *name,
|
|||||||
assert(s >= p);
|
assert(s >= p);
|
||||||
|
|
||||||
// Decode variable into destination buffer
|
// Decode variable into destination buffer
|
||||||
len = url_decode(p, (size_t)(s - p), dst, dst_len, 1);
|
len = mg_url_decode(p, (size_t)(s - p), dst, dst_len, 1);
|
||||||
|
|
||||||
// Redirect error code from -1 to -2 (destination buffer too small).
|
// Redirect error code from -1 to -2 (destination buffer too small).
|
||||||
if (len == -1) {
|
if (len == -1) {
|
||||||
@ -4396,7 +4391,7 @@ static void handle_request(struct mg_connection *conn) {
|
|||||||
* ((char *) conn->request_info.query_string++) = '\0';
|
* ((char *) conn->request_info.query_string++) = '\0';
|
||||||
}
|
}
|
||||||
uri_len = (int) strlen(ri->uri);
|
uri_len = (int) strlen(ri->uri);
|
||||||
url_decode(ri->uri, uri_len, (char *) ri->uri, uri_len + 1, 0);
|
mg_url_decode(ri->uri, uri_len, (char *) ri->uri, uri_len + 1, 0);
|
||||||
remove_double_dots_and_double_slashes((char *) ri->uri);
|
remove_double_dots_and_double_slashes((char *) ri->uri);
|
||||||
convert_uri_to_file_name(conn, path, sizeof(path), &file);
|
convert_uri_to_file_name(conn, path, sizeof(path), &file);
|
||||||
conn->throttle = set_throttle(conn->ctx->config[THROTTLE],
|
conn->throttle = set_throttle(conn->ctx->config[THROTTLE],
|
||||||
|
@ -333,6 +333,14 @@ const char *mg_get_builtin_mime_type(const char *file_name);
|
|||||||
// Return Mongoose version.
|
// Return Mongoose version.
|
||||||
const char *mg_version(void);
|
const char *mg_version(void);
|
||||||
|
|
||||||
|
// URL-decode input buffer into destination buffer.
|
||||||
|
// 0-terminate the destination buffer.
|
||||||
|
// form-url-encoded data differs from URI encoding in a way that it
|
||||||
|
// uses '+' as character for space, see RFC 1866 section 8.2.1
|
||||||
|
// http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt
|
||||||
|
// Return: length of the decoded data, or -1 if dst buffer is too small.
|
||||||
|
int mg_url_decode(const char *src, int src_len, char *dst,
|
||||||
|
int dst_len, int is_form_url_encoded);
|
||||||
|
|
||||||
// MD5 hash given strings.
|
// MD5 hash given strings.
|
||||||
// Buffer 'buf' must be 33 bytes long. Varargs is a NULL terminated list of
|
// Buffer 'buf' must be 33 bytes long. Varargs is a NULL terminated list of
|
||||||
|
Loading…
Reference in New Issue
Block a user