# HG changeset patch # User Olaf Wintermann # Date 1486199185 -3600 # Node ID 76c96ee1822116dbc601cc3b50fe44f2588b9311 # Parent 5c752979bfd6a14bc2e055057907b6ddb059d659 check close return value diff -r 5c752979bfd6 -r 76c96ee18221 src/server/daemon/httplistener.c --- a/src/server/daemon/httplistener.c Mon Jan 30 20:54:20 2017 +0100 +++ b/src/server/daemon/httplistener.c Sat Feb 04 10:06:25 2017 +0100 @@ -417,7 +417,7 @@ case SSL_ERROR_WANT_ACCEPT: errstr = "SSL_ERROR_WANT_ACCEPT"; break; case SSL_ERROR_WANT_X509_LOOKUP: errstr = "SSL_ERROR_WANT_X509_LOOKUP"; break; case SSL_ERROR_SYSCALL: errstr = "SSL_ERROR_SYSCALL"; break; - case SSL_ERROR_SSL: errstr = "SL_ERROR_SSL"; break; + case SSL_ERROR_SSL: errstr = "SSL_ERROR_SSL"; break; } log_ereport(LOG_VERBOSE, "SSL accept error[%d]: %s", error, errstr); free(conn); diff -r 5c752979bfd6 -r 76c96ee18221 src/server/daemon/sessionhandler.c --- a/src/server/daemon/sessionhandler.c Mon Jan 30 20:54:20 2017 +0100 +++ b/src/server/daemon/sessionhandler.c Sat Feb 04 10:06:25 2017 +0100 @@ -55,7 +55,12 @@ } void connection_close(Connection *conn) { - close(conn->fd); + while(close(conn->fd)) { + if(errno != EINTR) { + log_ereport(LOG_VERBOSE, "connection close failed: %s", strerror(errno)); + break; + } + } } int connection_ssl_read(Connection *conn, void *buf, int len) { @@ -82,7 +87,12 @@ log_ereport(LOG_VERBOSE, "SSL_shutdown failed: %d", conn->ssl_error); } } - close(conn->fd); + while(close(conn->fd)) { + if(errno != EINTR) { + log_ereport(LOG_VERBOSE, "connection close failed: %s", strerror(errno)); + break; + } + } } void connection_destroy(Connection *conn) { @@ -320,7 +330,7 @@ int r = handle_request(request, NULL); if(r != 0) { // TODO: error message - close(request->connection->fd); + connection_destroy(request->connection); } /*