Mercurial > hg > nginx-quic
changeset 5833:e3016ee8dba3
Access log: fixed the "if=" parameter with buffering (ticket #625).
It might not work if there were more than one "access_log" directives
pointed to the same file and duplicate buffer parameters.
author | Valentin Bartenev <vbart@nginx.com> |
---|---|
date | Sat, 13 Sep 2014 21:47:13 +0400 |
parents | d09b689911ac |
children | ca63fc5ed9b1 |
files | src/http/modules/ngx_http_log_module.c |
diffstat | 1 files changed, 20 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_log_module.c +++ b/src/http/modules/ngx_http_log_module.c @@ -1136,7 +1136,7 @@ ngx_http_log_set_log(ngx_conf_t *cf, ngx ngx_int_t gzip; ngx_uint_t i, n; ngx_msec_t flush; - ngx_str_t *value, name, s, filter; + ngx_str_t *value, name, s; ngx_http_log_t *log; ngx_syslog_peer_t *peer; ngx_http_log_buf_t *buffer; @@ -1257,7 +1257,6 @@ process_formats: size = 0; flush = 0; gzip = 0; - filter.len = 0; for (i = 3; i < cf->args->nelts; i++) { @@ -1325,8 +1324,25 @@ process_formats: } if (ngx_strncmp(value[i].data, "if=", 3) == 0) { - filter.len = value[i].len - 3; - filter.data = value[i].data + 3; + s.len = value[i].len - 3; + s.data = value[i].data + 3; + + ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); + + ccv.cf = cf; + ccv.value = &s; + ccv.complex_value = ngx_palloc(cf->pool, + sizeof(ngx_http_complex_value_t)); + if (ccv.complex_value == NULL) { + return NGX_CONF_ERROR; + } + + if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { + return NGX_CONF_ERROR; + } + + log->filter = ccv.complex_value; + continue; } @@ -1405,23 +1421,6 @@ process_formats: log->file->data = buffer; } - if (filter.len) { - log->filter = ngx_palloc(cf->pool, sizeof(ngx_http_complex_value_t)); - if (log->filter == NULL) { - return NGX_CONF_ERROR; - } - - ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); - - ccv.cf = cf; - ccv.value = &filter; - ccv.complex_value = log->filter; - - if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { - return NGX_CONF_ERROR; - } - } - return NGX_CONF_OK; }