|
@@ -1709,23 +1709,22 @@ int mg_get_var(const char *data, size_t data_len, const char *name,
|
|
return len;
|
|
return len;
|
|
}
|
|
}
|
|
|
|
|
|
-int mg_get_cookie(const struct mg_connection *conn, const char *cookie_name,
|
|
|
|
|
|
+int mg_get_cookie(const char *cookie_header, const char *var_name,
|
|
char *dst, size_t dst_size) {
|
|
char *dst, size_t dst_size) {
|
|
const char *s, *p, *end;
|
|
const char *s, *p, *end;
|
|
int name_len, len = -1;
|
|
int name_len, len = -1;
|
|
|
|
|
|
if (dst == NULL || dst_size == 0) {
|
|
if (dst == NULL || dst_size == 0) {
|
|
len = -2;
|
|
len = -2;
|
|
- } else if (cookie_name == NULL ||
|
|
|
|
- (s = mg_get_header(conn, "Cookie")) == NULL) {
|
|
|
|
|
|
+ } else if (var_name == NULL || (s = cookie_header) == NULL) {
|
|
len = -1;
|
|
len = -1;
|
|
dst[0] = '\0';
|
|
dst[0] = '\0';
|
|
} else {
|
|
} else {
|
|
- name_len = (int) strlen(cookie_name);
|
|
|
|
|
|
+ name_len = (int) strlen(var_name);
|
|
end = s + strlen(s);
|
|
end = s + strlen(s);
|
|
dst[0] = '\0';
|
|
dst[0] = '\0';
|
|
|
|
|
|
- for (; (s = mg_strcasestr(s, cookie_name)) != NULL; s += name_len) {
|
|
|
|
|
|
+ for (; (s = mg_strcasestr(s, var_name)) != NULL; s += name_len) {
|
|
if (s[name_len] == '=') {
|
|
if (s[name_len] == '=') {
|
|
s += name_len + 1;
|
|
s += name_len + 1;
|
|
if ((p = strchr(s, ' ')) == NULL)
|
|
if ((p = strchr(s, ' ')) == NULL)
|
|
@@ -1740,7 +1739,7 @@ int mg_get_cookie(const struct mg_connection *conn, const char *cookie_name,
|
|
len = p - s;
|
|
len = p - s;
|
|
mg_strlcpy(dst, s, (size_t) len + 1);
|
|
mg_strlcpy(dst, s, (size_t) len + 1);
|
|
} else {
|
|
} else {
|
|
- len = -2;
|
|
|
|
|
|
+ len = -3;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
}
|
|
}
|