From 91ea9028f48aab8d65fa83d07685b694026b1587 Mon Sep 17 00:00:00 2001 From: norman Date: Fri, 11 Nov 2011 08:36:12 +0100 Subject: [PATCH] Revert "Adjust to current master" This reverts commit 16792a22be1075eb5f5810d2f33f2439b22ca98c. --- .../frame/DelimiterBasedFrameDecoder.java | 39 ++++++++++--------- .../frame/DelimiterBasedFrameDecoderTest.java | 3 +- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoder.java b/src/main/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoder.java index c7ea5d3a8c..6f4dd99963 100644 --- a/src/main/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoder.java @@ -69,7 +69,7 @@ public class DelimiterBasedFrameDecoder extends FrameDecoder { private final boolean stripDelimiter; private boolean discardingTooLongFrame; private int tooLongFrameLength; - private final boolean failImmediatelyOnTooLongFrame; + private boolean failImmediatelyOnTooLongFrame = false; /** * Creates a new instance. @@ -103,7 +103,6 @@ public class DelimiterBasedFrameDecoder extends FrameDecoder { }; this.maxFrameLength = maxFrameLength; this.stripDelimiter = stripDelimiter; - this.failImmediatelyOnTooLongFrame = false; } /** @@ -118,14 +117,6 @@ public class DelimiterBasedFrameDecoder extends FrameDecoder { this(maxFrameLength, true, delimiters); } - /** - * Calls {@link #DelimiterBasedFrameDecoder(int, boolean, boolean, ChannelBuffer...)} with failImmediatelyOnTooLongFrame set to false - */ - public DelimiterBasedFrameDecoder( - int maxFrameLength, boolean stripDelimiter, ChannelBuffer... delimiters) { - this(maxFrameLength, stripDelimiter, false, delimiters); - } - /** * Creates a new instance. * @@ -134,16 +125,10 @@ public class DelimiterBasedFrameDecoder extends FrameDecoder { * the length of the frame exceeds this value. * @param stripDelimiter whether the decoded frame should strip out the * delimiter or not - * @param failImmediatelyOnTooLongFrame If false (the default) a {@link TooLongFrameException} - * is thrown if the length of the frame exceeds maxFrameLength, - * after the delimiter has been read. - * If true a {@link TooLongFrameException} is thrown immediately - * when the length of the frame exceeds maxFrameLength, - * regardless of whether a delimiter has been found yet. * @param delimiters the delimiters */ public DelimiterBasedFrameDecoder( - int maxFrameLength, boolean stripDelimiter, boolean failImmediatelyOnTooLongFrame, ChannelBuffer... delimiters) { + int maxFrameLength, boolean stripDelimiter, ChannelBuffer... delimiters) { validateMaxFrameLength(maxFrameLength); if (delimiters == null) { throw new NullPointerException("delimiters"); @@ -159,9 +144,8 @@ public class DelimiterBasedFrameDecoder extends FrameDecoder { } this.maxFrameLength = maxFrameLength; this.stripDelimiter = stripDelimiter; - this.failImmediatelyOnTooLongFrame = failImmediatelyOnTooLongFrame; } - + @Override protected Object decode( ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { @@ -229,6 +213,23 @@ public class DelimiterBasedFrameDecoder extends FrameDecoder { } } + /** + * Set the behavior when a frame longer than maxFrameLength is encountered. + * + * @param failImmediatelyOnTooLongFrame If false (the default) a {@link TooLongFrameException} + * is thrown if the length of the frame exceeds maxFrameLength, + * after the delimiter has been read. + * If true a {@link TooLongFrameException} is thrown immediately + * when the length of the frame exceeds maxFrameLength, + * regardless of whether a delimiter has been found yet. + */ + public DelimiterBasedFrameDecoder setFailImmediatelyOnTooLongFrame( + boolean failImmediatelyOnTooLongFrame) + { + this.failImmediatelyOnTooLongFrame = failImmediatelyOnTooLongFrame; + return this; + } + private void fail(ChannelHandlerContext ctx, long frameLength) { if (frameLength > 0) { Channels.fireExceptionCaught( diff --git a/src/test/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoderTest.java b/src/test/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoderTest.java index 13c6506867..6d67acb0e4 100644 --- a/src/test/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoderTest.java +++ b/src/test/java/org/jboss/netty/handler/codec/frame/DelimiterBasedFrameDecoderTest.java @@ -50,7 +50,8 @@ public class DelimiterBasedFrameDecoderTest { @Test public void testFailImmediatelyTooLongFrameRecovery() throws Exception { DecoderEmbedder embedder = new DecoderEmbedder( - new DelimiterBasedFrameDecoder(1, true, true, Delimiters.nulDelimiter())); + new DelimiterBasedFrameDecoder(1, Delimiters.nulDelimiter()). + setFailImmediatelyOnTooLongFrame(true)); for (int i = 0; i < 2; i ++) { try {