Fix cancelexception printing

This commit is contained in:
KennyTV 2020-06-09 21:29:19 +02:00
parent 6513df10e7
commit 7588609c56
No known key found for this signature in database
GPG Key ID: 6BE3B555EBC5982B
12 changed files with 37 additions and 17 deletions

View File

@ -6,6 +6,7 @@ import io.netty.handler.codec.ByteToMessageDecoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.bukkit.util.NMSUtil;
import us.myles.ViaVersion.exception.CancelDecoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.util.PipelineUtil;
import java.lang.reflect.InvocationTargetException;
@ -52,7 +53,8 @@ public class BukkitDecodeHandler extends ByteToMessageDecoder {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (PipelineUtil.containsCause(cause, CancelDecoderException.class)) return; // ProtocolLib compat
if (PipelineUtil.containsCause(cause, ViaCodecException.class)) return; // ProtocolLib compat
super.exceptionCaught(ctx, cause);
if (!NMSUtil.isDebugPropertySet()) {
cause.printStackTrace(); // Print if CB doesn't already do it

View File

@ -6,6 +6,7 @@ import io.netty.handler.codec.MessageToByteEncoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.bukkit.util.NMSUtil;
import us.myles.ViaVersion.exception.CancelEncoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.handlers.ChannelHandlerContextWrapper;
import us.myles.ViaVersion.handlers.ViaHandler;
import us.myles.ViaVersion.util.PipelineUtil;
@ -33,7 +34,6 @@ public class BukkitEncodeHandler extends MessageToByteEncoder implements ViaHand
this.minecraftEncoder = minecraftEncoder;
}
@Override
protected void encode(final ChannelHandlerContext ctx, Object o, final ByteBuf bytebuf) throws Exception {
if (versionField != null) {
@ -65,7 +65,8 @@ public class BukkitEncodeHandler extends MessageToByteEncoder implements ViaHand
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (PipelineUtil.containsCause(cause, CancelEncoderException.class)) return; // ProtocolLib compat
if (PipelineUtil.containsCause(cause, ViaCodecException.class)) return; // ProtocolLib compat
super.exceptionCaught(ctx, cause);
if (!NMSUtil.isDebugPropertySet()) {
cause.printStackTrace(); // Print if CB doesn't already do it

View File

@ -6,6 +6,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.exception.CancelDecoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import java.util.List;
@ -36,7 +37,7 @@ public class BungeeDecodeHandler extends MessageToMessageDecoder<ByteBuf> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelDecoderException) return;
if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause);
}
}

View File

@ -7,6 +7,7 @@ import io.netty.handler.codec.MessageToMessageEncoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.bungee.util.BungeePipelineUtil;
import us.myles.ViaVersion.exception.CancelEncoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import java.util.List;
@ -77,7 +78,7 @@ public class BungeeEncodeHandler extends MessageToMessageEncoder<ByteBuf> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelEncoderException) return;
if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause);
}
}

View File

@ -7,7 +7,7 @@ import us.myles.ViaVersion.api.Via;
* Thrown during packet decoding when an incoming packet should be cancelled.
* Specifically extends {@link DecoderException} to prevent netty from wrapping the exception.
*/
public class CancelDecoderException extends DecoderException {
public class CancelDecoderException extends DecoderException implements ViaCodecException {
public static final CancelDecoderException CACHED = new CancelDecoderException("This packet is supposed to be cancelled; If you have debug enabled, you can ignore these") {
@Override
public Throwable fillInStackTrace() {

View File

@ -7,7 +7,7 @@ import us.myles.ViaVersion.api.Via;
* Thrown during packet encoding when an outgoing packet should be cancelled.
* Specifically extends {@link EncoderException} to prevent netty from wrapping the exception.
*/
public class CancelEncoderException extends EncoderException {
public class CancelEncoderException extends EncoderException implements ViaCodecException {
public static final CancelEncoderException CACHED = new CancelEncoderException("This packet is supposed to be cancelled; If you have debug enabled, you can ignore these") {
@Override
public Throwable fillInStackTrace() {

View File

@ -0,0 +1,10 @@
package us.myles.ViaVersion.exception;
/**
* Shared dummy interface for {@link CancelDecoderException} and {@link CancelEncoderException}.
*
* @see CancelEncoderException
* @see CancelDecoderException
*/
public interface ViaCodecException {
}

View File

@ -91,13 +91,14 @@ public class PipelineUtil {
* @param c The exception to look for
* @return True if the stack trace contained it as its cause or if t is an instance of c.
*/
public static boolean containsCause(Throwable t, Class<? extends Throwable> c) {
do {
if (t != null) {
if (c.isAssignableFrom(t.getClass())) return true;
t = t.getCause();
public static boolean containsCause(Throwable t, Class<?> c) {
while (t != null) {
if (c.isAssignableFrom(t.getClass())) {
return true;
}
} while (t != null);
t = t.getCause();
}
return false;
}

View File

@ -5,6 +5,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.exception.CancelDecoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.util.PipelineUtil;
import java.lang.reflect.InvocationTargetException;
@ -52,7 +53,7 @@ public class SpongeDecodeHandler extends ByteToMessageDecoder {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelDecoderException) return;
if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause);
}
}

View File

@ -5,6 +5,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.exception.CancelEncoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.handlers.ChannelHandlerContextWrapper;
import us.myles.ViaVersion.handlers.ViaHandler;
import us.myles.ViaVersion.util.PipelineUtil;
@ -48,7 +49,7 @@ public class SpongeEncodeHandler extends MessageToByteEncoder<Object> implements
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelEncoderException) return;
if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause);
}
}

View File

@ -6,6 +6,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.exception.CancelDecoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import java.util.List;
@ -36,7 +37,7 @@ public class VelocityDecodeHandler extends MessageToMessageDecoder<ByteBuf> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelDecoderException) return;
if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause);
}
}

View File

@ -8,6 +8,7 @@ import io.netty.handler.codec.MessageToMessageDecoder;
import io.netty.handler.codec.MessageToMessageEncoder;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.exception.CancelEncoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.util.PipelineUtil;
import java.lang.reflect.InvocationTargetException;
@ -80,7 +81,7 @@ public class VelocityEncodeHandler extends MessageToMessageEncoder<ByteBuf> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelEncoderException) return;
if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause);
}
}