mirror of
https://github.com/cesanta/mongoose.git
synced 2025-01-04 13:15:36 +08:00
b9b20c6494
Which is a replacement of (deprecated) `mg_http_parse_header`, but, similarly to `asprintf`, allocates a new buffer if the client-provided one is not large enough. Also use it throughout mongoose code, and thus some header-related limitations are removed; in particular, https://github.com/cesanta/mongoose/issues/813 is fixed. CL: Mongoose Web Server: Deprecate `mg_http_parse_header()` and implement `mg_http_parse_header2()` instead, which allocates a new buffer if the client-provided one is not large enough (similarly to `asprintf`). CL: Mongoose Web Server: Fix limitations of header value lengths, e.g. when parsing authentication headers such as nonce, etc. PUBLISHED_FROM=c75b1bbbbdb294ea85075ce69b1368f115fdd1ef
1.0 KiB
1.0 KiB
title | decl_name | symbol_kind | signature |
---|---|---|---|
mg_http_parse_header2() | mg_http_parse_header2 | func | int mg_http_parse_header2(struct mg_str *hdr, const char *var_name, char **buf, size_t buf_size); |
Parses the HTTP header hdr
. Finds variable var_name
and stores its value
in the buffer *buf
, buf_size
. If the buffer size is not enough,
allocates a buffer of required size and writes it to *buf
, similar to
asprintf(). The caller should always check whether the buffer was updated,
and free it if so.
This function is supposed to parse cookies, authentication headers, etc. Example (error handling omitted):
char user_buf[20];
char *user = user_buf;
struct mg_str *hdr = mg_get_http_header(hm, "Authorization");
mg_http_parse_header2(hdr, "username", &user, sizeof(user_buf));
// ... do something useful with user
if (user != user_buf) {
free(user);
}
Returns the length of the variable's value. If variable is not found, 0 is returned.