fix: use a deadline timer for peer connects

The raw socket handoff no longer needs Socket#setTimeout; an ordinary connection deadline keeps the timeout behavior while avoiding an internal socket timeout listener that has no reliable UDS integration path to exercise.

Constraint: Keep Codecov coverage honest without adding ignore pragmas, mocks, or fallback suppression.

Rejected: c8 ignore on the timeout listener | hides the uncovered branch instead of simplifying the lifecycle.

Rejected: keep Socket#setTimeout listener | leaves a socket listener lifecycle to manage for a connect-only deadline.

Confidence: high

Scope-risk: narrow

Directive: Keep connectToPeer errors caller-owned via onSocketError and reject pre-connect failures with UdsPeerConnectionError.

Tested: bun test src/utils/__tests__/udsMessaging.test.ts src/services/AgentSummary/__tests__/agentSummary.test.ts

Tested: bunx tsc --noEmit --pretty false

Tested: bun run lint

Tested: bun test src/utils/__tests__/udsMessaging.test.ts --coverage --coverage-reporter lcov --coverage-dir coverage-uds

Tested: bun run test:all

Tested: bun test --coverage --coverage-reporter lcov --coverage-dir coverage

Tested: bun run build

Tested: bun run build:vite

Tested: bun audit

Not-tested: Manual external ACP peer runtime beyond repository tests.
This commit is contained in:
unraid
2026-04-27 17:41:23 +08:00
parent a90c16431b
commit d3b16ae040
2 changed files with 6 additions and 8 deletions

View File

@@ -354,7 +354,6 @@ describe('UDS inbox retention', () => {
expect(client.destroyed).toBe(false)
expect(client.listenerCount('error')).toBe(1)
expect(client.listenerCount('timeout')).toBe(0)
const socketError = new Error('post-connect failure')
client.emit('error', socketError)

View File

@@ -280,13 +280,14 @@ export function connectToPeer(
return new Promise<Socket>((resolve, reject) => {
const conn = createConnection(socketPath)
let settled = false
const onTimeout = () => {
fail(new Error('Connection timed out'))
}
const timeout = setTimeout(
fail,
timeoutMs,
new Error('Connection timed out'),
)
function cleanupListeners(): void {
conn.setTimeout(0)
clearTimeout(timeout)
conn.off('error', fail)
conn.off('timeout', onTimeout)
}
function fail(cause: unknown): void {
if (settled) {
@@ -307,8 +308,6 @@ export function connectToPeer(
resolve(conn)
})
conn.on('error', fail)
conn.once('timeout', onTimeout)
conn.setTimeout(timeoutMs)
})
}