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