comparison src/http/ngx_http_variables.c @ 272:29a6403156b0 NGINX_0_5_6

nginx 0.5.6 *) Change: now the ngx_http_index_module ignores all methods except the GET, HEAD, and POST methods. *) Feature: the ngx_http_limit_zone_module. *) Feature: the $binary_remote_addr variable. *) Feature: the "ssl_session_cache" directives of the ngx_http_ssl_module and ngx_imap_ssl_module. *) Feature: the DELETE method supports recursive removal. *) Bugfix: the byte-ranges were transferred incorrectly if the $r->sendfile() was used.
author Igor Sysoev <http://sysoev.ru>
date Tue, 09 Jan 2007 00:00:00 +0300
parents 6eb1e38f0f1f
children 5bef04fc3fd5
comparison
equal deleted inserted replaced
271:fcbee7dacf2b 272:29a6403156b0
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, 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); 27 ngx_str_t *var, ngx_list_part_t *part, size_t prefix);
28 28
29 static ngx_int_t ngx_http_variable_host(ngx_http_request_t *r, 29 static ngx_int_t ngx_http_variable_host(ngx_http_request_t *r,
30 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,
30 ngx_http_variable_value_t *v, uintptr_t data); 32 ngx_http_variable_value_t *v, uintptr_t data);
31 static ngx_int_t ngx_http_variable_remote_addr(ngx_http_request_t *r, 33 static ngx_int_t ngx_http_variable_remote_addr(ngx_http_request_t *r,
32 ngx_http_variable_value_t *v, uintptr_t data); 34 ngx_http_variable_value_t *v, uintptr_t data);
33 static ngx_int_t ngx_http_variable_remote_port(ngx_http_request_t *r, 35 static ngx_int_t ngx_http_variable_remote_port(ngx_http_request_t *r,
34 ngx_http_variable_value_t *v, uintptr_t data); 36 ngx_http_variable_value_t *v, uintptr_t data);
113 { ngx_string("content_type"), NULL, ngx_http_variable_header, 115 { ngx_string("content_type"), NULL, ngx_http_variable_header,
114 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 }, 116 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 },
115 117
116 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 }, 118 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 },
117 119
120 { ngx_string("binary_remote_addr"), NULL,
121 ngx_http_variable_binary_remote_addr, 0, 0, 0 },
122
118 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 }, 123 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 },
119 124
120 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 }, 125 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 },
121 126
122 { ngx_string("server_addr"), NULL, ngx_http_variable_server_addr, 0, 0, 0 }, 127 { ngx_string("server_addr"), NULL, ngx_http_variable_server_addr, 0, 0, 0 },
694 return NGX_OK; 699 return NGX_OK;
695 } 700 }
696 701
697 702
698 static ngx_int_t 703 static ngx_int_t
704 ngx_http_variable_binary_remote_addr(ngx_http_request_t *r,
705 ngx_http_variable_value_t *v, uintptr_t data)
706 {
707 struct sockaddr_in *sin;
708
709 /* AF_INET only */
710
711 sin = (struct sockaddr_in *) r->connection->sockaddr;
712
713 v->len = sizeof(in_addr_t);
714 v->valid = 1;
715 v->no_cachable = 0;
716 v->not_found = 0;
717 v->data = (u_char *) &sin->sin_addr.s_addr;
718
719 return NGX_OK;
720 }
721
722
723 static ngx_int_t
699 ngx_http_variable_remote_addr(ngx_http_request_t *r, 724 ngx_http_variable_remote_addr(ngx_http_request_t *r,
700 ngx_http_variable_value_t *v, uintptr_t data) 725 ngx_http_variable_value_t *v, uintptr_t data)
701 { 726 {
702 v->len = r->connection->addr_text.len; 727 v->len = r->connection->addr_text.len;
703 v->valid = 1; 728 v->valid = 1;