Skip to content

Commit d636be8

Browse files
authored
Fix ConcurrentModificationException when shutting down async listeners (#3169)
1 parent 3cb261f commit d636be8

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/main/java/com/comphenix/protocol/async/AsyncFilterManager.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,6 @@
1717

1818
package com.comphenix.protocol.async;
1919

20-
import java.util.List;
21-
import java.util.Set;
22-
import java.util.concurrent.ConcurrentHashMap;
23-
import java.util.concurrent.atomic.AtomicInteger;
24-
25-
import org.bukkit.entity.Player;
26-
import org.bukkit.plugin.Plugin;
27-
2820
import com.comphenix.protocol.AsynchronousManager;
2921
import com.comphenix.protocol.PacketStream;
3022
import com.comphenix.protocol.PacketType;
@@ -37,8 +29,16 @@
3729
import com.comphenix.protocol.injector.collection.OutboundPacketListenerSet;
3830
import com.comphenix.protocol.scheduler.ProtocolScheduler;
3931
import com.google.common.base.Objects;
32+
import com.google.common.collect.ImmutableList;
4033
import com.google.common.collect.ImmutableSet;
4134
import com.google.common.collect.Iterables;
35+
import org.bukkit.entity.Player;
36+
import org.bukkit.plugin.Plugin;
37+
38+
import java.util.List;
39+
import java.util.Set;
40+
import java.util.concurrent.ConcurrentHashMap;
41+
import java.util.concurrent.atomic.AtomicInteger;
4242

4343
/**
4444
* Represents a filter manager for asynchronous packets.
@@ -284,9 +284,9 @@ public void unregisterAsyncHandlers(Plugin plugin) {
284284
}
285285

286286
private void unregisterAsyncHandlers(PacketProcessingQueue processingQueue, Plugin plugin) {
287-
287+
288288
// Iterate through every packet listener
289-
for (AsyncListenerHandler listener : processingQueue.values()) {
289+
for (AsyncListenerHandler listener : ImmutableList.copyOf(processingQueue.values())) {
290290
// Remove the listener
291291
if (Objects.equal(listener.getPlugin(), plugin)) {
292292
unregisterAsyncHandler(listener);

0 commit comments

Comments
 (0)