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,