From 06f111f3c9a9130c0270c69676e05050e2814b92 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Sun, 10 May 2026 22:46:39 +0200 Subject: [PATCH] fix add base path to importDB API call --- web/controller/server.go | 4 ---- web/service/server.go | 12 +++++++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/web/controller/server.go b/web/controller/server.go index 3c739b1f..441a0d88 100644 --- a/web/controller/server.go +++ b/web/controller/server.go @@ -343,10 +343,6 @@ func (a *ServerController) importDB(c *gin.Context) { return } defer file.Close() - // Always restart Xray before return - defer a.serverService.RestartXrayService() - // lastGetStatusTime removed; no longer needed - // Import it err = a.serverService.ImportDB(file) if err != nil { jsonMsg(c, I18nWeb(c, "pages.index.importDatabaseError"), err) diff --git a/web/service/server.go b/web/service/server.go index 5dfb6d62..e2ad9deb 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -976,12 +976,18 @@ func (s *ServerService) ImportDB(file multipart.File) error { return common.NewErrorf("Invalid or corrupt db file: %v", err) } - // Stop Xray (ignore error but log) + xrayStopped := true + defer func() { + if xrayStopped { + if errR := s.RestartXrayService(); errR != nil { + logger.Warningf("Failed to restart Xray after DB import error: %v", errR) + } + } + }() if errStop := s.StopXrayService(); errStop != nil { logger.Warningf("Failed to stop Xray before DB import: %v", errStop) } - // Close existing DB to release file locks (especially on Windows) if errClose := database.CloseDB(); errClose != nil { logger.Warningf("Failed to close existing DB before replacement: %v", errClose) } @@ -1029,7 +1035,7 @@ func (s *ServerService) ImportDB(file multipart.File) error { s.inboundService.MigrateDB() - // Start Xray + xrayStopped = false if err = s.RestartXrayService(); err != nil { return common.NewErrorf("Imported DB but failed to start Xray: %v", err) }