Mercurial > hg > nginx
comparison src/http/ngx_http_variables.c @ 5699:e9dbffc18a77
Setting $args now invalidates unparsed uri.
Prodded by Yichun Zhang.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 19 May 2014 22:45:35 +0400 |
parents | 3a48775f1535 |
children | 6c99c5f00fc9 |
comparison
equal
deleted
inserted
replaced
5698:fcb0420f90de | 5699:e9dbffc18a77 |
---|---|
11 #include <nginx.h> | 11 #include <nginx.h> |
12 | 12 |
13 | 13 |
14 static ngx_int_t ngx_http_variable_request(ngx_http_request_t *r, | 14 static ngx_int_t ngx_http_variable_request(ngx_http_request_t *r, |
15 ngx_http_variable_value_t *v, uintptr_t data); | 15 ngx_http_variable_value_t *v, uintptr_t data); |
16 #if 0 | |
16 static void ngx_http_variable_request_set(ngx_http_request_t *r, | 17 static void ngx_http_variable_request_set(ngx_http_request_t *r, |
17 ngx_http_variable_value_t *v, uintptr_t data); | 18 ngx_http_variable_value_t *v, uintptr_t data); |
19 #endif | |
18 static ngx_int_t ngx_http_variable_request_get_size(ngx_http_request_t *r, | 20 static ngx_int_t ngx_http_variable_request_get_size(ngx_http_request_t *r, |
19 ngx_http_variable_value_t *v, uintptr_t data); | 21 ngx_http_variable_value_t *v, uintptr_t data); |
20 static void ngx_http_variable_request_set_size(ngx_http_request_t *r, | 22 static void ngx_http_variable_request_set_size(ngx_http_request_t *r, |
21 ngx_http_variable_value_t *v, uintptr_t data); | 23 ngx_http_variable_value_t *v, uintptr_t data); |
22 static ngx_int_t ngx_http_variable_header(ngx_http_request_t *r, | 24 static ngx_int_t ngx_http_variable_header(ngx_http_request_t *r, |
61 static ngx_int_t ngx_http_variable_server_port(ngx_http_request_t *r, | 63 static ngx_int_t ngx_http_variable_server_port(ngx_http_request_t *r, |
62 ngx_http_variable_value_t *v, uintptr_t data); | 64 ngx_http_variable_value_t *v, uintptr_t data); |
63 static ngx_int_t ngx_http_variable_scheme(ngx_http_request_t *r, | 65 static ngx_int_t ngx_http_variable_scheme(ngx_http_request_t *r, |
64 ngx_http_variable_value_t *v, uintptr_t data); | 66 ngx_http_variable_value_t *v, uintptr_t data); |
65 static ngx_int_t ngx_http_variable_https(ngx_http_request_t *r, | 67 static ngx_int_t ngx_http_variable_https(ngx_http_request_t *r, |
68 ngx_http_variable_value_t *v, uintptr_t data); | |
69 static void ngx_http_variable_set_args(ngx_http_request_t *r, | |
66 ngx_http_variable_value_t *v, uintptr_t data); | 70 ngx_http_variable_value_t *v, uintptr_t data); |
67 static ngx_int_t ngx_http_variable_is_args(ngx_http_request_t *r, | 71 static ngx_int_t ngx_http_variable_is_args(ngx_http_request_t *r, |
68 ngx_http_variable_value_t *v, uintptr_t data); | 72 ngx_http_variable_value_t *v, uintptr_t data); |
69 static ngx_int_t ngx_http_variable_document_root(ngx_http_request_t *r, | 73 static ngx_int_t ngx_http_variable_document_root(ngx_http_request_t *r, |
70 ngx_http_variable_value_t *v, uintptr_t data); | 74 ngx_http_variable_value_t *v, uintptr_t data); |
221 { ngx_string("query_string"), NULL, ngx_http_variable_request, | 225 { ngx_string("query_string"), NULL, ngx_http_variable_request, |
222 offsetof(ngx_http_request_t, args), | 226 offsetof(ngx_http_request_t, args), |
223 NGX_HTTP_VAR_NOCACHEABLE, 0 }, | 227 NGX_HTTP_VAR_NOCACHEABLE, 0 }, |
224 | 228 |
225 { ngx_string("args"), | 229 { ngx_string("args"), |
226 ngx_http_variable_request_set, | 230 ngx_http_variable_set_args, |
227 ngx_http_variable_request, | 231 ngx_http_variable_request, |
228 offsetof(ngx_http_request_t, args), | 232 offsetof(ngx_http_request_t, args), |
229 NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 }, | 233 NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 }, |
230 | 234 |
231 { ngx_string("is_args"), NULL, ngx_http_variable_is_args, | 235 { ngx_string("is_args"), NULL, ngx_http_variable_is_args, |
660 | 664 |
661 return NGX_OK; | 665 return NGX_OK; |
662 } | 666 } |
663 | 667 |
664 | 668 |
669 #if 0 | |
670 | |
665 static void | 671 static void |
666 ngx_http_variable_request_set(ngx_http_request_t *r, | 672 ngx_http_variable_request_set(ngx_http_request_t *r, |
667 ngx_http_variable_value_t *v, uintptr_t data) | 673 ngx_http_variable_value_t *v, uintptr_t data) |
668 { | 674 { |
669 ngx_str_t *s; | 675 ngx_str_t *s; |
671 s = (ngx_str_t *) ((char *) r + data); | 677 s = (ngx_str_t *) ((char *) r + data); |
672 | 678 |
673 s->len = v->len; | 679 s->len = v->len; |
674 s->data = v->data; | 680 s->data = v->data; |
675 } | 681 } |
682 | |
683 #endif | |
676 | 684 |
677 | 685 |
678 static ngx_int_t | 686 static ngx_int_t |
679 ngx_http_variable_request_get_size(ngx_http_request_t *r, | 687 ngx_http_variable_request_get_size(ngx_http_request_t *r, |
680 ngx_http_variable_value_t *v, uintptr_t data) | 688 ngx_http_variable_value_t *v, uintptr_t data) |
1366 #endif | 1374 #endif |
1367 | 1375 |
1368 *v = ngx_http_variable_null_value; | 1376 *v = ngx_http_variable_null_value; |
1369 | 1377 |
1370 return NGX_OK; | 1378 return NGX_OK; |
1379 } | |
1380 | |
1381 | |
1382 static void | |
1383 ngx_http_variable_set_args(ngx_http_request_t *r, | |
1384 ngx_http_variable_value_t *v, uintptr_t data) | |
1385 { | |
1386 r->args.len = v->len; | |
1387 r->args.data = v->data; | |
1388 r->valid_unparsed_uri = 0; | |
1371 } | 1389 } |
1372 | 1390 |
1373 | 1391 |
1374 static ngx_int_t | 1392 static ngx_int_t |
1375 ngx_http_variable_is_args(ngx_http_request_t *r, | 1393 ngx_http_variable_is_args(ngx_http_request_t *r, |