Feat : qoder provider

This commit is contained in:
Simon Shi
2026-05-29 17:36:27 +07:00
committed by decolua
parent 53c0eefa00
commit 4baaa5c7aa
6 changed files with 27 additions and 11 deletions
+8 -4
View File
@@ -8,7 +8,7 @@ import {
isTunnelManuallyDisabled, isTunnelReconnecting, isTailscaleReconnecting,
getTunnelService, getTailscaleService, setTunnelUnexpectedExitCallback,
killCloudflared, isCloudflaredRunning, ensureCloudflared,
isTailscaleRunning,
isTailscaleRunning, isTailscaleRunningStrict,
loadState,
checkInternet,
probeCloudflareAlive, probeTailscaleAlive,
@@ -174,7 +174,9 @@ async function safeRestartTunnel(reason) {
svc.lastRestartAt = Date.now();
console.log("[Tunnel] restart success");
} catch (err) {
console.log("[Tunnel] restart failed:", err.message);
if (!/cloudflared killed|tunnel cancelled/.test(err.message)) {
console.log("[Tunnel] restart failed:", err.message);
}
}
}
@@ -185,8 +187,10 @@ async function safeRestartTailscale(reason) {
if (svc.cancelToken.cancelled) return;
if (svc.spawnInProgress) return;
// Tailscale daemon is OS-level with built-in reconnect; trust it when running
if (isTailscaleRunning()) return;
// Tailscale daemon is OS-level with built-in reconnect; trust it when running.
// Startup uses strict probe — cached state is cold after process/dev reload.
const running = reason === "startup" ? isTailscaleRunningStrict() : isTailscaleRunning();
if (running) return;
const force = FORCE_RESTART_REASONS.test(reason);
if (!force && Date.now() - svc.lastRestartAt < RESTART_COOLDOWN_MS) {