From 0a8f0eed09fee4b1e82eeb8a7c42138de7675e71 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Sat, 31 May 2025 18:27:35 -0500 Subject: [PATCH 1/2] Post client disconnection callback before cancelling jobs --- .../in/dragonbra/javasteam/steam/steamclient/SteamClient.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt index df668138..a873f743 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.kt @@ -265,14 +265,14 @@ class SteamClient @JvmOverloads constructor( override fun onClientDisconnected(userInitiated: Boolean) { super.onClientDisconnected(userInitiated) + postCallback(DisconnectedCallback(userInitiated)) + // if we are disconnected, cancel all pending jobs jobManager.cancelPendingJobs() jobManager.setTimeoutsEnabled(false) clearHandlerCaches() - - postCallback(DisconnectedCallback(userInitiated)) } fun clearHandlerCaches() { From a162f741e7e73526fbe62359e78068bcc529ad06 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Sat, 31 May 2025 18:32:19 -0500 Subject: [PATCH 2/2] Fix potential race condition. --- .../javasteam/networking/steam3/WebSocketConnection.kt | 4 ++-- src/main/java/in/dragonbra/javasteam/steam/CMClient.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/networking/steam3/WebSocketConnection.kt b/src/main/java/in/dragonbra/javasteam/networking/steam3/WebSocketConnection.kt index 0c6f0b01..8f648453 100644 --- a/src/main/java/in/dragonbra/javasteam/networking/steam3/WebSocketConnection.kt +++ b/src/main/java/in/dragonbra/javasteam/networking/steam3/WebSocketConnection.kt @@ -117,9 +117,9 @@ class WebSocketConnection : job.cancelChildren() } - } - onDisconnected(userInitiated) + onDisconnected(userInitiated) + } } override fun send(data: ByteArray) { diff --git a/src/main/java/in/dragonbra/javasteam/steam/CMClient.java b/src/main/java/in/dragonbra/javasteam/steam/CMClient.java index 2860c497..278e53c6 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/CMClient.java +++ b/src/main/java/in/dragonbra/javasteam/steam/CMClient.java @@ -96,7 +96,8 @@ public abstract class CMClient { private final EventHandler disconnected = new EventHandler<>() { @Override public void handleEvent(Object sender, DisconnectedEventArgs e) { - logger.debug("EventHandler `disconnected` called"); + logger.debug("EventHandler `disconnected` called. User Initiated: " + e.isUserInitiated() + + ", Expected Disconnection: " + expectDisconnection); isConnected = false;