fix: host status shows online when the port answers and only warns on a failed login

This commit is contained in:
LukeGus committed 2026-09-30 18:18:38 -05:00
1 parent c28cb1bfc6
commit 49acec4770
14 files changed
+141 -141

No files matched your search

+2 -1
View File
@@ -368,7 +368,8 @@ export class MetricsPoller {
const message = error instanceof Error ? error.message : "";
const isAuthError = /authentication|permission denied/i.test(message);
if (!authenticated) {
// A timeout or a dropped connection says nothing about the login.
if (!authenticated && (isAuthError || hostKeyChanged)) {
this.ctx.hosts.status.reportLogin(host.id, {
ok: false,
hostKeyChanged,
@@ -154,6 +154,19 @@ describe("MetricsPoller", () => {
});
});
it("does not report a login for a connection that timed out", async () => {
collectMetrics.mockRejectedValue(new Error("Timed out while waiting"));
const { fake, poller } = setup();
poller.registerViewer(7, "viewer-a", "user-1");
await flush();
expect(fake.statusReports).toEqual([]);
expect(fake.emitted.at(-1)?.payload).toMatchObject({
state: "unreachable",
});
});
it("marks a changed host key", async () => {
collectMetrics.mockRejectedValue(new Error("Host key changed"));
const { fake, poller, state } = setup();