diff --git a/src/main/java/me/finn/unlegitlibrary/network/system/server/ConnectionHandler.java b/src/main/java/me/finn/unlegitlibrary/network/system/server/ConnectionHandler.java index 013fe81..bb3e556 100644 --- a/src/main/java/me/finn/unlegitlibrary/network/system/server/ConnectionHandler.java +++ b/src/main/java/me/finn/unlegitlibrary/network/system/server/ConnectionHandler.java @@ -47,7 +47,6 @@ public class ConnectionHandler { receiveThread.start(); sendPacket(new ClientIDPacket(clientID)); - server.getEventManager().executeEvent(new S_ConnectionHandlerConnectedEvent(this)); } public final int getClientID() { diff --git a/src/main/java/me/finn/unlegitlibrary/network/system/server/NetworkServer.java b/src/main/java/me/finn/unlegitlibrary/network/system/server/NetworkServer.java index fe46590..b094467 100644 --- a/src/main/java/me/finn/unlegitlibrary/network/system/server/NetworkServer.java +++ b/src/main/java/me/finn/unlegitlibrary/network/system/server/NetworkServer.java @@ -14,6 +14,7 @@ import me.finn.unlegitlibrary.network.system.packets.impl.ClientDisconnectPacket import me.finn.unlegitlibrary.network.system.packets.impl.ClientIDPacket; import me.finn.unlegitlibrary.network.system.server.events.connection.S_IncomingConnectionEvent; import me.finn.unlegitlibrary.network.system.server.events.connection.S_IncomingConnectionThreadFailedEvent; +import me.finn.unlegitlibrary.network.system.server.events.state.connection.S_ConnectionHandlerConnectedEvent; import me.finn.unlegitlibrary.network.system.server.events.state.server.S_StartedEvent; import me.finn.unlegitlibrary.network.system.server.events.state.server.S_StoppedEvent; import me.finn.unlegitlibrary.network.system.packets.Packet; @@ -243,8 +244,17 @@ public class NetworkServer extends DefaultMethodsOverrider { if (logger == null) System.out.println("Accepted connection from " + socket.getRemoteSocketAddress()); else logger.info("Accepted connection from " + socket.getRemoteSocketAddress()); - eventManager.executeEvent(new S_IncomingConnectionEvent(this, socket)); - connectionHandlers.add(new ConnectionHandler(this, socket, connectionHandlers.size() + 1)); + S_IncomingConnectionEvent incomingConnectionEvent = new S_IncomingConnectionEvent(this, socket); + eventManager.executeEvent(incomingConnectionEvent); + + if (incomingConnectionEvent.isCancelled()) { + socket.close(); + continue; + } + + ConnectionHandler connectionHandler = new ConnectionHandler(this, socket, connectionHandlers.size() + 1); + connectionHandlers.add(connectionHandler); + eventManager.executeEvent(new S_ConnectionHandlerConnectedEvent(connectionHandler)); } } catch (IOException exception) { if (logger == null) System.err.println("Accept exception: " + exception.getMessage()); diff --git a/src/main/java/me/finn/unlegitlibrary/network/system/server/events/connection/S_IncomingConnectionEvent.java b/src/main/java/me/finn/unlegitlibrary/network/system/server/events/connection/S_IncomingConnectionEvent.java index 8198260..ec27f96 100644 --- a/src/main/java/me/finn/unlegitlibrary/network/system/server/events/connection/S_IncomingConnectionEvent.java +++ b/src/main/java/me/finn/unlegitlibrary/network/system/server/events/connection/S_IncomingConnectionEvent.java @@ -16,12 +16,13 @@ package me.finn.unlegitlibrary.network.system.server.events.connection; +import me.finn.unlegitlibrary.event.impl.CancellableEvent; import me.finn.unlegitlibrary.event.impl.Event; import me.finn.unlegitlibrary.network.system.server.NetworkServer; import java.net.Socket; -public class S_IncomingConnectionEvent extends Event { +public class S_IncomingConnectionEvent extends CancellableEvent { public final NetworkServer server; public final Socket socket;