You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2015/02/24 17:44:05 UTC

svn commit: r1662014 - /tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java

Author: remm
Date: Tue Feb 24 16:44:05 2015
New Revision: 1662014

URL: http://svn.apache.org/r1662014
Log:
Catch ISE thrown by the closed IS for a rare but possibly legitimate scenario.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java?rev=1662014&r1=1662013&r2=1662014&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java Tue Feb 24 16:44:05 2015
@@ -137,7 +137,11 @@ public class WsHttpUpgradeHandler implem
             wsRemoteEndpointServer.setTransformation(wsFrame.getTransformation());
             ep.onOpen(wsSession, endpointConfig);
             webSocketContainer.registerSession(ep, wsSession);
-            sis.setReadListener(new WsReadListener(this, wsFrame));
+            try {
+                sis.setReadListener(new WsReadListener(this, wsFrame));
+            } catch (IllegalStateException e) {
+                // It is not impossible that the stream is already closed during onOpen
+            }
         } catch (DeploymentException e) {
             throw new IllegalArgumentException(e);
         } finally {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r1662014 - /tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java

Posted by Rémy Maucherat <re...@apache.org>.
2015-02-24 21:26 GMT+01:00 Christopher Schultz <chris@christopherschultz.net
>:

> Rémy,
>
> On 2/24/15 11:44 AM, remm@apache.org wrote:
> > Author: remm
> > Date: Tue Feb 24 16:44:05 2015
> > New Revision: 1662014
> >
> > URL: http://svn.apache.org/r1662014
> > Log:
> > Catch ISE thrown by the closed IS for a rare but possibly legitimate
> scenario.
> >
> > Modified:
> >
>  tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
> >
> > Modified:
> tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
> > URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java?rev=1662014&r1=1662013&r2=1662014&view=diff
> >
> ==============================================================================
> > ---
> tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
> (original)
> > +++
> tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
> Tue Feb 24 16:44:05 2015
> > @@ -137,7 +137,11 @@ public class WsHttpUpgradeHandler implem
> >
> wsRemoteEndpointServer.setTransformation(wsFrame.getTransformation());
> >              ep.onOpen(wsSession, endpointConfig);
> >              webSocketContainer.registerSession(ep, wsSession);
> > -            sis.setReadListener(new WsReadListener(this, wsFrame));
> > +            try {
> > +                sis.setReadListener(new WsReadListener(this, wsFrame));
> > +            } catch (IllegalStateException e) {
> > +                // It is not impossible that the stream is already
> closed during onOpen
> > +            }
>
> Do you think it would it be useful to add a trace-level log in the catch
> branch, for debugging?
>

Some user code is run before that, so a lot of things can happen and since
this code is inside the container, it looks fine to me.

Rémy

Re: svn commit: r1662014 - /tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java

Posted by Christopher Schultz <ch...@christopherschultz.net>.
Rémy,

On 2/24/15 11:44 AM, remm@apache.org wrote:
> Author: remm
> Date: Tue Feb 24 16:44:05 2015
> New Revision: 1662014
> 
> URL: http://svn.apache.org/r1662014
> Log:
> Catch ISE thrown by the closed IS for a rare but possibly legitimate scenario.
> 
> Modified:
>     tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
> 
> Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java?rev=1662014&r1=1662013&r2=1662014&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java Tue Feb 24 16:44:05 2015
> @@ -137,7 +137,11 @@ public class WsHttpUpgradeHandler implem
>              wsRemoteEndpointServer.setTransformation(wsFrame.getTransformation());
>              ep.onOpen(wsSession, endpointConfig);
>              webSocketContainer.registerSession(ep, wsSession);
> -            sis.setReadListener(new WsReadListener(this, wsFrame));
> +            try {
> +                sis.setReadListener(new WsReadListener(this, wsFrame));
> +            } catch (IllegalStateException e) {
> +                // It is not impossible that the stream is already closed during onOpen
> +            }

Do you think it would it be useful to add a trace-level log in the catch
branch, for debugging?

-chris