diff --git a/bridgev2/bridgestate.go b/bridgev2/bridgestate.go index c6d6ddb9..f31d4e92 100644 --- a/bridgev2/bridgestate.go +++ b/bridgev2/bridgestate.go @@ -145,11 +145,10 @@ func (bsq *BridgeStateQueue) unknownErrorReconnect(triggeredBy status.BridgeStat if triggeredBy.Timestamp != prev.Timestamp { log.Debug().Msg("Not reconnecting as a new bridge state was sent after the unknown error") return - } else if prev.Timestamp != prevUnsent.Timestamp { + } else if len(bsq.ch) > 0 { log.Warn().Msg("Not reconnecting as there are unsent bridge states") return } else if prevUnsent.StateEvent != status.StateUnknownError || prev.StateEvent != status.StateUnknownError { - // This case will probably never be hit log.Debug().Msg("Not reconnecting as the previous state was not an unknown error") return } @@ -194,6 +193,9 @@ func (bsq *BridgeStateQueue) immediateSendBridgeState(state status.BridgeState) Msg("Not sending bridge state as it's a duplicate") return } + if state.StateEvent == status.StateUnknownError { + go bsq.unknownErrorReconnect(state) + } ctx := bsq.login.Log.WithContext(context.Background()) bsq.sendNotice(ctx, state)