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