Author: markt
Date: Mon Apr 29 12:28:00 2013
New Revision: 1476996
URL: http://svn.apache.org/r1476996
Log:
Fix some ISEs that were appearing in the logs.
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties?rev=1476996&r1=1476995&r2=1476996&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties Mon
Apr 29 12:28:00 2013
@@ -33,6 +33,7 @@ wsFrame.invalidUtf8Close=A WebSocket clo
wsFrame.noContinuation=A new message was started when a continuation frame was
expected
wsFrame.notMasked=The client frame was not masked but all client frames must
be masked
wsFrame.oneByteCloseCode=The client sent a close frame with a single byte
payload which is not valid
+wsFrame.sessionClosed=The client data can not be processed because the session
has already been closed
wsFrame.textMessageTooBig=The decoded text message was too big for the output
buffer and the endpoint does not support partial messages
wsFrame.wrongRsv=The client frame set the reserved bits to [{0}] which was not
supported by this endpoint
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=1476996&r1=1476995&r2=1476996&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Mon Apr 29
12:28:00 2013
@@ -159,25 +159,32 @@ public abstract class WsFrameBase {
sm.getString("wsFrame.noContinuation")));
}
} else {
- if (opCode == Constants.OPCODE_BINARY) {
- // New binary message
- textMessage = false;
- int size = wsSession.getMaxBinaryMessageBufferSize();
- if (size != messageBufferBinary.capacity()) {
- messageBufferBinary = ByteBuffer.allocate(size);
- }
- } else if (opCode == Constants.OPCODE_TEXT) {
- // New text message
- textMessage = true;
- int size = wsSession.getMaxTextMessageBufferSize();
- if (size != messageBufferText.capacity()) {
- messageBufferText = CharBuffer.allocate(size);
+ try {
+ if (opCode == Constants.OPCODE_BINARY) {
+ // New binary message
+ textMessage = false;
+ int size = wsSession.getMaxBinaryMessageBufferSize();
+ if (size != messageBufferBinary.capacity()) {
+ messageBufferBinary = ByteBuffer.allocate(size);
+ }
+ } else if (opCode == Constants.OPCODE_TEXT) {
+ // New text message
+ textMessage = true;
+ int size = wsSession.getMaxTextMessageBufferSize();
+ if (size != messageBufferText.capacity()) {
+ messageBufferText = CharBuffer.allocate(size);
+ }
+ } else {
+ throw new WsIOException(new CloseReason(
+ CloseCodes.PROTOCOL_ERROR,
+ sm.getString("wsFrame.invalidOpCode",
+ Integer.valueOf(opCode))));
}
- } else {
+ } catch (IllegalStateException ise) {
+ // Thrown if the session is already closed
throw new WsIOException(new CloseReason(
CloseCodes.PROTOCOL_ERROR,
- sm.getString("wsFrame.invalidOpCode",
- Integer.valueOf(opCode))));
+ sm.getString("wsFrame.sessionClosed")));
}
}
continuationExpected = !fin;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]