Need to synchronize all presences access

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/Presences.java | 15 +++--
1 file changed, 8 insertions(+), 7 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Presences.java 🔗

@@ -150,15 +150,16 @@ public class Presences {
     }
 
     public String firstWhichSupport(final String namespace) {
-        for (Map.Entry<String, Presence> entry : this.presences.entrySet()) {
-            String resource = entry.getKey();
-            Presence presence = entry.getValue();
-            ServiceDiscoveryResult disco = presence.getServiceDiscoveryResult();
-            if (disco != null && disco.getFeatures().contains(namespace)) {
-                return resource;
+        synchronized (this.presences) {
+            for (Map.Entry<String, Presence> entry : this.presences.entrySet()) {
+                String resource = entry.getKey();
+                Presence presence = entry.getValue();
+                ServiceDiscoveryResult disco = presence.getServiceDiscoveryResult();
+                if (disco != null && disco.getFeatures().contains(namespace)) {
+                    return resource;
+                }
             }
         }
-
         return null;
     }