From 176baecf72c550b7b399e745058c1c2ba0f7e5b0 Mon Sep 17 00:00:00 2001 From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> Date: Wed, 22 Jan 2025 13:09:34 -0800 Subject: [PATCH] Fix processing of cached envelopes --- ts/sql/Server.ts | 1 + ts/textsecure/MessageReceiver.ts | 13 ++++++++----- ts/textsecure/Types.d.ts | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ts/sql/Server.ts b/ts/sql/Server.ts index 48fd22d40..648f1e0d7 100644 --- a/ts/sql/Server.ts +++ b/ts/sql/Server.ts @@ -4825,6 +4825,7 @@ function getUnprocessedByIdsAndIncrementAttempts( ...row, urgent: isNumber(row.urgent) ? Boolean(row.urgent) : true, story: Boolean(row.story), + isEncrypted: Boolean(row.isEncrypted), })); }); } diff --git a/ts/textsecure/MessageReceiver.ts b/ts/textsecure/MessageReceiver.ts index 85ca288d3..2cadffb0b 100644 --- a/ts/textsecure/MessageReceiver.ts +++ b/ts/textsecure/MessageReceiver.ts @@ -403,6 +403,9 @@ export default class MessageReceiver const ourAci = this.#storage.user.getCheckedAci(); + const { content } = decoded; + strictAssert(content != null, 'Content is required for envelopes'); + const envelope: ProcessedEnvelope = { // Make non-private envelope IDs dashless so they don't get redacted // from logs @@ -439,7 +442,7 @@ export default class MessageReceiver ) : undefined, timestamp: decoded.timestamp?.toNumber() ?? 0, - content: dropNull(decoded.content), + content, serverGuid: decoded.serverGuid ?? getGuid(), serverTimestamp, urgent: isBoolean(decoded.urgent) ? decoded.urgent : true, @@ -895,7 +898,7 @@ export default class MessageReceiver ) : undefined, timestamp: item.timestamp, - content: item.isEncrypted ? item.content : undefined, + content: item.content, serverGuid: item.serverGuid, serverTimestamp: item.serverTimestamp, urgent: isBoolean(item.urgent) ? item.urgent : true, @@ -1104,7 +1107,9 @@ export default class MessageReceiver updatedPni: envelope.updatedPni, serverGuid: envelope.serverGuid, serverTimestamp: envelope.serverTimestamp, - decrypted: plaintext, + timestamp: envelope.timestamp, + isEncrypted: false, + content: plaintext, }; } ); @@ -1171,8 +1176,6 @@ export default class MessageReceiver envelope: ProcessedEnvelope, request: IncomingWebSocketRequest ): void { - strictAssert(envelope.content, 'Content is required for envelopes'); - const { id } = envelope; const data: UnprocessedType = { id, diff --git a/ts/textsecure/Types.d.ts b/ts/textsecure/Types.d.ts index 0f4c6db61..f84b66d12 100644 --- a/ts/textsecure/Types.d.ts +++ b/ts/textsecure/Types.d.ts @@ -92,7 +92,7 @@ export type ProcessedEnvelope = Readonly<{ destinationServiceId: ServiceIdString; updatedPni: PniString | undefined; timestamp: number; - content: Uint8Array | undefined; + content: Uint8Array; serverGuid: string; serverTimestamp: number; groupId: string | undefined;