ngx_http_set_ctx(r, ctx, ngx_http_userid_filter_module);
}
- cookie = ngx_http_parse_multi_header_lines(r, r->headers_in.cookie,
- &conf->name, &ctx->cookie);
+ cookie = ngx_http_parse_cookie_lines(r, r->headers_in.cookie, &conf->name,
+ &ctx->cookie);
if (cookie == NULL) {
return ctx;
}
ngx_uint_t allow_underscores);
ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value);
+ngx_table_elt_t *ngx_http_parse_cookie_lines(ngx_http_request_t *r,
+ ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value);
ngx_table_elt_t *ngx_http_parse_set_cookie_lines(ngx_http_request_t *r,
ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value);
ngx_int_t ngx_http_arg(ngx_http_request_t *r, u_char *name, size_t len,
#include <ngx_http.h>
+static ngx_table_elt_t *ngx_http_parse_multi_header_lines_internal(
+ ngx_http_request_t *r, ngx_table_elt_t *headers, ngx_str_t *name,
+ ngx_str_t *value, u_char sep);
+
static uint32_t usual[] = {
0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
ngx_table_elt_t *
ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value)
+{
+ return ngx_http_parse_multi_header_lines_internal(r, headers, name, value,
+ ',');
+}
+
+
+ngx_table_elt_t *
+ngx_http_parse_cookie_lines(ngx_http_request_t *r,
+ ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value)
+{
+ return ngx_http_parse_multi_header_lines_internal(r, headers, name, value,
+ ';');
+}
+
+
+static ngx_table_elt_t *
+ngx_http_parse_multi_header_lines_internal(ngx_http_request_t *r,
+ ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value, u_char sep)
{
u_char *start, *last, *end, ch;
ngx_table_elt_t *h;
}
if (value == NULL) {
- if (start == end || *start == ',') {
+ if (start == end || *start == sep) {
return h;
}
while (start < end && *start == ' ') { start++; }
- for (last = start; last < end && *last != ';'; last++) {
+ for (last = start; last < end && *last != sep; last++) {
/* void */
}
while (start < end) {
ch = *start++;
- if (ch == ';' || ch == ',') {
+ if (ch == sep) {
break;
}
}
s.len = name->len - (sizeof("cookie_") - 1);
s.data = name->data + sizeof("cookie_") - 1;
- if (ngx_http_parse_multi_header_lines(r, r->headers_in.cookie, &s, &cookie)
+ if (ngx_http_parse_cookie_lines(r, r->headers_in.cookie, &s, &cookie)
== NULL)
{
v->not_found = 1;