fix: Fix legacy ping passthough (#3601)

This commit is contained in:
nils 2023-03-10 06:13:20 +01:00 committed by GitHub
parent a5a4f5c3ea
commit 2f23e5cb9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -79,7 +79,8 @@ public class GeyserLegacyPingPassthrough implements IGeyserPingPassthrough, Runn
try (Socket socket = new Socket()) { try (Socket socket = new Socket()) {
String address = geyser.getConfig().getRemote().address(); String address = geyser.getConfig().getRemote().address();
int port = geyser.getConfig().getRemote().port(); int port = geyser.getConfig().getRemote().port();
socket.connect(new InetSocketAddress(address, port), 5000); InetSocketAddress endpoint = new InetSocketAddress(address, port);
socket.connect(endpoint, 5000);
ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
try (DataOutputStream handshake = new DataOutputStream(byteArrayStream)) { try (DataOutputStream handshake = new DataOutputStream(byteArrayStream)) {
@ -103,7 +104,8 @@ public class GeyserLegacyPingPassthrough implements IGeyserPingPassthrough, Runn
HAProxyProxiedProtocol.TCP4.byteValue() : HAProxyProxiedProtocol.TCP6.byteValue()); HAProxyProxiedProtocol.TCP4.byteValue() : HAProxyProxiedProtocol.TCP6.byteValue());
byte[] srcAddrBytes = NetUtil.createByteArrayFromIpAddressString( byte[] srcAddrBytes = NetUtil.createByteArrayFromIpAddressString(
((InetSocketAddress) socket.getLocalSocketAddress()).getAddress().getHostAddress()); ((InetSocketAddress) socket.getLocalSocketAddress()).getAddress().getHostAddress());
byte[] dstAddrBytes = NetUtil.createByteArrayFromIpAddressString(address); byte[] dstAddrBytes = NetUtil.createByteArrayFromIpAddressString(
endpoint.getAddress().getHostAddress());
dataOutputStream.writeShort(srcAddrBytes.length + dstAddrBytes.length + 4); dataOutputStream.writeShort(srcAddrBytes.length + dstAddrBytes.length + 4);
dataOutputStream.write(srcAddrBytes); dataOutputStream.write(srcAddrBytes);
dataOutputStream.write(dstAddrBytes); dataOutputStream.write(dstAddrBytes);