diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 6aac487bd34980237bbfd0f0a84968f703105684..732e883f38f5a04055726d48065b2faf66f85e27 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -4691,6 +4691,8 @@ void DLLCALL ftp_server(void* arg)
 					initialized=t;
 					break;
 				}
+				if(startup->recycle_sem!=NULL && sem_trywait(&startup->recycle_sem)==0)
+					startup->recycle_now=TRUE;
 				if(!active_clients && startup->recycle_now==TRUE) {
 					lprintf("0000 Recycle semaphore signaled");
 					startup->recycle_now=FALSE;
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index fbe4ebca513cd786a948c289a5d3732880f28892..2b3ed7666ce0d0fd5e4794005b4ad76eb44ce81a 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -3706,6 +3706,8 @@ void DLLCALL mail_server(void* arg)
 					initialized=t;
 					break;
 				}
+				if(startup->recycle_sem!=NULL && sem_trywait(&startup->recycle_sem)==0)
+					startup->recycle_now=TRUE;
 				if(!active_clients && startup->recycle_now==TRUE) {
 					lprintf("0000 Recycle semaphore signaled");
 					startup->recycle_now=FALSE;
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index fbdb841fae81ab0fe647e19fed4743048a1d60f8..66c7ed09ed14cc78b515dd893b909c3e70a13f0d 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3974,6 +3974,8 @@ void DLLCALL bbs_thread(void* arg)
 					initialized=t;
 					break;
 				}
+				if(startup->recycle_sem!=NULL && sem_trywait(&startup->recycle_sem)==0)
+					startup->recycle_now=TRUE;
 				if(startup->recycle_now==TRUE) {
 					lprintf("0000 Recycle semaphore signaled");
 					startup->recycle_now=FALSE;
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index cb5c79c1903f49a1ddb2d74424edd6c5486f64e9..783e8be9297232244f0c95cd162483ebb5990d58 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -1833,6 +1833,8 @@ void DLLCALL services_thread(void* arg)
 					initialized=t;
 					break;
 				}
+				if(startup->recycle_sem!=NULL && sem_trywait(&startup->recycle_sem)==0)
+					startup->recycle_now=TRUE;
 				if(!total_clients && startup->recycle_now==TRUE) {
 					lprintf("0000 Recycle semaphore signaled");
 					startup->recycle_now=FALSE;
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index 2474fefe389ba0b72f3ea01e73f7d4613866ab20..c09179c46051a5db0949fc70d73c2f19529bf507 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -2609,6 +2609,8 @@ void DLLCALL web_server(void* arg)
 					initialized=t;
 					break;
 				}
+				if(startup->recycle_sem!=NULL && sem_trywait(&startup->recycle_sem)==0)
+					startup->recycle_now=TRUE;
 				if(!active_clients && startup->recycle_now==TRUE) {
 					lprintf("0000 Recycle semaphore signaled");
 					startup->recycle_now=FALSE;