diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-12-14 20:34:49 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-12-14 20:34:49 +0100 |
commit | 1939d2cade379c23bdca08aacaf22c8bff317016 (patch) | |
tree | 7fd9b53eca70fef9fa255c2f3d98f8c06e84b7af /src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java | |
parent | f496fc8fedaef0eb7655e7032d9e19c570095559 (diff) |
postpone prekey removal and republish to after mam
Diffstat (limited to 'src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java index 34047295a..09b3b1320 100644 --- a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java +++ b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java @@ -1445,7 +1445,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { plaintextMessage = message.decrypt(session, ownDeviceId); Integer preKeyId = session.getPreKeyIdAndReset(); if (preKeyId != null) { - postPreKeyMessageHandling(session, preKeyId, postponePreKeyMessageHandling); + postPreKeyMessageHandling(session, postponePreKeyMessageHandling); } } catch (NotEncryptedForThisDeviceException e) { if (account.getJid().asBareJid().equals(message.getFrom().asBareJid()) && message.getSenderDeviceId() == ownDeviceId) { @@ -1495,19 +1495,24 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { } } - private void postPreKeyMessageHandling(final XmppAxolotlSession session, int preKeyId, final boolean postpone) { + private void postPreKeyMessageHandling(final XmppAxolotlSession session, final boolean postpone) { if (postpone) { postponedSessions.add(session); } else { - //TODO: do not republish if we already removed this preKeyId - publishBundlesIfNeeded(false, false); + if (axolotlStore.flushPreKeys()) { + publishBundlesIfNeeded(false, false); + } else { + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": nothing to flush. Not republishing key"); + } completeSession(session); } } public void processPostponed() { if (postponedSessions.size() > 0) { - publishBundlesIfNeeded(false, false); + if (axolotlStore.flushPreKeys()) { + publishBundlesIfNeeded(false, false); + } } Iterator<XmppAxolotlSession> iterator = postponedSessions.iterator(); while (iterator.hasNext()) { @@ -1542,7 +1547,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { keyTransportMessage = message.getParameters(session, getOwnDeviceId()); Integer preKeyId = session.getPreKeyIdAndReset(); if (preKeyId != null) { - postPreKeyMessageHandling(session, preKeyId, postponePreKeyMessageHandling); + postPreKeyMessageHandling(session, postponePreKeyMessageHandling); } } catch (CryptoFailedException e) { Log.d(Config.LOGTAG, "could not decrypt keyTransport message " + e.getMessage()); |