From a5f2c2d6920cb33be3a81e2bec82afbd4dfcea97 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Tue, 16 Dec 2025 22:42:26 +0700 Subject: [PATCH] fix: check lnclient in event handler (#1987) * fix: check lnclient in event handler * fix: stop processing subscriptions events channel if context is done --- nip47/event_handler.go | 7 +++++++ service/start.go | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/nip47/event_handler.go b/nip47/event_handler.go index f5fe996c..c765d74d 100644 --- a/nip47/event_handler.go +++ b/nip47/event_handler.go @@ -47,6 +47,13 @@ func (svc *nip47Service) HandleEvent(ctx context.Context, pool nostrmodels.Simpl return } + if lnClient == nil { + logger.Logger.WithFields(logrus.Fields{ + "requestEventNostrId": event.ID, + }).Error("cannot handle event due to LNClient not started") + return + } + // store request event requestEvent := db.RequestEvent{AppId: nil, NostrId: event.ID, State: db.REQUEST_EVENT_STATE_HANDLER_EXECUTING} err = svc.db.Create(&requestEvent).Error diff --git a/service/start.go b/service/start.go index 73a92c62..a9ed0638 100644 --- a/service/start.go +++ b/service/start.go @@ -231,7 +231,12 @@ func (svc *service) watchSubscription(ctx context.Context, pool *nostr.SimplePoo go func() { // loop through incoming events for event := range eventsChannel { - go svc.nip47Service.HandleEvent(ctx, pool, event.Event, svc.lnClient) + select { + case <-ctx.Done(): + return + default: + go svc.nip47Service.HandleEvent(ctx, pool, event.Event, svc.lnClient) + } } logger.Logger.Debug("Relay subscription events channel ended") eventsChannelClosed <- struct{}{}