diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 283d806aad3458f0b5fd0ab02b19d51cb0c8fa30..9de5a2443785b7ed5267a3ad7fb1017e1478f0db 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3198,8 +3198,14 @@ void event_thread(void* arg)
 								break;
 							sbbs->lprintf(LOG_DEBUG,"Waiting for node %d (status=%d)"
 								,j, node.status);
+							if (now - start > (60 * 60) && node_socket[j - 1] != INVALID_SOCKET) {
+								sbbs->lprintf(LOG_WARNING, "!TIRED of waiting for node %d to become inactive (status=%d), closing socket %d"
+									,j, node.status, node_socket[j - 1]);
+								close_socket(node_socket[j - 1]);
+								node_socket[j - 1] = INVALID_SOCKET;
+							}
 							if(now-start>(90*60)) {
-								sbbs->lprintf(LOG_WARNING,"!TIMEOUT waiting for node %d to become inactive (status=%d)"
+								sbbs->lprintf(LOG_WARNING,"!TIMEOUT waiting for node %d to become inactive (status=%d), aborting wait"
 									,j, node.status);
 								break;
 							}