Mercurial > hg > nginx-vendor-current
comparison src/core/ngx_log.c @ 634:23ef0645ea57 NGINX_1_1_1
nginx 1.1.1
*) Change: now cache loader processes either as many files as specified
by "loader_files" parameter or works no more than time specified by
"loader_threshold" parameter during each iteration.
*) Change: now SIGWINCH signal works only in deamon mode.
*) Feature: now shared zones and caches use POSIX semaphores on
Solaris.
Thanks to Den Ivanov.
*) Feature: accept filters are now supported on NetBSD.
*) Bugfix: nginx could not be build on Linux 3.0.
*) Bugfix: nginx did not use gzipping in some cases; the bug had
appeared in 1.1.0.
*) Bugfix: request body might be incorrectly processed if client used
pipelining.
*) Bugfix: in the "request_body_in_single_buf" directive.
*) Bugfix: in "proxy_set_body" and "proxy_pass_request_body" directives
if SSL connection to backend was used.
*) Bugfix: nginx hogged CPU if all servers in an upstream were marked
as "down".
*) Bugfix: a segmentation fault might occur during reconfiguration if
ssl_session_cache was defined but not used in a previous
configuration.
*) Bugfix: a segmentation fault might occur in a worker process if many
backup servers were used in an upstream.
*) Bugfix: a segmentation fault might occur in a worker process if
"fastcgi/scgi/uwsgi_param" directives were used with values starting
with "HTTP_"; the bug had appeared in 0.8.40.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 22 Aug 2011 00:00:00 +0400 |
parents | 8214eaef3530 |
children | d0f7a625f27c |
comparison
equal
deleted
inserted
replaced
633:561a37709f6d | 634:23ef0645ea57 |
---|---|
367 | 367 |
368 | 368 |
369 char * | 369 char * |
370 ngx_log_set_levels(ngx_conf_t *cf, ngx_log_t *log) | 370 ngx_log_set_levels(ngx_conf_t *cf, ngx_log_t *log) |
371 { | 371 { |
372 ngx_uint_t i, n, d; | 372 ngx_uint_t i, n, d, found; |
373 ngx_str_t *value; | 373 ngx_str_t *value; |
374 | 374 |
375 value = cf->args->elts; | 375 value = cf->args->elts; |
376 | 376 |
377 for (i = 2; i < cf->args->nelts; i++) { | 377 for (i = 2; i < cf->args->nelts; i++) { |
378 found = 0; | |
378 | 379 |
379 for (n = 1; n <= NGX_LOG_DEBUG; n++) { | 380 for (n = 1; n <= NGX_LOG_DEBUG; n++) { |
380 if (ngx_strcmp(value[i].data, err_levels[n].data) == 0) { | 381 if (ngx_strcmp(value[i].data, err_levels[n].data) == 0) { |
381 | 382 |
382 if (log->log_level != 0) { | 383 if (log->log_level != 0) { |
385 &value[i]); | 386 &value[i]); |
386 return NGX_CONF_ERROR; | 387 return NGX_CONF_ERROR; |
387 } | 388 } |
388 | 389 |
389 log->log_level = n; | 390 log->log_level = n; |
390 continue; | 391 found = 1; |
392 break; | |
391 } | 393 } |
392 } | 394 } |
393 | 395 |
394 for (n = 0, d = NGX_LOG_DEBUG_FIRST; d <= NGX_LOG_DEBUG_LAST; d <<= 1) { | 396 for (n = 0, d = NGX_LOG_DEBUG_FIRST; d <= NGX_LOG_DEBUG_LAST; d <<= 1) { |
395 if (ngx_strcmp(value[i].data, debug_levels[n++]) == 0) { | 397 if (ngx_strcmp(value[i].data, debug_levels[n++]) == 0) { |
399 &value[i]); | 401 &value[i]); |
400 return NGX_CONF_ERROR; | 402 return NGX_CONF_ERROR; |
401 } | 403 } |
402 | 404 |
403 log->log_level |= d; | 405 log->log_level |= d; |
406 found = 1; | |
407 break; | |
404 } | 408 } |
405 } | 409 } |
406 | 410 |
407 | 411 |
408 if (log->log_level == 0) { | 412 if (!found) { |
409 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | 413 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
410 "invalid log level \"%V\"", &value[i]); | 414 "invalid log level \"%V\"", &value[i]); |
411 return NGX_CONF_ERROR; | 415 return NGX_CONF_ERROR; |
412 } | 416 } |
413 } | 417 } |