diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index ffd5d34c089c04eb03a0abe47a0a5bcf01286710..1e0405e5aa88020835399a27d365175c3f337979 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -4311,11 +4311,10 @@ void http_output_thread(void *arg)
 	thread_down();
 	sem_post(&session->output_thread_terminated);
 	/* Ensure outbuf isn't currently being drained */
-	if(session->outbuf_write_initialized) {
-		pthread_mutex_lock(&session->outbuf_write);
-		pthread_mutex_unlock(&session->outbuf_write);
-		pthread_mutex_destroy(&session->outbuf_write);
-	}
+	pthread_mutex_lock(&session->outbuf_write);
+	session->outbuf_write_initialized=0;
+	pthread_mutex_unlock(&session->outbuf_write);
+	pthread_mutex_destroy(&session->outbuf_write);
 }
 
 void http_session_thread(void* arg)
@@ -4391,7 +4390,6 @@ void http_session_thread(void* arg)
 			sem_wait(&session.output_thread_terminated);
 			sem_destroy(&session.output_thread_terminated);
 			RingBufDispose(&session.outbuf);
-			pthread_mutex_destroy(&session.outbuf_write);
 			lprintf(LOG_NOTICE,"%04d !CLIENT BLOCKED in host.can: %s", session.socket, host_name);
 			thread_down();
 			session_threads--;
@@ -4405,7 +4403,6 @@ void http_session_thread(void* arg)
 		sem_wait(&session.output_thread_terminated);
 		sem_destroy(&session.output_thread_terminated);
 		RingBufDispose(&session.outbuf);
-		pthread_mutex_destroy(&session.outbuf_write);
 		lprintf(LOG_NOTICE,"%04d !CLIENT BLOCKED in ip.can: %s", session.socket, session.host_ip);
 		thread_down();
 		session_threads--;
@@ -4536,7 +4533,6 @@ void http_session_thread(void* arg)
 	sem_wait(&session.output_thread_terminated);
 	sem_destroy(&session.output_thread_terminated);
 	RingBufDispose(&session.outbuf);
-	pthread_mutex_destroy(&session.outbuf_write);
 
 	active_clients--;
 	update_clients();