mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-11 09:42:15 +03:00
A connection test that fails with "fetch failed", ENOTFOUND or a timeout says nothing about the connection itself, because the request never left the host. Recording it as testStatus 'error' was a one-way door: proactive recovery only restores connections that are 'unavailable' and carry an elapsed cooldown, and a failed test sets neither, so a brief outage left the dashboard showing most of the fleet as broken until each connection was re-tested by hand. Routing was never affected, which is what made it easy to miss. The status is now simply not written when the test learned nothing. The update merges over the stored row, so leaving the key out preserves whatever was there, including for a connection that has never been tested. The attempt itself is still recorded in lastError and errorCode, matching how the token health check already treats a refresh that failed for transient reasons. The timeout path needed a second fix to reach that branch at all. The OAuth probe reports its own abort as "Test timed out after 30s", and the classifier was matching on "timeout", which that wording does not contain, so a hung probe was diagnosed as a generic upstream error and marked the connection broken. A hang is the more likely symptom when a network is reachable but dead, so that was the case that mattered most.