🐛 桌面端内核在授权页自动退出 https://github.com/siyuan-note/insider/issues/1099

This commit is contained in:
Liang Ding 2022-10-26 11:08:32 +08:00
parent cca4eeb207
commit 2be5545dbf
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
3 changed files with 25 additions and 10 deletions

View file

@ -551,8 +551,8 @@ const initKernel = (initData) => {
writeLog('booted kernel process [pid=' + kernelProcessPid + ']')
kernelProcess.on('close', (code) => {
writeLog(`kernel exited with code [${code}]`)
if (0 !== code) {
writeLog(`kernel exited with code [${code}]`)
switch (code) {
case 20:
showErrorWindow('⚠️ 数据库被锁定 The database is locked',

View file

@ -32,16 +32,26 @@ func HookResident() {
}
for range time.Tick(time.Second * 30) {
if 0 == util.CountSessions() {
time.Sleep(time.Second * 7)
if 0 == util.CountSessions() {
logging.LogInfof("no active session, exit kernel process now")
Close(false, 1)
}
if makeSureSessionEmpty() {
logging.LogInfof("no active session, exit kernel process now")
Close(false, 1)
}
}
}
func makeSureSessionEmpty() bool {
count := 0
for i := 0; i < 7; i++ {
count = util.CountSessions()
//logging.LogDebugf("session count [%d]", count)
if 0 < count {
return false
}
time.Sleep(time.Second * 1)
}
return true
}
func HandleSignal() {
c := make(chan os.Signal)
signal.Notify(c, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM)

View file

@ -308,7 +308,7 @@ func serveWebSocket(ginServer *gin.Engine) {
})
util.WebSocketServer.HandlePong(func(session *melody.Session) {
//model.Logger.Debugf("pong")
//logging.LogInfof("pong")
})
util.WebSocketServer.HandleConnect(func(s *melody.Session) {
@ -337,9 +337,14 @@ func serveWebSocket(ginServer *gin.Engine) {
}
}
if !authOk {
// 用于授权页保持连接,避免非常驻内存内核自动退出 https://github.com/siyuan-note/insider/issues/1099
authOk = strings.Contains(s.Request.RequestURI, "/ws?app=siyuan&id=auth")
}
if !authOk {
s.CloseWithMsg([]byte(" unauthenticated"))
//logging.LogWarnf("closed a unauthenticated session [%s]", util.GetRemoteAddr(s))
//logging.LogWarnf("closed an unauthenticated session [%s]", util.GetRemoteAddr(s))
return
}
@ -351,7 +356,7 @@ func serveWebSocket(ginServer *gin.Engine) {
util.WebSocketServer.HandleDisconnect(func(s *melody.Session) {
util.RemovePushChan(s)
//sessionId, _ := s.Get("id")
//model.Logger.Debugf("ws [%s] disconnected", sessionId)
//logging.LogInfof("ws [%s] disconnected", sessionId)
})
util.WebSocketServer.HandleError(func(s *melody.Session, err error) {