diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index 4ff15b5a..5e9d9923 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -248,27 +248,28 @@ func setupMQTT(cfg *config.ClientConfig, publish bool) (mqtt.Client, error) { logger.Log(0, "detected broker connection lost for", cfg.Server.Server) }) client := mqtt.NewClient(opts) + var connecterr error for count := 0; count < 3; count++ { + connecterr = nil if token := client.Connect(); !token.WaitTimeout(30*time.Second) || token.Error() != nil { logger.Log(0, "unable to connect to broker, retrying ...") - var err error = nil if token.Error() == nil { - err = errors.New("connect timeout") + connecterr = errors.New("connect timeout") } else { - err = token.Error() + connecterr = token.Error() } - if err != nil { - err = checkBroker(cfg.Server.Server, cfg.Server.MQPort) + if connecterr != nil { + connecterr = checkBroker(cfg.Server.Server, cfg.Server.MQPort) } - logger.Log(0, "could not connect to broker", cfg.Server.Server, err.Error()) + logger.Log(0, "could not connect to broker", cfg.Server.Server) } } - if err != nil { + if connecterr != nil { reRegisterWithServer(cfg) - } - //try after re-registering - if token := client.Connect(); !token.WaitTimeout(30*time.Second) || token.Error() != nil { - return client, errors.New("unable to connect to broker") + //try after re-registering + if token := client.Connect(); !token.WaitTimeout(30*time.Second) || token.Error() != nil { + return client, errors.New("unable to connect to broker") + } } return client, nil