Author: markt Date: Thu Sep 24 15:37:36 2015 New Revision: 1705082 URL: http://svn.apache.org/viewvc?rev=1705082&view=rev Log: Fix issues spotted while testing with async stock ticker example and curl - Correctly handle errors during flush (e.g. triggered by client disconnect) - Correctly handle end of async processing
Modified: tomcat/trunk/java/org/apache/coyote/http2/Stream.java tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Modified: tomcat/trunk/java/org/apache/coyote/http2/Stream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Stream.java?rev=1705082&r1=1705081&r2=1705082&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Stream.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Stream.java Thu Sep 24 15:37:36 2015 @@ -222,16 +222,11 @@ public class Stream extends AbstractStre } - void flushData() { + void flushData() throws IOException { if (log.isDebugEnabled()) { log.debug(sm.getString("stream.write", getConnectionId(), getIdentifier())); } - try { - outputBuffer.flush(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + outputBuffer.flush(); } Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1705082&r1=1705081&r2=1705082&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Thu Sep 24 15:37:36 2015 @@ -65,6 +65,11 @@ public class StreamProcessor extends Abs do { if (asyncStateMachine.isAsync()) { adapter.asyncDispatch(request, response, SocketStatus.OPEN_READ); + } else if (state == SocketState.ASYNC_END) { + adapter.asyncDispatch(request, response, SocketStatus.OPEN_READ); + // Only ever one request per stream so always treat as + // closed at this point. + state = SocketState.CLOSED; } else { adapter.service(request, response); } @@ -104,7 +109,12 @@ public class StreamProcessor extends Abs } case CLIENT_FLUSH: { action(ActionCode.COMMIT, null); - stream.flushData(); + try { + stream.flushData(); + } catch (IOException ioe) { + response.setErrorException(ioe); + // TODO: Shut stream down? + } break; } case IS_ERROR: { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org