From b32be860255e1ea526d1ac22b80918a4473f587f Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows)" <rob@synchro.net>
Date: Thu, 10 Aug 2023 12:29:48 -0700
Subject: [PATCH] Prioritize the node/+/input topics over the node/+/set/+
 topics

---
 src/sbbs3/mqtt.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/sbbs3/mqtt.c b/src/sbbs3/mqtt.c
index fe888f3e54..16d9e7d810 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) {
-- 
GitLab