mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-27 16:26:16 +08:00
c3d810a22b
Two related drift bugs in the takeover state machine: 1. The "already taken over?" guard used has_backup OR live_taken_over, so either condition alone would short-circuit. After a user or anomalous flow restores Live manually the backup row still made set_takeover return success, leaving the UI claiming takeover while requests bypass the local proxy. Tighten to AND so the rebuild branch repairs the two "split brain" states (backup-only and placeholder-only). 2. Disabling takeover called the bare restore_live_config_for_app, which silently Ok()s when the backup is missing. If the backup was lost while Live still held proxy placeholders (PROXY_MANAGED token / local proxy URL), the client config was left broken with no error surfaced. Route the disable path through the already-existing restore_live_config_for_app_with_fallback (backup → SSOT → cleanup). The line 354 takeover-failure rollback intentionally keeps the bare variant since that path must preserve the backup for retry.