From f4afc06920e54ce3f49ee878ebddd0c2a1025360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Thu, 18 May 2017 16:24:36 +0100 Subject: [PATCH] Tweak connection error logging. Do not log when receiving the last bytes on a connection. Log failed writes. --- servers/lloadd/client.c | 28 +++++++++++++++++++--------- servers/lloadd/upstream.c | 17 +++++++++++------ 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/servers/lloadd/client.c b/servers/lloadd/client.c index 6a5801f34d..2dfdf13960 100644 --- a/servers/lloadd/client.c +++ b/servers/lloadd/client.c @@ -59,10 +59,13 @@ client_read_cb( evutil_socket_t s, short what, void *arg ) int err = sock_errno(); if ( err != EWOULDBLOCK && err != EAGAIN ) { - char ebuf[128]; - Debug( LDAP_DEBUG_ANY, "client_read_cb: " - "ber_get_next on fd %d failed errno=%d (%s)\n", - c->c_fd, err, sock_errstr( err, ebuf, sizeof(ebuf) ) ); + if ( err ) { + char ebuf[128]; + Debug( LDAP_DEBUG_ANY, "client_read_cb: " + "ber_get_next on fd %d failed errno=%d (%s)\n", + c->c_fd, err, + sock_errstr( err, ebuf, sizeof(ebuf) ) ); + } c->c_currentber = NULL; ber_free( ber, 1 ); @@ -130,11 +133,13 @@ handle_requests( void *ctx, void *arg ) int err = sock_errno(); if ( err != EWOULDBLOCK && err != EAGAIN ) { - char ebuf[128]; - Debug( LDAP_DEBUG_ANY, "handle_requests: " - "ber_get_next on fd %d failed errno=%d (%s)\n", - c->c_fd, err, - sock_errstr( err, ebuf, sizeof(ebuf) ) ); + if ( err ) { + char ebuf[128]; + Debug( LDAP_DEBUG_ANY, "handle_requests: " + "ber_get_next on fd %d failed errno=%d (%s)\n", + c->c_fd, err, + sock_errstr( err, ebuf, sizeof(ebuf) ) ); + } c->c_currentber = NULL; ber_free( ber, 1 ); @@ -222,8 +227,13 @@ client_write_cb( evutil_socket_t s, short what, void *arg ) /* We might have been beaten to flushing the data by another thread */ if ( c->c_pendingber && ber_flush( c->c_sb, c->c_pendingber, 1 ) ) { int err = sock_errno(); + if ( err != EWOULDBLOCK && err != EAGAIN ) { + char ebuf[128]; ldap_pvt_thread_mutex_unlock( &c->c_io_mutex ); + Debug( LDAP_DEBUG_ANY, "client_write_cb: " + "ber_flush on fd %d failed errno=%d (%s)\n", + c->c_fd, err, sock_errstr( err, ebuf, sizeof(ebuf) ) ); CLIENT_LOCK_DESTROY(c); return; } diff --git a/servers/lloadd/upstream.c b/servers/lloadd/upstream.c index 6c82c1fe2d..6ffbaa078b 100644 --- a/servers/lloadd/upstream.c +++ b/servers/lloadd/upstream.c @@ -526,10 +526,13 @@ upstream_read_cb( evutil_socket_t s, short what, void *arg ) int err = sock_errno(); if ( err != EWOULDBLOCK && err != EAGAIN ) { - char ebuf[128]; - Debug( LDAP_DEBUG_ANY, "upstream_read_cb: " - "ber_get_next on fd %d failed errno=%d (%s)\n", - c->c_fd, err, sock_errstr( err, ebuf, sizeof(ebuf) ) ); + if ( err ) { + char ebuf[128]; + Debug( LDAP_DEBUG_ANY, "upstream_read_cb: " + "ber_get_next on fd %d failed errno=%d (%s)\n", + c->c_fd, err, + sock_errstr( err, ebuf, sizeof(ebuf) ) ); + } c->c_currentber = NULL; ber_free( ber, 1 ); @@ -706,10 +709,12 @@ upstream_write_cb( evutil_socket_t s, short what, void *arg ) /* We might have been beaten to flushing the data by another thread */ if ( c->c_pendingber && ber_flush( c->c_sb, c->c_pendingber, 1 ) ) { int err = sock_errno(); + if ( err != EWOULDBLOCK && err != EAGAIN ) { + char ebuf[128]; Debug( LDAP_DEBUG_ANY, "upstream_write_cb: " - "error writing to connection %ld\n", - c->c_connid ); + "ber_flush on fd %d failed errno=%d (%s)\n", + c->c_fd, err, sock_errstr( err, ebuf, sizeof(ebuf) ) ); ldap_pvt_thread_mutex_unlock( &c->c_io_mutex ); UPSTREAM_LOCK_DESTROY(c); return;