From c0ae48dba6148f02c621776d4e7a69fd32491b18 Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Tue, 30 Sep 2025 11:57:38 -0500 Subject: [PATCH] Fix closure of libsignal socket on reconnect Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> --- ts/textsecure/WebsocketResources.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ts/textsecure/WebsocketResources.ts b/ts/textsecure/WebsocketResources.ts index 0d51b7c7966..5b0477465ce 100644 --- a/ts/textsecure/WebsocketResources.ts +++ b/ts/textsecure/WebsocketResources.ts @@ -443,6 +443,10 @@ function connectLibsignal( logId, keepalive ); + if (abortController.signal.aborted) { + resource.close(3000, 'aborted'); + throw new Error('Aborted'); + } // eslint-disable-next-line no-param-reassign resourceHolder.resource = resource; return resource; @@ -454,7 +458,16 @@ function connectLibsignal( }; return new AbortableProcess( `${logId}.connect`, - abortController, + { + abort() { + if (resourceHolder.resource != null) { + log.warn(`${logId}: closing socket`); + resourceHolder.resource.close(3000, 'aborted'); + } else { + abortController.abort(); + } + }, + }, connectAsync() ); }