comparison src/core/ngx_log.c @ 638:692f4d4d7f10 NGINX_1_0_9

nginx 1.0.9 *) Change: now the 0x7F-0x1F characters are escaped as \xXX in an access_log. *) Change: now SIGWINCH signal works only in daemon mode. *) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support the following additional values: X-Accel-Limit-Rate, X-Accel-Buffering, X-Accel-Charset. *) Feature: decrease of memory consumption if SSL is used. *) Feature: accept filters are now supported on NetBSD. *) Feature: the "uwsgi_buffering" and "scgi_buffering" directives. Thanks to Peter Smit. *) Bugfix: a segmentation fault occurred on start or while reconfiguration if the "ssl" directive was used at http level and there was no "ssl_certificate" defined. *) Bugfix: some UTF-8 characters were processed incorrectly. Thanks to Alexey Kuts. *) Bugfix: the ngx_http_rewrite_module directives specified at "server" level were executed twice if no matching locations were defined. *) Bugfix: a socket leak might occurred if "aio sendfile" was used. *) Bugfix: connections with fast clients might be closed after send_timeout if file AIO was used. *) Bugfix: in the ngx_http_autoindex_module. *) Bugfix: the module ngx_http_mp4_module did not support seeking on 32-bit platforms. *) Bugfix: non-cacheable responses might be cached if "proxy_cache_bypass" directive was used. Thanks to John Ferlito. *) Bugfix: cached responses with an empty body were returned incorrectly; the bug had appeared in 0.8.31. *) Bugfix: 201 responses of the ngx_http_dav_module were incorrect; the bug had appeared in 0.8.32. *) Bugfix: in the "return" directive. *) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and "ssl_prefer_server_ciphers" directives might work incorrectly if SNI was used.
author Igor Sysoev <http://sysoev.ru>
date Tue, 01 Nov 2011 00:00:00 +0400
parents 8214eaef3530
children ad25218fd14b
comparison
equal deleted inserted replaced
637:ea7441793bba 638:692f4d4d7f10
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 }