mirror of
https://github.com/nginx/nginx.git
synced 2025-06-10 03:22:48 +08:00
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.
This commit is contained in:
parent
02ce6c415f
commit
152d92b4b7
@ -1136,7 +1136,7 @@ ngx_http_log_set_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
ngx_int_t gzip;
|
ngx_int_t gzip;
|
||||||
ngx_uint_t i, n;
|
ngx_uint_t i, n;
|
||||||
ngx_msec_t flush;
|
ngx_msec_t flush;
|
||||||
ngx_str_t *value, name, s, filter;
|
ngx_str_t *value, name, s;
|
||||||
ngx_http_log_t *log;
|
ngx_http_log_t *log;
|
||||||
ngx_syslog_peer_t *peer;
|
ngx_syslog_peer_t *peer;
|
||||||
ngx_http_log_buf_t *buffer;
|
ngx_http_log_buf_t *buffer;
|
||||||
@ -1257,7 +1257,6 @@ process_formats:
|
|||||||
size = 0;
|
size = 0;
|
||||||
flush = 0;
|
flush = 0;
|
||||||
gzip = 0;
|
gzip = 0;
|
||||||
filter.len = 0;
|
|
||||||
|
|
||||||
for (i = 3; i < cf->args->nelts; i++) {
|
for (i = 3; i < cf->args->nelts; i++) {
|
||||||
|
|
||||||
@ -1325,8 +1324,25 @@ process_formats:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ngx_strncmp(value[i].data, "if=", 3) == 0) {
|
if (ngx_strncmp(value[i].data, "if=", 3) == 0) {
|
||||||
filter.len = value[i].len - 3;
|
s.len = value[i].len - 3;
|
||||||
filter.data = value[i].data + 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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1405,23 +1421,6 @@ process_formats:
|
|||||||
log->file->data = buffer;
|
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;
|
return NGX_CONF_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user