You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/11/23 12:23:37 UTC
svn commit: r1770952 - in /tomcat/trunk: java/org/apache/coyote/http11/
java/org/apache/tomcat/util/net/ java/org/apache/tomcat/util/net/jsse/
java/org/apache/tomcat/util/net/openssl/ webapps/docs/
Author: markt
Date: Wed Nov 23 12:23:37 2016
New Revision: 1770952
URL: http://svn.apache.org/viewvc?rev=1770952&view=rev
Log:
Ensure that the availability of configured upgrade protocols that require ALPN is correctly reported during Tomcat start.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java
tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Wed Nov 23 12:23:37 2016
@@ -58,11 +58,11 @@ public abstract class AbstractHttp11Prot
@Override
public void init() throws Exception {
+ super.init();
+
for (UpgradeProtocol upgradeProtocol : upgradeProtocols) {
configureUpgradeProtocol(upgradeProtocol);
}
-
- super.init();
}
@@ -322,9 +322,8 @@ public abstract class AbstractHttp11Prot
*/
private final Map<String,UpgradeProtocol> negotiatedProtocols = new HashMap<>();
private void configureUpgradeProtocol(UpgradeProtocol upgradeProtocol) {
- boolean isSSLEnabled = getEndpoint().isSSLEnabled();
// HTTP Upgrade
- String httpUpgradeName = upgradeProtocol.getHttpUpgradeName(isSSLEnabled);
+ String httpUpgradeName = upgradeProtocol.getHttpUpgradeName(getEndpoint().isSSLEnabled());
boolean httpUpgradeConfigured = false;
if (httpUpgradeName != null && httpUpgradeName.length() > 0) {
httpUpgradeProtocols.put(httpUpgradeName, upgradeProtocol);
@@ -333,21 +332,22 @@ public abstract class AbstractHttp11Prot
getName(), httpUpgradeName));
}
+
// ALPN
String alpnName = upgradeProtocol.getAlpnName();
if (alpnName != null && alpnName.length() > 0) {
- // ALPN requires SSL
- if (isSSLEnabled) {
+ if (getEndpoint().isAlpnSupported()) {
negotiatedProtocols.put(alpnName, upgradeProtocol);
getEndpoint().addNegotiatedProtocol(alpnName);
getLog().info(sm.getString("abstractHttp11Protocol.alpnConfigured",
getName(), alpnName));
} else {
if (!httpUpgradeConfigured) {
- // HTTP Upgrade is not available for this protocol so it
- // requires ALPN. It has been configured on a non-secure
- // connector where ALPN is not available.
- getLog().error(sm.getString("abstractHttp11Protocol.alpnWithNoTls",
+ // ALPN is not supported by this connector and the upgrade
+ // protocol implementation does not support standard HTTP
+ // upgrade so there is no way available to enable support
+ // for this protocol.
+ getLog().error(sm.getString("abstractHttp11Protocol.alpnWithNoAlpn",
upgradeProtocol.getClass().getName(), alpnName, getName()));
}
}
Modified: tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties Wed Nov 23 12:23:37 2016
@@ -14,7 +14,7 @@
# limitations under the License.
abstractHttp11Protocol.alpnConfigured=The [{0}] connector has been configured to support negotiation to [{1}] via ALPN
-abstractHttp11Protocol.alpnWithNoTls=The upgrade handler [{0}] for [{1}] only supports upgrade via ALPN but has been configured for the [{2}] connector that is not enabled for TLS.
+abstractHttp11Protocol.alpnWithNoAlpn=The upgrade handler [{0}] for [{1}] only supports upgrade via ALPN but has been configured for the [{2}] connector that does not support ALPN.
abstractHttp11Protocol.httpUpgradeConfigured=The [{0}] connector has been configured to support HTTP upgrade to [{1}]
http11processor.fallToDebug=\n Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Wed Nov 23 12:23:37 2016
@@ -459,6 +459,15 @@ public abstract class AbstractEndpoint<S
public boolean isSSLEnabled() { return SSLEnabled; }
public void setSSLEnabled(boolean SSLEnabled) { this.SSLEnabled = SSLEnabled; }
+ /**
+ * Identifies if the endpoint supports ALPN. Note that a return value of
+ * <code>true</code> implies that {@link #isSSLEnabled()} will also return
+ * <code>true</code>.
+ *
+ * @return <code>true</true> if the endpoint supports ALPN in its current
+ * configuration, otherwise <code>false</code>.
+ */
+ public abstract boolean isAlpnSupported();
private int minSpareThreads = 10;
public void setMinSpareThreads(int minSpareThreads) {
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java Wed Nov 23 12:23:37 2016
@@ -206,6 +206,20 @@ public abstract class AbstractJsseEndpoi
}
+
+ @Override
+ public boolean isAlpnSupported() {
+ // ALPN requires TLS so if there is no SSLImplementation, or if TLS is
+ // not enabled, ALPN cannot be supported
+ if (sslImplementation == null || !isSSLEnabled()) {
+ return false;
+ }
+
+ // Depends on the SSLImplementation
+ return sslImplementation.isAlpnSupported();
+ }
+
+
@Override
public void unbind() throws Exception {
for (SSLHostConfig sslHostConfig : sslHostConfigs.values()) {
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed Nov 23 12:23:37 2016
@@ -539,6 +539,16 @@ public class AprEndpoint extends Abstrac
}
+
+ @Override
+ public boolean isAlpnSupported() {
+ // The APR/native connector always supports ALPN if TLS is in use
+ // because OpenSSL supports ALPN. Therefore, this is equivalent to
+ // testing of SSL is enabled.
+ return isSSLEnabled();
+ }
+
+
/**
* Start the APR endpoint, creating acceptor, poller and sendfile threads.
*/
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java Wed Nov 23 12:23:37 2016
@@ -67,4 +67,6 @@ public abstract class SSLImplementation
public abstract SSLSupport getSSLSupport(SSLSession session);
public abstract SSLUtil getSSLUtil(SSLHostConfigCertificate certificate);
+
+ public abstract boolean isAlpnSupported();
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java Wed Nov 23 12:23:37 2016
@@ -48,4 +48,10 @@ public class JSSEImplementation extends
public SSLUtil getSSLUtil(SSLHostConfigCertificate certificate) {
return new JSSEUtil(certificate);
}
+
+ @Override
+ public boolean isAlpnSupported() {
+ // JSSE does not (yet) support ALPN
+ return false;
+ }
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java Wed Nov 23 12:23:37 2016
@@ -36,4 +36,9 @@ public class OpenSSLImplementation exten
return new OpenSSLUtil(certificate);
}
+ @Override
+ public boolean isAlpnSupported() {
+ // OpenSSL supportd ALPN
+ return true;
+ }
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1770952&r1=1770951&r2=1770952&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Nov 23 12:23:37 2016
@@ -103,6 +103,10 @@
the capacity of this buffer when IOException occurs while writing the
headers to the socket. (violetagg)
</fix>
+ <fix>
+ Ensure that the availability of configured upgrade protocols that
+ require ALPN is correctly reported during Tomcat start. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Web applications">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r1770952 - in /tomcat/trunk:
java/org/apache/coyote/http11/ java/org/apache/tomcat/util/net/
java/org/apache/tomcat/util/net/jsse/
java/org/apache/tomcat/util/net/openssl/ webapps/docs/
Posted by Mark Thomas <ma...@apache.org>.
On 23/11/2016 12:23, markt@apache.org wrote:
> Author: markt
> Date: Wed Nov 23 12:23:37 2016
> New Revision: 1770952
>
> URL: http://svn.apache.org/viewvc?rev=1770952&view=rev
> Log:
> Ensure that the availability of configured upgrade protocols that require ALPN is correctly reported during Tomcat start.
This needs a re-think as it breaks h2 due to the change in init ordering.
Mark
>
> Modified:
> tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
> tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties
> tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
> tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
> tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
> tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java
> tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
> tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java
> tomcat/trunk/webapps/docs/changelog.xml
>
> Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java (original)
> +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Wed Nov 23 12:23:37 2016
> @@ -58,11 +58,11 @@ public abstract class AbstractHttp11Prot
>
> @Override
> public void init() throws Exception {
> + super.init();
> +
> for (UpgradeProtocol upgradeProtocol : upgradeProtocols) {
> configureUpgradeProtocol(upgradeProtocol);
> }
> -
> - super.init();
> }
>
>
> @@ -322,9 +322,8 @@ public abstract class AbstractHttp11Prot
> */
> private final Map<String,UpgradeProtocol> negotiatedProtocols = new HashMap<>();
> private void configureUpgradeProtocol(UpgradeProtocol upgradeProtocol) {
> - boolean isSSLEnabled = getEndpoint().isSSLEnabled();
> // HTTP Upgrade
> - String httpUpgradeName = upgradeProtocol.getHttpUpgradeName(isSSLEnabled);
> + String httpUpgradeName = upgradeProtocol.getHttpUpgradeName(getEndpoint().isSSLEnabled());
> boolean httpUpgradeConfigured = false;
> if (httpUpgradeName != null && httpUpgradeName.length() > 0) {
> httpUpgradeProtocols.put(httpUpgradeName, upgradeProtocol);
> @@ -333,21 +332,22 @@ public abstract class AbstractHttp11Prot
> getName(), httpUpgradeName));
> }
>
> +
> // ALPN
> String alpnName = upgradeProtocol.getAlpnName();
> if (alpnName != null && alpnName.length() > 0) {
> - // ALPN requires SSL
> - if (isSSLEnabled) {
> + if (getEndpoint().isAlpnSupported()) {
> negotiatedProtocols.put(alpnName, upgradeProtocol);
> getEndpoint().addNegotiatedProtocol(alpnName);
> getLog().info(sm.getString("abstractHttp11Protocol.alpnConfigured",
> getName(), alpnName));
> } else {
> if (!httpUpgradeConfigured) {
> - // HTTP Upgrade is not available for this protocol so it
> - // requires ALPN. It has been configured on a non-secure
> - // connector where ALPN is not available.
> - getLog().error(sm.getString("abstractHttp11Protocol.alpnWithNoTls",
> + // ALPN is not supported by this connector and the upgrade
> + // protocol implementation does not support standard HTTP
> + // upgrade so there is no way available to enable support
> + // for this protocol.
> + getLog().error(sm.getString("abstractHttp11Protocol.alpnWithNoAlpn",
> upgradeProtocol.getClass().getName(), alpnName, getName()));
> }
> }
>
> Modified: tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties (original)
> +++ tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties Wed Nov 23 12:23:37 2016
> @@ -14,7 +14,7 @@
> # limitations under the License.
>
> abstractHttp11Protocol.alpnConfigured=The [{0}] connector has been configured to support negotiation to [{1}] via ALPN
> -abstractHttp11Protocol.alpnWithNoTls=The upgrade handler [{0}] for [{1}] only supports upgrade via ALPN but has been configured for the [{2}] connector that is not enabled for TLS.
> +abstractHttp11Protocol.alpnWithNoAlpn=The upgrade handler [{0}] for [{1}] only supports upgrade via ALPN but has been configured for the [{2}] connector that does not support ALPN.
> abstractHttp11Protocol.httpUpgradeConfigured=The [{0}] connector has been configured to support HTTP upgrade to [{1}]
>
> http11processor.fallToDebug=\n Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
>
> Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Wed Nov 23 12:23:37 2016
> @@ -459,6 +459,15 @@ public abstract class AbstractEndpoint<S
> public boolean isSSLEnabled() { return SSLEnabled; }
> public void setSSLEnabled(boolean SSLEnabled) { this.SSLEnabled = SSLEnabled; }
>
> + /**
> + * Identifies if the endpoint supports ALPN. Note that a return value of
> + * <code>true</code> implies that {@link #isSSLEnabled()} will also return
> + * <code>true</code>.
> + *
> + * @return <code>true</true> if the endpoint supports ALPN in its current
> + * configuration, otherwise <code>false</code>.
> + */
> + public abstract boolean isAlpnSupported();
>
> private int minSpareThreads = 10;
> public void setMinSpareThreads(int minSpareThreads) {
>
> Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java Wed Nov 23 12:23:37 2016
> @@ -206,6 +206,20 @@ public abstract class AbstractJsseEndpoi
> }
>
>
> +
> + @Override
> + public boolean isAlpnSupported() {
> + // ALPN requires TLS so if there is no SSLImplementation, or if TLS is
> + // not enabled, ALPN cannot be supported
> + if (sslImplementation == null || !isSSLEnabled()) {
> + return false;
> + }
> +
> + // Depends on the SSLImplementation
> + return sslImplementation.isAlpnSupported();
> + }
> +
> +
> @Override
> public void unbind() throws Exception {
> for (SSLHostConfig sslHostConfig : sslHostConfigs.values()) {
>
> Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed Nov 23 12:23:37 2016
> @@ -539,6 +539,16 @@ public class AprEndpoint extends Abstrac
> }
>
>
> +
> + @Override
> + public boolean isAlpnSupported() {
> + // The APR/native connector always supports ALPN if TLS is in use
> + // because OpenSSL supports ALPN. Therefore, this is equivalent to
> + // testing of SSL is enabled.
> + return isSSLEnabled();
> + }
> +
> +
> /**
> * Start the APR endpoint, creating acceptor, poller and sendfile threads.
> */
>
> Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/util/net/SSLImplementation.java Wed Nov 23 12:23:37 2016
> @@ -67,4 +67,6 @@ public abstract class SSLImplementation
> public abstract SSLSupport getSSLSupport(SSLSession session);
>
> public abstract SSLUtil getSSLUtil(SSLHostConfigCertificate certificate);
> +
> + public abstract boolean isAlpnSupported();
> }
>
> Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSEImplementation.java Wed Nov 23 12:23:37 2016
> @@ -48,4 +48,10 @@ public class JSSEImplementation extends
> public SSLUtil getSSLUtil(SSLHostConfigCertificate certificate) {
> return new JSSEUtil(certificate);
> }
> +
> + @Override
> + public boolean isAlpnSupported() {
> + // JSSE does not (yet) support ALPN
> + return false;
> + }
> }
>
> Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java (original)
> +++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLImplementation.java Wed Nov 23 12:23:37 2016
> @@ -36,4 +36,9 @@ public class OpenSSLImplementation exten
> return new OpenSSLUtil(certificate);
> }
>
> + @Override
> + public boolean isAlpnSupported() {
> + // OpenSSL supportd ALPN
> + return true;
> + }
> }
>
> Modified: tomcat/trunk/webapps/docs/changelog.xml
> URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1770952&r1=1770951&r2=1770952&view=diff
> ==============================================================================
> --- tomcat/trunk/webapps/docs/changelog.xml (original)
> +++ tomcat/trunk/webapps/docs/changelog.xml Wed Nov 23 12:23:37 2016
> @@ -103,6 +103,10 @@
> the capacity of this buffer when IOException occurs while writing the
> headers to the socket. (violetagg)
> </fix>
> + <fix>
> + Ensure that the availability of configured upgrade protocols that
> + require ALPN is correctly reported during Tomcat start. (markt)
> + </fix>
> </changelog>
> </subsection>
> <subsection name="Web applications">
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org