Skip to content

Commit a3bcc61

Browse files
Fix race conditions from Play Store (#1696)
1 parent faf70c9 commit a3bcc61

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

server/core/src/main/java/dev/slimevr/tracking/trackers/udp/TrackersUDPServer.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,9 @@ class TrackersUDPServer(private val port: Int, name: String, private val tracker
397397
} catch (e: Exception) {
398398
e.printStackTrace()
399399
} finally {
400-
Util.close(socket)
400+
if (::socket.isInitialized) {
401+
Util.close(socket)
402+
}
401403
}
402404
}
403405

server/core/src/main/java/dev/slimevr/websocketapi/WebsocketConnection.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dev.slimevr.protocol.ConnectionContext;
44
import dev.slimevr.protocol.GenericConnection;
55
import org.java_websocket.WebSocket;
6+
import org.java_websocket.exceptions.WebsocketNotConnectedException;
67

78
import java.nio.ByteBuffer;
89
import java.util.UUID;
@@ -27,8 +28,13 @@ public ConnectionContext getContext() {
2728

2829
@Override
2930
public void send(ByteBuffer bytes) {
30-
if (this.conn.isOpen())
31-
this.conn.send(bytes.slice());
31+
if (this.conn.isOpen()) {
32+
try {
33+
this.conn.send(bytes.slice());
34+
} catch (WebsocketNotConnectedException ignored) {
35+
// Race condition if it closes between our check and sending
36+
}
37+
}
3238
}
3339

3440
@Override

0 commit comments

Comments
 (0)