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) {