Author: remm
Date: Mon Dec 1 17:57:30 2014
New Revision: 1642723
URL: http://svn.apache.org/r1642723
Log:
Enforce ping/pong size limit.
Relax exception handling (it seems all encode exceptions should be caught and
processed through onError).
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.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=1642723&r1=1642722&r2=1642723&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties Mon
Dec 1 17:57:30 2014
@@ -76,6 +76,7 @@ wsRemoteEndpoint.noEncoder=No encoder sp
wsRemoteEndpoint.wrongState=The remote endpoint was in state [{0}] which is an
invalid state for called method
wsRemoteEndpoint.nullData=Invalid null data argument
wsRemoteEndpoint.nullHandler=Invalid null handler argument
+wsRemoteEndpoint.tooMuchData=Ping or pong may not send more than 125 bytes
# Note the following message is used as a close reason in a WebSocket control
# frame and therefore must be 123 bytes (not characters) or less in length.
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java?rev=1642723&r1=1642722&r2=1642723&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
Mon Dec 1 17:57:30 2014
@@ -168,6 +168,9 @@ public abstract class WsRemoteEndpointIm
@Override
public void sendPing(ByteBuffer applicationData) throws IOException,
IllegalArgumentException {
+ if (applicationData.remaining() > 125) {
+ throw new
IllegalArgumentException(sm.getString("wsRemoteEndpoint.tooMuchData"));
+ }
startMessageBlock(Constants.OPCODE_PING, applicationData, true);
}
@@ -175,6 +178,9 @@ public abstract class WsRemoteEndpointIm
@Override
public void sendPong(ByteBuffer applicationData) throws IOException,
IllegalArgumentException {
+ if (applicationData.remaining() > 125) {
+ throw new
IllegalArgumentException(sm.getString("wsRemoteEndpoint.tooMuchData"));
+ }
startMessageBlock(Constants.OPCODE_PONG, applicationData, true);
}
@@ -582,7 +588,7 @@ public abstract class WsRemoteEndpointIm
throw new EncodeException(obj, sm.getString(
"wsRemoteEndpoint.noEncoder", obj.getClass()));
}
- } catch (EncodeException | IOException e) {
+ } catch (Exception e) {
SendResult sr = new SendResult(e);
completion.onResult(sr);
}
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java?rev=1642723&r1=1642722&r2=1642723&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
Mon Dec 1 17:57:30 2014
@@ -116,7 +116,7 @@ public abstract class PojoMessageHandler
if (t instanceof RuntimeException) {
throw (RuntimeException) t;
} else {
- throw new RuntimeException(t);
+ throw new RuntimeException(t.getMessage(), t);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]