Mercurial > hg > nginx-vendor-0-8
comparison src/core/ngx_inet.c @ 58:b55cbf18157e NGINX_0_1_29
nginx 0.1.29
*) Feature: the ngx_http_ssi_module supports "include virtual" command.
*) Feature: the ngx_http_ssi_module supports the condition command like
'if expr="$NAME"' and "else" and "endif" commands. Only one nested
level is supported.
*) Feature: the ngx_http_ssi_module supports the DATE_LOCAL and
DATE_GMT variables and "config timefmt" command.
*) Feature: the "ssi_ignore_recycled_buffers" directive.
*) Bugfix: the "echo" command did not show the default value for the
empty QUERY_STRING variable.
*) Change: the ngx_http_proxy_module was rewritten.
*) Feature: the "proxy_redirect", "proxy_pass_request_headers",
"proxy_pass_request_body", and "proxy_method" directives.
*) Feature: the "proxy_set_header" directive. The "proxy_x_var" was
canceled and must be replaced with the proxy_set_header directive.
*) Change: the "proxy_preserve_host" is canceled and must be replaced
with the "proxy_set_header Host $host" and the "proxy_redirect off"
directives, the "proxy_set_header Host $host:$proxy_port" directive
and the appropriate proxy_redirect directives.
*) Change: the "proxy_set_x_real_ip" is canceled and must be replaced
with the "proxy_set_header X-Real-IP $remote_addr" directive.
*) Change: the "proxy_add_x_forwarded_for" is canceled and must be
replaced with
the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for"
directive.
*) Change: the "proxy_set_x_url" is canceled and must be replaced with
the "proxy_set_header X-URL http://$host:$server_port$request_uri"
directive.
*) Feature: the "fastcgi_param" directive.
*) Change: the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params"
directive are canceled and must be replaced with the fastcgi_param
directives.
*) Feature: the "index" directive can use the variables.
*) Feature: the "index" directive can be used at http and server levels.
*) Change: the last index only in the "index" directive can be absolute.
*) Feature: the "rewrite" directive can use the variables.
*) Feature: the "internal" directive.
*) Feature: the CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR,
SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME,
REQUEST_METHOD, REQUEST_URI, and REMOTE_USER variables.
*) Change: nginx now passes the invalid lines in a client request
headers or a backend response header.
*) Bugfix: if the backend did not transfer response for a long time and
the "send_timeout" was less than "proxy_read_timeout", then nginx
returned the 408 response.
*) Bugfix: the segmentation fault was occurred if the backend sent an
invalid line in response header; bug appeared in 0.1.26.
*) Bugfix: the segmentation fault may occurred in FastCGI fault
tolerance configuration.
*) Bugfix: the "expires" directive did not remove the previous
"Expires" and "Cache-Control" headers.
*) Bugfix: nginx did not take into account trailing dot in "Host"
header line.
*) Bugfix: the ngx_http_auth_module did not work under Linux.
*) Bugfix: the rewrite directive worked incorrectly, if the arguments
were in a request.
*) Bugfix: nginx could not be built on MacOS X.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 12 May 2005 00:00:00 +0400 |
parents | 72eb30262aac |
children | 5db440287648 |
comparison
equal
deleted
inserted
replaced
57:5df375c55338 | 58:b55cbf18157e |
---|---|
19 * By the way, the implementation using ngx_sprintf() is faster by 2.5-3 times | 19 * By the way, the implementation using ngx_sprintf() is faster by 2.5-3 times |
20 * than using FreeBSD libc's snprintf(). | 20 * than using FreeBSD libc's snprintf(). |
21 */ | 21 */ |
22 | 22 |
23 | 23 |
24 static ngx_inline size_t ngx_sprint_uchar(u_char *text, u_char c, size_t len) | 24 static |
25 ngx_inline size_t ngx_sprint_uchar(u_char *text, u_char c, size_t len) | |
25 { | 26 { |
26 size_t n; | 27 size_t n; |
27 ngx_uint_t c1, c2; | 28 ngx_uint_t c1, c2; |
28 | 29 |
29 n = 0; | 30 n = 0; |
63 } | 64 } |
64 | 65 |
65 | 66 |
66 /* AF_INET only */ | 67 /* AF_INET only */ |
67 | 68 |
68 size_t ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, | 69 size_t |
69 size_t len) | 70 ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, size_t len) |
70 { | 71 { |
71 u_char *p; | 72 u_char *p; |
72 size_t n; | 73 size_t n; |
73 ngx_uint_t i; | 74 ngx_uint_t i; |
74 struct sockaddr_in *sin; | 75 struct sockaddr_in *sin; |
117 text[n] = '\0'; | 118 text[n] = '\0'; |
118 | 119 |
119 return n; | 120 return n; |
120 } | 121 } |
121 | 122 |
122 size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len) | 123 size_t |
124 ngx_inet_ntop(int family, void *addr, u_char *text, size_t len) | |
123 { | 125 { |
124 u_char *p; | 126 u_char *p; |
125 size_t n; | 127 size_t n; |
126 ngx_uint_t i; | 128 ngx_uint_t i; |
127 | 129 |
171 } | 173 } |
172 | 174 |
173 | 175 |
174 /* AF_INET only */ | 176 /* AF_INET only */ |
175 | 177 |
176 ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr) | 178 ngx_int_t |
179 ngx_ptocidr(ngx_str_t *text, void *cidr) | |
177 { | 180 { |
178 ngx_int_t m; | 181 ngx_int_t m; |
179 ngx_uint_t i; | 182 ngx_uint_t i; |
180 ngx_inet_cidr_t *in_cidr; | 183 ngx_inet_cidr_t *in_cidr; |
181 | 184 |
215 | 218 |
216 return NGX_OK; | 219 return NGX_OK; |
217 } | 220 } |
218 | 221 |
219 | 222 |
220 ngx_peers_t *ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u) | 223 ngx_peers_t * |
224 ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u) | |
221 { | 225 { |
222 char *err; | 226 char *err; |
223 u_char *host; | 227 u_char *host; |
224 in_addr_t in_addr; | 228 in_addr_t in_addr; |
225 ngx_uint_t i, len; | 229 ngx_uint_t i, len; |
390 | 394 |
391 return peers; | 395 return peers; |
392 } | 396 } |
393 | 397 |
394 | 398 |
395 char *ngx_inet_parse_host_port(ngx_inet_upstream_t *u) | 399 char * |
400 ngx_inet_parse_host_port(ngx_inet_upstream_t *u) | |
396 { | 401 { |
397 size_t i; | 402 size_t i; |
398 ngx_int_t port; | 403 ngx_int_t port; |
399 ngx_str_t *url; | 404 ngx_str_t *url; |
400 | 405 |