From 0e95612fe5daaf04415030f18946fe1563f4ee25 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Tue, 25 Sep 2018 11:39:58 +0100 Subject: [PATCH] Fix retained msgs not sent by bridges. This occurred when a bridge connected for the first time and so made a local subscription for outgoing topics. Closes #701. --- ChangeLog.txt | 2 ++ src/bridge.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index 04a965f5..3f217388 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -4,6 +4,8 @@ Broker: - Elevate log level to warning for situation when socket limit is hit. - Remove requirement to use `user root` in snap package config files. +- Fix retained messages not sent by bridges on outgoing topics at the first + connection. Closes #701. Build: - Various fixes to ease building. diff --git a/src/bridge.c b/src/bridge.c index 7f98d399..a3f2ed7d 100644 --- a/src/bridge.c +++ b/src/bridge.c @@ -145,6 +145,9 @@ int bridge__connect_step1(struct mosquitto_db *db, struct mosquitto *context) if(context->bridge->topics[i].direction == bd_out || context->bridge->topics[i].direction == bd_both){ log__printf(NULL, MOSQ_LOG_DEBUG, "Bridge %s doing local SUBSCRIBE on topic %s", context->id, context->bridge->topics[i].local_topic); if(sub__add(db, context, context->bridge->topics[i].local_topic, context->bridge->topics[i].qos, &db->subs)) return 1; + sub__retain_queue(db, context, + context->bridge->topics[i].local_topic, + context->bridge->topics[i].qos); } } @@ -308,6 +311,9 @@ int bridge__connect(struct mosquitto_db *db, struct mosquitto *context) if(context->bridge->topics[i].direction == bd_out || context->bridge->topics[i].direction == bd_both){ log__printf(NULL, MOSQ_LOG_DEBUG, "Bridge %s doing local SUBSCRIBE on topic %s", context->id, context->bridge->topics[i].local_topic); if(sub__add(db, context, context->bridge->topics[i].local_topic, context->bridge->topics[i].qos, &db->subs)) return 1; + sub__retain_queue(db, context, + context->bridge->topics[i].local_topic, + context->bridge->topics[i].qos); } }