comparison src/http/ngx_http_variables.c @ 1162:f59d15404269

$upstream_http_... variables
author Igor Sysoev <igor@sysoev.ru>
date Tue, 10 Apr 2007 07:08:06 +0000
parents 1030996f617c
children 2a0b86713cc6
comparison
equal deleted inserted replaced
1161:6002e0253221 1162:f59d15404269
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;
1285 continue; 1294 continue;
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;
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;
1290 v[i].data = (uintptr_t) &v[i].name; 1306 v[i].data = (uintptr_t) &v[i].name;
1291 1307
1292 continue; 1308 continue;
1293 } 1309 }
1294 1310