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.api.data.UserConnection;
import us.myles.ViaVersion.bukkit.util.NMSUtil; import us.myles.ViaVersion.bukkit.util.NMSUtil;
import us.myles.ViaVersion.exception.CancelDecoderException; import us.myles.ViaVersion.exception.CancelDecoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.util.PipelineUtil; import us.myles.ViaVersion.util.PipelineUtil;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
@ -52,7 +53,8 @@ public class BukkitDecodeHandler extends ByteToMessageDecoder {
@Override @Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { 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); super.exceptionCaught(ctx, cause);
if (!NMSUtil.isDebugPropertySet()) { if (!NMSUtil.isDebugPropertySet()) {
cause.printStackTrace(); // Print if CB doesn't already do it 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.api.data.UserConnection;
import us.myles.ViaVersion.bukkit.util.NMSUtil; import us.myles.ViaVersion.bukkit.util.NMSUtil;
import us.myles.ViaVersion.exception.CancelEncoderException; import us.myles.ViaVersion.exception.CancelEncoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import us.myles.ViaVersion.handlers.ChannelHandlerContextWrapper; import us.myles.ViaVersion.handlers.ChannelHandlerContextWrapper;
import us.myles.ViaVersion.handlers.ViaHandler; import us.myles.ViaVersion.handlers.ViaHandler;
import us.myles.ViaVersion.util.PipelineUtil; import us.myles.ViaVersion.util.PipelineUtil;
@ -33,7 +34,6 @@ public class BukkitEncodeHandler extends MessageToByteEncoder implements ViaHand
this.minecraftEncoder = minecraftEncoder; this.minecraftEncoder = minecraftEncoder;
} }
@Override @Override
protected void encode(final ChannelHandlerContext ctx, Object o, final ByteBuf bytebuf) throws Exception { protected void encode(final ChannelHandlerContext ctx, Object o, final ByteBuf bytebuf) throws Exception {
if (versionField != null) { if (versionField != null) {
@ -65,7 +65,8 @@ public class BukkitEncodeHandler extends MessageToByteEncoder implements ViaHand
@Override @Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { 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); super.exceptionCaught(ctx, cause);
if (!NMSUtil.isDebugPropertySet()) { if (!NMSUtil.isDebugPropertySet()) {
cause.printStackTrace(); // Print if CB doesn't already do it 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 io.netty.handler.codec.MessageToMessageDecoder;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.exception.CancelDecoderException; import us.myles.ViaVersion.exception.CancelDecoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import java.util.List; import java.util.List;
@ -36,7 +37,7 @@ public class BungeeDecodeHandler extends MessageToMessageDecoder<ByteBuf> {
@Override @Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelDecoderException) return; if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause); 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.api.data.UserConnection;
import us.myles.ViaVersion.bungee.util.BungeePipelineUtil; import us.myles.ViaVersion.bungee.util.BungeePipelineUtil;
import us.myles.ViaVersion.exception.CancelEncoderException; import us.myles.ViaVersion.exception.CancelEncoderException;
import us.myles.ViaVersion.exception.ViaCodecException;
import java.util.List; import java.util.List;
@ -77,7 +78,7 @@ public class BungeeEncodeHandler extends MessageToMessageEncoder<ByteBuf> {
@Override @Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
if (cause instanceof CancelEncoderException) return; if (cause instanceof ViaCodecException) return;
super.exceptionCaught(ctx, cause); 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. * Thrown during packet decoding when an incoming packet should be cancelled.
* Specifically extends {@link DecoderException} to prevent netty from wrapping the exception. * 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") { public static final CancelDecoderException CACHED = new CancelDecoderException("This packet is supposed to be cancelled; If you have debug enabled, you can ignore these") {
@Override @Override
public Throwable fillInStackTrace() { 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. * Thrown during packet encoding when an outgoing packet should be cancelled.
* Specifically extends {@link EncoderException} to prevent netty from wrapping the exception. * 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") { public static final CancelEncoderException CACHED = new CancelEncoderException("This packet is supposed to be cancelled; If you have debug enabled, you can ignore these") {
@Override @Override
public Throwable fillInStackTrace() { 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 * @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. * @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) { public static boolean containsCause(Throwable t, Class<?> c) {
do { while (t != null) {
if (t != null) { if (c.isAssignableFrom(t.getClass())) {
if (c.isAssignableFrom(t.getClass())) return true; return true;
t = t.getCause();
} }
} while (t != null);
t = t.getCause();
}
return false; return false;
} }

View File

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

View File

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

View File

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

View File

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