diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 8b67eda7be96de0246357c9ca559f82b1e733501..f67dcc372ed9d2c7abb315ca9b71b1ad7eb2b726 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -4763,11 +4763,19 @@ void DLLCALL ftp_server(void* arg) if(client_socket == INVALID_SOCKET) { - if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR || ERROR_VALUE == EINVAL) +#if 0 /* is this necessary still? */ + if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR || ERROR_VALUE == EINVAL) { lprintf(LOG_NOTICE,"0000 FTP socket closed while listening"); - else - lprintf(LOG_WARNING,"0000 !ERROR %d accepting connection", ERROR_VALUE); - break; + break; + } +#endif + lprintf(LOG_WARNING,"%04d !ERROR %d accepting connection" + ,server_socket, ERROR_VALUE); +#ifdef _WIN32 + if(WSAGetLastError()==WSAENOBUFS) /* recycle (re-init WinSock) on this error */ + break; +#endif + continue; } if(startup->socket_open!=NULL) startup->socket_open(startup->cbdata,TRUE); diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 2669de7da088ddee76f16dd4483704d8641b7ded..2fde1d7a6b70fd5d3cc2e329a3daf59485d1bf29 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -4259,11 +4259,20 @@ void DLLCALL mail_server(void* arg) if(client_socket == INVALID_SOCKET) { - if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL) - lprintf(LOG_NOTICE,"0000 SMTP socket closed while listening"); - else - lprintf(LOG_WARNING,"%04d !ERROR %d accept failed", server_socket, ERROR_VALUE); - break; +#if 0 /* is this necessary still? */ + if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL) { + lprintf(LOG_NOTICE,"%04d SMTP socket closed while listening" + ,server_socket); + break; + } +#endif + lprintf(LOG_WARNING,"%04d SMTP !ERROR %d accepting connection" + ,server_socket, ERROR_VALUE); +#ifdef _WIN32 + if(WSAGetLastError()==WSAENOBUFS) /* recycle (re-init WinSock) on this error */ + break; +#endif + continue; } if(startup->socket_open!=NULL) startup->socket_open(startup->cbdata,TRUE); @@ -4275,7 +4284,7 @@ void DLLCALL mail_server(void* arg) } if(active_clients>=startup->max_clients) { - lprintf(LOG_WARNING,"%04d !MAXMIMUM CLIENTS (%u) reached, access denied" + lprintf(LOG_WARNING,"%04d SMTP !MAXMIMUM CLIENTS (%u) reached, access denied" ,client_socket, startup->max_clients); sockprintf(client_socket,"421 Maximum active clients reached, please try again later."); mswait(3000); @@ -4286,14 +4295,14 @@ void DLLCALL mail_server(void* arg) l=1; if((i=ioctlsocket(client_socket, FIONBIO, &l))!=0) { - lprintf(LOG_ERR,"%04d !ERROR %d (%d) disabling blocking on socket" + lprintf(LOG_ERR,"%04d SMTP !ERROR %d (%d) disabling blocking on socket" ,client_socket, i, ERROR_VALUE); mail_close_socket(client_socket); continue; } if((smtp=malloc(sizeof(smtp_t)))==NULL) { - lprintf(LOG_CRIT,"%04d !ERROR allocating %u bytes of memory for smtp_t" + lprintf(LOG_CRIT,"%04d SMTP !ERROR allocating %u bytes of memory for smtp_t" ,client_socket, sizeof(smtp_t)); mail_close_socket(client_socket); continue; @@ -4314,11 +4323,19 @@ void DLLCALL mail_server(void* arg) if(client_socket == INVALID_SOCKET) { - if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL) +#if 0 /* is this necessary still? */ + if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL) { lprintf(LOG_NOTICE,"%04d POP3 socket closed while listening",pop3_socket); - else - lprintf(LOG_WARNING,"%04d !ERROR %d accept failed", pop3_socket, ERROR_VALUE); - break; + break; + } +#endif + lprintf(LOG_WARNING,"%04d POP3 !ERROR %d accepting connection" + ,pop3_socket, ERROR_VALUE); +#ifdef _WIN32 + if(WSAGetLastError()==WSAENOBUFS) /* recycle (re-init WinSock) on this error */ + break; +#endif + continue; } if(startup->socket_open!=NULL) startup->socket_open(startup->cbdata,TRUE); @@ -4330,7 +4347,7 @@ void DLLCALL mail_server(void* arg) } if(active_clients>=startup->max_clients) { - lprintf(LOG_WARNING,"%04d !MAXMIMUM CLIENTS (%u) reached, access denied" + lprintf(LOG_WARNING,"%04d POP3 !MAXMIMUM CLIENTS (%u) reached, access denied" ,client_socket, startup->max_clients); sockprintf(client_socket,"-ERR Maximum active clients reached, please try again later."); mswait(3000); @@ -4342,7 +4359,7 @@ void DLLCALL mail_server(void* arg) l=1; if((i=ioctlsocket(client_socket, FIONBIO, &l))!=0) { - lprintf(LOG_ERR,"%04d !ERROR %d (%d) disabling blocking on socket" + lprintf(LOG_ERR,"%04d POP3 !ERROR %d (%d) disabling blocking on socket" ,client_socket, i, ERROR_VALUE); sockprintf(client_socket,"-ERR System error, please try again later."); mswait(3000); @@ -4351,7 +4368,7 @@ void DLLCALL mail_server(void* arg) } if((pop3=malloc(sizeof(pop3_t)))==NULL) { - lprintf(LOG_CRIT,"%04d !ERROR allocating %u bytes of memory for pop3_t" + lprintf(LOG_CRIT,"%04d POP3 !ERROR allocating %u bytes of memory for pop3_t" ,client_socket,sizeof(pop3_t)); sockprintf(client_socket,"-ERR System error, please try again later."); mswait(3000); diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 186519a7a7d1bb8ed9b45a39f694365c825450eb..bfb5d651b5675bcdef2f624fe41d9869baa32281 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -4260,12 +4260,18 @@ void DLLCALL bbs_thread(void* arg) continue; if(client_socket == INVALID_SOCKET) { +#if 0 /* is this necessary still? */ if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINTR || ERROR_VALUE == EINVAL) { lputs(LOG_NOTICE,"BBS socket closed"); break; } +#endif lprintf(LOG_ERR,"!ERROR %d accepting connection", ERROR_VALUE); - break; // was continue, July-01-2002 +#ifdef _WIN32 + if(WSAGetLastError()==WSAENOBUFS) /* recycle (re-init WinSock) on this error */ + break; +#endif + continue; } char host_ip[32]; diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 4f134b5aa0cea97085bc48c127d48ec000a478ea..485f9571f3c4f632208f1368ab4cf425359265ed 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -1964,9 +1964,13 @@ void DLLCALL services_thread(void* arg) lprintf(LOG_NOTICE,"%04d %s socket closed while listening" ,service[i].socket, service[i].protocol); else - lprintf(LOG_WARNING,"%04d %s !ERROR %d accept failed" + lprintf(LOG_WARNING,"%04d %s !ERROR %d accepting connection" ,service[i].socket, service[i].protocol, ERROR_VALUE); - break; +#ifdef _WIN32 + if(WSAGetLastError()==WSAENOBUFS) /* recycle (re-init WinSock) on this error */ + break; +#endif + continue; } sockets++; #if 0 /*def _DEBUG */ diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index e4ea9dda96e3719e5473bba161398f2bb14023b4..062017d1c4a66d6706a974ddc1b66f699140becd 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -3239,6 +3239,10 @@ void DLLCALL web_server(void* arg) if(client_socket == INVALID_SOCKET) { lprintf(LOG_WARNING,"!ERROR %d accepting connection", ERROR_VALUE); +#ifdef _WIN32 + if(WSAGetLastError()==WSAENOBUFS) /* recycle (re-init WinSock) on this error */ + break; +#endif continue; }