From 96f6dd85984be62763e0f2a7f82a52d985802c2c Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 25 Dec 2016 18:34:29 +0100 Subject: remove broken devices only once to prevent loops --- .../java/de/pixart/messenger/crypto/axolotl/AxolotlService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') 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 587e6e12e..a80f625f4 100644 --- a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java +++ b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java @@ -781,6 +781,8 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { } } + private final Set PREVIOUSLY_REMOVED_FROM_ANNOUNCEMENT = new HashSet<>(); + private void finishBuildingSessionsFromPEP(final AxolotlAddress address) { AxolotlAddress ownAddress = new AxolotlAddress(account.getJid().toBareJid().toPreppedString(), 0); Map own = fetchStatusMap.getAll(ownAddress); @@ -801,9 +803,10 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { Set ownDeviceIds = new HashSet<>(getOwnDeviceIds()); boolean publish = false; for(Map.Entry entry : own.entrySet()) { - if (entry.getValue() == FetchStatus.ERROR && ownDeviceIds.remove(entry.getKey())) { + int id = entry.getKey(); + if (entry.getValue() == FetchStatus.ERROR && PREVIOUSLY_REMOVED_FROM_ANNOUNCEMENT.add(id) && ownDeviceIds.remove(id)) { publish = true; - Log.d(Config.LOGTAG,account.getJid().toBareJid()+": error fetching own device with id "+entry.getKey()+". removing from annoucement"); + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": error fetching own device with id "+id+". removing from announcement"); } } if (publish) { -- cgit v1.2.3