diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 09681f68f70550395c85392867c675a79437bf97..c6302f9c1a7bd36e6640573753f6a96f8a356435 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -169,11 +169,17 @@ static bbs_startup_t* startup=NULL;
 
 static void set_state(enum server_state state)
 {
+	static int curr_state;
+
+	if(state == curr_state)
+		return;
+
 	if(startup != NULL) {
 		if(startup->set_state != NULL)
 			startup->set_state(startup->cbdata, state);
 		mqtt_server_state(&mqtt, state);
 	}
+	curr_state = state;
 }
 
 static void update_clients()