comparison src/http/modules/ngx_http_index_module.c @ 573:58475592100c release-0.3.8

nginx-0.3.8-RELEASE import *) Security: nginx now checks URI got from a backend in "X-Accel-Redirect" header line or in SSI file for the "/../" paths and zeroes. *) Change: nginx now does not treat the empty user name in the "Authorization" header line as valid one. *) Feature: the "ssl_session_timeout" directives of the ngx_http_ssl_module and ngx_imap_ssl_module. *) Feature: the "auth_http_header" directive of the ngx_imap_auth_http_module. *) Feature: the "add_header" directive. *) Feature: the ngx_http_realip_module. *) Feature: the new variables to use in the "log_format" directive: $bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri, $request_time, $request_length, $upstream_status, $upstream_response_time, $gzip_ratio, $uid_got, $uid_set, $connection, $pipe, and $msec. The parameters in the "%name" form will be canceled soon. *) Change: now the false variable values in the "if" directive are the empty string "" and string starting with "0". *) Bugfix: while using proxied or FastCGI-server nginx may leave connections and temporary files with client requests in open state. *) Bugfix: the worker processes did not flush the buffered logs on graceful exit. *) Bugfix: if the request URI was changes by the "rewrite" directive and the request was proxied in location given by regular expression, then the incorrect request was transferred to backend; the bug had appeared in 0.2.6. *) Bugfix: the "expires" directive did not remove the previous "Expires" header. *) Bugfix: nginx may stop to accept requests if the "rtsig" method and several worker processes were used. *) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in SSI commands. *) Bugfix: if the response was ended just after the SSI command and gzipping was used, then the response did not transferred complete or did not transferred at all.
author Igor Sysoev <igor@sysoev.ru>
date Wed, 09 Nov 2005 17:25:55 +0000
parents 9c2f3ed7a247
children 4d9ea73a627a
comparison
equal deleted inserted replaced
572:ae8920455206 573:58475592100c
178 } else { 178 } else {
179 ngx_memzero(&e, sizeof(ngx_http_script_engine_t)); 179 ngx_memzero(&e, sizeof(ngx_http_script_engine_t));
180 180
181 e.ip = index[i].lengths->elts; 181 e.ip = index[i].lengths->elts;
182 e.request = r; 182 e.request = r;
183 e.flushed = 1;
183 184
184 /* 1 byte for terminating '\0' */ 185 /* 1 byte for terminating '\0' */
185 186
186 len = 1; 187 len = 1;
187 188
296 uri.data = ngx_palloc(r->pool, uri.len); 297 uri.data = ngx_palloc(r->pool, uri.len);
297 if (uri.data == NULL) { 298 if (uri.data == NULL) {
298 return NGX_HTTP_INTERNAL_SERVER_ERROR; 299 return NGX_HTTP_INTERNAL_SERVER_ERROR;
299 } 300 }
300 301
301 last = ngx_cpymem(uri.data, r->uri.data, r->uri.len); 302 last = ngx_copy(uri.data, r->uri.data, r->uri.len);
302 ngx_memcpy(last, ctx->index.data, ctx->index.len - 1); 303 ngx_memcpy(last, ctx->index.data, ctx->index.len - 1);
303 } 304 }
304 305
305 return ngx_http_internal_redirect(r, &uri, &r->args); 306 return ngx_http_internal_redirect(r, &uri, &r->args);
306 } 307 }
474 && ilcf->max_index_len < index->name.len) 475 && ilcf->max_index_len < index->name.len)
475 { 476 {
476 ilcf->max_index_len = index->name.len; 477 ilcf->max_index_len = index->name.len;
477 } 478 }
478 479
479 /* include the terminating '\0' to the length to use ngx_memcpy() */ 480 /* include the terminating '\0' to the length to use ngx_copy() */
480 index->name.len++; 481 index->name.len++;
481 482
482 continue; 483 continue;
483 } 484 }
484 485