Author: markt Date: Sun Mar 4 14:23:41 2012 New Revision: 1296813 URL: http://svn.apache.org/viewvc?rev=1296813&view=rev Log: Ensure we try and send a close message on an IOE as well as triggering onClose()
Modified: tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java Modified: tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java?rev=1296813&r1=1296812&r2=1296813&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java (original) +++ tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java Sun Mar 4 14:23:41 2012 @@ -106,12 +106,12 @@ public abstract class StreamInbound impl public final SocketState onData() throws IOException { // Must be start the start of a message (which may consist of multiple // frames) - WsInputStream wsIs = new WsInputStream(processor, getWsOutbound()); - WsFrame frame = wsIs.nextFrame(true); - while (frame != null) { - try { + try { + WsFrame frame = wsIs.nextFrame(true); + + while (frame != null) { // TODO User defined extensions may define values for rsv if (frame.getRsv() > 0) { closeOutboundConnection( @@ -140,21 +140,21 @@ public abstract class StreamInbound impl Constants.STATUS_PROTOCOL_ERROR, null); return SocketState.CLOSED; } - } catch (MalformedInputException mie) { - // Invalid UTF-8 - closeOutboundConnection(Constants.STATUS_BAD_DATA, null); - return SocketState.CLOSED; - } catch (UnmappableCharacterException uce) { - // Invalid UTF-8 - closeOutboundConnection(Constants.STATUS_BAD_DATA, null); - return SocketState.CLOSED; - } catch (IOException ioe) { - // Given something must have gone to reach this point, this - // might not work but try it anyway. - closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null); - return SocketState.CLOSED; + frame = wsIs.nextFrame(false); } - frame = wsIs.nextFrame(false); + } catch (MalformedInputException mie) { + // Invalid UTF-8 + closeOutboundConnection(Constants.STATUS_BAD_DATA, null); + return SocketState.CLOSED; + } catch (UnmappableCharacterException uce) { + // Invalid UTF-8 + closeOutboundConnection(Constants.STATUS_BAD_DATA, null); + return SocketState.CLOSED; + } catch (IOException ioe) { + // Given something must have gone to reach this point, this + // might not work but try it anyway. + closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null); + return SocketState.CLOSED; } return SocketState.UPGRADED; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org