Mercurial > hg > nginx-vendor-0-8
comparison src/http/ngx_http_variables.c @ 296:2ceaee987f37 NGINX_0_5_18
nginx 0.5.18
*) Feature: the ngx_http_sub_filter_module.
*) Feature: the "$upstream_http_..." variables.
*) Feature: now the $upstream_status and $upstream_response_time
variables keep data about all upstreams before X-Accel-Redirect.
*) Bugfix: a segmentation fault occurred in master process after first
reconfiguration and receiving any signal if nginx was built with
ngx_http_perl_module and perl did not support multiplicity; bug
appeared in 0.5.9.
*) Bugfix: if perl did not support multiplicity, then after
reconfiguration perl code did not work; bug appeared in 0.3.38.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 19 Apr 2007 00:00:00 +0400 |
parents | 27d9d1f26b38 |
children | cba14c1e2a4b |
comparison
equal
deleted
inserted
replaced
295:65b7ac8795e3 | 296:2ceaee987f37 |
---|---|
21 | 21 |
22 static ngx_int_t ngx_http_variable_unknown_header_in(ngx_http_request_t *r, | 22 static ngx_int_t ngx_http_variable_unknown_header_in(ngx_http_request_t *r, |
23 ngx_http_variable_value_t *v, uintptr_t data); | 23 ngx_http_variable_value_t *v, uintptr_t data); |
24 static ngx_int_t ngx_http_variable_unknown_header_out(ngx_http_request_t *r, | 24 static ngx_int_t ngx_http_variable_unknown_header_out(ngx_http_request_t *r, |
25 ngx_http_variable_value_t *v, uintptr_t data); | 25 ngx_http_variable_value_t *v, uintptr_t data); |
26 static ngx_int_t ngx_http_variable_unknown_header(ngx_http_variable_value_t *v, | |
27 ngx_str_t *var, ngx_list_part_t *part, size_t prefix); | |
28 | 26 |
29 static ngx_int_t ngx_http_variable_host(ngx_http_request_t *r, | 27 static ngx_int_t ngx_http_variable_host(ngx_http_request_t *r, |
30 ngx_http_variable_value_t *v, uintptr_t data); | 28 ngx_http_variable_value_t *v, uintptr_t data); |
31 static ngx_int_t ngx_http_variable_binary_remote_addr(ngx_http_request_t *r, | 29 static ngx_int_t ngx_http_variable_binary_remote_addr(ngx_http_request_t *r, |
32 ngx_http_variable_value_t *v, uintptr_t data); | 30 ngx_http_variable_value_t *v, uintptr_t data); |
449 } | 447 } |
450 | 448 |
451 return NULL; | 449 return NULL; |
452 } | 450 } |
453 | 451 |
452 if (ngx_strncmp(name->data, "upstream_http_", 10) == 0) { | |
453 | |
454 if (ngx_http_upstream_header_variable(r, vv, (uintptr_t) name) | |
455 == NGX_OK) | |
456 { | |
457 return vv; | |
458 } | |
459 | |
460 return NULL; | |
461 } | |
462 | |
454 vv->not_found = 1; | 463 vv->not_found = 1; |
455 | 464 |
456 if (nowarn == 0) { | 465 if (nowarn == 0) { |
457 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, | 466 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, |
458 "unknown \"%V\" variable", name); | 467 "unknown \"%V\" variable", name); |
612 &r->headers_out.headers.part, | 621 &r->headers_out.headers.part, |
613 sizeof("sent_http_") - 1); | 622 sizeof("sent_http_") - 1); |
614 } | 623 } |
615 | 624 |
616 | 625 |
617 static ngx_int_t | 626 ngx_int_t |
618 ngx_http_variable_unknown_header(ngx_http_variable_value_t *v, ngx_str_t *var, | 627 ngx_http_variable_unknown_header(ngx_http_variable_value_t *v, ngx_str_t *var, |
619 ngx_list_part_t *part, size_t prefix) | 628 ngx_list_part_t *part, size_t prefix) |
620 { | 629 { |
621 u_char ch; | 630 u_char ch; |
622 ngx_uint_t i, n; | 631 ngx_uint_t i, n; |
1286 } | 1295 } |
1287 | 1296 |
1288 if (ngx_strncmp(v[i].name.data, "sent_http_", 10) == 0) { | 1297 if (ngx_strncmp(v[i].name.data, "sent_http_", 10) == 0) { |
1289 v[i].get_handler = ngx_http_variable_unknown_header_out; | 1298 v[i].get_handler = ngx_http_variable_unknown_header_out; |
1290 v[i].data = (uintptr_t) &v[i].name; | 1299 v[i].data = (uintptr_t) &v[i].name; |
1300 | |
1301 continue; | |
1302 } | |
1303 | |
1304 if (ngx_strncmp(v[i].name.data, "upstream_http_", 14) == 0) { | |
1305 v[i].get_handler = ngx_http_upstream_header_variable; | |
1306 v[i].data = (uintptr_t) &v[i].name; | |
1307 v[i].flags = NGX_HTTP_VAR_NOCACHABLE; | |
1291 | 1308 |
1292 continue; | 1309 continue; |
1293 } | 1310 } |
1294 | 1311 |
1295 ngx_log_error(NGX_LOG_EMERG, cf->log, 0, | 1312 ngx_log_error(NGX_LOG_EMERG, cf->log, 0, |