diff --git a/src/sbbs3/mqtt.c b/src/sbbs3/mqtt.c
index fe888f3e546fb8f4940af11cfd3fa1f858ecc558..16d9e7d8107fe30b620aee07028551b78e9db213 100644
--- a/src/sbbs3/mqtt.c
+++ b/src/sbbs3/mqtt.c
@@ -481,6 +481,14 @@ static void mqtt_message_received(struct mosquitto* mosq, void* cbdata, const st
 
 	if(mqtt->startup->type == SERVER_TERM) {
 		bbs_startup_t* bbs_startup = (bbs_startup_t*)mqtt->startup;
+		for(int i = bbs_startup->first_node; i <= bbs_startup->last_node; i++) {
+			mqtt_topic(mqtt, TOPIC_BBS, topic, sizeof(topic), "node/%d/input", i);
+			if(strcmp(msg->topic, topic) != 0)
+				continue;
+			if(bbs_startup->node_inbuf != NULL && bbs_startup->node_inbuf[i - 1] != NULL)
+				RingBufWrite(bbs_startup->node_inbuf[i - 1], msg->payload, msg->payloadlen);
+			return;
+		}
 		for(int i = bbs_startup->first_node; i <= bbs_startup->last_node; i++) {
 			if(strcmp(msg->topic, mqtt_topic(mqtt, TOPIC_BBS, topic, sizeof(topic), "node/%d/set/status", i)) == 0) {
 				set_node_status(mqtt->cfg, i, mqtt_message_value(msg, 0));
@@ -511,14 +519,6 @@ static void mqtt_message_received(struct mosquitto* mosq, void* cbdata, const st
 				return;
 			}
 		}
-		for(int i = bbs_startup->first_node; i <= bbs_startup->last_node; i++) {
-			mqtt_topic(mqtt, TOPIC_BBS, topic, sizeof(topic), "node/%d/input", i);
-			if(strcmp(msg->topic, topic) != 0)
-				continue;
-			if(bbs_startup->node_inbuf != NULL && bbs_startup->node_inbuf[i - 1] != NULL)
-				RingBufWrite(bbs_startup->node_inbuf[i - 1], msg->payload, msg->payloadlen);
-			return;
-		}
 	}
 	if(strcmp(msg->topic, mqtt_topic(mqtt, TOPIC_HOST, topic, sizeof(topic), "recycle")) == 0
 		|| strcmp(msg->topic, mqtt_topic(mqtt, TOPIC_SERVER, topic, sizeof(topic), "recycle")) == 0) {