aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_syslog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ngx_syslog.c')
-rw-r--r--src/core/ngx_syslog.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/core/ngx_syslog.c b/src/core/ngx_syslog.c
index e6d40f48a..2555f29b8 100644
--- a/src/core/ngx_syslog.c
+++ b/src/core/ngx_syslog.c
@@ -234,11 +234,11 @@ ngx_syslog_writer(ngx_log_t *log, ngx_uint_t level, u_char *buf,
peer = log->wdata;
- if (peer->processing) {
+ if (peer->busy) {
return;
}
- peer->processing = 1;
+ peer->busy = 1;
peer->severity = level - 1;
p = ngx_syslog_add_header(peer, msg);
@@ -254,7 +254,7 @@ ngx_syslog_writer(ngx_log_t *log, ngx_uint_t level, u_char *buf,
(void) ngx_syslog_send(peer, msg, p - msg);
- peer->processing = 0;
+ peer->busy = 0;
}
@@ -267,6 +267,9 @@ ngx_syslog_send(ngx_syslog_peer_t *peer, u_char *buf, size_t len)
}
}
+ /* log syslog socket events with valid log */
+ peer->conn.log = ngx_cycle->log;
+
if (ngx_send) {
return ngx_send(&peer->conn, buf, len);
@@ -285,7 +288,6 @@ ngx_syslog_init_peer(ngx_syslog_peer_t *peer)
peer->conn.read = &ngx_syslog_dummy_event;
peer->conn.write = &ngx_syslog_dummy_event;
- peer->conn.log = &ngx_syslog_dummy_log;
ngx_syslog_dummy_event.log = &ngx_syslog_dummy_log;
@@ -339,6 +341,9 @@ ngx_syslog_cleanup(void *data)
{
ngx_syslog_peer_t *peer = data;
+ /* prevents further use of this peer */
+ peer->busy = 1;
+
if (ngx_close_socket(peer->conn.fd) == -1) {
ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno,
ngx_close_socket_n " failed");