From adb8eb4937ab72612def0d5d2e09677f5d12194c Mon Sep 17 00:00:00 2001 From: cd-amn Date: Wed, 13 May 2026 23:07:25 +0400 Subject: [PATCH] refactor: own killswitch teardown at daemon level --- client/platforms/linux/daemon/linuxdaemon.cpp | 7 +++++++ client/platforms/linux/daemon/linuxdaemon.h | 2 ++ client/platforms/linux/daemon/wireguardutilslinux.cpp | 4 ---- client/platforms/macos/daemon/macosdaemon.cpp | 7 +++++++ client/platforms/macos/daemon/macosdaemon.h | 2 ++ client/platforms/macos/daemon/wireguardutilsmacos.cpp | 5 ----- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/client/platforms/linux/daemon/linuxdaemon.cpp b/client/platforms/linux/daemon/linuxdaemon.cpp index 7c2d95dba..6462c7851 100644 --- a/client/platforms/linux/daemon/linuxdaemon.cpp +++ b/client/platforms/linux/daemon/linuxdaemon.cpp @@ -17,6 +17,7 @@ #include "leakdetector.h" #include "logger.h" +#include "killswitch.h" namespace { Logger logger("LinuxDaemon"); @@ -50,3 +51,9 @@ LinuxDaemon* LinuxDaemon::instance() { Q_ASSERT(s_daemon); return s_daemon; } + +bool LinuxDaemon::deactivate(bool emitSignals) { + bool result = Daemon::deactivate(emitSignals); + KillSwitch::instance()->disableKillSwitch(); + return result; +} diff --git a/client/platforms/linux/daemon/linuxdaemon.h b/client/platforms/linux/daemon/linuxdaemon.h index 531e787a3..645004384 100644 --- a/client/platforms/linux/daemon/linuxdaemon.h +++ b/client/platforms/linux/daemon/linuxdaemon.h @@ -20,6 +20,8 @@ class LinuxDaemon final : public Daemon { static LinuxDaemon* instance(); + bool deactivate(bool emitSignals = true) override; + protected: WireguardUtils* wgutils() const override { return m_wgutils; } DnsUtils* dnsutils() override { return m_dnsutils; } diff --git a/client/platforms/linux/daemon/wireguardutilslinux.cpp b/client/platforms/linux/daemon/wireguardutilslinux.cpp index 9b8e377f7..3c793d162 100644 --- a/client/platforms/linux/daemon/wireguardutilslinux.cpp +++ b/client/platforms/linux/daemon/wireguardutilslinux.cpp @@ -18,8 +18,6 @@ #include "leakdetector.h" #include "logger.h" -#include "killswitch.h" - constexpr const int WG_TUN_PROC_TIMEOUT = 5000; constexpr const char* WG_RUNTIME_DIR = "/var/run/amneziawg"; @@ -198,8 +196,6 @@ bool WireguardUtilsLinux::deleteInterface() { QDir wgRuntimeDir(WG_RUNTIME_DIR); QFile::remove(wgRuntimeDir.filePath(m_ifname + ".name")); - // double-check + ensure our firewall is installed and enabled - KillSwitch::instance()->disableKillSwitch(); return true; } diff --git a/client/platforms/macos/daemon/macosdaemon.cpp b/client/platforms/macos/daemon/macosdaemon.cpp index 705b5dbbb..296301eec 100644 --- a/client/platforms/macos/daemon/macosdaemon.cpp +++ b/client/platforms/macos/daemon/macosdaemon.cpp @@ -15,6 +15,7 @@ #include #include +#include "killswitch.h" #include "leakdetector.h" #include "logger.h" @@ -50,3 +51,9 @@ MacOSDaemon* MacOSDaemon::instance() { Q_ASSERT(s_daemon); return s_daemon; } + +bool MacOSDaemon::deactivate(bool emitSignals) { + bool result = Daemon::deactivate(emitSignals); + KillSwitch::instance()->disableKillSwitch(); + return result; +} diff --git a/client/platforms/macos/daemon/macosdaemon.h b/client/platforms/macos/daemon/macosdaemon.h index a32408cd3..e590344fb 100644 --- a/client/platforms/macos/daemon/macosdaemon.h +++ b/client/platforms/macos/daemon/macosdaemon.h @@ -19,6 +19,8 @@ class MacOSDaemon final : public Daemon { static MacOSDaemon* instance(); + bool deactivate(bool emitSignals = true) override; + protected: WireguardUtils* wgutils() const override { return m_wgutils; } DnsUtils* dnsutils() override { return m_dnsutils; } diff --git a/client/platforms/macos/daemon/wireguardutilsmacos.cpp b/client/platforms/macos/daemon/wireguardutilsmacos.cpp index e12fc1c38..c1f6e8ca6 100644 --- a/client/platforms/macos/daemon/wireguardutilsmacos.cpp +++ b/client/platforms/macos/daemon/wireguardutilsmacos.cpp @@ -17,8 +17,6 @@ #include "leakdetector.h" #include "logger.h" -#include "killswitch.h" - constexpr const int WG_TUN_PROC_TIMEOUT = 5000; constexpr const char* WG_RUNTIME_DIR = "/var/run/amneziawg"; @@ -193,9 +191,6 @@ bool WireguardUtilsMacos::deleteInterface() { m_tunnel.waitForFinished(WG_TUN_PROC_TIMEOUT); } - // double-check + ensure our firewall is installed and enabled - KillSwitch::instance()->disableKillSwitch(); - return true; }