From d74424a3b8a6c9a4b2d5d04586700a224a45f08d Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Thu, 20 Jan 2022 14:47:06 -0800 Subject: [PATCH] MessageReceiver: Pause processing of new messages on suspend --- ts/background.ts | 4 +++- ts/textsecure/MessageReceiver.ts | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ts/background.ts b/ts/background.ts index 66deca8cde..2d8a316386 100644 --- a/ts/background.ts +++ b/ts/background.ts @@ -1568,13 +1568,15 @@ export async function startApp(): Promise { window.Whisper.events.on('powerMonitorSuspend', () => { log.info('powerMonitor: suspend'); + messageReceiver?.pause(); suspendTasksWithTimeout(); }); window.Whisper.events.on('powerMonitorResume', () => { log.info('powerMonitor: resume'); - server?.checkSockets(); + messageReceiver?.resume(); resumeTasksWithTimeout(); + server?.checkSockets(); }); const reconnectToWebSocketQueue = new LatestQueue(); diff --git a/ts/textsecure/MessageReceiver.ts b/ts/textsecure/MessageReceiver.ts index 021ae4e674..a897edd6ff 100644 --- a/ts/textsecure/MessageReceiver.ts +++ b/ts/textsecure/MessageReceiver.ts @@ -187,6 +187,22 @@ export default class MessageReceiver private stoppingProcessing?: boolean; + pause(): void { + this.incomingQueue.pause(); + this.encryptedQueue.pause(); + this.decryptedQueue.pause(); + this.appQueue.pause(); + log.info('MessageReceiver: Paused'); + } + + resume(): void { + this.appQueue.start(); + this.decryptedQueue.start(); + this.encryptedQueue.start(); + this.incomingQueue.start(); + log.info('MessageReceiver: Resumed'); + } + constructor({ server, storage, serverTrustRoot }: MessageReceiverOptions) { super();