From d6c974460fb630d6655a129be94990ed6f5427b5 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Tue, 28 Oct 2025 13:01:04 +0100 Subject: [PATCH] Fix potential crash if client is nil --- cluster/node/core.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cluster/node/core.go b/cluster/node/core.go index 79cc5c2f..42088ff4 100644 --- a/cluster/node/core.go +++ b/cluster/node/core.go @@ -327,10 +327,30 @@ func (n *Core) connect() error { } func (n *Core) mediaEvents(ctx context.Context, storage string) { + defer func() { + n.logger.Warn().WithField("storage", storage).Log("Disconnected from event source") + }() + m := &Media{} for { - ch, err := n.client.MediaEvents(ctx, storage, "/**") + select { + case <-ctx.Done(): + return + default: + } + + n.lock.RLock() + client := n.client + n.lock.RUnlock() + + if client == nil { + n.logger.Error().WithField("storage", storage).Log("Failed to connect to event source, client not connected") + time.Sleep(5 * time.Second) + continue + } + + ch, err := client.MediaEvents(ctx, storage, "/**") if err != nil { m.available = false m.media = map[string]int64{}