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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to