From a345b818469420f8036f003c33d8fbab7871d9b2 Mon Sep 17 00:00:00 2001 From: Finn Date: Sun, 18 Jan 2026 22:36:53 +0100 Subject: [PATCH] Bug fix --- .../protocol/listeners/ClientListener.java | 3 +- .../protocol/side/client/ProtocolClient.java | 48 ++++++++++++------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java index 9522dee..eaf2b49 100644 --- a/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java +++ b/src/main/java/org/openautonomousconnection/protocol/listeners/ClientListener.java @@ -4,6 +4,7 @@ import dev.unlegitdqrk.unlegitlibrary.event.EventListener; import dev.unlegitdqrk.unlegitlibrary.event.Listener; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.connect.ClientConnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent; +import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientFullyDisconnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; import lombok.Getter; import org.openautonomousconnection.protocol.annotations.ProtocolInfo; @@ -59,7 +60,7 @@ public final class ClientListener extends EventListener { * @param event The client disconnected event. */ @Listener - public void onDisconnect(ClientDisconnectedEvent event) { + public void onDisconnect(ClientFullyDisconnectedEvent event) { client.onDisconnect(event); } diff --git a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java index 112dafb..26db99b 100644 --- a/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java +++ b/src/main/java/org/openautonomousconnection/protocol/side/client/ProtocolClient.java @@ -4,7 +4,6 @@ import dev.unlegitdqrk.unlegitlibrary.network.system.client.NetworkClient; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientDisconnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.disconnect.ClientFullyDisconnectedEvent; import dev.unlegitdqrk.unlegitlibrary.network.system.utils.Transport; -import dev.unlegitdqrk.unlegitlibrary.network.system.utils.TransportPolicy; import dev.unlegitdqrk.unlegitlibrary.network.utils.NetworkUtils; import dev.unlegitdqrk.unlegitlibrary.utils.DefaultMethodsOverrider; import lombok.Getter; @@ -55,28 +54,38 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { */ private ProtocolVersion serverVersion = null; - @Getter - private String insHost; - - @Getter - private int insPort; - /** * Initializes the ProtocolClient, setting up certificate folders and the INS client connection. */ public ProtocolClient(String insHost, int insPort) { // Initialize and verify certificate folders and files folderStructure = new ClientCertificateFolderStructure(); - this.insHost = insHost; - this.insPort = insPort; + } + + /** + * Connects to a INS Server. + * + * @param host Server host + * @param tcpPort TCP port + * @param udpPort UDP port + */ + public final void buildINSConnection(String host, int tcpPort, int udpPort) { + if (!protocolBridge.isRunningAsClient()) + throw new IllegalStateException("Not running as client"); + + if (clientToINS != null && + (clientToINS.isFullyConnected() || clientToINS.isTcpConnected() || clientToINS.isUdpConnected())) + return; + + createINSConnection(host, tcpPort, udpPort); } /** * Initialize connection to INS server */ - private void createNetworkClient() { + private void createINSConnection(String host, int tcpPort, int udpPort) { clientToINS = new NetworkClient.ClientBuilder().setLogger(protocolBridge.getLogger()).setProxy(protocolBridge.getProxy()). - setHost(insHost).setTcpPort(insPort).setUdpPort(0). + setHost(host).setTcpPort(tcpPort).setUdpPort(udpPort). setPacketHandler(protocolBridge.getProtocolValues().packetHandler).setEventManager(protocolBridge.getProtocolValues().eventManager). setRootCAFolder(folderStructure.publicCAFolder).setClientCertificatesFolder(folderStructure.publicClientFolder, folderStructure.privateClientFolder). build(); @@ -89,7 +98,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { * @param tcpPort TCP port * @param udpPort UDP port */ - public final void connectToServer(String host, int tcpPort, int udpPort) { + public final void buildServerConnection(String host, int tcpPort, int udpPort) { if (!protocolBridge.isRunningAsClient()) throw new IllegalStateException("Not running as client"); @@ -97,7 +106,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { (clientToServer.isFullyConnected() || clientToServer.isTcpConnected() || clientToServer.isUdpConnected())) return; - createServerClient(host, tcpPort, udpPort); + createServerConnection(host, tcpPort, udpPort); } /** @@ -116,7 +125,7 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { * @param tcpPort Server port * @param udpPort Server port */ - private final void createServerClient(String host, int tcpPort, int udpPort) { + private final void createServerConnection(String host, int tcpPort, int udpPort) { clientToServer = new NetworkClient.ClientBuilder() .setLogger(protocolBridge.getLogger()) .setProxy(protocolBridge.getProxy()) @@ -144,7 +153,6 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { throw new IllegalStateException("ProtocolBridge already attached!"); this.protocolBridge = bridge; - createNetworkClient(); } /** @@ -231,14 +239,18 @@ public abstract class ProtocolClient extends DefaultMethodsOverrider { * * @param event the ClientDisconnectedEvent triggered on INS disconnection. */ - public final void onDisconnect(ClientDisconnectedEvent event) { + public final void onDisconnect(ClientFullyDisconnectedEvent event) { // Reset server version on INS disconnect - if (!clientToINS.isTcpConnected()) { + if (!clientToINS.isFullyConnected() && clientToINS != null) { insServerVersion = null; + clientToINS = null; disconnectFromServer(); } - if (!clientToServer.isFullyConnected()) serverVersion = null; + if (!clientToServer.isFullyConnected() && clientToServer != null) { + serverVersion = null; + clientToServer = null; + } } /**