add support log panic while running in daemon mode.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
This commit is contained in:
Jianhui Zhao
2025-06-27 16:50:51 +08:00
parent f43b71d1eb
commit a68aa3c921
4 changed files with 22 additions and 0 deletions
+2
View File
@@ -122,6 +122,8 @@ func (br *broker) devRegister(dev *device) {
}
func (br *broker) run() {
defer logPanic()
for {
select {
case c := <-br.register:
+4
View File
@@ -276,6 +276,8 @@ func msgTypeName(typ byte) string {
}
func (dev *device) readLoop() {
defer logPanic()
logPrefix := dev.conn.RemoteAddr().String()
tmr := time.AfterFunc(time.Second*5, func() {
@@ -410,6 +412,8 @@ func (dev *device) readLoop() {
}
func (dev *device) writeLoop() {
defer logPanic()
defer func() {
dev.br.unregister <- dev
}()
+1
View File
@@ -112,6 +112,7 @@ func (rw *HttpProxyWriter) WriteRequest(req *http.Request) {
}
func doHttpProxy(brk *broker, c net.Conn) {
defer logPanic()
defer c.Close()
br := bufio.NewReader(c)
+15
View File
@@ -4,6 +4,7 @@ import (
"context"
"os"
"runtime"
"runtime/debug"
"rttys/config"
"rttys/version"
@@ -141,6 +142,8 @@ func runRttys(c *cli.Command) error {
log.Info().Msg("Build Time: " + version.BuildTime())
}
defer logPanic()
br := newBroker(cfg)
go br.run()
@@ -150,3 +153,15 @@ func runRttys(c *cli.Command) error {
select {}
}
func logPanic() {
if r := recover(); r != nil {
saveCrashLog(r, debug.Stack())
os.Exit(2)
}
}
func saveCrashLog(p any, stack []byte) {
log.Error().Msgf("%v", p)
log.Error().Msg(string(stack))
}