From bfd7b70c927d60242fb77b9b58a7c7aad73cf1bc Mon Sep 17 00:00:00 2001 From: xengineering Date: Sat, 20 Dec 2025 13:38:14 +0100 Subject: Implement MQTT reconnects This is a central requirement to ensure a restart of the MQTT broker does not harm the Sia server operation. --- mqtt.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mqtt.go b/mqtt.go index 1f935cf..63e5042 100644 --- a/mqtt.go +++ b/mqtt.go @@ -15,7 +15,6 @@ const ( RETAINED = true MQTT_CONNECT_TIMEOUT = 1 * time.Second MQTT_DISCONNECT_TIMEOUT_US = 500 - MQTT_RECONNECT_PERIOD = 2 * time.Second ) type MQTTMessage struct { @@ -30,6 +29,9 @@ func MQTTRun(tx chan MQTTMessage) { opts.SetCleanSession(true) opts.SetOnConnectHandler(MQTTOnConnectHandler) opts.SetConnectionLostHandler(MQTTConnectionLostHandler) + opts.SetAutoReconnect(true) + opts.SetConnectRetry(true) + opts.SetConnectTimeout(MQTT_CONNECT_TIMEOUT) client := mqtt.NewClient(opts) @@ -37,8 +39,7 @@ func MQTTRun(tx chan MQTTMessage) { success := token.WaitTimeout(MQTT_CONNECT_TIMEOUT) if !success { - log.Printf("Timed out after %v.", MQTT_CONNECT_TIMEOUT) - return + log.Fatal("Initial connection to MQTT broker failed.") } defer client.Disconnect(MQTT_DISCONNECT_TIMEOUT_US) -- cgit v1.2.3-70-g09d2