From 1ca933cfe8fb2e72e9079a14b8217dc6f37a6c0b Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 4 Feb 2003 01:14:16 +0000
Subject: [PATCH] Treats errno 22 (EINVAL) when accepting the same as ENOTSOCK
 (socket closed).

---
 src/sbbs3/ftpsrvr.c  | 2 +-
 src/sbbs3/mailsrvr.c | 4 ++--
 src/sbbs3/main.cpp   | 2 +-
 src/sbbs3/services.c | 2 +-
 src/sbbs3/websrvr.c  | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index dbe3f54956..23ecee4258 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -4624,7 +4624,7 @@ void DLLCALL ftp_server(void* arg)
 
 			if(client_socket == INVALID_SOCKET)
 			{
-				if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR) 
+				if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR || ERROR_VALUE == EINVAL) 
             		lprintf("0000 FTP socket closed while listening");
 				else
 					lprintf("0000 !ERROR %d accepting connection", ERROR_VALUE);
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 95af9fc2dc..1f5ec0e7f5 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -3427,7 +3427,7 @@ void DLLCALL mail_server(void* arg)
 
 				if(client_socket == INVALID_SOCKET)
 				{
-					if(ERROR_VALUE == ENOTSOCK)
+					if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL)
             			lprintf("0000 SMTP socket closed while listening");
 					else
 						lprintf("%04d !ERROR %d accept failed", server_socket, ERROR_VALUE);
@@ -3477,7 +3477,7 @@ void DLLCALL mail_server(void* arg)
 
 				if(client_socket == INVALID_SOCKET)
 				{
-					if(ERROR_VALUE == ENOTSOCK)
+					if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL)
             			lprintf("%04d POP3 socket closed while listening",pop3_socket);
 					else
 						lprintf("%04d !ERROR %d accept failed", pop3_socket, ERROR_VALUE);
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 0bbfd52d4e..dc46365663 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3803,7 +3803,7 @@ void DLLCALL bbs_thread(void* arg)
 		}
 
 		if(client_socket == INVALID_SOCKET)	{
-			if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR) {
+			if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR || ERROR_VALUE == EINVAL) {
             	lputs("BBS socket closed");
 				break;
 			}
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index c8cfd63933..c90d85019d 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -1614,7 +1614,7 @@ void DLLCALL services_thread(void* arg)
 					/* TCP */
 					if((client_socket=accept(service[i].socket
 						,(struct sockaddr *)&client_addr, &client_addr_len))==INVALID_SOCKET) {
-						if(ERROR_VALUE == ENOTSOCK)
+						if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL)
             				lprintf("%04d %s socket closed while listening"
 								,service[i].socket, service[i].protocol);
 						else
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index 427ce44bba..6389f52aeb 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -2283,7 +2283,7 @@ void DLLCALL web_server(void* arg)
 			}
 
 			if(client_socket == INVALID_SOCKET)	{
-				if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR) {
+				if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR || ERROR_VALUE == EINVAL) {
             		lprintf("Web Server socket closed");
 					break;
 				}
-- 
GitLab