From 135fcb0cda08192a6699900aea0dcb771fd8d1fc Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Sun, 22 Mar 2026 18:46:43 +0100 Subject: [PATCH] fix http restart memory leak #1056 --- sub/sub.go | 15 +++++++++++---- web/web.go | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/sub/sub.go b/sub/sub.go index d74bf20..ac7a7a6 100644 --- a/sub/sub.go +++ b/sub/sub.go @@ -7,6 +7,7 @@ import ( "net" "net/http" "strconv" + "time" "github.com/alireza0/s-ui/config" "github.com/alireza0/s-ui/logger" @@ -133,20 +134,26 @@ func (s *Server) Start() (err error) { } func (s *Server) Stop() error { - s.cancel() var err error if s.httpServer != nil { - err = s.httpServer.Shutdown(s.ctx) + shutdownCtx, cancelShutdown := context.WithTimeout(context.Background(), 30*time.Second) + err = s.httpServer.Shutdown(shutdownCtx) + cancelShutdown() if err != nil { + s.cancel() + if s.listener != nil { + _ = s.listener.Close() + } return err } - } - if s.listener != nil { + } else if s.listener != nil { err = s.listener.Close() if err != nil { + s.cancel() return err } } + s.cancel() return nil } diff --git a/web/web.go b/web/web.go index 9d1247b..95543b4 100644 --- a/web/web.go +++ b/web/web.go @@ -11,6 +11,7 @@ import ( "net/http" "strconv" "strings" + "time" "github.com/alireza0/s-ui/api" "github.com/alireza0/s-ui/config" @@ -200,20 +201,26 @@ func (s *Server) Start() (err error) { } func (s *Server) Stop() error { - s.cancel() var err error if s.httpServer != nil { - err = s.httpServer.Shutdown(s.ctx) + shutdownCtx, cancelShutdown := context.WithTimeout(context.Background(), 30*time.Second) + err = s.httpServer.Shutdown(shutdownCtx) + cancelShutdown() if err != nil { + s.cancel() + if s.listener != nil { + _ = s.listener.Close() + } return err } - } - if s.listener != nil { + } else if s.listener != nil { err = s.listener.Close() if err != nil { + s.cancel() return err } } + s.cancel() return nil }