diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 5013c752fc71af6980b55bcbd051b33e3327fcf8..3c15875326b2a54aea9923ff3050edc2a1632a9f 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2364,8 +2364,11 @@ void output_thread(void* arg)
 			avail = RingBufFull(&sbbs->outbuf);
 
 			// If flushing or terminating, there will be nothing available
-			if (avail == 0)
+			if (avail == 0) {
+				// Reset data/highwater events
+				RingBufRead(&sbbs->outbuf, NULL, 0);
 				continue;
+			}
 
 			/*
 			 * At this point, there's something to send and,