From 77f4a5844ba76cd123d40ce40d8d4c92a2bb03f7 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Tue, 15 Mar 2022 14:32:25 +0300 Subject: [PATCH] [#1291] innerring: Don't stop the same listener twice When IR node configured without main chain, both `morphListener` and `mainnetListener` are pointing into single listener component. We should not call `Stop()` twice, because it may trigger channel closing in neo-go or other components and it can throw panic. Signed-off-by: Alex Vanin --- pkg/innerring/innerring.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/innerring/innerring.go b/pkg/innerring/innerring.go index 24792458..1a38f603 100644 --- a/pkg/innerring/innerring.go +++ b/pkg/innerring/innerring.go @@ -282,7 +282,9 @@ func (s *Server) Stop() { s.setHealthStatus(control.HealthStatus_SHUTTING_DOWN) go s.morphListener.Stop() - go s.mainnetListener.Stop() + if !s.withoutMainNet { + go s.mainnetListener.Stop() + } for _, c := range s.closers { if err := c(); err != nil {