summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2010-06-07 10:26:50 +0000
committerIgor Sysoev <igor@sysoev.ru>2010-06-07 10:26:50 +0000
commitea3aaae636eb194e3dbbc5b9d0c0a51d831e2d4c (patch)
tree6c3c079b90402848f4f82229275c97a52941338a
parentce8183ca7e1227329e16fc45cc294ecf2391d739 (diff)
downloadnginx-ea3aaae636eb194e3dbbc5b9d0c0a51d831e2d4c.tar.gz
merge r3464, r3500, r3501:
*) make $request_method non-cacheable *) make $arg_ variables non-cacheable *) change processing variables accessed by SSI and perl module: *) the indexed variables are always flushed *) never show warning for not found variables
-rw-r--r--src/http/modules/ngx_http_ssi_filter_module.c8
-rw-r--r--src/http/modules/perl/nginx.xs2
-rw-r--r--src/http/ngx_http_variables.c14
-rw-r--r--src/http/ngx_http_variables.h2
4 files changed, 10 insertions, 16 deletions
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
index 4ac35c60a..ced8f6843 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -14,7 +14,6 @@
#define NGX_HTTP_SSI_ADD_PREFIX 1
#define NGX_HTTP_SSI_ADD_ZERO 2
-#define NGX_HTTP_SSI_EXPR_TEST 4
typedef struct {
@@ -1701,8 +1700,7 @@ ngx_http_ssi_evaluate_string(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
val = ngx_http_ssi_get_variable(r, &var, key);
if (val == NULL) {
- vv = ngx_http_get_variable(r, &var, key,
- flags & NGX_HTTP_SSI_EXPR_TEST);
+ vv = ngx_http_get_variable(r, &var, key);
if (vv == NULL) {
return NGX_ERROR;
}
@@ -2110,7 +2108,7 @@ ngx_http_ssi_echo(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
value = ngx_http_ssi_get_variable(r, var, key);
if (value == NULL) {
- vv = ngx_http_get_variable(r, var, key, 1);
+ vv = ngx_http_get_variable(r, var, key);
if (vv == NULL) {
return NGX_HTTP_SSI_ERROR;
@@ -2361,7 +2359,7 @@ ngx_http_ssi_if(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
p++;
}
- flags = (p == last) ? NGX_HTTP_SSI_EXPR_TEST : 0;
+ flags = 0;
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"left: \"%V\"", &left);
diff --git a/src/http/modules/perl/nginx.xs b/src/http/modules/perl/nginx.xs
index 994fc4ed0..2ce5af2db 100644
--- a/src/http/modules/perl/nginx.xs
+++ b/src/http/modules/perl/nginx.xs
@@ -847,7 +847,7 @@ variable(r, name, value = NULL)
#endif
- vv = ngx_http_get_variable(r, &var, hash, 1);
+ vv = ngx_http_get_variable(r, &var, hash);
if (vv == NULL) {
XSRETURN_UNDEF;
}
diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c
index f68edc27b..79b9b3d1d 100644
--- a/src/http/ngx_http_variables.c
+++ b/src/http/ngx_http_variables.c
@@ -196,7 +196,8 @@ static ngx_http_variable_t ngx_http_core_variables[] = {
{ ngx_string("server_name"), NULL, ngx_http_variable_server_name, 0, 0, 0 },
{ ngx_string("request_method"), NULL,
- ngx_http_variable_request_method, 0, 0, 0 },
+ ngx_http_variable_request_method, 0,
+ NGX_HTTP_VAR_NOCACHEABLE, 0 },
{ ngx_string("remote_user"), NULL, ngx_http_variable_remote_user, 0, 0, 0 },
@@ -440,8 +441,7 @@ ngx_http_get_flushed_variable(ngx_http_request_t *r, ngx_uint_t index)
ngx_http_variable_value_t *
-ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key,
- ngx_uint_t nowarn)
+ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key)
{
ngx_http_variable_t *v;
ngx_http_variable_value_t *vv;
@@ -453,7 +453,7 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key,
if (v) {
if (v->flags & NGX_HTTP_VAR_INDEXED) {
- return ngx_http_get_indexed_variable(r, v->index);
+ return ngx_http_get_flushed_variable(r, v->index);
} else {
@@ -525,11 +525,6 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key,
vv->not_found = 1;
- if (nowarn == 0) {
- ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
- "unknown \"%V\" variable", name);
- }
-
return vv;
}
@@ -1781,6 +1776,7 @@ ngx_http_variables_init_vars(ngx_conf_t *cf)
if (ngx_strncmp(v[i].name.data, "arg_", 4) == 0) {
v[i].get_handler = ngx_http_variable_argument;
v[i].data = (uintptr_t) &v[i].name;
+ v[i].flags = NGX_HTTP_VAR_NOCACHEABLE;
continue;
}
diff --git a/src/http/ngx_http_variables.h b/src/http/ngx_http_variables.h
index 0e86aaf3d..b922d282c 100644
--- a/src/http/ngx_http_variables.h
+++ b/src/http/ngx_http_variables.h
@@ -50,7 +50,7 @@ ngx_http_variable_value_t *ngx_http_get_flushed_variable(ngx_http_request_t *r,
ngx_uint_t index);
ngx_http_variable_value_t *ngx_http_get_variable(ngx_http_request_t *r,
- ngx_str_t *name, ngx_uint_t key, ngx_uint_t nowarn);
+ ngx_str_t *name, ngx_uint_t key);
ngx_int_t ngx_http_variable_unknown_header(ngx_http_variable_value_t *v,
ngx_str_t *var, ngx_list_part_t *part, size_t prefix);