Author: markt Date: Thu Jan 31 14:09:31 2013 New Revision: 1440965 URL: http://svn.apache.org/viewvc?rev=1440965&view=rev Log: Tweak the buffering so the limits apply to the buffers passed to the client and have no impact on internal processing
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java?rev=1440965&r1=1440964&r2=1440965&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Thu Jan 31 14:09:31 2013 @@ -399,7 +399,7 @@ public abstract class WsFrameBase { } - private boolean processDataBinary() { + private boolean processDataBinary() throws IOException { // Copy the available data to the buffer while (!appendPayloadToMessage(messageBufferBinary)) { // Frame not complete - what did we run out of? @@ -408,6 +408,14 @@ public abstract class WsFrameBase { return false; } else { // Ran out of message buffer - flush it + if (!usePartial()) { + CloseReason cr = new CloseReason(CloseCodes.TOO_BIG, + sm.getString("wsFrame.bufferToSmall", + Integer.valueOf( + messageBufferBinary.capacity()), + Long.valueOf(payloadLength))); + throw new WsIOException(cr); + } messageBufferBinary.flip(); ByteBuffer copy = ByteBuffer.allocate(messageBufferBinary.limit()); @@ -487,19 +495,8 @@ public abstract class WsFrameBase { } - private void checkRoomPayload() throws IOException { + private void checkRoomPayload() { if (inputBuffer.length - readPos - payloadLength + payloadWritten < 0) { - if (Util.isControl(opCode)) { - makeRoom(); - return; - } - if (!usePartial() && (inputBuffer.length < payloadLength)) { - CloseReason cr = new CloseReason(CloseCodes.TOO_BIG, - sm.getString("wsFrame.bufferToSmall", - Integer.valueOf(inputBuffer.length), - Long.valueOf(payloadLength))); - throw new WsIOException(cr); - } makeRoom(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org