aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_syslog.c
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2018-05-14 22:50:57 +0300
committerVladimir Homutov <vl@nginx.com>2018-05-14 22:50:57 +0300
commit5568a6598d7ec830a6759c6ab0419a50b4ab3056 (patch)
treeaec4e1b191fd244910761b9f0fb417aee81d22a5 /src/core/ngx_syslog.c
parent4ac8036e78aeb95fe85e41d45caf82722f8e2d07 (diff)
downloadnginx-5568a6598d7ec830a6759c6ab0419a50b4ab3056.tar.gz
nginx-5568a6598d7ec830a6759c6ab0419a50b4ab3056.zip
Syslog: install cleanup handler only once.
If a socket was re-opened due to an error (02c2352d5b01 and fa0e093b64d7), additional cleanup handler was installed each time.
Diffstat (limited to 'src/core/ngx_syslog.c')
-rw-r--r--src/core/ngx_syslog.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/core/ngx_syslog.c b/src/core/ngx_syslog.c
index e2f9b6cba..3c7b63a62 100644
--- a/src/core/ngx_syslog.c
+++ b/src/core/ngx_syslog.c
@@ -39,7 +39,8 @@ static ngx_event_t ngx_syslog_dummy_event;
char *
ngx_syslog_process_conf(ngx_conf_t *cf, ngx_syslog_peer_t *peer)
{
- peer->pool = cf->pool;
+ ngx_pool_cleanup_t *cln;
+
peer->facility = NGX_CONF_UNSET_UINT;
peer->severity = NGX_CONF_UNSET_UINT;
@@ -67,6 +68,19 @@ ngx_syslog_process_conf(ngx_conf_t *cf, ngx_syslog_peer_t *peer)
peer->conn.fd = (ngx_socket_t) -1;
+ peer->conn.read = &ngx_syslog_dummy_event;
+ peer->conn.write = &ngx_syslog_dummy_event;
+
+ ngx_syslog_dummy_event.log = &ngx_syslog_dummy_log;
+
+ cln = ngx_pool_cleanup_add(cf->pool, 0);
+ if (cln == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ cln->data = peer;
+ cln->handler = ngx_syslog_cleanup;
+
return NGX_CONF_OK;
}
@@ -306,13 +320,7 @@ ngx_syslog_send(ngx_syslog_peer_t *peer, u_char *buf, size_t len)
static ngx_int_t
ngx_syslog_init_peer(ngx_syslog_peer_t *peer)
{
- ngx_socket_t fd;
- ngx_pool_cleanup_t *cln;
-
- peer->conn.read = &ngx_syslog_dummy_event;
- peer->conn.write = &ngx_syslog_dummy_event;
-
- ngx_syslog_dummy_event.log = &ngx_syslog_dummy_log;
+ ngx_socket_t fd;
fd = ngx_socket(peer->server.sockaddr->sa_family, SOCK_DGRAM, 0);
if (fd == (ngx_socket_t) -1) {
@@ -333,14 +341,6 @@ ngx_syslog_init_peer(ngx_syslog_peer_t *peer)
goto failed;
}
- cln = ngx_pool_cleanup_add(peer->pool, 0);
- if (cln == NULL) {
- goto failed;
- }
-
- cln->data = peer;
- cln->handler = ngx_syslog_cleanup;
-
peer->conn.fd = fd;
/* UDP sockets are always ready to write */