Ticket #1477: syslog_tolerate.diff

File syslog_tolerate.diff, 1.1 KB (added by vl, 8 years ago)

re-open socket on error

  • src/core/ngx_syslog.c

    # HG changeset patch
    # User Vladimir Homutov <vl@nginx.com>
    # Date 1518709467 -10800
    #      Thu Feb 15 18:44:27 2018 +0300
    # Node ID d9475929537b10628efef6b5d338e67876e8be12
    # Parent  8b0553239592f5d0fd419e5116b9d343838685cf
    Core: re-open udp socket on send error.
    
    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.
    
    diff --git a/src/core/ngx_syslog.c b/src/core/ngx_syslog.c
    a b ngx_syslog_send(ngx_syslog_peer_t *peer,  
    289289        n = ngx_os_io.send(&peer->conn, buf, len);
    290290    }
    291291
    292 #if (NGX_HAVE_UNIX_DOMAIN)
    293 
    294     if (n == NGX_ERROR && peer->server.sockaddr->sa_family == AF_UNIX) {
     292    if (n == NGX_ERROR) {
    295293
    296294        if (ngx_close_socket(peer->conn.fd) == -1) {
    297295            ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_socket_errno,
    ngx_syslog_send(ngx_syslog_peer_t *peer,  
    301299        peer->conn.fd = (ngx_socket_t) -1;
    302300    }
    303301
    304 #endif
    305 
    306302    return n;
    307303}
    308304