fix http restart memory leak #1056
This commit is contained in:
+11
-4
@@ -7,6 +7,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/alireza0/s-ui/config"
|
"github.com/alireza0/s-ui/config"
|
||||||
"github.com/alireza0/s-ui/logger"
|
"github.com/alireza0/s-ui/logger"
|
||||||
@@ -133,20 +134,26 @@ func (s *Server) Start() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Stop() error {
|
func (s *Server) Stop() error {
|
||||||
s.cancel()
|
|
||||||
var err error
|
var err error
|
||||||
if s.httpServer != nil {
|
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 {
|
if err != nil {
|
||||||
|
s.cancel()
|
||||||
|
if s.listener != nil {
|
||||||
|
_ = s.listener.Close()
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
} else if s.listener != nil {
|
||||||
if s.listener != nil {
|
|
||||||
err = s.listener.Close()
|
err = s.listener.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
s.cancel()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
s.cancel()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-4
@@ -11,6 +11,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/alireza0/s-ui/api"
|
"github.com/alireza0/s-ui/api"
|
||||||
"github.com/alireza0/s-ui/config"
|
"github.com/alireza0/s-ui/config"
|
||||||
@@ -200,20 +201,26 @@ func (s *Server) Start() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Stop() error {
|
func (s *Server) Stop() error {
|
||||||
s.cancel()
|
|
||||||
var err error
|
var err error
|
||||||
if s.httpServer != nil {
|
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 {
|
if err != nil {
|
||||||
|
s.cancel()
|
||||||
|
if s.listener != nil {
|
||||||
|
_ = s.listener.Close()
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
} else if s.listener != nil {
|
||||||
if s.listener != nil {
|
|
||||||
err = s.listener.Close()
|
err = s.listener.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
s.cancel()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
s.cancel()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user