Changeset: a0fec1753e6f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a0fec1753e6f Modified Files: tools/merovingian/daemon/client.c Branch: Aug2018 Log Message:
Not all errors are the same: don't exit for transient failures. This (hopefully) fixes bug 6635. diffs (70 lines): diff --git a/tools/merovingian/daemon/client.c b/tools/merovingian/daemon/client.c --- a/tools/merovingian/daemon/client.c +++ b/tools/merovingian/daemon/client.c @@ -459,7 +459,17 @@ acceptConnections(int sock, int usock) if (retval == -1) { if (_mero_keep_listening == 0) break; - if (errnr != EINTR) { + switch (errnr) { + case EINTR: + /* interrupted */ + break; + case EMFILE: + case ENFILE: + case ENOBUFS: + case ENOMEM: + /* transient failures */ + break; + default: msg = strerror(errnr); goto error; } @@ -469,8 +479,21 @@ acceptConnections(int sock, int usock) if ((msgsock = accept4(sock, (SOCKPTR)0, (socklen_t *) 0, SOCK_CLOEXEC)) == -1) { if (_mero_keep_listening == 0) break; - if (errno != EINTR) { - msg = strerror(errno); + switch (errnr) { + case EINTR: + /* interrupted */ + break; + case EMFILE: + case ENFILE: + case ENOBUFS: + case ENOMEM: + /* transient failures */ + break; + case ECONNABORTED: + /* connection aborted before we began */ + break; + default: + msg = strerror(errnr); goto error; } continue; @@ -488,8 +511,21 @@ acceptConnections(int sock, int usock) if ((msgsock = accept4(usock, (SOCKPTR)0, (socklen_t *)0, SOCK_CLOEXEC)) == -1) { if (_mero_keep_listening == 0) break; - if (errno != EINTR) { - msg = strerror(errno); + switch (errnr) { + case EINTR: + /* interrupted */ + break; + case EMFILE: + case ENFILE: + case ENOBUFS: + case ENOMEM: + /* transient failures */ + break; + case ECONNABORTED: + /* connection aborted before we began */ + break; + default: + msg = strerror(errnr); goto error; } continue; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list