From 8725178d6d33e47f10639b66f5be74d1894032d8 Mon Sep 17 00:00:00 2001 From: Andrew Steinborn Date: Sun, 17 Nov 2019 14:52:12 -0500 Subject: [PATCH] Flush queued packets to the client in case we can't write --- .../proxy/connection/client/ClientPlaySessionHandler.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java index 9b22408b..5c635b42 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ClientPlaySessionHandler.java @@ -274,9 +274,15 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler { @Override public void writabilityChanged() { + boolean writable = player.getConnection().getChannel().isWritable(); + + if (!writable) { + // We might have packets queued for the server, so flush them now to free up memory. + player.getConnection().flush(); + } + VelocityServerConnection serverConn = player.getConnectedServer(); if (serverConn != null) { - boolean writable = player.getConnection().getChannel().isWritable(); MinecraftConnection smc = serverConn.getConnection(); if (smc != null) { smc.setAutoReading(writable);