57705: Add debug logging for requests denied by the remote
host and remote address valves and filters. Based on a patch by Graham
Leggett. (markt)
Correct a regression in the fix for 58588 that removed the
entire org.apache.juli package from the embedded JARs
rendering them unusable. (markt)
59399: Add a new option to the Realm implementations that
ship with Tomcat that allows the HTTP status code used for HTTP -> HTTPS
redirects to be controlled per Realm. (markt)
Change the default of the
sessionCookiePathUsesTrailingSlash attribute of the
Context element to false since the problems
caused when a Servlet is mapped to /* are more significant
than the security risk of not enabling this option by default. (markt)
Follow-up to 59655. Improve the documentation for configuring
permitted cookie names. Patch provided by Kyohei Nakamura. (markt)
Do not attempt to start web resources during a web application's
initialisation phase since the web application is not fully configured
at that point and the web resources may not be correctly configured.
(markt)
59708: Modify the LockOutRealm logic. Valid authentication
attempts during the lock out period will no longer reset the lock out
timer to zero. (markt)
Improve error handling around user code prior to calling
InstanceManager.destroy() to ensure that the method is
executed. (markt)
Coyote
Refactor the certifcate keystore and trust store generation to make it
easier for embedded users to inject their own key stores. (markt)
59233: Add the ability to add TLS virtual hosts dynamically.
(markt)
Add a maxConcurrentStreamExecution on the HTTP/2
protocol handler to allow restricting the amount of concurrent stream
that are being executed in a single connection. The default is to
not limit it. (remm)
Correct a problem with ServletRequest.getServerPort() for
secure HTTP/2 connections that meant an incorrect value was retured when
using the default port. (markt)
Improve error handling around user code prior to calling
InstanceManager.destroy() to ensure that the method is
executed. (markt)
Jasper
Improve error handling around user code prior to calling
InstanceManager.destroy() to ensure that the method is
executed. (markt)
WebSocket
Now the WebSocket implementation is not built directly on top of the
Servlet API and can use Tomcat internals, there is no need for the
dedicated WebSocket Executor. It has been replaced by the use of the
Connector/Endpoint provided Executor. (markt)
Improve error handling around user code prior to calling
InstanceManager.destroy() to ensure that the method is
executed. (markt)
Web Applications
Do not log an additional case of IOExceptions in the
error handler for the Drawboard WebSocket example when the root cause is
the client disconnecting since the logs add no value. (markt)
59642: Mention the localDataSource in the
DataSourceRealm section of the Realm How-To. (markt)
59672: Update the security considerations page of the
documentation web application to take account of the fact that the
Manager and HostManager applications now have a
RemoteAddrValve configured by default. (markt)
Follow-up to the fix for 59399. Ensure that the new attribute
transportGuaranteeRedirectStatus is documented for all
Realms. Also document the NullRealm and
when it is automatically created for an Engine. (markt)
Fix the description of maxAge attribute in jdbc-pool doc.
This attribute works both when a connection is returned and when a
connection is borrowed. (kfujino)
59774: Correct the prefix values in the the
documented examples for configuring the AccessLogValve.
Patch provided by Mike Noordermeer. (markt)
Extras
58588: Remove the JULI extras package from the distribution.
It was only useful for switching Tomcat's internal logging to log4j
1.2.x and that version of log4j is no longer supported. No additional
Tomcat code is required if switching Tomcat's internal logging to log
via log4j 2.x. (markt)
Tribes
Add log message when the ping has timed-out. (kfujino)
If the ping message has been received at the
AbstractReplicatedMap#leftOver method, ensure that notify
the member is alive than ignore it. (kfujino)
jdbc-pool
Fix the duplicated connection release when connection verification
failed. (kfujino)
Ensure that do not remove the abandoned connection that has been already
released. (kfujino)
Other
59276: Update optional Checkstyle library to 6.17. (kkolinko)
Use the mirror network rather than the ASF master site to download the
current ASF dependencies. (markt)
Update the packaged version of the Tomcat Native Library to 1.2.8 to
pick up the latest fixes and make 1.2.8 the minimum recommended version.
(markt)
Use UTF-8 with a standard prolog for all XML files. (markt)
2016-06-13 Tomcat 8.5.3
Catalina
RMI Target related memory leaks are avoidable which makes them an
application bug that needs to be fixed rather than a JRE bug to work
around. Therefore, start logging RMI Target related memory leaks on web
application stop. Add an option that controls if the check for these
leaks is made. Log a warning if running on Java 9 with this check
enabled but without the command line option it requires. (markt)
Ensure NPE will not be thrown during deployment when scanning jar files
without MANIFEST.MF file. (violetagg)
Remove the clearReferencesStatic option from
StandardContext. It was known to cause problems with some
libraries (such as log4j) and was only linked to suspected memory leaks
rather than known memory leaks. It had been disabled by default with no
increase in the reports of memory leaks for some time. (markt)
59604: Correct the assumption made in the URL decoding that
the default platform encoding is always compatible with ISO-8859-1. This
assumption is not always valid, e.g. on z/OS. (markt)
59608: Skip over any invalid Class-Path attribute
from JAR manifests. Log errors at debug level due to many bad libraries.
(remm)
Fix error message when failed to register MBean. (kfujino)
59655: Configure the cookie name validation to use RFC6265 rules by default to
align it with the default cookie parser. Document the impact system properties have on
cookie name validation. (mark)
Coyote
Ensure that requests with HTTP method names that are not tokens (as
required by RFC 7231) are rejected with a 400 response. (markt)
When an asynchronous request is processed by the AJP connector, ensure
that request processing has fully completed before starting the next
request. (markt)
Improve handling of HTTP/2 stream resets. (markt)
58750: The HTTP Server header is no longer set by default. A
Server header may be configured by setting the server
attribute on the Connector. A new Connector
attribute, serverRemoveAppProvidedValues may be used to
remove any Server header set by a web application. (markt)
59564: Correct offset when reading into HTTP/2 input buffer
that could cause problems reading request bodies. (violetagg/markt)
Modify the handling of read/write timeouts so that the appropriate error
handling (ReadListener.onError(),
WriteListener.onError() or
AsycnListener.onError()) is called. (markt)
If an async dispatch results in the completion of request processing,
ensure that any remaining request body is swallowed before starting the
processing of the next request else the remaining body may be read as the
start of the next request leading to a 400 response. (markt)
Fix a cause of multiple attempts to close the same socket. (markt)
Jasper
59567: Fix NPE scanning webapps for TLDs when an exploded
JAR has an empty WEB-INF/classes/META-INF folder. (remm)
Fix a memory leak in the expression language implementation that caused
the class loader of the first web application to use expressions to be
pinned in memory. (markt)
59654: Improve error message when attempting to use a TLD
file from an invalid location. Patch provided by Huxing Zhang. (markt)
WebSocket
59659: Fix possible memory leak in WebSocket handling of
unexpected client disconnects. (markt)
Web applications
58891: Update the SSL how-to. Based on a suggestion by
Alexander Kjäll. (markt)
jdbc-pool
Fix a memory leak with the pool cleaner thread that retained a reference
to the web application class loader for the first web application to use
a connection pool. (markt)
Other
Update the internal fork of Commons DBCP 2 to r1743696 (2.1.1 plus
additional fixes). (markt)
Update the internal fork of Commons Pool 2 to r1743697 (2.4.2 plus
additional fixes). (markt)
Update the internal fork of Commons File Upload to r1743698 (1.3.1 plus
additional fixes). (markt)
58626: Add support for a new environment variable
(USE_NOHUP) that causes nohup to be used when
starting Tomcat. It is disabled by default except on HP-UX where it is
enabled by default since it is required when starting Tomcat at boot on
HP-UX. (markt)
2016-05-16 Tomcat 8.5.2
Catalina
Ensure that annotated web components packed in web fragments will be
processed when unpackWARs is enabled. (violetagg)
not released Tomcat 8.5.1
Catalina
59206: Ensure NPE will not be thrown by
o.a.tomcat.util.file.ConfigFileLoader when
catalina.base is not specified. (violetagg)
59217: Remove duplication in the recycling of the path in
o.a.tomcat.util.http.ServerCookie. Patch is provided by
Kyohei Nakamura. (violetagg)
Fixed possible NPE in
o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream
(violetagg)
59213: Async dispatches should be based off a wrapped request.
(remm)
Ensure that javax.servlet.ServletRequest and
javax.servlet.ServletResponse provided during
javax.servlet.AsyncListener registration are made
available via javax.servlet.AsyncEvent.getSuppliedRequest
and javax.servlet.AsyncEvent.getSuppliedResponse
(violetagg)
59219: Ensure AsyncListener.onError() is called
if an Exception is thrown during async processing. (markt)
59220: Ensure that AsyncListener.onComplete() is
called if the async request times out and the response is already
committed. (markt)
59226: Process the Class-Path attribute from
JAR manifests for JARs on the class path excluding JARs packaged in
WEB-INF/lib. (markt)
59255: Fix possible NPE in mapper. (kkolinko/remm)
59256: slf4j-taglib*.jar should not be excluded
from the standard JAR scanning by default. (violetagg)
Clarify in the log message that specifying both urlPatterns and value
attributes in WebServlet and WebFilter annotations is not allowed.
(violetagg)
Ensure the exceptions caused by Valves will be available in the log
files so that they can be evaluated when
o.a.catalina.valves.ErrorReportValve.showReport is
disabled. Patch is provided by Svetlin Zarev. (violetagg)
Remove unused distributable attribute that is defined as
TransientAttribute of Manager in StoreConfig.
(kfujino)
Fix handling of Cluster Receiver in StoreConfig. The bind
and host attributes define as
TransientAttribute. (kfujino)
59261: ServletRequest.getAsyncContext() now
throws an IllegalStateException as required by the Servlet
specification if the request is not in asynchronous mode when called.
(markt)
59269: Correct the implementation of
PersistentManagerBase so that minIdleSwap
functions as designed and sessions are swapped out to keep the active
session count below maxActiveSessions. (markt)
Add the org.apache.catalina.servlet4preview package that
can be used to gain early access to Servlet 4.0 features. Note that this
package will not be present in Tomcat 9. (markt)
Correctly configure the base path for a resources directory provided by
an expanded JAR file. Patch provided by hengyunabc. (markt)
When multiple compressed formats are available and the client does not
express a preference, use the server order to determine the preferred
format. Based on a patch by gmokki. (markt)
59284: Allow the Tomcat provided JASPIC
SimpleServerAuthConfig to pick up module configuration
properties from either the property set passed to its constructor or
from the properties passed in the call to getAuthContext.
Based on a patch by Thomas Maslen. (markt)
59310: Do not add a Content-Length: 0 header for
custom responses to HEAD requests that do not set a
Content-Length value. (markt)
When normalizing paths, improve the handling when paths end with
/. or /.. and ensure that input and output are
consistent with respect to whether or not they end with /.
(markt)
59317: Ensure that
HttpServletRequest.getRequestURI() returns an encoded URI
rather than a decoded URI after a dispatch. (markt)
Use the correct URL for the fragment when reporting errors processing
a web-fragment.xml file from a JAR located in an unpacked
WAR. (markt)
Ensure that JarScanner only uses the explicit call-back to
process WEB-INF/classes and only when configured to treat
the contents of WEB-INF/classes as a possible exploded JAR.
(markt)
Remove the java2DDisposerProtection option from the
JreMemoryLeakPreventionListener. The leak is fixed in Java
7 onwards and Tomcat 8 requires Java 7 so the option is unnecessary.
(markt)
Ensure that the value for the header X-Frame-Options is
constructed correctly according to the specification when
ALLOW-FROM option is used. (violetagg)
Fix an IllegalArgumentException if the first use of an
internal Response object requires JASPIC authentication.
(markt)
Do not trigger unnecessary session ID changes when using JASPIC and the
user is authenticated using cached credentials. (markt)
59437: Ensure that the JASPIC CallbackHandler is
thread-safe. (markt)
59449: In ContainerBase, ensure that the process
to remove a child container is the reverse of the process to add one.
Patch provided by Huxing Zhang. (markt)
Coyote
Align cipher configuration parsing with current OpenSSL master. (markt)
Change the default for honorCipherOrder to
false. With the current default TLS configuration, it is no
longer necessary for this to be true for a reasonably
secure configuration. (markt)
Add a new environment variable JSSE_OPTS that is intended
to be used to pass JVM wide configuration to the JSSE implementation.
The default value is -Djdk.tls.ephemeralDHKeySize=2048
which protects against weak Diffie-Hellman keys. (markt)
When running on Java 7, exclude DHE ciphers from the default cipher list
for JSSE connectors since they use weak 768 bit DH keys and cannot be
configured to use more secure keys. (markt)
58970: Fix a connection counting bug in the NIO connector
that meant some dropped connections were not removed from the current
connection count. (markt)
59289: Do not recycle upgrade processors in unexpected close
situations. (remm)
59295: Use Locale.toLanguageTag() to construct
the Content-Language HTTP header to ensure the locale is
correctly represented. Patch provided by zikfat. (markt)
59295: Add support for using pem encoded certificates with
JSSE SSL. Submitted by Emmanuel Bourg with additional tweaks. (remm)
Make the TLS certificate chain available to clients when using
JSSE+OpenSSL with the certificate chain stored in a Java KeyStore.
(markt)
Work around a
known issue in OpenSSL that does not permit the TLS handshake to be
failed if the ALPN negotiation fails. (markt)
59421: Add direct HTTP/2 connection support. (remm)
Correctly handle a call to AsyncContext.complete() from a
non-container thread when non-blocking I/O is being used. (markt)
59451: Correct Javadoc for MessageBytes. Patch
provided by Kyohei Nakamura. (markt)
59450: Correctly handle the case where the
LegacyCookieProcessor is configured with
allowHttpSepsInV0 set to false and
forwardSlashIsSeparator set to true. Patch
provided by Kyohei Nakamura. (markt)
Jasper
When scanning JARs for TLDs, correctly handle the (rare) case where a
JAR has been exploded into WEB-INF/classes and the web
application is deployed as a packed WAR. (markt)
59189: Explicitly release the native memory held by the
Inflater and Deflater when using
PerMessageDeflate and the WebSocket session ends. Based on a patch by
Henrik Olsson. (markt)
Return back a container specific extension to the WsServerContainer
to allow frameworks to more easily dispatch requests to WebSocket
endpoints. (violetagg)
Fix a regression caused by the connector refactoring and ensure that the
thread context class loader is set to the to the web application
classloader when processing WebSocket messages on the server. (markt)
Ensure that a client disconnection triggers the error handling for the
associated WebSocket end point. (markt)
Make WebSocket client more robust when handling errors during the close
of a WebSocket session. (markt)
Web applications
59210: Server push example has to use
o.a.catalina.connector.RequestFacade when obtaining
o.a.catalina.core.ApplicationPushBuilder. Patch is
provided by Huxing Zhang. (violetagg)
59218: Correct the path to jaspic-providers.xml
in Jaspic How-To. Patch is provided by Tatsuya Bessho. (violetagg)
Remove button that has accidentally been added to the host manager.
Submitted by Coty Sutherland. (remm)
Update in the documentation the link to the maven repository where
Tomcat snapshot artifacts are deployed. (markt/violetagg)
Clarify in the documentation that calls to
ServletContext.log(String, Throwable) or
GenericServlet.log(String, Throwable) are logged at the
SEVERE level. (violetagg)
Correct a typo in SSL/TLS Configuration How-To.
Issue reported via comments.apache.org. (violetagg)
Tribes
Avoid NPE when a proxy node failed to retrieve a backup entry. (kfujino)
Add log of when received an unexpected messages. (kfujino)
Add the flag indicating that member is a localMember. (kfujino)
Fix potential NPE that depends on the setting order of attributes of
static member when using the static cluster. (kfujino)
Add get/set method for the channel that is related to
ChannelInterceptor. (kfujino)
As with the multicast cluster environment, in the static cluster
environment, the local member inherits properties from the cluster
receiver. (kfujino)
Add get/set method for the channel that is related to each Channel
services. (kfujino)
Add name to channel in order to identify channels. In tomcat cluster
environment, it is set the cluster name + "-Channel" as default value.
(kfujino)
Add the channel name to the thread which is invoked by channel services
in order to identify the associated channel. (kfujino)
Ensure that clear the channel instance from channel services when
stopping channel. (kfujino)
Implement map state in the replication map. (kfujino)
Ensure that the ping is not executed during the start/stop of the
replication map. (kfujino)
In ping processing in the replication map, send not the
INIT message but the newly introduced PING
message. (kfujino)
Other
59209: Remove honorCipherOrder=false attribute
from the connector example in server.xml. When the block is uncommented
the connector will use the default value for this attribute which is
false. If one needs to enable it, one can add it
explicitly to the connector definition. Use of this feature requires
Java 8 or later. Patch is provided by Huxing Zhang. (violetagg)
59211: Add hamcrest to Eclipse classpath. Patch is provided
by Huxing Zhang. (violetagg)
59280: Update the NSIS Installer used to build the
Windows Installers to version 2.51. (kkolinko)
Update the packaged version of the Tomcat Native Library to 1.2.7 to
pick up the Windows binaries that are based on OpenSSL 1.0.2h and APR
1.5.2. (markt)
2016-03-24 Tomcat 8.5.0
Other
The Tomcat 8.5.x branch was created from the Tomcat 9.0.0.M4 tag.
Changes were applied to restore Java 7 compatibility and to align the
specification APIs with Servlet 3.1, JSP 2.3, EL 3.0, WebSocket 1.1 and
JASPIC 1.1.