From 7db5bb5d9a3031d7d286c1b706513b4a8a663e05 Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Fri, 10 Dec 2021 11:22:06 +0530 Subject: [PATCH] chore: do not throw unhandled error on send messages again, log error --- src/Socket/messages-recv.ts | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index 3db993a..86adb45 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -465,17 +465,18 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { }) const sendMessagesAgain = async(key: proto.IMessageKey, ids: string[]) => { - const participant = key.participant || key.remoteJid - await assertSession(participant, true) - - logger.debug({ key, ids }, 'recv retry request, forced new session') - + const msgs = await Promise.all( ids.map(id => ( config.getMessage({ ...key, id }) )) ) + const participant = key.participant || key.remoteJid + await assertSession(participant, true) + + logger.debug({ participant }, 'forced new session for retry recp') + for(let i = 0; i < msgs.length;i++) { if(msgs[i]) { await relayMessage(key.remoteJid, msgs[i], { @@ -489,6 +490,7 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { } const handleReceipt = async(node: BinaryNode) => { + let shouldAck = true const { attrs, content } = node const remoteJid = attrs.recipient || attrs.from const fromMe = attrs.recipient ? false : true @@ -515,10 +517,19 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { } if(attrs.type === 'retry') { - await sendMessagesAgain(key, ids) + try { + logger.debug({ attrs }, 'recv retry request') + await sendMessagesAgain(key, ids) + } catch(error) { + logger.error({ key, ids, trace: error.stack }, 'error in sending message again') + shouldAck = false + } } - await sendMessageAck(node, { class: 'receipt', type: attrs.type }) + if(shouldAck) { + await sendMessageAck(node, { class: 'receipt', type: attrs.type }) + } + } ws.on('CB:receipt', handleReceipt)