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) { | ||||
| 		AxolotlAddress ownAddress = new AxolotlAddress(account.getJid().toBareJid().toPreppedString(), 0); | ||||
| 		Map<Integer, FetchStatus> own = fetchStatusMap.getAll(ownAddress); | ||||
| @ -805,9 +807,10 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 		Set<Integer> ownDeviceIds = new HashSet<>(getOwnDeviceIds()); | ||||
| 		boolean publish = false; | ||||
| 		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; | ||||
| 				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) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch