Mercurial > hg > nginx
comparison src/http/ngx_http.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 |
---|---|
275 } | 275 } |
276 | 276 |
277 | 277 |
278 /* init lists of the handlers */ | 278 /* init lists of the handlers */ |
279 | 279 |
280 if (ngx_array_init(&cmcf->phases[NGX_HTTP_REWRITE_PHASE].handlers, | 280 if (ngx_array_init(&cmcf->phases[NGX_HTTP_POST_READ_PHASE].handlers, |
281 cf->pool, 1, sizeof(ngx_http_handler_pt)) != NGX_OK) | 281 cf->pool, 1, sizeof(ngx_http_handler_pt)) |
282 != NGX_OK) | |
282 { | 283 { |
283 return NGX_CONF_ERROR; | 284 return NGX_CONF_ERROR; |
284 } | 285 } |
285 | 286 |
286 cmcf->phases[NGX_HTTP_REWRITE_PHASE].type = NGX_OK; | 287 cmcf->phases[NGX_HTTP_POST_READ_PHASE].type = NGX_OK; |
288 | |
289 | |
290 if (ngx_array_init(&cmcf->phases[NGX_HTTP_SERVER_REWRITE_PHASE].handlers, | |
291 cf->pool, 1, sizeof(ngx_http_handler_pt)) | |
292 != NGX_OK) | |
293 { | |
294 return NGX_CONF_ERROR; | |
295 } | |
296 | |
297 cmcf->phases[NGX_HTTP_SERVER_REWRITE_PHASE].type = NGX_OK; | |
287 | 298 |
288 | 299 |
289 /* the special find config phase for a single handler */ | 300 /* the special find config phase for a single handler */ |
290 | 301 |
291 if (ngx_array_init(&cmcf->phases[NGX_HTTP_FIND_CONFIG_PHASE].handlers, | 302 if (ngx_array_init(&cmcf->phases[NGX_HTTP_FIND_CONFIG_PHASE].handlers, |
292 cf->pool, 1, sizeof(ngx_http_handler_pt)) != NGX_OK) | 303 cf->pool, 1, sizeof(ngx_http_handler_pt)) |
304 != NGX_OK) | |
293 { | 305 { |
294 return NGX_CONF_ERROR; | 306 return NGX_CONF_ERROR; |
295 } | 307 } |
296 | 308 |
297 cmcf->phases[NGX_HTTP_FIND_CONFIG_PHASE].type = NGX_OK; | 309 cmcf->phases[NGX_HTTP_FIND_CONFIG_PHASE].type = NGX_OK; |
302 } | 314 } |
303 | 315 |
304 *h = ngx_http_find_location_config; | 316 *h = ngx_http_find_location_config; |
305 | 317 |
306 | 318 |
319 if (ngx_array_init(&cmcf->phases[NGX_HTTP_REWRITE_PHASE].handlers, | |
320 cf->pool, 1, sizeof(ngx_http_handler_pt)) | |
321 != NGX_OK) | |
322 { | |
323 return NGX_CONF_ERROR; | |
324 } | |
325 | |
326 cmcf->phases[NGX_HTTP_REWRITE_PHASE].type = NGX_OK; | |
327 | |
328 | |
307 if (ngx_array_init(&cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers, | 329 if (ngx_array_init(&cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers, |
308 cf->pool, 1, sizeof(ngx_http_handler_pt)) != NGX_OK) | 330 cf->pool, 4, sizeof(ngx_http_handler_pt)) |
331 != NGX_OK) | |
309 { | 332 { |
310 return NGX_CONF_ERROR; | 333 return NGX_CONF_ERROR; |
311 } | 334 } |
312 | 335 |
313 cmcf->phases[NGX_HTTP_ACCESS_PHASE].type = NGX_DECLINED; | 336 cmcf->phases[NGX_HTTP_ACCESS_PHASE].type = NGX_DECLINED; |
314 | 337 |
315 | 338 |
316 if (ngx_array_init(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers, | 339 if (ngx_array_init(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers, |
317 cf->pool, 4, sizeof(ngx_http_handler_pt)) != NGX_OK) | 340 cf->pool, 4, sizeof(ngx_http_handler_pt)) |
341 != NGX_OK) | |
318 { | 342 { |
319 return NGX_CONF_ERROR; | 343 return NGX_CONF_ERROR; |
320 } | 344 } |
321 | 345 |
322 cmcf->phases[NGX_HTTP_CONTENT_PHASE].type = NGX_OK; | 346 cmcf->phases[NGX_HTTP_CONTENT_PHASE].type = NGX_OK; |
351 return NGX_CONF_ERROR; | 375 return NGX_CONF_ERROR; |
352 } | 376 } |
353 } | 377 } |
354 } | 378 } |
355 | 379 |
380 if (ngx_http_variables_init_vars(cf) != NGX_OK) { | |
381 return NGX_CONF_ERROR; | |
382 } | |
356 | 383 |
357 /* | 384 /* |
358 * http{}'s cf->ctx was needed while the configuration merging | 385 * http{}'s cf->ctx was needed while the configuration merging |
359 * and in postconfiguration process | 386 * and in postconfiguration process |
360 */ | 387 */ |