diff --git a/server/core/src/main/java/dev/slimevr/tracking/trackers/udp/TrackersUDPServer.kt b/server/core/src/main/java/dev/slimevr/tracking/trackers/udp/TrackersUDPServer.kt index 5448c08cd..c446dfec4 100644 --- a/server/core/src/main/java/dev/slimevr/tracking/trackers/udp/TrackersUDPServer.kt +++ b/server/core/src/main/java/dev/slimevr/tracking/trackers/udp/TrackersUDPServer.kt @@ -397,7 +397,9 @@ class TrackersUDPServer(private val port: Int, name: String, private val tracker } catch (e: Exception) { e.printStackTrace() } finally { - Util.close(socket) + if (::socket.isInitialized) { + Util.close(socket) + } } } diff --git a/server/core/src/main/java/dev/slimevr/websocketapi/WebsocketConnection.java b/server/core/src/main/java/dev/slimevr/websocketapi/WebsocketConnection.java index 1c0adae84..73340b744 100644 --- a/server/core/src/main/java/dev/slimevr/websocketapi/WebsocketConnection.java +++ b/server/core/src/main/java/dev/slimevr/websocketapi/WebsocketConnection.java @@ -3,6 +3,7 @@ package dev.slimevr.websocketapi; import dev.slimevr.protocol.ConnectionContext; import dev.slimevr.protocol.GenericConnection; import org.java_websocket.WebSocket; +import org.java_websocket.exceptions.WebsocketNotConnectedException; import java.nio.ByteBuffer; import java.util.UUID; @@ -27,8 +28,13 @@ public class WebsocketConnection implements GenericConnection { @Override public void send(ByteBuffer bytes) { - if (this.conn.isOpen()) - this.conn.send(bytes.slice()); + if (this.conn.isOpen()) { + try { + this.conn.send(bytes.slice()); + } catch (WebsocketNotConnectedException ignored) { + // Race condition if it closes between our check and sending + } + } } @Override