From 6cfdf2bc6ff9c3a7c0cf0ff6c7bb9507c77f95fc Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 15 Feb 2017 20:14:41 +0100 Subject: [PATCH] Use CopyOnWriteArraySet for pingFailedListeners To prevent java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:788) at java.util.HashMap$KeyIterator.next(HashMap.java:815) at org.jivesoftware.smackx.ping.PingManager.pingMyServer(PingManager.java:252) at org.kontalk.service.msgcenter.MessageCenterService$3.run(MessageCenterService.java:1114) at java.lang.Thread.run(Thread.java:818) Thanks to Daniele Ricci for reporting this. --- .../java/org/jivesoftware/smackx/ping/PingManager.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java index 11f9dcd0f..39b77e81d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java @@ -1,6 +1,6 @@ /** * - * Copyright 2012-2015 Florian Schmaus + * Copyright 2012-2017 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,10 @@ */ package org.jivesoftware.smackx.ping; -import java.util.Collections; -import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.WeakHashMap; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -105,8 +104,7 @@ public final class PingManager extends Manager { defaultPingInterval = interval; } - private final Set pingFailedListeners = Collections - .synchronizedSet(new HashSet()); + private final Set pingFailedListeners = new CopyOnWriteArraySet<>(); private final ScheduledExecutorService executorService;