diff --git a/kernel/model/conf.go b/kernel/model/conf.go index 8e058a10b..067a39800 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -745,6 +745,9 @@ func Close(force, setCurrentWorkspace bool, execInstallPkg int) (exitCode int) { if nil != util.WebSocketServer { util.WebSocketServer.Close() } + if nil != util.HttpServer { + util.HttpServer.Close() + } util.HttpServing = false if util.ContainerAndroid == util.Container { diff --git a/kernel/server/serve.go b/kernel/server/serve.go index 43002fea3..3654f8f86 100644 --- a/kernel/server/serve.go +++ b/kernel/server/serve.go @@ -217,7 +217,11 @@ func Serve(fastMode bool) { // 反代服务器启动失败不影响核心服务器启动 }() - if err = http.Serve(ln, ginServer.Handler()); err != nil { + util.HttpServer = &http.Server{ + Handler: ginServer, + } + + if err = util.HttpServer.Serve(ln); err != nil { if !fastMode { logging.LogErrorf("boot kernel failed: %s", err) os.Exit(logging.ExitCodeUnavailablePort) diff --git a/kernel/util/working.go b/kernel/util/working.go index c0291ec7a..87c26b789 100644 --- a/kernel/util/working.go +++ b/kernel/util/working.go @@ -22,6 +22,7 @@ import ( "fmt" "math/rand" "mime" + "net/http" "net/url" "os" "path/filepath" @@ -72,6 +73,7 @@ func initEnvVars() { var ( bootProgress = atomic.Int32{} // 启动进度,从 0 到 100 bootDetails string // 启动细节描述 + HttpServer *http.Server // HTTP 伺服器实例 HttpServing = false // 是否 HTTP 伺服已经可用 )