From 18a0a8ee3d4827d6fb09de911ea0f99aefcbb78f Mon Sep 17 00:00:00 2001 From: Sal Jim Date: Tue, 27 Jan 2026 14:26:57 +0300 Subject: [PATCH] fix(imessage): preserve signal info in RPC close handler The original code intended to report signal information when the imsg RPC process was killed (evidenced by the `signal ?` ternary on line 95). However, the condition `code !== 0 && code !== null` prevented this from ever happening. When a process is killed by a signal (e.g., SIGTERM): - code is null - signal is "SIGTERM" The old condition evaluated as: (null !== 0) && (null !== null) = false This routed signal kills to the else branch, losing the signal info. Changed to `code !== 0 || signal` so signal-killed processes now correctly report "imsg rpc exited (signal SIGTERM)" instead of the generic "imsg rpc closed" message. --- src/imessage/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/imessage/client.ts b/src/imessage/client.ts index 52d255ad8..0ce2970fa 100644 --- a/src/imessage/client.ts +++ b/src/imessage/client.ts @@ -91,7 +91,7 @@ export class IMessageRpcClient { }); child.on("close", (code, signal) => { - if (code !== 0 && code !== null) { + if (code !== 0 || signal) { const reason = signal ? `signal ${signal}` : `code ${code}`; this.failAll(new Error(`imsg rpc exited (${reason})`)); } else {