Fix: Server event handler duplication and null safety

- Remove static constructor that registered MessageReceived handler
- Add proper cleanup in StartServer() before creating new instance
- Add null checks in IsRunning, Update(), and OnApplicationQuit()
- Prevents double event handler registration on reconnect

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-14 10:50:57 +01:00
parent 888c807b96
commit 2f42cf9366

View File

@@ -18,18 +18,22 @@ namespace KCM
{
public class KCServer : MonoBehaviour
{
public static Server server = new Server(Main.steamServer);
public static Server server = null;
public static bool started = false;
static KCServer()
{
//server.registerMessageHandler(typeof(KCServer).GetMethod("ClientJoined"));
server.MessageReceived += PacketHandler.HandlePacketServer;
}
public static void StartServer()
{
// Stop and cleanup existing server if running
if (server != null)
{
if (server.IsRunning)
{
server.Stop();
}
// Unsubscribe old event handlers to prevent memory leaks
server.MessageReceived -= PacketHandler.HandlePacketServer;
}
server = new Server(Main.steamServer);
server.MessageReceived += PacketHandler.HandlePacketServer;
@@ -95,16 +99,18 @@ namespace KCM
}
}*/
public static bool IsRunning { get { return server.IsRunning; } }
public static bool IsRunning { get { return server != null && server.IsRunning; } }
private void Update()
{
server.Update();
if (server != null)
server.Update();
}
private void OnApplicationQuit()
{
server.Stop();
if (server != null && server.IsRunning)
server.Stop();
}
private void Preload(KCModHelper helper)