From: AsamK Date: Tue, 21 Apr 2020 18:33:23 +0000 (+0200) Subject: Also catch IllegalArgumentException when sending messages during receive X-Git-Tag: v0.6.8~22 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/19b01ff2e9cd45335e59f064acb3731478d0b16d Also catch IllegalArgumentException when sending messages during receive It's necessary to keep receiving messages if a session state is corrupted. e.g: Exception in thread "main" java.lang.IllegalArgumentException: Empty key at java.base/javax.crypto.spec.SecretKeySpec.(Unknown Source) at org.whispersystems.libsignal.ratchet.ChainKey.getBaseMaterial(ChainKey.java:57) at org.whispersystems.libsignal.ratchet.ChainKey.getMessageKeys(ChainKey.java:47) at org.whispersystems.libsignal.SessionCipher.encrypt(SessionCipher.java:97) at org.signal.libsignal.metadata.SealedSessionCipher.encrypt(SealedSessionCipher.java:70) at org.whispersystems.signalservice.api.crypto.SignalServiceCipher.encrypt(SignalServiceCipher.java:86) at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessage(SignalServiceMessageSender.java:1456) at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessages(SignalServiceMessageSender.java:1406) at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendMessage(SignalServiceMessageSender.java:1276) at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendReceipt(SignalServiceMessageSender.java:206) at org.asamk.signal.manager.Manager.sendReceipt(Manager.java:686) at org.asamk.signal.manager.Manager.handleMessage(Manager.java:1562) at org.asamk.signal.manager.Manager.receiveMessages(Manager.java:1496) at org.asamk.signal.commands.ReceiveCommand.handleCommand(ReceiveCommand.java:160) at org.asamk.signal.Main.handleCommands(Main.java:137) at org.asamk.signal.Main.main(Main.java:60) --- diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index 11c49d84..cec04431 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -1560,7 +1560,7 @@ public class Manager implements Signal { if (content.isNeedsReceipt()) { try { sendReceipt(sender, message.getTimestamp()); - } catch (IOException | UntrustedIdentityException e) { + } catch (IOException | UntrustedIdentityException | IllegalArgumentException e) { e.printStackTrace(); } } @@ -1579,21 +1579,21 @@ public class Manager implements Signal { if (rm.isContactsRequest()) { try { sendContacts(); - } catch (UntrustedIdentityException | IOException e) { + } catch (UntrustedIdentityException | IOException | IllegalArgumentException e) { e.printStackTrace(); } } if (rm.isGroupsRequest()) { try { sendGroups(); - } catch (UntrustedIdentityException | IOException e) { + } catch (UntrustedIdentityException | IOException | IllegalArgumentException e) { e.printStackTrace(); } } if (rm.isBlockedListRequest()) { try { sendBlockedList(); - } catch (UntrustedIdentityException | IOException e) { + } catch (UntrustedIdentityException | IOException | IllegalArgumentException e) { e.printStackTrace(); } }