From 4b211d19da3f6a35e87fcb350527d9a992449b41 Mon Sep 17 00:00:00 2001 From: Test_User Date: Mon, 12 Aug 2024 23:45:35 -0400 Subject: Improve accept retrying conditions --- general_network.h | 6 ++++++ networks/gnutls.c | 2 +- networks/gnutls_buffered.c | 2 +- networks/openssl.c | 2 +- networks/openssl_buffered.c | 2 +- networks/plaintext.c | 2 +- networks/plaintext_buffered.c | 2 +- 7 files changed, 12 insertions(+), 6 deletions(-) diff --git a/general_network.h b/general_network.h index cfb61fb..9f35f64 100644 --- a/general_network.h +++ b/general_network.h @@ -37,6 +37,12 @@ #include "protocol_numbers.h" #include "table.h" +#ifdef ENONET +#define RETRY_ACCEPT (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH) +#else +#define RETRY_ACCEPT (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH) +#endif + struct network { int (*send)(void *handle, struct string msg); size_t (*recv)(void *handle, char *data, size_t len, char *err); diff --git a/networks/gnutls.c b/networks/gnutls.c index 4beb552..0bab0a9 100644 --- a/networks/gnutls.c +++ b/networks/gnutls.c @@ -320,7 +320,7 @@ int gnutls_accept(int listen_fd, void **handle, struct string *addr) { int con_fd; do { con_fd = accept(listen_fd, (struct sockaddr*)&address, &address_len); - } while (con_fd == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH)); + } while (con_fd == -1 && RETRY_ACCEPT); if (con_fd == -1) return -1; diff --git a/networks/gnutls_buffered.c b/networks/gnutls_buffered.c index 80e8574..07fc956 100644 --- a/networks/gnutls_buffered.c +++ b/networks/gnutls_buffered.c @@ -320,7 +320,7 @@ int gnutls_buffered_accept(int listen_fd, void **handle, struct string *addr) { int con_fd; do { con_fd = accept(listen_fd, (struct sockaddr*)&address, &address_len); - } while (con_fd == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH)); + } while (con_fd == -1 && RETRY_ACCEPT); if (con_fd == -1) return -1; diff --git a/networks/openssl.c b/networks/openssl.c index 199a243..9287ace 100644 --- a/networks/openssl.c +++ b/networks/openssl.c @@ -319,7 +319,7 @@ int openssl_accept(int listen_fd, void **handle, struct string *addr) { int con_fd; do { con_fd = accept(listen_fd, (struct sockaddr*)&address, &address_len); - } while (con_fd == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH)); + } while (con_fd == -1 && RETRY_ACCEPT); if (con_fd == -1) return -1; diff --git a/networks/openssl_buffered.c b/networks/openssl_buffered.c index 3547e64..b47f92a 100644 --- a/networks/openssl_buffered.c +++ b/networks/openssl_buffered.c @@ -453,7 +453,7 @@ int openssl_buffered_accept(int listen_fd, void **handle, struct string *addr) { int con_fd; do { con_fd = accept(listen_fd, (struct sockaddr*)&address, &address_len); - } while (con_fd == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH)); + } while (con_fd == -1 && RETRY_ACCEPT); if (con_fd == -1) return -1; diff --git a/networks/plaintext.c b/networks/plaintext.c index 7471811..8d071f1 100644 --- a/networks/plaintext.c +++ b/networks/plaintext.c @@ -143,7 +143,7 @@ int plaintext_accept(int listen_fd, void **handle, struct string *addr) { int con_fd; do { con_fd = accept(listen_fd, (struct sockaddr*)&address, &address_len); - } while (con_fd == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH)); + } while (con_fd == -1 && RETRY_ACCEPT); if (con_fd == -1) return -1; diff --git a/networks/plaintext_buffered.c b/networks/plaintext_buffered.c index 14fc1ea..59e3a2f 100644 --- a/networks/plaintext_buffered.c +++ b/networks/plaintext_buffered.c @@ -302,7 +302,7 @@ int plaintext_buffered_accept(int listen_fd, void **handle, struct string *addr) int con_fd; do { con_fd = accept(listen_fd, (struct sockaddr*)&address, &address_len); - } while (con_fd == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENETDOWN || errno == EPROTO || errno == ENOPROTOOPT || errno == EHOSTDOWN || errno == ENONET || errno == EHOSTUNREACH || errno == EOPNOTSUPP || errno == ENETUNREACH)); + } while (con_fd == -1 && RETRY_ACCEPT); if (con_fd == -1) return -1; -- cgit v1.2.3