Mercurial > hg > nginx-ranges
comparison src/http/modules/ngx_http_ssi_filter_module.c @ 394:34fb3a573548 NGINX_0_7_8
nginx 0.7.8
*) Feature: the ngx_http_xslt_module.
*) Feature: the "$arg_..." variables.
*) Feature: Solaris directio support.
Thanks to Ivan Debnar.
*) Bugfix: now if FastCGI server sends a "Location" header line without
status line, then nginx uses 302 status code.
Thanks to Maxim Dounin.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 04 Aug 2008 00:00:00 +0400 |
parents | 1172e6d6f40f |
children | 05981f639d21 |
comparison
equal
deleted
inserted
replaced
393:4ec606a899d3 | 394:34fb3a573548 |
---|---|
1603 { | 1603 { |
1604 u_char ch, *p, **value, *data, *part_data; | 1604 u_char ch, *p, **value, *data, *part_data; |
1605 size_t *size, len, prefix, part_len; | 1605 size_t *size, len, prefix, part_len; |
1606 ngx_str_t var, *val; | 1606 ngx_str_t var, *val; |
1607 ngx_int_t key; | 1607 ngx_int_t key; |
1608 ngx_uint_t i, j, n, bracket, quoted; | 1608 ngx_uint_t i, n, bracket, quoted; |
1609 ngx_array_t lengths, values; | 1609 ngx_array_t lengths, values; |
1610 ngx_http_variable_value_t *vv; | 1610 ngx_http_variable_value_t *vv; |
1611 | 1611 |
1612 n = ngx_http_script_variables_count(text); | 1612 n = ngx_http_script_variables_count(text); |
1613 | 1613 |
1729 | 1729 |
1730 if (var.len == 0) { | 1730 if (var.len == 0) { |
1731 goto invalid_variable; | 1731 goto invalid_variable; |
1732 } | 1732 } |
1733 | 1733 |
1734 key = 0; | 1734 key = ngx_hash_strlow(var.data, var.data, var.len); |
1735 | |
1736 for (j = 0; j < var.len; j++) { | |
1737 var.data[j] = ngx_tolower(var.data[j]); | |
1738 key = ngx_hash(key, var.data[j]); | |
1739 } | |
1740 | 1735 |
1741 val = ngx_http_ssi_get_variable(r, &var, key); | 1736 val = ngx_http_ssi_get_variable(r, &var, key); |
1742 | 1737 |
1743 if (val == NULL) { | 1738 if (val == NULL) { |
1744 vv = ngx_http_get_variable(r, &var, key, | 1739 vv = ngx_http_get_variable(r, &var, key, |
2023 psr->data = bl[i].bufs; | 2018 psr->data = bl[i].bufs; |
2024 } | 2019 } |
2025 } | 2020 } |
2026 | 2021 |
2027 if (set) { | 2022 if (set) { |
2028 key = 0; | 2023 key = ngx_hash_strlow(set->data, set->data, set->len); |
2029 | |
2030 for (i = 0; i < set->len; i++) { | |
2031 set->data[i] = ngx_tolower(set->data[i]); | |
2032 key = ngx_hash(key, set->data[i]); | |
2033 } | |
2034 | 2024 |
2035 psr = ngx_palloc(r->pool, sizeof(ngx_http_post_subrequest_t)); | 2025 psr = ngx_palloc(r->pool, sizeof(ngx_http_post_subrequest_t)); |
2036 if (psr == NULL) { | 2026 if (psr == NULL) { |
2037 return NGX_ERROR; | 2027 return NGX_ERROR; |
2038 } | 2028 } |
2139 ngx_str_t **params) | 2129 ngx_str_t **params) |
2140 { | 2130 { |
2141 u_char *p; | 2131 u_char *p; |
2142 uintptr_t len; | 2132 uintptr_t len; |
2143 ngx_int_t key; | 2133 ngx_int_t key; |
2144 ngx_uint_t i; | |
2145 ngx_buf_t *b; | 2134 ngx_buf_t *b; |
2146 ngx_str_t *var, *value, *enc, text; | 2135 ngx_str_t *var, *value, *enc, text; |
2147 ngx_chain_t *cl; | 2136 ngx_chain_t *cl; |
2148 ngx_http_variable_value_t *vv; | 2137 ngx_http_variable_value_t *vv; |
2149 | 2138 |
2150 var = params[NGX_HTTP_SSI_ECHO_VAR]; | 2139 var = params[NGX_HTTP_SSI_ECHO_VAR]; |
2151 | 2140 |
2152 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 2141 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
2153 "ssi echo \"%V\"", var); | 2142 "ssi echo \"%V\"", var); |
2154 | 2143 |
2155 key = 0; | 2144 key = ngx_hash_strlow(var->data, var->data, var->len); |
2156 | |
2157 for (i = 0; i < var->len; i++) { | |
2158 var->data[i] = ngx_tolower(var->data[i]); | |
2159 key = ngx_hash(key, var->data[i]); | |
2160 } | |
2161 | 2145 |
2162 value = ngx_http_ssi_get_variable(r, var, key); | 2146 value = ngx_http_ssi_get_variable(r, var, key); |
2163 | 2147 |
2164 if (value == NULL) { | 2148 if (value == NULL) { |
2165 vv = ngx_http_get_variable(r, var, key, 1); | 2149 vv = ngx_http_get_variable(r, var, key, 1); |
2308 static ngx_int_t | 2292 static ngx_int_t |
2309 ngx_http_ssi_set(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx, | 2293 ngx_http_ssi_set(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx, |
2310 ngx_str_t **params) | 2294 ngx_str_t **params) |
2311 { | 2295 { |
2312 ngx_int_t key, rc; | 2296 ngx_int_t key, rc; |
2313 ngx_uint_t i; | |
2314 ngx_str_t *name, *value, *vv; | 2297 ngx_str_t *name, *value, *vv; |
2315 ngx_http_ssi_var_t *var; | 2298 ngx_http_ssi_var_t *var; |
2316 ngx_http_ssi_ctx_t *mctx; | 2299 ngx_http_ssi_ctx_t *mctx; |
2317 | 2300 |
2318 mctx = ngx_http_get_module_ctx(r->main, ngx_http_ssi_filter_module); | 2301 mctx = ngx_http_get_module_ctx(r->main, ngx_http_ssi_filter_module); |
2335 | 2318 |
2336 if (rc != NGX_OK) { | 2319 if (rc != NGX_OK) { |
2337 return rc; | 2320 return rc; |
2338 } | 2321 } |
2339 | 2322 |
2340 key = 0; | 2323 key = ngx_hash_strlow(name->data, name->data, name->len); |
2341 | |
2342 for (i = 0; i < name->len; i++) { | |
2343 name->data[i] = ngx_tolower(name->data[i]); | |
2344 key = ngx_hash(key, name->data[i]); | |
2345 } | |
2346 | 2324 |
2347 vv = ngx_http_ssi_get_variable(r, name, key); | 2325 vv = ngx_http_ssi_get_variable(r, name, key); |
2348 | 2326 |
2349 if (vv) { | 2327 if (vv) { |
2350 *vv = *value; | 2328 *vv = *value; |