Browse Source

windows: error filter

mhsanaei 21 hours ago
parent
commit
46de886b53
2 changed files with 18 additions and 1 deletions
  1. 7 0
      xray/log_writer.go
  2. 11 1
      xray/process.go

+ 7 - 0
xray/log_writer.go

@@ -2,6 +2,7 @@ package xray
 
 import (
 	"regexp"
+	"runtime"
 	"strings"
 
 	"x-ui/logger"
@@ -20,6 +21,12 @@ func (lw *LogWriter) Write(m []byte) (n int, err error) {
 
 	// Convert the data to a string
 	message := strings.TrimSpace(string(m))
+	msgLowerAll := strings.ToLower(message)
+
+	// Suppress noisy Windows process-kill signal that surfaces as exit status 1
+	if runtime.GOOS == "windows" && strings.Contains(msgLowerAll, "exit status 1") {
+		return len(m), nil
+	}
 
 	// Check if the message contains a crash
 	if crashRegex.MatchString(message) {

+ 11 - 1
xray/process.go

@@ -9,6 +9,7 @@ import (
 	"os"
 	"os/exec"
 	"runtime"
+	"strings"
 	"syscall"
 	"time"
 
@@ -224,6 +225,15 @@ func (p *process) Start() (err error) {
 	go func() {
 		err := cmd.Run()
 		if err != nil {
+			// On Windows, killing the process results in "exit status 1" which isn't an error for us
+			if runtime.GOOS == "windows" {
+				errStr := strings.ToLower(err.Error())
+				if strings.Contains(errStr, "exit status 1") {
+					// Suppress noisy log on graceful stop
+					p.exitErr = err
+					return
+				}
+			}
 			logger.Error("Failure in running xray-core:", err)
 			p.exitErr = err
 		}
@@ -239,7 +249,7 @@ func (p *process) Stop() error {
 	if !p.IsRunning() {
 		return errors.New("xray is not running")
 	}
-	
+
 	if runtime.GOOS == "windows" {
 		return p.cmd.Process.Kill()
 	} else {