comparison src/http/ngx_http.c @ 122:d25a1d6034f1 NGINX_0_3_8

nginx 0.3.8 *) 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; bug 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 <http://sysoev.ru>
date Wed, 09 Nov 2005 00:00:00 +0300
parents 408f195b3482
children df17fbafec8f
comparison
equal deleted inserted replaced
121:737953b238a4 122:d25a1d6034f1
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 */