Skip to content

Commit b00ae8e

Browse files
authored
fix: make sendBuffer thread safe (#769)
Clearing the buffer upon timeout could lead to: ``` java.util.ConcurrentModificationException at java.base/java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:970) at java.base/java.util.LinkedList$ListItr.next(LinkedList.java:892) at io.socket.client.Socket$6$1.run(Socket.java:232) at java.base/java.util.TimerThread.mainLoop(Timer.java:556) at java.base/java.util.TimerThread.run(Timer.java:506) ``` Related: - #710 - #727 - #758 - #759
1 parent 774543e commit b00ae8e

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/main/java/io/socket/client/Socket.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public class Socket extends Emitter {
6161
private Map<String, String> auth;
6262
private Map<Integer, Ack> acks = new HashMap<>();
6363
private Queue<On.Handle> subs;
64-
private final Queue<List<Object>> receiveBuffer = new LinkedList<>();
65-
private final Queue<Packet<JSONArray>> sendBuffer = new LinkedList<>();
64+
private final Queue<List<Object>> receiveBuffer = new ConcurrentLinkedQueue<>();
65+
private final Queue<Packet<JSONArray>> sendBuffer = new ConcurrentLinkedQueue<>();
6666

6767
private ConcurrentLinkedQueue<Listener> onAnyIncomingListeners = new ConcurrentLinkedQueue<>();
6868
private ConcurrentLinkedQueue<Listener> onAnyOutgoingListeners = new ConcurrentLinkedQueue<>();

0 commit comments

Comments
 (0)