From 2c785fda933abf87084bab6dba7606c236fa54e8 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Mon, 24 Oct 2022 21:52:50 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E6=A1=8C=E9=9D=A2=E7=AB=AF?= =?UTF-8?q?=E5=86=85=E6=A0=B8=E8=BF=9B=E7=A8=8B=E7=AB=AF=E5=8F=A3=E5=8F=B7?= =?UTF-8?q?=E5=86=99=E5=85=A5=E6=96=87=E4=BB=B6=20`port.json`=20https://gi?= =?UTF-8?q?thub.com/siyuan-note/siyuan/issues/6337?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/server/serve.go | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/kernel/server/serve.go b/kernel/server/serve.go index 21e67b291..346a839e2 100644 --- a/kernel/server/serve.go +++ b/kernel/server/serve.go @@ -17,6 +17,7 @@ package server import ( + "net" "net/http" "net/http/pprof" "os" @@ -70,15 +71,33 @@ func Serve(fastMode bool) { serveTemplates(ginServer) api.ServeAPI(ginServer) - var addr string + var host string if model.Conf.System.NetworkServe || util.ContainerDocker == util.Container { - addr = "0.0.0.0:" + util.ServerPort + host = "0.0.0.0" } else { - addr = "127.0.0.1:" + util.ServerPort + host = "127.0.0.1" } - logging.LogInfof("kernel is booting [%s]", "http://"+addr) + + ln, err := net.Listen("tcp", ":"+util.ServerPort) + if nil != err { + if !fastMode { + logging.LogErrorf("boot kernel failed: %s", err) + os.Exit(util.ExitCodeUnavailablePort) + } + } + + _, port, err := net.SplitHostPort(ln.Addr().String()) + if nil != err { + if !fastMode { + logging.LogErrorf("boot kernel failed: %s", err) + os.Exit(util.ExitCodeUnavailablePort) + } + } + + logging.LogInfof("kernel is booting [%s]", "http://"+host+":"+port) util.HttpServing = true - if err := ginServer.Run(addr); nil != err { + + if err = http.Serve(ln, ginServer); nil != err { if !fastMode { logging.LogErrorf("boot kernel failed: %s", err) os.Exit(util.ExitCodeUnavailablePort)