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 }