mirror of
https://github.com/GeyserMC/GeyserConnect.git
synced 2025-06-26 14:15:22 +02:00
Fix sessions still being held by Geyser when they are TransferPacket'ed to a bedrock server
This commit is contained in:
parent
2d6117ac8c
commit
c35bd6d56a
2 changed files with 13 additions and 12 deletions
|
@ -68,10 +68,10 @@ public class PacketHandler extends UpstreamPacketHandler {
|
|||
|
||||
@Override
|
||||
public void onDisconnect(String reason) {
|
||||
if (session.getAuthData() != null) {
|
||||
geyserConnect.logger().info(Utils.displayName(session) + " has disconnected (" + reason + ")");
|
||||
ServerManager.unloadServers(session);
|
||||
}
|
||||
// The user has disconnected without having connected to an actual server. If they have connected to
|
||||
// a server (transfer packet or geyser proxy), then the original packet handler has been restored.
|
||||
ServerManager.unloadServers(session);
|
||||
originalPacketHandler.onDisconnect(reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -155,12 +155,12 @@ public class PacketHandler extends UpstreamPacketHandler {
|
|||
|
||||
@Override
|
||||
public PacketSignal handle(ResourcePackClientResponsePacket packet) {
|
||||
return originalPacketHandler.handle(packet);
|
||||
return originalPacketHandler.handle(packet); // relies on state in the original handler
|
||||
}
|
||||
|
||||
@Override
|
||||
public PacketSignal handle(ResourcePackChunkRequestPacket packet) {
|
||||
return originalPacketHandler.handle(packet);
|
||||
return originalPacketHandler.handle(packet); // relies on state in the original handler
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -84,6 +84,13 @@ public class Utils {
|
|||
GeyserConnect.instance().logger().info("Sending " + Utils.displayName(session) + " to " + server.title());
|
||||
GeyserConnect.instance().logger().debug(server.toString());
|
||||
|
||||
// Save the player's servers since we are changing packet handlers
|
||||
// (and they are going to disconnect if it is a bedrock server)
|
||||
ServerManager.unloadServers(session);
|
||||
|
||||
// Restore the original packet handler
|
||||
session.getUpstream().getSession().setPacketHandler(originalPacketHandler);
|
||||
|
||||
if (server.bedrock()) {
|
||||
// Send them to the bedrock server
|
||||
TransferPacket transferPacket = new TransferPacket();
|
||||
|
@ -91,12 +98,6 @@ public class Utils {
|
|||
transferPacket.setPort(server.port());
|
||||
session.sendUpstreamPacket(transferPacket);
|
||||
} else {
|
||||
// Save the players servers since we are changing packet handlers
|
||||
ServerManager.unloadServers(session);
|
||||
|
||||
// Restore the original packet handler
|
||||
session.getUpstream().getSession().setPacketHandler(originalPacketHandler);
|
||||
|
||||
// Set the remote server and un-initialize the session
|
||||
session.remoteServer(server);
|
||||
session.getUpstream().setInitialized(false);
|
||||
|
|
Loading…
Add table
Reference in a new issue