@periskope/baileys 6.7.19-1 → 6.7.19-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"libsignal.d.ts","sourceRoot":"","sources":["../../src/Signal/libsignal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,UAAU,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AASvD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB,CAuN/E"}
1
+ {"version":3,"file":"libsignal.d.ts","sourceRoot":"","sources":["../../src/Signal/libsignal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,UAAU,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AASvD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB,CA+O/E"}
@@ -17,10 +17,28 @@ export function makeLibSignalRepository(auth) {
17
17
  ttl: 5 * 60 * 1000
18
18
  });
19
19
  const repository = {
20
- decryptGroupMessage({ group, authorJid, msg }) {
20
+ async decryptGroupMessage({ group, authorJid, authorLid, msg }) {
21
21
  const senderName = jidToSignalSenderKeyName(group, authorJid);
22
22
  const cipher = new GroupCipher(storage, senderName);
23
- return cipher.decrypt(msg);
23
+ try {
24
+ return await cipher.decrypt(msg);
25
+ }
26
+ catch (error) {
27
+ // If authorLid is available and authorJid failed, try with authorLid as fallback
28
+ if (authorLid && authorLid !== authorJid) {
29
+ try {
30
+ const senderNameLid = jidToSignalSenderKeyName(group, authorLid);
31
+ const cipherLid = new GroupCipher(storage, senderNameLid);
32
+ return await cipherLid.decrypt(msg);
33
+ }
34
+ catch (lidError) {
35
+ // If both fail, throw the original error
36
+ throw error;
37
+ }
38
+ }
39
+ // No authorLid available or it's the same as authorJid, throw original error
40
+ throw error;
41
+ }
24
42
  },
25
43
  async processSenderKeyDistributionMessage({ item, authorJid }) {
26
44
  const builder = new GroupSessionBuilder(storage);
@@ -174,6 +192,11 @@ export function makeLibSignalRepository(auth) {
174
192
  recentMigrations.set(migrationKey, true);
175
193
  });
176
194
  },
195
+ async hasSession(jid) {
196
+ const addr = jidToSignalProtocolAddress(jid);
197
+ const session = await auth.keys.get('session', [addr.toString()]);
198
+ return !!session?.[addr.toString()];
199
+ },
177
200
  async encryptMessageWithWire({ encryptionJid, wireJid, data }) {
178
201
  const result = await repository.encryptMessage({ jid: encryptionJid, data });
179
202
  return { ...result, wireJid };
@@ -1 +1 @@
1
- {"version":3,"file":"libsignal.js","sourceRoot":"","sources":["../../src/Signal/libsignal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libsignal.js","sourceRoot":"","sources":["../../src/Signal/libsignal.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../src/Socket/communities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EACN,KAAK,aAAa,EAElB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,KAAK,UAAU,EAMf,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,qBAAqB,GAAI,QAAQ,YAAY;6BAenB,MAAM;+BA8EV,MAAM,QAAQ,MAAM;yBAqC1B,MAAM;kCASG,MAAM,WAAW,MAAM;4CASb,MAAM;;;8CAWJ,MAAM,gBAAgB,MAAM,EAAE,UAAU,SAAS,GAAG,QAAQ;;;;uCAwBnE,MAAM,gBAAgB,MAAM,EAAE,UAAU,iBAAiB;;;;;sCAiB1D,MAAM,gBAAgB,MAAM;+BAenC,MAAM;iCAKJ,MAAM;kCAKL,MAAM;IAM1C;;;;;OAKG;4CAC2C,MAAM,cAAc,MAAM;IAOxE;;;;OAIG;;mCAsDkC,MAAM;oCAIL,MAAM,uBAAuB,MAAM;kCAOnE,MAAM,WACF,cAAc,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU;kCAIjC,MAAM,QAAQ,WAAW,GAAG,gBAAgB;qCAGzC,MAAM,QAAQ,IAAI,GAAG,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;yCAoD2mV,MAAO,QAAQ;;;;;;;;;+CAApoM,MAAO,OAAO,CAAC,gCAAgC;sDAA6vB,MAAO,QAAQ,iDAAsD,MAAO,QAAQ;;;;;;;kCAAoplB,MAAO,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAA1mb,MAAO,eAAe,CAAC,cAAc;;;;;;;;;cAApQ,CAAC;;;;;;;;0DA3UttU,GAAG,0BACnD,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA6RvB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,UAAU,kBA0C1D,CAAA"}
1
+ {"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../src/Socket/communities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EACN,KAAK,aAAa,EAElB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,KAAK,UAAU,EAMf,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,qBAAqB,GAAI,QAAQ,YAAY;6BAenB,MAAM;+BA8EV,MAAM,QAAQ,MAAM;yBAqC1B,MAAM;kCASG,MAAM,WAAW,MAAM;4CASb,MAAM;;;8CAWJ,MAAM,gBAAgB,MAAM,EAAE,UAAU,SAAS,GAAG,QAAQ;;;;uCAwBnE,MAAM,gBAAgB,MAAM,EAAE,UAAU,iBAAiB;;;;;sCAiB1D,MAAM,gBAAgB,MAAM;+BAenC,MAAM;iCAKJ,MAAM;kCAKL,MAAM;IAM1C;;;;;OAKG;4CAC2C,MAAM,cAAc,MAAM;IAOxE;;;;OAIG;;mCAsDkC,MAAM;oCAIL,MAAM,uBAAuB,MAAM;kCAOnE,MAAM,WACF,cAAc,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU;kCAIjC,MAAM,QAAQ,WAAW,GAAG,gBAAgB;qCAGzC,MAAM,QAAQ,IAAI,GAAG,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;yCAoDu5U,MAAO,QAAQ;;;;;;;;;+CAApoM,MAAO,OAAO,CAAC,gCAAgC;sDAA6vB,MAAO,QAAQ,iDAAsD,MAAO,QAAQ;;;;;;;kCAAm+lB,MAAO,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAArub,MAAO,eAAe,CAAC,cAAc;;;;;;;;;cAApQ,CAAC;;;;;;;;0DA3UttU,GAAG,0BACnD,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA6RvB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,UAAU,kBA0C1D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"messages-recv.d.ts","sourceRoot":"","sources":["../../src/Socket/messages-recv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,OAAO,KAAK,EACX,kBAAkB,EAClB,mBAAmB,EAEnB,YAAY,EAGZ,YAAY,EAEZ,MAAM,UAAU,CAAA;AA2BjB,OAAO,EAEN,KAAK,UAAU,EAaf,MAAM,aAAa,CAAA;AAIpB,eAAO,MAAM,sBAAsB,GAAI,QAAQ,YAAY;8CA8CH,UAAU,cAAc,MAAM;6BAmF/C,UAAU;yBAtBd,MAAM,YAAY,MAAM;iCAiyBlD,MAAM,gBACC,YAAY,sBACN,MAAM,GAAG,IAAI,KAC/B,OAAO,CAAC,MAAM,CAAC;2CAmBkC,YAAY,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;yCAjOvF,MAAC,QAAQ;;;;;;;;;+CApMT,MACC,OAAC,CAAC,gCAAgC;sDA+B7B,MAAO,QAAQ,iDACd,MAAM,QACrB;;;;;;;kCAunBI,MAAC,eAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA5d0B,MAAO,eAAe,CAAE,cACjD;;;;;;;;;cANsB,CAAC;;;;;;;;0DAhrBlB,GAAG,0BAEd,GAAE;;;;;;;;;;;;;;;;;;;;;;;;CA40CH,CAAA"}
1
+ {"version":3,"file":"messages-recv.d.ts","sourceRoot":"","sources":["../../src/Socket/messages-recv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,OAAO,KAAK,EACX,kBAAkB,EAClB,mBAAmB,EAEnB,YAAY,EAGZ,YAAY,EAEZ,MAAM,UAAU,CAAA;AAoCjB,OAAO,EAEN,KAAK,UAAU,EAaf,MAAM,aAAa,CAAA;AAIpB,eAAO,MAAM,sBAAsB,GAAI,QAAQ,YAAY;8CAyDH,UAAU,cAAc,MAAM;6BAmF/C,UAAU;yBAtBd,MAAM,YAAY,MAAM;iCAwkClD,MAAM,gBACC,YAAY,sBACN,MAAM,GAAG,IAAI,KAC/B,OAAO,CAAC,MAAM,CAAC;2CAmBkC,YAAY,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;yCAzhB3F,MAAO,QAAQ;;;;;;;;;+CA3KiB,MAAO,OAAO,CAAC,gCAEhC;sDAiBT,MAAO,QAAQ,iDAAsD,MAAO,QAAQ;;;;;;;kCA2lB7E,MAAO,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAncJ,MAAO,eACxC,CAAE,cAAa;;;;;;;;;cARd,CAAA;;;;;;;;0DAprBqB,GAAG,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA0pDvD,CAAA"}
@@ -5,7 +5,7 @@ import Long from 'long';
5
5
  import { proto } from '../../WAProto/index.js';
6
6
  import { DEFAULT_CACHE_TTLS, KEY_BUNDLE_TYPE, MIN_PREKEY_COUNT } from '../Defaults/index.js';
7
7
  import { WAMessageStatus, WAMessageStubType } from '../Types/index.js';
8
- import { aesDecryptCTR, aesEncryptGCM, cleanMessage, Curve, decodeMediaRetryNode, decodeMessageNode, decryptMessageNode, delay, derivePairingCodeKey, encodeBigEndian, encodeSignedDeviceIdentity, getCallStatusFromNode, getHistoryMsg, getNextPreKeys, getStatusFromReceiptType, hkdf, MISSING_KEYS_ERROR_TEXT, NACK_REASONS, NO_MESSAGE_FOUND_ERROR_TEXT, unixTimestampSeconds, xmppPreKey, xmppSignedPreKey } from '../Utils/index.js';
8
+ import { addRecentMessage, aesDecryptCTR, aesEncryptGCM, cleanMessage, cleanupOldRetryStates, Curve, decodeMediaRetryNode, decodeMessageNode, decryptMessageNode, delay, derivePairingCodeKey, encodeBigEndian, encodeSignedDeviceIdentity, getCallStatusFromNode, getHistoryMsg, getMessageForRetry, getNextPreKeys, getRecentMessage, getStatusFromReceiptType, hkdf, incrementIncomingRetryCounter, MISSING_KEYS_ERROR_TEXT, NACK_REASONS, NO_MESSAGE_FOUND_ERROR_TEXT, shouldDropRetryRequest, shouldRecreateSession, executeSessionRecreation, unixTimestampSeconds, xmppPreKey, xmppSignedPreKey } from '../Utils/index.js';
9
9
  import { makeMutex } from '../Utils/make-mutex.js';
10
10
  import { areJidsSameUser, getAllBinaryNodeChildren, getBinaryNodeChild, getBinaryNodeChildBuffer, getBinaryNodeChildren, getBinaryNodeChildString, isJidGroup, isJidStatusBroadcast, isJidUser, isLidUser, jidDecode, jidNormalizedUser, S_WHATSAPP_NET } from '../WABinary/index.js';
11
11
  import { extractGroupMetadata } from './groups.js';
@@ -14,6 +14,9 @@ export const makeMessagesRecvSocket = (config) => {
14
14
  const { logger, retryRequestDelayMs, maxMsgRetryCount, getMessage, shouldIgnoreJid } = config;
15
15
  const sock = makeMessagesSocket(config);
16
16
  const { ev, authState, ws, processingMutex, signalRepository, query, upsertMessage, resyncAppState, onUnexpectedError, assertSessions, sendNode, relayMessage, sendReceipt, uploadPreKeys, sendPeerDataOperationMessage } = sock;
17
+ const PENDING_MESSAGE_DECRYPTIONS = new Map();
18
+ const MAX_DECRYPT_RETRY_COUNT = 3;
19
+ const DECRYPT_RETRY_DELAY = 2000;
17
20
  /** this mutex ensures that each retryRequest will wait for the previous one to finish */
18
21
  const retryMutex = makeMutex();
19
22
  const msgRetryCache = config.msgRetryCounterCache ||
@@ -107,20 +110,55 @@ export const makeMessagesRecvSocket = (config) => {
107
110
  const { fullMessage } = decodeMessageNode(node, authState.creds.me.id, authState.creds.me.lid || '');
108
111
  const { key: msgKey } = fullMessage;
109
112
  const msgId = msgKey.id;
113
+ // const senderJid = node.attrs.from || ''
114
+ // // Check internal retry counter (whatsmeow pattern - max 10 per sender/message)
115
+ // const internalRetryCount = incrementIncomingRetryCounter(senderJid, msgId)
116
+ // if (shouldDropRetryRequest(senderJid, msgId)) {
117
+ // logger.warn(
118
+ // {
119
+ // senderJid,
120
+ // msgId,
121
+ // internalRetryCount
122
+ // },
123
+ // 'Dropping retry request: internal retry counter exceeded limit (10)'
124
+ // )
125
+ // return
126
+ // }
110
127
  const key = `${msgId}:${msgKey?.participant}`;
111
128
  let retryCount = msgRetryCache.get(key) || 0;
129
+ // Enhanced retry limit check (whatsmeow uses 5 max retries)
112
130
  if (retryCount >= maxMsgRetryCount) {
113
- logger.debug({ retryCount, msgId }, 'reached retry limit, clearing');
131
+ logger.warn({ retryCount, msgId }, 'reached maximum retry limit (5), not sending more retry receipts');
114
132
  msgRetryCache.del(key);
115
133
  return;
116
134
  }
117
135
  retryCount += 1;
118
136
  msgRetryCache.set(key, retryCount);
119
137
  const { account, signedPreKey, signedIdentityKey: identityKey } = authState.creds;
138
+ // Enhanced retry logic inspired by whatsmeow
120
139
  if (retryCount === 1) {
121
- //request a resend via phone
122
- const msgId = await requestPlaceholderResend(msgKey);
123
- logger.debug(`sendRetryRequest: requested placeholder resend for message ${msgId}`);
140
+ // First retry - request resend via phone (whatsmeow pattern)
141
+ try {
142
+ const msgId = await requestPlaceholderResend(msgKey);
143
+ logger.debug({
144
+ retryCount,
145
+ msgId
146
+ // internalRetryCount
147
+ }, 'sendRetryRequest: requested placeholder resend for message (first retry)');
148
+ }
149
+ catch (error) {
150
+ logger.warn({
151
+ msgId,
152
+ error: error.message
153
+ }, 'Failed to request placeholder resend');
154
+ }
155
+ }
156
+ else {
157
+ logger.debug({
158
+ retryCount,
159
+ msgId
160
+ // internalRetryCount
161
+ }, 'sendRetryRequest: retry count > 1, skipping placeholder resend');
124
162
  }
125
163
  const deviceIdentity = encodeSignedDeviceIdentity(account, true);
126
164
  await authState.keys.transaction(async () => {
@@ -154,7 +192,12 @@ export const makeMessagesRecvSocket = (config) => {
154
192
  if (node.attrs.participant) {
155
193
  receipt.attrs.participant = node.attrs.participant;
156
194
  }
157
- if (retryCount > 1 || forceIncludeKeys) {
195
+ // Include keys based on whatsmeow logic:
196
+ // - Always include on first retry (retryCount === 1)
197
+ // - Include when forced (MAC errors, session errors)
198
+ // - Include when retry count > 1 (session recreation scenarios)
199
+ const shouldIncludeKeys = retryCount === 1 || forceIncludeKeys || retryCount > 1;
200
+ if (shouldIncludeKeys) {
158
201
  const { update, preKeys } = await getNextPreKeys(authState, 1);
159
202
  const [keyId] = Object.keys(preKeys);
160
203
  const key = preKeys[+keyId];
@@ -171,6 +214,20 @@ export const makeMessagesRecvSocket = (config) => {
171
214
  ]
172
215
  });
173
216
  ev.emit('creds.update', update);
217
+ logger.debug({
218
+ retryCount,
219
+ forceIncludeKeys,
220
+ shouldIncludeKeys
221
+ // internalRetryCount
222
+ }, 'Including keys and device identity in retry receipt');
223
+ }
224
+ else {
225
+ logger.debug({
226
+ retryCount,
227
+ forceIncludeKeys,
228
+ shouldIncludeKeys
229
+ // internalRetryCount
230
+ }, 'Not including keys in retry receipt');
174
231
  }
175
232
  await sendNode(receipt);
176
233
  logger.info({ msgAttrs: node.attrs, retryCount }, 'sent retry receipt');
@@ -486,19 +543,51 @@ export const makeMessagesRecvSocket = (config) => {
486
543
  msgRetryCache.set(key, newValue);
487
544
  };
488
545
  const sendMessagesAgain = async (key, ids, retryNode) => {
489
- // todo: implement a cache to store the last 256 sent messages (copy whatsmeow)
490
- const msgs = await Promise.all(ids.map(id => getMessage({ ...key, id })));
546
+ // Use WhatsmeOW-compatible message retrieval (cache first, then callback)
547
+ const msgs = await Promise.all(ids.map(id => getMessageForRetry(key.remoteJid, id, getMessage)));
491
548
  const remoteJid = key.remoteJid;
492
549
  const participant = key.participant || remoteJid;
493
550
  // if it's the primary jid sending the request
494
551
  // just re-send the message to everyone
495
552
  // prevents the first message decryption failure
496
553
  const sendToAll = !jidDecode(participant)?.device;
497
- await assertSessions([participant], true);
498
- if (isJidGroup(remoteJid)) {
554
+ const retryCount = +(retryNode.attrs.count || '1');
555
+ // Create session recreation context (same approach as decode-wa-message.ts)
556
+ const sessionContext = {
557
+ authState,
558
+ logger,
559
+ signalRepository,
560
+ query
561
+ };
562
+ // Use the sophisticated session recreation logic from decode-wa-message.ts
563
+ const sessionResult = await shouldRecreateSession(participant, retryCount, sessionContext);
564
+ if (sessionResult.recreate && sessionResult.shouldFetchPreKeys) {
565
+ logger.warn({
566
+ participant,
567
+ retryCount,
568
+ reason: sessionResult.reason
569
+ }, 'Session recreation recommended for retry');
570
+ // Execute session recreation with prekey fetching (includes LID support)
571
+ const success = await executeSessionRecreation(participant, sessionContext);
572
+ if (!success) {
573
+ logger.warn({ participant }, 'Session recreation failed, proceeding with existing session');
574
+ }
575
+ }
576
+ // Ensure we have sessions (use force=false to allow LID migration logic)
577
+ await assertSessions([participant], false);
578
+ // Only clear sender key memory if session recreation was recommended and it's a group
579
+ // This prevents unnecessary decryption failures for other group members
580
+ if (isJidGroup(remoteJid) && sessionResult.recreate) {
499
581
  await authState.keys.set({ 'sender-key-memory': { [remoteJid]: null } });
582
+ logger.debug({ participant, retryCount, reason: sessionResult.reason }, 'cleared sender key memory due to session recreation');
500
583
  }
501
- logger.debug({ participant, sendToAll }, 'forced new session for retry recp');
584
+ logger.debug({
585
+ participant,
586
+ sendToAll,
587
+ retryCount,
588
+ sessionRecreated: sessionResult.recreate,
589
+ reason: sessionResult.reason
590
+ }, 'handling retry receipt');
502
591
  for (const [i, msg] of msgs.entries()) {
503
592
  if (msg) {
504
593
  updateSendMessageAgainCount(ids[i], participant);
@@ -548,7 +637,7 @@ export const makeMessagesRecvSocket = (config) => {
548
637
  if (typeof status !== 'undefined' &&
549
638
  // basically, we only want to know when a message from us has been delivered to/read by the other person
550
639
  // or another device of ours has read some messages
551
- (status >= proto.WebMessageInfo.Status.SERVER_ACK)) {
640
+ status >= proto.WebMessageInfo.Status.SERVER_ACK) {
552
641
  if (isJidGroup(remoteJid) || isJidStatusBroadcast(remoteJid)) {
553
642
  const updateKey = status === proto.WebMessageInfo.Status.DELIVERY_ACK ? 'receiptTimestamp' : 'readTimestamp';
554
643
  if (attrs.participant) {
@@ -590,10 +679,39 @@ export const makeMessagesRecvSocket = (config) => {
590
679
  // correctly set who is asking for the retry
591
680
  key.participant = key.participant || attrs.from;
592
681
  const retryNode = getBinaryNodeChild(node, 'retry');
682
+ // // Check internal retry counter (whatsmeow pattern)
683
+ // const senderJid = attrs.from || ''
684
+ const messageId = ids[0] || '';
685
+ // if (shouldDropRetryRequest(senderJid, messageId)) {
686
+ // logger.warn(
687
+ // {
688
+ // senderJid,
689
+ // messageId,
690
+ // attrs
691
+ // },
692
+ // 'Dropping retry receipt: internal retry counter exceeded limit (10)'
693
+ // )
694
+ // return
695
+ // }
696
+ // // Increment internal retry counter
697
+ // const internalRetryCount = incrementIncomingRetryCounter(senderJid, messageId)
593
698
  if (willSendMessageAgain(ids[0], key.participant)) {
594
699
  if (key.fromMe) {
595
700
  try {
596
- logger.debug({ attrs, key }, 'recv retry request');
701
+ logger.debug({
702
+ attrs,
703
+ key
704
+ // internalRetryCount
705
+ }, 'recv retry request');
706
+ // Check if we have the message in recent cache (whatsmeow pattern)
707
+ const recentMessage = getRecentMessage(key.remoteJid || '', messageId);
708
+ //eslint-disable-next-line max-depth
709
+ if (recentMessage) {
710
+ logger.debug({
711
+ jid: key.remoteJid,
712
+ id: messageId
713
+ }, 'Found message in recent cache for retry');
714
+ }
597
715
  await sendMessagesAgain(key, ids, retryNode);
598
716
  ev.emit('messages.retry', { key, ids, retryNode });
599
717
  }
@@ -602,11 +720,19 @@ export const makeMessagesRecvSocket = (config) => {
602
720
  }
603
721
  }
604
722
  else {
605
- logger.info({ attrs, key }, 'recv retry for not fromMe message');
723
+ logger.info({
724
+ attrs,
725
+ key
726
+ // internalRetryCount
727
+ }, 'recv retry for not fromMe message');
606
728
  }
607
729
  }
608
730
  else {
609
- logger.info({ attrs, key }, 'will not send message again, as sent too many times');
731
+ logger.info({
732
+ attrs,
733
+ key
734
+ // internalRetryCount
735
+ }, 'will not send message again, as sent too many times');
610
736
  }
611
737
  }
612
738
  })
@@ -676,7 +802,15 @@ export const makeMessagesRecvSocket = (config) => {
676
802
  placeholderResendCache.del(node.attrs.id);
677
803
  }
678
804
  }
679
- const { fullMessage: msg, category, author, decrypt } = decryptMessageNode(node, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, logger);
805
+ const messageKey = `${node.attrs.from}_${node.attrs.id}_${node.attrs.participant || ''}`;
806
+ // Create session recreation context (whatsmeow-inspired)
807
+ const sessionContext = {
808
+ authState,
809
+ logger,
810
+ signalRepository,
811
+ query
812
+ };
813
+ const { fullMessage: msg, category, author, decrypt } = decryptMessageNode(node, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, logger, sendRetryRequest, sessionContext);
680
814
  if (response && msg?.messageStubParameters?.[0] === NO_MESSAGE_FOUND_ERROR_TEXT) {
681
815
  msg.messageStubParameters = [NO_MESSAGE_FOUND_ERROR_TEXT, response];
682
816
  }
@@ -717,65 +851,155 @@ export const makeMessagesRecvSocket = (config) => {
717
851
  try {
718
852
  await Promise.all([
719
853
  processingMutex.mutex(async () => {
720
- await decrypt();
721
- // message failed to decrypt
722
- if (msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT) {
723
- if (msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT) {
724
- return sendMessageAck(node, NACK_REASONS.ParsingError);
854
+ try {
855
+ await decrypt();
856
+ // Remove from retry queue if the decrypt was succeed
857
+ if (PENDING_MESSAGE_DECRYPTIONS.has(messageKey)) {
858
+ PENDING_MESSAGE_DECRYPTIONS.delete(messageKey);
859
+ console.warn({ messageKey }, 'Message decrypted successfully after retry');
860
+ }
861
+ if (msg.key?.remoteJid && msg.key?.id) {
862
+ addRecentMessage(msg.key.remoteJid, msg.key.id, msg.message);
863
+ logger.debug({
864
+ jid: msg.key.remoteJid,
865
+ id: msg.key.id
866
+ }, 'Added message to recent cache for retry receipts');
725
867
  }
726
- retryMutex.mutex(async () => {
727
- if (ws.isOpen) {
728
- if (getBinaryNodeChild(node, 'unavailable')) {
729
- return;
868
+ // message failed to decrypt
869
+ if (msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT) {
870
+ if (msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT) {
871
+ return sendMessageAck(node, NACK_REASONS.ParsingError);
872
+ }
873
+ return retryMutex.mutex(async () => {
874
+ if (ws.isOpen) {
875
+ if (getBinaryNodeChild(node, 'unavailable')) {
876
+ return;
877
+ }
878
+ const encNode = getBinaryNodeChild(node, 'enc');
879
+ console.warn({ messageKey, node }, 'Message decryption failed, sending retry request');
880
+ await sendRetryRequest(node, !encNode);
881
+ if (retryRequestDelayMs) {
882
+ await delay(retryRequestDelayMs);
883
+ }
730
884
  }
731
- const encNode = getBinaryNodeChild(node, 'enc');
732
- await sendRetryRequest(node, !encNode);
733
- if (retryRequestDelayMs) {
734
- await delay(retryRequestDelayMs);
885
+ else {
886
+ logger.debug({ node }, 'connection closed, ignoring retry req');
735
887
  }
888
+ });
889
+ }
890
+ else {
891
+ let type = undefined;
892
+ let participant = msg.key.participant;
893
+ if (category === 'peer') {
894
+ type = 'peer_msg';
736
895
  }
737
- else {
738
- logger.debug({ node }, 'connection closed, ignoring retry req');
896
+ else if (msg.key.fromMe) {
897
+ type = 'sender';
898
+ if (isJidUser(msg.key.remoteJid)) {
899
+ participant = author;
900
+ }
739
901
  }
740
- });
741
- }
742
- else {
743
- // no type in the receipt => message delivered
744
- let type = undefined;
745
- let participant = msg.key.participant;
746
- if (category === 'peer') {
747
- // special peer message
748
- type = 'peer_msg';
749
- }
750
- else if (msg.key.fromMe) {
751
- // message was sent by us from a different device
752
- type = 'sender';
753
- // need to specially handle this case
754
- if (isJidUser(msg.key.remoteJid)) {
755
- participant = author;
902
+ else if (!sendActiveReceipts) {
903
+ type = 'inactive';
904
+ }
905
+ await sendReceipt(msg.key.remoteJid, participant, [msg.key.id], type);
906
+ const isAnyHistoryMsg = getHistoryMsg(msg.message);
907
+ if (isAnyHistoryMsg) {
908
+ const jid = jidNormalizedUser(msg.key.remoteJid);
909
+ await sendReceipt(jid, undefined, [msg.key.id], 'hist_sync');
756
910
  }
757
911
  }
758
- else if (!sendActiveReceipts) {
759
- type = 'inactive';
912
+ cleanMessage(msg, authState.creds.me.id);
913
+ await sendMessageAck(node);
914
+ await upsertMessage(msg, node.attrs.offline ? 'append' : 'notify');
915
+ }
916
+ catch (decryptError) {
917
+ console.error({ error: decryptError, messageKey }, 'Decryption failed');
918
+ if (decryptError.message.includes('No session') ||
919
+ decryptError.message.includes('Bad MAC') ||
920
+ decryptError.message.includes('MAC verification') ||
921
+ decryptError.message.includes('No matching sessions')) {
922
+ console.warn('trying to handle session error in message decryption');
923
+ const pendingDecryption = PENDING_MESSAGE_DECRYPTIONS.get(messageKey);
924
+ if (!pendingDecryption) {
925
+ // Primeira falha - adiciona à queue
926
+ PENDING_MESSAGE_DECRYPTIONS.set(messageKey, {
927
+ node,
928
+ retryCount: 1,
929
+ timestamp: Date.now()
930
+ });
931
+ console.warn({ messageKey, error: decryptError.message }, 'Session not found, scheduling retry');
932
+ // Agenda retry
933
+ setTimeout(() => {
934
+ retryMessageDecryption(messageKey).catch(err => logger.error({ err, messageKey }, 'Error in retry decryption'));
935
+ }, DECRYPT_RETRY_DELAY);
936
+ // try to process the message as a ciphertext
937
+ msg.messageStubType = proto.WebMessageInfo.StubType.CIPHERTEXT;
938
+ msg.messageStubParameters = ['Session not ready, retrying...'];
939
+ cleanMessage(msg, authState.creds.me.id);
940
+ await sendMessageAck(node);
941
+ await upsertMessage(msg, node.attrs.offline ? 'append' : 'notify');
942
+ }
943
+ else if (pendingDecryption.retryCount < MAX_DECRYPT_RETRY_COUNT) {
944
+ // Retry
945
+ pendingDecryption.retryCount++;
946
+ console.warn({ messageKey, retryCount: pendingDecryption.retryCount }, 'Retrying message decryption');
947
+ setTimeout(() => {
948
+ retryMessageDecryption(messageKey).catch(err => console.error({ err, messageKey }, 'Error in retry decryption'));
949
+ }, DECRYPT_RETRY_DELAY * pendingDecryption.retryCount);
950
+ }
951
+ else {
952
+ // max retry count reached
953
+ PENDING_MESSAGE_DECRYPTIONS.delete(messageKey);
954
+ console.error({ messageKey }, 'Max retry count reached for message decryption');
955
+ msg.messageStubType = proto.WebMessageInfo.StubType.CIPHERTEXT;
956
+ msg.messageStubParameters = ['Decryption failed after retries'];
957
+ cleanMessage(msg, authState.creds.me.id);
958
+ await sendMessageAck(node);
959
+ await upsertMessage(msg, node.attrs.offline ? 'append' : 'notify');
960
+ }
760
961
  }
761
- await sendReceipt(msg.key.remoteJid, participant, [msg.key.id], type);
762
- // send ack for history message
763
- const isAnyHistoryMsg = getHistoryMsg(msg.message);
764
- if (isAnyHistoryMsg) {
765
- const jid = jidNormalizedUser(msg.key.remoteJid);
766
- await sendReceipt(jid, undefined, [msg.key.id], 'hist_sync');
962
+ else {
963
+ // other error, log and throw
964
+ logger.error({ error: decryptError, messageKey }, 'Decryption failed with non-session error');
965
+ throw decryptError;
767
966
  }
768
967
  }
769
- cleanMessage(msg, authState.creds.me.id);
770
- await sendMessageAck(node);
771
- await upsertMessage(msg, node.attrs.offline ? 'append' : 'notify');
772
968
  })
773
969
  ]);
774
970
  }
775
971
  catch (error) {
776
972
  logger.error({ error, node }, 'error in handling message');
973
+ await sendMessageAck(node); // Ainda assim envia ack para evitar loops
974
+ }
975
+ };
976
+ const retryMessageDecryption = async (messageKey) => {
977
+ const pendingDecryption = PENDING_MESSAGE_DECRYPTIONS.get(messageKey);
978
+ if (!pendingDecryption) {
979
+ return;
980
+ }
981
+ const { node } = pendingDecryption;
982
+ try {
983
+ // try to decrypt the message again
984
+ await handleMessage(node);
985
+ }
986
+ catch (error) {
987
+ logger.error({ error, messageKey }, 'Retry decryption failed');
988
+ if (pendingDecryption.retryCount >= MAX_DECRYPT_RETRY_COUNT) {
989
+ PENDING_MESSAGE_DECRYPTIONS.delete(messageKey);
990
+ }
777
991
  }
778
992
  };
993
+ setInterval(() => {
994
+ const now = Date.now();
995
+ const maxAge = 5 * 60 * 1000; // 5 minutes
996
+ for (const [key, pending] of PENDING_MESSAGE_DECRYPTIONS.entries()) {
997
+ if (now - pending.timestamp > maxAge) {
998
+ PENDING_MESSAGE_DECRYPTIONS.delete(key);
999
+ logger.debug({ key }, 'Removed old pending decryption from queue');
1000
+ }
1001
+ }
1002
+ }, 60000);
779
1003
  const fetchMessageHistory = async (count, oldestMsgKey, oldestMsgTimestamp) => {
780
1004
  if (!authState.creds.me?.id) {
781
1005
  throw new Boom('Not authenticated');
@@ -1143,6 +1367,21 @@ export const makeMessagesRecvSocket = (config) => {
1143
1367
  logger.trace(`sendActiveReceipts set to "${sendActiveReceipts}"`);
1144
1368
  }
1145
1369
  });
1370
+ // Setup automatic cleanup of old retry states (inspired by whatsmeow)
1371
+ const cleanupInterval = setInterval(() => {
1372
+ try {
1373
+ cleanupOldRetryStates();
1374
+ }
1375
+ catch (error) {
1376
+ logger.warn({ error: error.message }, 'Failed to cleanup old retry states');
1377
+ }
1378
+ }, 60 * 60 * 1000); // Run every hour
1379
+ // Cleanup on socket close
1380
+ sock.ev.on('connection.update', ({ connection }) => {
1381
+ if (connection === 'close') {
1382
+ clearInterval(cleanupInterval);
1383
+ }
1384
+ });
1146
1385
  return {
1147
1386
  ...sock,
1148
1387
  sendMessageAck,