From c96be39829df6408e360a16f8bc55a7f8dc966a0 Mon Sep 17 00:00:00 2001 From: Rajeh Taher Date: Wed, 19 Mar 2025 00:45:43 +0200 Subject: [PATCH] messages-recv: stopgap to prevent errors from msmsg (Meta AI) --- src/Socket/messages-recv.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index 2bff23e..ecda600 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -566,6 +566,7 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { ids: string[], retryNode: BinaryNode ) => { + // todo: implement a cache to store the last 256 sent messages (copy whatsmeow) const msgs = await Promise.all(ids.map(id => getMessage({ ...key, id }))) const remoteJid = key.remoteJid! const participant = key.participant || remoteJid @@ -737,9 +738,18 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { return } + const encNode = getBinaryNodeChild(node, 'enc') + + // TODO: temporary fix for crashes and issues resulting of failed msmsg decryption + if(encNode && encNode.attrs.type === 'msmsg') { + logger.debug({ key: node.attrs.key }, 'ignored msmsg') + await sendMessageAck(node) + return + } + let response: string | undefined - if(getBinaryNodeChild(node, 'unavailable') && !getBinaryNodeChild(node, 'enc')) { + if(getBinaryNodeChild(node, 'unavailable') && !encNode) { await sendMessageAck(node) const { key } = decodeMessageNode(node, authState.creds.me!.id, authState.creds.me!.lid || '').fullMessage response = await requestPlaceholderResend(key)