Skip to content

Commit 3be2afa

Browse files
authored
Merge pull request #25 from QRPp/msg_multihandling
Call all handlers matching an MQTT message
2 parents 7bb18c4 + 21528df commit 3be2afa

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/mgos_mqtt_conn.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -165,19 +165,20 @@ static void mgos_mqtt_conn_queue_remove(struct mgos_mqtt_conn *c,
165165

166166
static bool call_topic_handler(struct mgos_mqtt_conn *c, int ev,
167167
void *ev_data) {
168+
bool handled = false;
168169
struct mg_mqtt_message *msg = (struct mg_mqtt_message *) ev_data;
169170
struct mgos_mqtt_subscription *s;
170171
SLIST_FOREACH(s, &c->subscriptions, next) {
171172
if ((ev == MG_EV_MQTT_SUBACK && s->sub_id == msg->message_id) ||
172173
mg_mqtt_match_topic_expression(s->topic, msg->topic)) {
173-
if (ev == MG_EV_MQTT_PUBLISH && msg->qos > 0) {
174+
if (!handled && ev == MG_EV_MQTT_PUBLISH && msg->qos > 0) {
174175
mg_mqtt_puback(c->nc, msg->message_id);
175176
}
176177
s->handler(c->nc, ev, ev_data, s->user_data);
177-
return true;
178+
handled = true;
178179
}
179180
}
180-
return false;
181+
return handled;
181182
}
182183

183184
static void call_conn_handlers(struct mgos_mqtt_conn *c, int ev,

0 commit comments

Comments
 (0)