From 72f9d1b8cbbe252f16c0bcdeb1218e4286f1c804 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Thu, 17 Apr 2025 21:08:56 +0400 Subject: [PATCH] server: fixed miss cheat button on reconnection in server's test mode; --- .../src/main/java/mage/remote/SessionImpl.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Mage.Common/src/main/java/mage/remote/SessionImpl.java b/Mage.Common/src/main/java/mage/remote/SessionImpl.java index 963c12a4600..2dd6b539ebe 100644 --- a/Mage.Common/src/main/java/mage/remote/SessionImpl.java +++ b/Mage.Common/src/main/java/mage/remote/SessionImpl.java @@ -269,6 +269,7 @@ public class SessionImpl implements Session { } if (result) { + // server state used in client side to setup game panels and dialogs, e.g. test mode info or available game types serverState = server.getServerState(); if (serverState == null) { throw new MageVersionException(client.getVersion(), null); @@ -600,6 +601,16 @@ public class SessionImpl implements Session { @Override public void handleCallback(Callback callback) throws HandleCallbackException { try { + // on connection client will receive all waiting callbacks from a server, e.g. started table, draft pick, etc + // but it's require to get server settings first (server state), e.g. for test mode + // possible bugs: hidden cheat button or enabled clicks protection in draft + // so wait for server state some time + if (serverState == null) { + ThreadUtils.sleep(1000); + if (serverState == null) { + logger.error("Can't receive server state before other data (possible reason: unstable network)"); + } + } client.onCallback((ClientCallback) callback.getCallbackObject()); } catch (Exception ex) { logger.error("handleCallback error", ex);