From e9cd043b107853786e790bd303432e50f8b2e8b2 Mon Sep 17 00:00:00 2001 From: cd-amn Date: Tue, 16 Jun 2026 20:18:24 +0400 Subject: [PATCH] fix: keep DNS and routing during seamless Xray switch on macOS --- ipc/ipcserver.cpp | 6 ++++++ service/server/router_mac.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/ipc/ipcserver.cpp b/ipc/ipcserver.cpp index f8a137ce5..eb32f0e1c 100644 --- a/ipc/ipcserver.cpp +++ b/ipc/ipcserver.cpp @@ -361,6 +361,9 @@ bool IpcServer::restoreResolvers() qDebug() << "IpcServer::restoreResolvers"; #endif + if (m_xrayWorkers.size() > 1) { + return true; + } return Router::restoreResolvers(); } @@ -640,6 +643,9 @@ bool IpcServer::xrayRemoveUplinkRoutes(const QString& uplinkIface, const QString if (uplinkIface.isEmpty()) { return false; } + if (m_xrayWorkers.size() > 1) { + return true; + } return RouterMac::Instance().routeDeleteXray(uplinkIface, uplinkGateway); #else Q_UNUSED(uplinkIface) diff --git a/service/server/router_mac.cpp b/service/server/router_mac.cpp index f41e9a724..0297610c6 100644 --- a/service/server/router_mac.cpp +++ b/service/server/router_mac.cpp @@ -26,6 +26,8 @@ bool RouterMac::routeAdd(const QString &ipWithSubnet, const QString &gw) return false; } + routeDelete(ipWithSubnet, gw); + QString cmd; if (mask == "255.255.255.255") { cmd = QString("route add -host %1 %2").arg(ip).arg(gw);