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: - https://github.com/socketio/socket.io-client-java/issues/710 - https://github.com/socketio/socket.io-client-java/issues/727 - https://github.com/socketio/socket.io-client-java/pull/758 - https://github.com/socketio/socket.io-client-java/issues/759
This commit is contained in:
committed by
GitHub
parent
774543ef57
commit
b00ae8eec1
@@ -61,8 +61,8 @@ public class Socket extends Emitter {
|
||||
private Map<String, String> auth;
|
||||
private Map<Integer, Ack> acks = new HashMap<>();
|
||||
private Queue<On.Handle> subs;
|
||||
private final Queue<List<Object>> receiveBuffer = new LinkedList<>();
|
||||
private final Queue<Packet<JSONArray>> sendBuffer = new LinkedList<>();
|
||||
private final Queue<List<Object>> receiveBuffer = new ConcurrentLinkedQueue<>();
|
||||
private final Queue<Packet<JSONArray>> sendBuffer = new ConcurrentLinkedQueue<>();
|
||||
|
||||
private ConcurrentLinkedQueue<Listener> onAnyIncomingListeners = new ConcurrentLinkedQueue<>();
|
||||
private ConcurrentLinkedQueue<Listener> onAnyOutgoingListeners = new ConcurrentLinkedQueue<>();
|
||||
|
||||
Reference in New Issue
Block a user