geforkt von Mirrors/Velocity
Close one last "proxy crasher" loophole
Dieser Commit ist enthalten in:
Ursprung
5d3479aae5
Commit
558c158592
@ -145,7 +145,7 @@ public class MinecraftConnection extends ChannelInboundHandlerAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
ctx.pipeline().addBefore(MINECRAFT_DECODER, "discard", DiscardHandler.HANDLER);
|
||||
installDiscardHandler(ctx);
|
||||
ctx.close();
|
||||
}
|
||||
}
|
||||
@ -161,6 +161,14 @@ public class MinecraftConnection extends ChannelInboundHandlerAdapter {
|
||||
Preconditions.checkState(this.channel.eventLoop().inEventLoop(), "Not in event loop");
|
||||
}
|
||||
|
||||
private void installDiscardHandler(ChannelHandlerContext ctx) {
|
||||
ctx.pipeline().addBefore(MINECRAFT_DECODER, "discard", DiscardHandler.HANDLER);
|
||||
}
|
||||
|
||||
private void installDiscardHandler() {
|
||||
channel.pipeline().addBefore(MINECRAFT_DECODER, "discard", DiscardHandler.HANDLER);
|
||||
}
|
||||
|
||||
public EventLoop eventLoop() {
|
||||
return channel.eventLoop();
|
||||
}
|
||||
@ -201,6 +209,7 @@ public class MinecraftConnection extends ChannelInboundHandlerAdapter {
|
||||
public void closeWith(Object msg) {
|
||||
if (channel.isActive()) {
|
||||
knownDisconnect = true;
|
||||
installDiscardHandler();
|
||||
channel.writeAndFlush(msg).addListener(ChannelFutureListener.CLOSE);
|
||||
}
|
||||
}
|
||||
@ -210,6 +219,7 @@ public class MinecraftConnection extends ChannelInboundHandlerAdapter {
|
||||
*/
|
||||
public void close() {
|
||||
if (channel.isActive()) {
|
||||
installDiscardHandler();
|
||||
channel.close();
|
||||
}
|
||||
}
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren