diff --git a/Borealis.ps1 b/Borealis.ps1 index 5f91bae7..0f0ebe16 100644 --- a/Borealis.ps1 +++ b/Borealis.ps1 @@ -1080,7 +1080,7 @@ function Install_Agent_Dependencies { if (-not $TunnelName) { return } $logPrefix = '[WireGuard]' - $serviceName = "WireGuardTunnel$TunnelName" + $serviceName = 'WireGuardTunnel$' + $TunnelName Write-AgentLog -FileName $LogName -Message ("$logPrefix Cleaning tunnel service {0}" -f $serviceName) $serviceExists = $false try { @@ -1221,7 +1221,7 @@ function Install_Agent_Dependencies { $logPrefix = '[WireGuard]' $friendlyName = $wireGuardTunnelNameFriendly $internalName = $wireGuardTunnelNameInternal - $serviceName = "WireGuardTunnel$internalName" + $serviceName = 'WireGuardTunnel$' + $internalName Write-AgentLog -FileName $LogName -Message ("$logPrefix Ensuring tunnel adapter: {0}" -f $friendlyName) $existing = Get-WireGuardAdapterByName -AdapterName $friendlyName diff --git a/Data/Agent/Roles/role_WireGuardTunnel.py b/Data/Agent/Roles/role_WireGuardTunnel.py index c2616409..b8b4242a 100644 --- a/Data/Agent/Roles/role_WireGuardTunnel.py +++ b/Data/Agent/Roles/role_WireGuardTunnel.py @@ -462,7 +462,17 @@ class WireGuardClient: _write_log("WireGuard client activity bump; idle timer reset.") -client = WireGuardClient() +_client: Optional[WireGuardClient] = None +_client_lock = threading.Lock() + + +def _get_client() -> WireGuardClient: + global _client + if _client is None: + with _client_lock: + if _client is None: + _client = WireGuardClient() + return _client def _parse_allowed_ips(value: Any, fallback: Optional[str]) -> Optional[str]: @@ -485,7 +495,7 @@ def _coerce_int(value: Any, default: int) -> int: class Role: def __init__(self, ctx) -> None: self.ctx = ctx - self.client = client + self.client = _get_client() hooks = getattr(ctx, "hooks", {}) or {} self._log_hook = hooks.get("log_agent") self._http_client_factory = hooks.get("http_client")