Skip to content

Commit 0edd943

Browse files
committed
Pre-apply 'DisconnectPacket not being forwarded to a client in ConfigSessionHandler & TransitionSessionHandler'
1 parent 351be0d commit 0edd943

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

proxy/src/main/java/com/velocitypowered/proxy/connection/backend/ConfigSessionHandler.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,12 @@ public boolean handle(final FinishedUpdatePacket packet) {
254254

255255
@Override
256256
public boolean handle(final DisconnectPacket packet) {
257-
serverConn.disconnect();
257+
MinecraftConnection playerConnection = serverConn.getPlayer().getConnection();
258+
playerConnection.closeWith(DisconnectPacket.create(
259+
packet.getReason().getComponent(),
260+
playerConnection.getProtocolVersion(),
261+
playerConnection.getState()));
262+
258263
resultFuture.complete(ConnectionRequestResults.forDisconnect(packet, serverConn.getServer()));
259264
return true;
260265
}

proxy/src/main/java/com/velocitypowered/proxy/connection/backend/TransitionSessionHandler.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,16 @@ public boolean handle(final JoinGamePacket packet) {
179179

180180
@Override
181181
public boolean handle(final DisconnectPacket packet) {
182-
final MinecraftConnection connection = serverConn.ensureConnected();
183-
serverConn.disconnect();
182+
final MinecraftConnection connection = serverConn.getPlayer().getConnection();
183+
connection.closeWith(DisconnectPacket.create(
184+
packet.getReason().getComponent(),
185+
connection.getProtocolVersion(),
186+
connection.getState()));
184187

185188
// If we were in the middle of the Forge handshake, it is not safe to proceed. We must kick
186189
// the client.
187-
if (connection.getType() == ConnectionTypes.LEGACY_FORGE
188-
&& !serverConn.getPhase().consideredComplete()) {
189-
resultFuture.complete(ConnectionRequestResults.forUnsafeDisconnect(packet,
190-
serverConn.getServer()));
190+
if (connection.getType() == ConnectionTypes.LEGACY_FORGE && !serverConn.getPhase().consideredComplete()) {
191+
resultFuture.complete(ConnectionRequestResults.forUnsafeDisconnect(packet, serverConn.getServer()));
191192
} else {
192193
resultFuture.complete(ConnectionRequestResults.forDisconnect(packet, serverConn.getServer()));
193194
}

0 commit comments

Comments
 (0)