- logger.debug("Received invalid message, queuing renew session action.");
- actions.add(new RenewSessionAction(sender));
+ final var senderProfile = context.getProfileHelper().getRecipientProfile(sender);
+ final var selfProfile = context.getProfileHelper()
+ .getRecipientProfile(account.getSelfRecipientId());
+ if (e.getSenderDevice() != account.getDeviceId()
+ && senderProfile != null
+ && senderProfile.getCapabilities().contains(Profile.Capability.senderKey)
+ && selfProfile != null
+ && selfProfile.getCapabilities().contains(Profile.Capability.senderKey)) {
+ logger.debug("Received invalid message, requesting message resend.");
+ actions.add(new SendRetryMessageRequestAction(sender, e, envelope));
+ } else {
+ logger.debug("Received invalid message, queuing renew session action.");
+ actions.add(new RenewSessionAction(sender));
+ }