Mercurial > hg > nginx
comparison src/core/ngx_syslog.c @ 7272:fa0e093b64d7
Syslog: re-open syslog udp socket on send error (ticket #1477).
Previously, only unix domain sockets were reopened to tolerate cases when
local syslog server was restarted. It makes sense to treat other cases
(for example, local IP address changes) similarly.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Tue, 08 May 2018 19:35:56 +0300 |
parents | 2cd019520210 |
children | 7f9935f07fe9 |
comparison
equal
deleted
inserted
replaced
7271:9e25a5380a21 | 7272:fa0e093b64d7 |
---|---|
287 } else { | 287 } else { |
288 /* event module has not yet set ngx_io */ | 288 /* event module has not yet set ngx_io */ |
289 n = ngx_os_io.send(&peer->conn, buf, len); | 289 n = ngx_os_io.send(&peer->conn, buf, len); |
290 } | 290 } |
291 | 291 |
292 #if (NGX_HAVE_UNIX_DOMAIN) | 292 if (n == NGX_ERROR) { |
293 | |
294 if (n == NGX_ERROR && peer->server.sockaddr->sa_family == AF_UNIX) { | |
295 | 293 |
296 if (ngx_close_socket(peer->conn.fd) == -1) { | 294 if (ngx_close_socket(peer->conn.fd) == -1) { |
297 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, | 295 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno, |
298 ngx_close_socket_n " failed"); | 296 ngx_close_socket_n " failed"); |
299 } | 297 } |
300 | 298 |
301 peer->conn.fd = (ngx_socket_t) -1; | 299 peer->conn.fd = (ngx_socket_t) -1; |
302 } | 300 } |
303 | 301 |
304 #endif | |
305 | |
306 return n; | 302 return n; |
307 } | 303 } |
308 | 304 |
309 | 305 |
310 static ngx_int_t | 306 static ngx_int_t |