Author: markt Date: Thu Sep 24 14:29:29 2015 New Revision: 1705070 URL: http://svn.apache.org/viewvc?rev=1705070&view=rev Log: Implement SSL request attributes.
Modified: tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Modified: tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties?rev=1705070&r1=1705069&r2=1705070&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties Thu Sep 24 14:29:29 2015 @@ -73,6 +73,7 @@ stream.write=Connection [{0}], Stream [{ stream.outputBuffer.flush.debug=Connection [{0}], Stream [{1}], flushing output with buffer at position [{2}], writeInProgress [{3}] and closed [{4}] streamProcessor.httpupgrade.notsupported=HTTP upgrade is not supported within HTTP/2 streams +streamProcessor.ssl.error=Unable to retrieve SSL request attributes streamStateMachine.debug.change=Connection [{0}], Stream [{1}], State changed from [{2}] to [{3}] streamStateMachine.invalidFrame=Connection [{0}], Stream [{1}], State [{2}], Frame type [{3}] 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=1705070&r1=1705069&r2=1705070&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Thu Sep 24 14:29:29 2015 @@ -138,6 +138,54 @@ public class StreamProcessor extends Abs break; } + // SSL request attribute support + case REQ_SSL_ATTRIBUTE: { + try { + if (sslSupport != null) { + Object sslO = sslSupport.getCipherSuite(); + if (sslO != null) { + request.setAttribute(SSLSupport.CIPHER_SUITE_KEY, sslO); + } + sslO = sslSupport.getPeerCertificateChain(); + if (sslO != null) { + request.setAttribute(SSLSupport.CERTIFICATE_KEY, sslO); + } + sslO = sslSupport.getKeySize(); + if (sslO != null) { + request.setAttribute(SSLSupport.KEY_SIZE_KEY, sslO); + } + sslO = sslSupport.getSessionId(); + if (sslO != null) { + request.setAttribute(SSLSupport.SESSION_ID_KEY, sslO); + } + sslO = sslSupport.getProtocol(); + if (sslO != null) { + request.setAttribute(SSLSupport.PROTOCOL_VERSION_KEY, sslO); + } + request.setAttribute(SSLSupport.SESSION_MGR, sslSupport); + } + } catch (Exception e) { + log.warn(sm.getString("streamProcessor.ssl.error"), e); + } + break; + } + case REQ_SSL_CERTIFICATE: { + // No re-negotiation support in HTTP/2. Either the certificate is + // available or it isn't. + try { + if (sslSupport != null) { + Object sslO = sslSupport.getCipherSuite(); + sslO = sslSupport.getPeerCertificateChain(); + if (sslO != null) { + request.setAttribute(SSLSupport.CERTIFICATE_KEY, sslO); + } + } + } catch (Exception e) { + log.warn(sm.getString("streamProcessor.ssl.error"), e); + } + break; + } + // Servlet 3.0 asynchronous support case ASYNC_START: { asyncStateMachine.asyncStart((AsyncContextCallback) param); @@ -219,8 +267,6 @@ public class StreamProcessor extends Abs case NB_WRITE_INTEREST: case REQUEST_BODY_FULLY_READ: case REQ_SET_BODY_REPLAY: - case REQ_SSL_ATTRIBUTE: - case REQ_SSL_CERTIFICATE: case RESET: log.info("TODO: Implement [" + actionCode + "] for HTTP/2"); break; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org