remove broken devices only once to prevent loops
This commit is contained in:
parent
87746ca2ba
commit
dbda2afd6d
|
@ -785,6 +785,8 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Set<Integer> PREVIOUSLY_REMOVED_FROM_ANNOUNCEMENT = new HashSet<>();
|
||||||
|
|
||||||
private void finishBuildingSessionsFromPEP(final AxolotlAddress address) {
|
private void finishBuildingSessionsFromPEP(final AxolotlAddress address) {
|
||||||
AxolotlAddress ownAddress = new AxolotlAddress(account.getJid().toBareJid().toPreppedString(), 0);
|
AxolotlAddress ownAddress = new AxolotlAddress(account.getJid().toBareJid().toPreppedString(), 0);
|
||||||
Map<Integer, FetchStatus> own = fetchStatusMap.getAll(ownAddress);
|
Map<Integer, FetchStatus> own = fetchStatusMap.getAll(ownAddress);
|
||||||
|
@ -805,9 +807,10 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
Set<Integer> ownDeviceIds = new HashSet<>(getOwnDeviceIds());
|
Set<Integer> ownDeviceIds = new HashSet<>(getOwnDeviceIds());
|
||||||
boolean publish = false;
|
boolean publish = false;
|
||||||
for(Map.Entry<Integer,FetchStatus> entry : own.entrySet()) {
|
for(Map.Entry<Integer,FetchStatus> 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;
|
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) {
|
if (publish) {
|
||||||
|
|
Loading…
Reference in a new issue