Author: markt Date: Thu Sep 24 13:49:05 2015 New Revision: 1705057 URL: http://svn.apache.org/viewvc?rev=1705057&view=rev Log: Implement keep-alive timeout for HTTP/2. Switch to an infinite keep-alive timeout at the socket level for HTTP/2. If we want an inactivity timeout then that will need to be at a higher (i.e. HTTP/2 implementation) level since read timeouts have no visibility of write activity and write timeouts have no visibility of read activity.
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java?rev=1705057&r1=1705056&r2=1705057&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java Thu Sep 24 13:49:05 2015 @@ -30,7 +30,7 @@ import org.apache.tomcat.util.net.Socket public class Http2Protocol implements UpgradeProtocol { static final long DEFAULT_READ_TIMEOUT = 10000; - static final long DEFAULT_KEEP_ALIVE_TIMEOUT = 30000; + static final long DEFAULT_KEEP_ALIVE_TIMEOUT = -1; static final long DEFAULT_WRITE_TIMEOUT = 10000; // The HTTP/2 specification recommends a minimum default of 100 static final long DEFAULT_MAX_CONCURRENT_STREAMS = 200; Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1705057&r1=1705056&r2=1705057&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Thu Sep 24 13:49:05 2015 @@ -269,7 +269,9 @@ public class Http2UpgradeHandler extends switch(status) { case OPEN_READ: try { - + // There is data to read so use the read timeout while + // reading frames. + socketWrapper.setReadTimeout(getReadTimeout()); while (true) { try { if (!parser.readFrame(false)) { @@ -281,6 +283,9 @@ public class Http2UpgradeHandler extends closeStream(se); } } + // No more frames to read so switch to the keep-alive + // timeout. + socketWrapper.setReadTimeout(getKeepAliveTimeout()); } catch (Http2Exception ce) { // Really ConnectionError if (log.isDebugEnabled()) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org