aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTest_User <hax@andrewyu.org>2024-08-12 23:45:35 -0400
committerTest_User <hax@andrewyu.org>2024-08-12 23:45:35 -0400
commit4b211d19da3f6a35e87fcb350527d9a992449b41 (patch)
tree275859ca4359e53353e9ce2f48c6ee9f87aaa802
parent770cb2f15a96693cce0ba56acaf8dcee6b7339a1 (diff)
downloadhaxircd-4b211d19da3f6a35e87fcb350527d9a992449b41.tar.gz
haxircd-4b211d19da3f6a35e87fcb350527d9a992449b41.zip
Improve accept retrying conditions
-rw-r--r--general_network.h6
-rw-r--r--networks/gnutls.c2
-rw-r--r--networks/gnutls_buffered.c2
-rw-r--r--networks/openssl.c2
-rw-r--r--networks/openssl_buffered.c2
-rw-r--r--networks/plaintext.c2
-rw-r--r--networks/plaintext_buffered.c2
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;