| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE document [ |
| <!ENTITY project SYSTEM "project.xml"> |
| ]> |
| <?xml-stylesheet type="text/xsl" href="tomcat-docs.xsl"?> |
| <document url="changelog.html"> |
| |
| &project; |
| |
| <properties> |
| <title>Changelog</title> |
| <no-comments /> |
| </properties> |
| |
| <body> |
| <!-- |
| Subsection ordering: |
| General, Catalina, Coyote, Jasper, Cluster, WebSocket, Web applications, |
| Extras, Tribes, jdbc-pool, Other |
| |
| Item Ordering: |
| |
| Fixes having an issue number are sorted by their number, ascending. |
| |
| There is no ordering by add/update/fix. |
| |
| Other fixed issues are added to the end of the list, chronologically. |
| They eventually become mixed with the numbered issues. (I.e., numbered |
| issues do not "pop up" wrt. others). |
| --> |
| <section name="Tomcat 8.0.29 (markt)" rtext="in development"> |
| <subsection name="General"> |
| <changelog> |
| <update> |
| <bug>58596</bug>: Clarify the description in RUNNING.txt of how |
| environment variables are used. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Catalina"> |
| <changelog> |
| <add> |
| Extend the fix for <bug>57136</bug> to provide a JSP Servlet |
| initialisation parameter per web application that controls whether o |
| not EL in JSP attributes is processed as if it uses JSP attribute |
| quoting. By default, EL does not use JSP attribute quoting. (markt) |
| </add> |
| <fix> |
| <bug>57799</bug>: InputStream.available() was causing an IO operation |
| to occur even in blocking mode, which caused problems with NIO2. |
| (remm) |
| </fix> |
| <add> |
| Extend the fix for <bug>58228</bug> to include |
| <code>ServletContext.getRealPath()</code>. (markt) |
| </add> |
| <add> |
| <bug>58486</bug>: Protect against two further possible memory leaks |
| associated with XML parsing. (markt) |
| </add> |
| <fix> |
| <bug>58490</bug>: Fixed NPE thrown when scanning for |
| <code>javax.servlet.ServletContainerInitializer</code> in case the web |
| application is not extracted. (violetagg) |
| </fix> |
| <scode> |
| <bug>58497</bug>: Make <code>AbstractHttp11Processor</code> easy to |
| extend. (markt) |
| </scode> |
| <fix> |
| <bug>58508</bug>: Escape role names when generating associated MBeans in |
| case the role name contains characters not permitted in an MBean name. |
| (markt) |
| </fix> |
| <fix> |
| <bug>58518</bug>: Correct a regression in the fix for <bug>56777</bug> |
| that added support for URIs in config file locations. File paths on |
| Windows could previously be specified with <code>\</code> or |
| <code>/</code> as the separator. <bug>56777</bug> broke that. (markt) |
| </fix> |
| <fix> |
| <bug>58519</bug>: Fix ISE thrown by web application classloader in some |
| error conditions due to trying to call <code>initCause()</code> on a |
| <code>ClassNotFoundException</code> which is not permitted. (markt) |
| </fix> |
| <fix> |
| <bug>58534</bug>: Removed repeated conditional tests in |
| <code>o.a.tomcat.websocket.pojo.PojoMethodMapping</code> and |
| <code>o.a.tomcat.util.net.AprEndpoint</code> |
| Patch provided by Anthony Whitford. (violetagg) |
| </fix> |
| <fix> |
| <bug>58535</bug>: Use <code>Collections.reverseOrder</code> |
| when a reverse ordering is needed. (violetagg) |
| </fix> |
| <fix> |
| <bug>58537</bug>, <bug>58546</bug>: Some of the inner classes in |
| <code>o.a.catalina.valves.ExtendedAccessLogValve</code> |
| and <code>o.a.tomcat.util.net.SecureNio2Channel</code> |
| are made static. |
| Patch provided by Anthony Whitford. (violetagg) |
| </fix> |
| <fix> |
| <bug>58540</bug>: Removed unused code from |
| <code>o.a.catalina.connector.Request</code>. |
| Patch provided by Anthony Whitford. (violetagg) |
| </fix> |
| <fix> |
| <bug>58541</bug>, <bug>58544</bug>: It is more efficient to call |
| <code>Integer.toString(int)</code> instead of |
| <code>Integer.valueOf(int).toString()</code> when only a string |
| representation of a primitive is needed. Based on a patch provided by |
| Anthony Whitford. (violetagg) |
| </fix> |
| <fix> |
| <bug>58541</bug>, <bug>58547</bug>: It is more efficient to call |
| <code>valueOf(...)</code> instead of Number constructor. Based on a |
| patch provided by Anthony Whitford. (violetagg) |
| </fix> |
| <fix> |
| <bug>58545</bug>: In some use cases it is more efficient to use |
| <code>Map.entrySet()</code> instead of <code>Map.keySet()</code> |
| Based on a patch provided by Anthony Whitford. (violetagg) |
| </fix> |
| <fix> |
| Ensure that <code>ServletRequest.getContentLengthLong</code> is used |
| instead of <code>ServletRequest.getContentLength</code> for servlets and |
| valves provided by Tomcat. The API is available since Servlet |
| specification 3.1. (violetagg) |
| </fix> |
| <add> |
| Add a new RestCsrfPreventionFilter that provides basic CSRF protection |
| for REST APIs. (violetagg) |
| </add> |
| <fix> |
| <bug>58578</bug>: Avoid NPE accessing cookies during access logging |
| for request that had no context mapping. (remm) |
| </fix> |
| <fix> |
| Avoid UnsupportedOperationException when releasing an user-provided |
| URLStreamHandlerFactory. Patch provided by Cristian Talau. (violetagg) |
| </fix> |
| <fix> |
| <bug>58581</bug>: If a custom error page fails, fall back to the |
| standard error page rather than throwing an NPE. Based on a patch by |
| Huxing Zhang. (markt) |
| </fix> |
| <fix> |
| <bug>58582</bug>: Combined realm should perform background processing |
| on its sub-realms. Based upon a patch provided by Aidan. (schultz) |
| </fix> |
| <fix> |
| Handle the unlikely case where different versions of a web application |
| are deployed with different session settings. (markt) |
| </fix> |
| <add> |
| Add a new Context option, enabled by default, that enables an additional |
| check that a client provided session ID is in use in at least one other |
| web application before allowing it to be used as the ID for a new |
| session in the current web application. (markt) |
| </add> |
| <add> |
| Add support for DIGEST authentication to the JNDIRealm. Based on a patch |
| by Alexis Hassler. (markt) |
| </add> |
| <fix> |
| <bug>58603</bug>: Ensure that |
| <code>HttpServletRequest.getRequestURL()</code> returns the correct |
| value when using the <code>RemoteIpFilter</code>. (markt) |
| </fix> |
| <fix> |
| Ensure that in an embedded Tomcat the logging configuration is |
| not lost during garbage collection. (violetagg) |
| </fix> |
| <add> |
| Move the functionality that provides redirects for context roots and |
| directories where a trailing <code>/</code> is added from the Mapper to |
| the <code>DefaultServlet</code>. This enables such requests to be |
| processed by any configured Valves and Filters before the redirect is |
| made. This behaviour is configurable via the |
| <code>mapperContextRootRedirectEnabled</code> and |
| <code>mapperDirectoryRedirectEnabled</code> attributes of the Context |
| which may be used to restore the previous behaviour. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Cancel pending blocking IO operation following a timeout in the NIO2 |
| connector. (remm) |
| </fix> |
| <fix> |
| Add instance manager support for upgrade handlers, and set context |
| class loader. (remm) |
| </fix> |
| <update> |
| Synchronize OpenSSL to JSSE cipher mapping to recent OpenSSL changes. In |
| particular, <code>TLSv1.0</code> is no an alias for those ciphers that |
| require TLSv1 and will no work with SDSLv3. <code>TLSv1</code> remains |
| an alias for <code>SSLv3</code>. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <add> |
| Deprecate the <code>STRICT_QUOTE_ESCAPING</code> system property and |
| replace it with an initialisation parameter for the JSP Servlet. This |
| enables per web application control of this configuration setting. |
| (markt) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Optimize the session lock range in DeltaManager.requestCompleted. |
| (kfujino) |
| </fix> |
| <fix> |
| Enable an explicit configuration of local member in the static cluster |
| membership. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <scode> |
| Distinguish the handling of the shutdown payload and member verification |
| clearly. When handling shutdown payload, verification completion message |
| is not required. (kfujino) |
| </scode> |
| <fix> |
| When starting the <code>StaticMembershipInterceptor</code>, |
| <code>StaticMembershipInterceptor</code> checks the required |
| Interceptors. If the required Interceptor does not exist, it issues |
| warning logs. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| Use instance manager for server endpoint instances. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <add> |
| Make it clear in the documentation for the CGI servlet that the debug |
| page is not considered secure and should not be used in production. |
| (markt) |
| </add> |
| <fix> |
| The <code>domain</code> attribute of <code>StaticMember</code> is not |
| required but optional. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="jdbc-pool"> |
| <changelog> |
| <fix> |
| <bug>58489</bug>: Correct QueryStatsComparator to hold up the |
| general contract for Comparator. (fschumacher) |
| </fix> |
| <fix> |
| When creating a <code>QueryStats</code> object, ensure that |
| <code>maxQueries</code> is checked. If <code>maxQueries</code> is a |
| value less than or equal to 0, <code>QueryStats</code> are never |
| created. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <update> |
| Update optional Checkstyle library to 6.12.1. (kkolinko) |
| </update> |
| <add> |
| Add support for creating a FindBugs report when building Tomcat. It |
| is disabled by default. (violetagg) |
| </add> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.28 (markt)" rtext="2015-10-12"> |
| <subsection name="Catalina"> |
| <changelog> |
| <add> |
| Add support for the custom <code>classpath</code> protocol in URLs. It |
| an be used anywhere Tomcat accepts a URL for a configuration parameter. |
| (markt) |
| </add> |
| <fix> |
| <bug>56777</bug>: Allow file based configuration resources (user |
| database, certificate revocation lists, keystores and trust stores) to |
| be configured using URLs as well as files. (markt) |
| </fix> |
| <fix> |
| Perform null-checking on input and stored credentials in all Realms |
| before passing credentials off to CredentialHandlers for matching. |
| (schultz) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <update> |
| Add the new ciphers from RFC6655 and RFC7251 to the OpenSSL to JSSE |
| cipher mapping. (markt) |
| </update> |
| <update> |
| Remove DES, RC2 and RC4 from DEFAULT for the OpenSSL to JSSE cipher |
| mapping to align with the OpenSSL development branch. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| Improve the error message when JSP parser encounters an error parsing an |
| attribute value. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <update> |
| <bug>58474</bug>: Provide a reference to the differences between |
| <code>CATALINA_HOME</code> and <code>CATALINA_BASE</code> in the sample |
| application that is part of the documentation web application. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Extras"> |
| <changelog> |
| <fix> |
| Ensure JULI adapters does not include the LogFactoryImpl class. Patch |
| provided by Benjamin Gandon. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.27 (markt)" rtext="2015-10-01"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| <bug>58187</bug>: Correct a regression in the fix for <bug>57765</bug> |
| that meant that deployment of web applications deployed via the Manager |
| application was delayed until the next execution of the automatic |
| deployment background process. (markt) |
| </fix> |
| <fix> |
| <bug>58284</bug>: Correctly implement session serialization so |
| non-serializable attributes are skipped with a warning. Patch provided |
| by Andrew Shore. (markt) |
| </fix> |
| <fix> |
| <bug>58313</bug>: Fix concurrent access of encoders map when clearing |
| encoders prior to switch to async. (markt) |
| </fix> |
| <fix> |
| <bug>58320</bug>: Fix concurrent access of request attributes which is |
| possible during asynchronous processing. (markt) |
| </fix> |
| <fix> |
| <bug>58352</bug>: Always trigger a thread dump if Tomcat fails to stop |
| gracefully from <code>catalina.sh</code> even if using |
| <code>-force</code>. Patch provided by Alexandre Garnier. (markt) |
| </fix> |
| <fix> |
| <bug>58368</bug>: Fix a rare data race in the code that obtains the |
| <code>ApplicationFilterFactory</code> instance. (markt) |
| </fix> |
| <fix> |
| <bug>58369</bug>: Fix a rare data race in the code that obtains the |
| CookieProcessor for a StandardContext instance. (markt) |
| </fix> |
| <fix> |
| Ensure the JAASRealm uses the configured CredentialHandler. (markt) |
| </fix> |
| <fix> |
| <bug>58372</bug>: Fix rare data races closed and suspended flags that |
| could be triggered by async and/or comet processing. (markt) |
| </fix> |
| <fix> |
| <bug>58373</bug>: Fix rare data race with the application event |
| listeners for StandardContext. (markt) |
| </fix> |
| <fix> |
| <bug>58374</bug>: Fix a rare data race in the AsyncContext |
| implementation for access to the internal Tomcat request object to which |
| it holds a reference. (markt) |
| </fix> |
| <fix> |
| <bug>58380</bug>: Fix two rare data races in the standard session |
| implementation on the flag that tracks if the session is new and on the |
| field that tracks the maximum inactive period. (markt) |
| </fix> |
| <fix> |
| <bug>58385</bug>: Fix a rare data race in the internal flag Tomcat uses |
| to keep track of whether or not a request is being used for Comet |
| processing. (markt) |
| </fix> |
| <fix> |
| <bug>58394</bug>: Fix a rare data race in Mapper when adding or removing |
| a host. (markt) |
| </fix> |
| <fix> |
| <bug>58398</bug>: Fix a rare data race in <code>LifecycleSupport</code>. |
| (markt) |
| </fix> |
| <fix> |
| <bug>58412</bug>: Ensure that the <code>AsyncFileHandler</code> has the |
| source class and method name available for logging. (fschumacher) |
| </fix> |
| <fix> |
| <bug>58416</bug>: Correctly detect when a forced stop fails to stop |
| Tomcat because the Tomcat process is waiting on some system call or is |
| uninterruptible. (markt) |
| </fix> |
| <fix> |
| <bug>58436</bug>: Fix some rare data races in JULI's |
| <code>ClassLoaderLogManager</code> during shutdown. (markt) |
| </fix> |
| <fix> |
| <bug>58845</bug>: Fix off-by one error in calculation of valid |
| characters in a cookie domain. Patch provided by Thorsten Ehlers. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Correct some edge cases in <code>RequestUtil.normalize()</code>. (markt) |
| </fix> |
| <fix> |
| <bug>58275</bug>: The IBM JREs accept cipher suite names starting with |
| <code>TLS_</code> or <code>SSL_</code> but when listing the supported |
| cipher suites only the <code>SSL_</code> version is reported. This can |
| break Tomcat's check that at least one requested cipher suite is |
| supported. Tomcat now includes a work-around so either form of the |
| cipher suite name can be used when running on an IBM JRE. (markt) |
| </fix> |
| <fix> |
| <bug>58357</bug>: For reasons not currently understood when the |
| APR/native connector is used with OpenSSL reads can return an error code |
| when there is no apparent error. This was work-around for HTTP upgrade |
| connections by treating this as <code>EAGAIN</code>. The same fix has |
| now been applied to the standard HTTP connector. (markt) |
| </fix> |
| <scode> |
| Minor clean-up in NIO2 SSL handshake code to address some theoretical |
| concurrency issues. (markt) |
| </scode> |
| <fix> |
| <bug>58367</bug>: Fix a rare data race in the code that obtains the |
| reason phrase for a given HTTP response code. (markt) |
| </fix> |
| <fix> |
| <bug>58370</bug>: Fix a rare data race in the connector shutdown code. |
| (markt) |
| </fix> |
| <fix> |
| <bug>58371</bug>: Fix a rare data race when accessing request URI in |
| String form when switching from non-async to async due to early |
| triggering of the gathering of request statistics. (markt) |
| </fix> |
| <fix> |
| <bug>58375</bug>: Fix a rare data race on the internal flag Tomcat uses |
| to mark a response as committed. (markt) |
| </fix> |
| <fix> |
| <bug>58377</bug>: Fix a rare data race on the internal flag Tomcat uses |
| to mark a request as using HTTP keep-alive when switching to |
| asynchronous processing. (markt) |
| </fix> |
| <fix> |
| <bug>58379</bug>: Fix a rare data race on the interal reference Tomcat |
| retains to the socket when switching to asynchronous processing. (markt) |
| </fix> |
| <fix> |
| <bug>58387</bug>: Fix a rare data race when closing Comet connections. |
| (markt) |
| </fix> |
| <fix> |
| <bug>58388</bug>: Fix a data race when determining if Comet processing |
| is occurring on a container or non-container thread. (markt) |
| </fix> |
| <fix> |
| <bug>58389</bug>: Fix a rare data race while shutting down the thread |
| pools on Connector stop. (markt) |
| </fix> |
| <scode> |
| Clean up use of error flag on socket wrapper prompted by |
| <bug>58390</bug>. (markt) |
| </scode> |
| <scode> |
| Remove some unnecessary code from the NIO Poller and fix |
| <bug>58396</bug> as a side-effect. (markt) |
| </scode> |
| <fix> |
| <bug>57799</bug>: Remove useless sendfile check for NIO SSL. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>57136</bug>: Correct a regression in the previous fix for this |
| issue. <code>\${</code> should only be an escape for <code>${</code> |
| within an EL expression. Within a JSP page <code>\$</code> should be an |
| escape for <code>$</code>. The EL specification applies when parsing the |
| expression delimited by <code>${</code> and <code>}</code>. Parsing of |
| the delimiting <code>${</code> and <code>}</code> is the responsibility |
| of the JSP specification. (markt) |
| </fix> |
| <fix> |
| <bug>58296</bug>: Fix a memory leak in the JSP unloading feature that |
| meant that using a value other than <code>-1</code> for |
| <code>maxLoadedJsps</code> triggered a memory leak once the limit was |
| reached. (markt) |
| </fix> |
| <fix> |
| <bug>58327</bug>: Cache the expression string for value expression |
| literals since it is frequently used and may be expensive to evaluate. |
| Patch provided by Andreas Kohn. (markt) |
| </fix> |
| <fix> |
| <bug>58340</bug>: Improve error reporting for tag files packaged in |
| JARs. (markt) |
| </fix> |
| <fix> |
| <bug>58424</bug>: When parsing TLD files, allow whitespace around |
| boolean configuration values. (schultz) |
| </fix> |
| <fix> |
| Fix a possible resource leak reported by coverity scan. (fschumacher) |
| </fix> |
| <fix> |
| <bug>58427</bug>: Enforce the JSP specification defined limitations of |
| which elements are allowed in an implicit.tld file. (markt) |
| </fix> |
| <fix> |
| <bug>58444</bug>: Ensure that JSPs work with any custom base class that |
| meets the requirements defined in the JSP specification without |
| requiring that base class to implement Tomcat specific code. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Fix a default clusterListeners in <code>SimpleTcpCluster</code>. The |
| optimal default value is different for each session manager. |
| <code>ClusterSessionListener</code> is never used in |
| <code>BackupManager</code>. (kfujino) |
| </fix> |
| <fix> |
| Correct log messages in case of using <code>BackupManager</code>. |
| (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>58342</bug>: Fix a copy and paste error that meant MessageHandler |
| removal could fail for binary and pong MessageHandlers. Patch provided |
| by DJ. (markt) |
| </fix> |
| <fix> |
| Data races detected by RV-Predict, mostly caused by completion handlers |
| running in separate threads. (markt) |
| </fix> |
| <fix> |
| <bug>58414</bug>: Correctly handle sending zero length messages when |
| using per message deflate. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| Correct documentation for cluster-howto. (kfujino) |
| </fix> |
| <fix> |
| Add missing documentation for property <code>alwaysAddExpires</code> for |
| the <code>LegacyCookieProcessor</code>. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <add> |
| Add support for configurations of <code>ChannelListener</code> and |
| <code>MembershipListener</code> in server.xml. (kfujino) |
| </add> |
| <fix> |
| Correct log messages in case of using <code>ReplicatedMap</code>. |
| (kfujino) |
| </fix> |
| <fix> |
| <bug>58381</bug>: Fix a rare data race in the <code>NioReceiver</code>. |
| (markt) |
| </fix> |
| <fix> |
| <bug>58382</bug>: Fix multiple rare data races in the default membership |
| implementation. (markt) |
| </fix> |
| <fix> |
| <bug>58383</bug>: Fix a data race in <code>SenderState</code>. (markt) |
| </fix> |
| <fix> |
| <bug>58386</bug>: Fix a data race in <code>ObjectReader</code>. (markt) |
| </fix> |
| <fix> |
| <bug>58391</bug>: Fix multiple data races in |
| <code>NonBlockingCoordinator</code>, most of which were associated with |
| ensuring that log messages contained the correct information. (markt) |
| </fix> |
| <fix> |
| <bug>58392</bug>: Fix a data race in |
| <code>DomainFilterInterceptor</code>. (markt) |
| </fix> |
| <fix> |
| <bug>58393</bug>: Fix a data race on the listener in |
| <code>McastService</code>. (markt) |
| </fix> |
| <fix> |
| <bug>58395</bug>: Fix multiple data races in <code>MemberImpl</code> |
| that were likely to cause issues if certain properties were updated |
| concurrently (such updates are unlikely in normal usage). (markt) |
| </fix> |
| <scode> |
| Remove some unnecessary code from <code>PooledParallelSender</code> and |
| fix <bug>58397</bug>. (markt) |
| </scode> |
| </changelog> |
| </subsection> |
| <subsection name="jdbc-pool"> |
| <changelog> |
| <fix> |
| Make sure the pool has been properly configured when attributes that |
| related to the pool size are changed via JMX. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <fix> |
| Ensure logging works for all tests in a class rather than just the first |
| one executed. (markt) |
| </fix> |
| <add> |
| <bug>58344</bug>: Add build properties to enable tests to be executed |
| against alternative binaries. Based on a patch by Petr Sumbera. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.26 (markt)" rtext="2015-08-21"> |
| <subsection name="Web applications"> |
| <changelog> |
| <add> |
| <bug>58255</bug>: Document the Semaphore valve. Patch provided by |
| Kyohei Nakamura. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.25 (markt)" rtext="not released"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| Make the WAR manifest file available for WebResource instances from an |
| unpacked WAR in the same way the manifest is available if the WAR is not |
| unpacked. (markt) |
| </fix> |
| <fix> |
| Ensure that only <code>/WEB-INF/classes/</code> and |
| <code>/WEB-INF/lib/</code> are excluded from the web resource caching. |
| (Resources loaded from these locations are cached by the web application |
| class loader.) (markt) |
| </fix> |
| <add> |
| <bug>57741</bug>: Enable the CGI servlet to use the standard error page |
| mechanism. Note that if the CGI servlet's debug init parameter is |
| set to 10 or higher then the standard error page mechanism will be |
| bypassed and a debug response generated by the CGI servlet will be |
| returned instead. (markt) |
| </add> |
| <fix> |
| <bug>58031</bug>: Make the (first) reason parameter parsing failed |
| available as a request attribute and then use it to provide a better |
| status code via the FailedRequstFilter (if configured). (markt) |
| </fix> |
| <fix> |
| <bug>58086</bug>: Correct a regression in the fix for 58086 that |
| incorrectly handled WAR URLs. (violetagg) |
| </fix> |
| <fix> |
| <bug>58096</bug>: Classes loaded from <code>/WEB-INF/classes/</code> |
| should use that directory as their code base. (markt) |
| </fix> |
| <fix> |
| Fix possible resource leaks by closing streams properly. |
| Issues reported by Coverity Scan. (violetagg) |
| </fix> |
| <fix> |
| <bug>58116</bug>: Fix regression in the fix for <bug>57281</bug> that |
| broke Comet support when running under a security manager. Based on a |
| patch provided by Johno Crawford. (markt) |
| </fix> |
| <fix> |
| <bug>58125</bug>: Avoid a possible <code>ClassCircularityError</code> |
| when running under a security manager. (markt) |
| </fix> |
| <fix> |
| <bug>58179</bug>: Fix a thread safety issues that could mean concurrent |
| threads setting the same attribute on a <code>ServletContext</code> |
| could both see <code>null</code> as the old value. (markt) |
| </fix> |
| <fix> |
| Allow web archives bigger than 2G to be deployed using ANT tasks. |
| (violetagg) |
| </fix> |
| <fix> |
| <bug>58192</bug>: Correct a regression in the previous fix for |
| <bug>58023</bug>. Ensure that classes are associated with their manifest |
| even if the class file is first read (and cached) without the manifest. |
| (markt) |
| </fix> |
| <fix> |
| Fix thread safety issue in the <code>AsyncContext</code> implementation |
| that meant a sequence of <code>start();dispatch();</code> calls using |
| non-container threads could result in a previous dispatch interfering |
| with a subsequent start. (markt) |
| </fix> |
| <fix> |
| <bug>58228</bug>: Make behaviour of |
| <code>ServletContext.getResource()</code> and |
| <code>ServletContext.getResourceAsStream()</code> consistent with each |
| other and the expected behaviour of the GET_RESOURCE_REQUIRE_SLASH |
| system property. (markt) |
| </fix> |
| <fix> |
| <bug>58230</bug>: Fix input stream corruption if non-blocking I/O is |
| used and the first read is made immediately after the switch to async |
| mode rather than in response to <code>onDataAvaiable()</code> and that |
| read does not read all the available data. (markt) |
| </fix> |
| <fix> |
| Ensure that <code>log4javascript*.jar</code> was not excluded from the |
| standard JAR scanning by default. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| <bug>57943</bug>: Prevent the same socket being added to the cache |
| twice. Patch based on analysis by Ian Luo / Sun Qi. (markt) |
| </fix> |
| <fix> |
| Add <code>text/javascript,application/javascript</code> to the default |
| list of compressable MIME types. (violetagg) |
| </fix> |
| <fix> |
| <bug>58103</bug>: When pipelining requests, and the previous request was |
| an async request, ensure that the socket is removed from the waiting |
| requests so that the async timeout thread doesn't process it during the |
| next request. (markt) |
| </fix> |
| <fix> |
| <bug>58151</bug>: Correctly handle EOF in the AJP APR/native connector |
| to prevent the connector entering a loop and generate excessive CPU |
| load. (markt) |
| </fix> |
| <fix> |
| In the AJP and HTTP NIO connectors, ensure that the socket timeout is |
| correctly set before adding the socket back to the poller for read. |
| (markt) |
| </fix> |
| <fix> |
| <bug>58157</bug>: Ensure that the handling of async timeouts does not |
| result in an unnecessary dispatch to a container thread that could |
| result in the current socket being added to the Poller multiple times |
| with multiple attempts to process the same event for the same socket. |
| (markt) |
| </fix> |
| <fix> |
| Correct a couple of edge cases in <code>RequestUtil.normalize()</code>. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>58110</bug>: Like scriptlet sections, declaration sections of JSP |
| pages have a one-to-one mapping of lines to the generated .java file. |
| Use this information to provide more accurate error messages if a |
| compilation error occurs in a declaration section. (markt) |
| </fix> |
| <fix> |
| <bug>58119</bug>: When tags are compiled they must be placed in the |
| org/apache/jsp/tag/web directory. Correct a regression in the fix for |
| 52725. (violetagg) |
| </fix> |
| <fix> |
| Fix a resource leak in JspC identified by Eclipse. (markt) |
| </fix> |
| <fix> |
| <bug>58178</bug>: Expressions in a tag file should use the tag |
| file's <code>PageContext</code> rather than that of the containing |
| page. (markt) |
| </fix> |
| <fix> |
| Following on from the fix for <bug>58178</bug>, expressions in a tag |
| file should use the tag file's imports rather than those of the |
| containing page. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>58166</bug>: Allow applications to send close codes in the range |
| 3000-4999 inclusive. (markt) |
| </fix> |
| <fix> |
| <bug>58232</bug>: Avoid possible NPE when adding endpoints |
| programmatically to the |
| <code>javax.websocket.server.ServerContainer</code>. |
| Based on a patch provided by bastian.(violetagg) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| Correct the incorrect document of <code>QueryTimeoutInterceptor</code>. |
| The setting value is not in milliseconds but in seconds. (kfujino) |
| </fix> |
| <fix> |
| <bug>58112</bug>: Update the documentation for using the Catalina tasks |
| in an Apache Ant build file. (markt) |
| </fix> |
| <fix> |
| Improve the Javadoc for some of the APR socket read functions that have |
| inconsistent behaviour for return values. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="jdbc-pool"> |
| <changelog> |
| <fix> |
| <bug>58042</bug>: The default value of <code>logFailed</code> attribute |
| of <code>SlowQueryReport</code> is changed to <code>false</code> so that |
| the failed queries are not logged by default. (kfujino) |
| </fix> |
| <fix> |
| Fix potential NPE in <code>QueryTimeoutInterceptor</code>. (kfujino) |
| </fix> |
| <fix> |
| Add support for stopping the pool cleaner via JMX. (kfujino) |
| </fix> |
| <fix> |
| The <code>fairness</code> attribute and |
| <code>ignoreExceptionOnPreLoad</code> attribute do not allow a change |
| via JMX. (kfujino) |
| </fix> |
| <fix> |
| If the <code>timeBetweenEvictionRunsMillis</code> attribute is changed |
| via jmx, it should restart the pool cleaner because this attribute |
| affects the execution interval of the pool cleaner. (kfujino) |
| </fix> |
| <fix> |
| Eliminate the dependence on <code>maxActive</code> of busy queues and |
| idle queue in order to enable the expansion of the pool size via JMX. |
| (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <update> |
| Update optional Checkstyle library to 6.8.1. (kkolinko) |
| </update> |
| <fix> |
| Update sample Eclipse IDE configuration to exclude test/webapp* and |
| similar paths from compiler sourcepath. (kkolinko) |
| </fix> |
| <update> |
| Update package renamed Apache Commons Pool to Commons Pool 2.4.2. |
| (markt) |
| </update> |
| <update> |
| Update package renamed Apache Commons DBCP to Commons DBCP 2.1.1. |
| (markt) |
| </update> |
| <add> |
| Support the use of the <code>threads</code> attribute on Ant's |
| junit task. Note that using this with a value of greater than one will |
| disable Cobertura code coverage. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.24 (markt)" rtext="2015-07-06"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| <bug>57938</bug>: Correctly handle empty form fields when a form is |
| submitted as <code>multipart/form-data</code>, the |
| <code>maxPostSize</code> attribute of the Connector has been set to a |
| negative value and the Context has been configured with a value of |
| <code>true</code> for <code>allowCasualMultipartParsing</code>. The |
| meaning of the value zero for the <code>maxPostSize</code> has also been |
| changed to mean a limit of zero rather than no limit to align it with |
| <code>maxSavePostSize</code> and to be more intuitive. (markt) |
| </fix> |
| <fix> |
| <bug>57977</bug>: Correctly bind and unbind the web application class |
| loader during execution of the PersistentValve. (markt) |
| </fix> |
| <fix> |
| Remove some unnecessary code from the web application class loader and |
| deprecate the now unused <code>validate()</code> method since the |
| requirements of SRV.10.7.2 are met using cleaner code in |
| <code>loadClass(String, boolean)</code> and <code>filter()</code>. |
| (markt) |
| </fix> |
| <fix> |
| Correct a bug that prevented the web application class loader's |
| <code>filter()</code> from working correctly. It only returned |
| <code>true</code> for classes in sub-packages of the listed packages, |
| but not classes located in the packages themselves. (markt) |
| </fix> |
| <fix> |
| Add the WebSocket API classes to the list of classes that the web |
| application class loader will always delegate to its parent for loading |
| first. (markt) |
| </fix> |
| <fix> |
| <bug>58015</bug>: Ensure that whenever the web application class loader |
| checks to see if it should delegate first, it also checks the result |
| of the <code>filter()</code> method which may indicate that it should |
| always delegate first for the current class/resource regardless of the |
| value of the delegate configuration option. (markt) |
| </fix> |
| <fix> |
| <bug>58023</bug>: Fix potentially excessive memory usage due to |
| unnecessary caching of JAR manifests in the web application class |
| loader. (markt) |
| </fix> |
| <fix> |
| <bug>57700</bug>: Ensure that Container event |
| <code>ADD_CHILD_EVENT</code> will be sent in all cases. (violetagg) |
| </fix> |
| <fix> |
| <bug>58086</bug>: Ensure that WAR URLs are handled properly when using |
| ANT for web application deployment. Based on a patch provided by Lukasz |
| Jader. (violetagg) |
| </fix> |
| <fix> |
| Fix CredentialHandler element handling in storeconfig. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| <bug>57265</bug>: Further fix to address a potential threading issue |
| when sendfile is used in conjunction with TLS. (markt) |
| </fix> |
| <fix> |
| <bug>57936</bug>: Improve robustness of the acceptor thread count |
| parameter for NIO2, since it must be set to 1. Submitted by |
| Oliver Kant. (remm) |
| </fix> |
| <add> |
| <bug>57943</bug>: Added a work-around to catch |
| <code>ConcurrentModificationException</code>s during Poller timeout |
| processing that were causing the Poller thread to stop. The root cause |
| of these exceptions is currently unknown. (markt) |
| </add> |
| <fix> |
| <bug>57944</bug>: Ensure that if non-blocking I/O listeners are set on |
| a non-container thread that the expected listener events are still |
| triggered. (markt) |
| </fix> |
| <fix> |
| Fix possible very long (1000 seconds) timeout with APR/native connector. |
| (markt) |
| </fix> |
| <add> |
| Support "-" separator in the SSLProtocol configuration of the |
| APR/native connector for protocol exclusion. (rjung) |
| </add> |
| <fix> |
| <bug>58004</bug>: Fix AJP buffering output data even in blocking mode. |
| (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>57969</bug>: Provide path parameters to POJO via per session |
| <code>javax.websocket.server.ServerEndpointConfig</code> as they vary |
| between different requests. (violetagg) |
| </fix> |
| <fix> |
| <bug>57974</bug>: Session.getOpenSessions should return all sessions |
| associated with a given endpoint instance, rather than all sessions |
| from the endpoint class. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| <bug>57282</bug>: Update request processing sequence diagrams. Updated |
| diagrams provided by Stephen Chen. (markt) |
| </fix> |
| <fix> |
| <bug>57971</bug>: Correct the documentation for the cluster |
| configuration setting <code>recoverySleepTime</code>. (markt) |
| </fix> |
| <add> |
| <bug>57758</bug>: Add document of <code>testOnConnect</code> attribute |
| in jdbc-pool doc. (kfujino) |
| </add> |
| <add> |
| Add description of <code>validatorClassName</code> attribute to testXXXX |
| attributes in jdbc-pool docs. (kfujino) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <scode> |
| Use <code>StringManager</code> to provide i18n support in the |
| <code>org.apache.catalina.tribes</code> packages. (kfujino) |
| </scode> |
| <fix> |
| Do not set the nodes that failed to replication to the backup nodes. |
| Ensure that the nodes that the data has been successfully replicated are |
| set to the backup node. (kfujino) |
| </fix> |
| <fix> |
| When failed to replication, rather than all member is handled as a |
| failed member, exclude the failure members from backup members. |
| (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="jdbc-pool"> |
| <changelog> |
| <fix> |
| Refactoring of the <code>removeOldest</code> method in |
| <code>SlowQueryReport</code> to behave as expected. (kfujino) |
| </fix> |
| <fix> |
| <bug>57783</bug>: Fix <code>NullPointerException</code> in |
| <code>SlowQueryReport</code>. To avoid this NPE, Refactor |
| <code>SlowQueryReport#removeOldest</code> and handle the abandoned |
| connection properly. (kfujino) |
| </fix> |
| <fix> |
| <bug>58042</bug>: In <code>SlowQueryReportJmx</code>, the |
| <code>LogSlow</code> and <code>logFailed</code> attributes that |
| inherited from <code>SlowQueryReport</code> are used as a condition of |
| whether JMX notifications are sent. (kfujino) |
| </fix> |
| <fix> |
| Ensure that specified <code>Boolean</code> attribute values of |
| <code>SlowQueryReport</code> reflect correctly. The <code>LogSlow</code> |
| and the <code>logFailed</code> are not system property, these are |
| attributes of <code>SlowQueryReport</code>. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <update> |
| Update package renamed Apache Commons BCEL to r1682271 to pick up some |
| some code clean up. (markt) |
| </update> |
| <update> |
| Update package renamed Apache Commons DBCP to r1682314 to pick up the |
| DBCP 2.1 release and additional fixes since then. (markt) |
| </update> |
| <update> |
| Update package renamed Apache Commons Pool to the 2.4 release. (markt) |
| </update> |
| <update> |
| Update package renamed Apache Commons File upload to r1682322 to pick up |
| the post 1.3.1 fixes. (markt) |
| </update> |
| <update> |
| Update package renamed Apache Commons Codec to r1682326. No functional |
| changes. Javadoc only. (markt) |
| </update> |
| <update> |
| Update optional Checkstyle library to 6.7. (kkolinko) |
| </update> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.23 (markt)" rtext="2015-05-22"> |
| <subsection name="Catalina"> |
| <changelog> |
| <add> |
| <bug>54618</bug>: Add a new <code>HttpHeaderSecurityFilter</code> that |
| adds the <code>Strict-Transport-Security</code>, |
| <code>X-Frame-Options</code> and <code>X-Content-Type-Options</code> |
| HTTP headers to the response. (markt) |
| </add> |
| <fix> |
| <bug>57875</bug>: Add <code>javax.websocket.*</code> to the classes for |
| which the web application class loader always delegates first. (markt) |
| </fix> |
| <fix> |
| <bug>57871</bug>: Ensure that setting the |
| <code>allowHttpSepsInV0</code> property of a |
| <code>LegacyCookieProcessor</code> to false only prevents HTTP |
| separators from being used without quotes. (markt) |
| </fix> |
| <fix> |
| Add a workaround for issues with SPNEGO authentication when running on |
| Java 8 update 40 and later. The workaround should be safe for earlier |
| Java versions but it can be disabled with the |
| <code>applyJava8u40Fix</code> attribute of the SPNEGO authenticator if |
| necessary. (markt) |
| </fix> |
| <fix> |
| <bug>57926</bug>: Restore the original <code>X-Forwarded-By</code> and |
| <code>X-Forwarded-For</code> headers after processing by the |
| <code>RemoteIPValve </code>. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Follow up to previous fix that removed the behavior difference between |
| NIO and NIO2 for SSL, which caused corruption with NIO2. |
| (remm) |
| </fix> |
| <fix> |
| <bug>57931</bug>: Ensure that TLS connections with the NIO or NIO2 HTTP |
| connectors that experience issues during the handshake (e.g. missing or |
| invalid client certificate) are closed cleanly and that the client |
| receives the correct error code rather than simply closing the |
| connection. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>56438</bug>: Add debug logging to TLD discovery that logs positive |
| and negative results for JARs, resource paths and directories. Patch |
| provided by VIN. (markt) |
| </fix> |
| <fix> |
| <bug>57802</bug>: Correct the default implementation of |
| <code>convertToType()</code> provided by |
| <code>javax.el.ELResolver</code>. (markt) |
| </fix> |
| <fix> |
| <bug>57887</bug>: Fix compilation of recursive tag files packaged in a |
| JAR. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Make sure that stream is closed after using it in |
| <code>DeltaSession.applyDiff()</code>. (kfujino) |
| </fix> |
| <scode> |
| Use <code>StringManager</code> to provide i18n support in the |
| <code>org.apache.catalina.ha packages</code>. (kfujino) |
| </scode> |
| <scode> |
| Add the context name to log messages when replication context failed to |
| start. (kfujino) |
| </scode> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| <bug>57875</bug>: Update the web application class loader documentation |
| to reflect the more relaxed approach to SRV.10.7.2 in Tomcat 8 onwards. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57896</bug>: Document system property |
| <code>org.apache.tomcat.util.http.ServerCookie.PRESERVE_COOKIE_HEADER</code> |
| that was introduced in Tomcat 8.0.0. (kkolinko) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <fix> |
| Ensure that the state transfer flag is updated to true only when the map |
| states have been transferred correctly from existing map members. |
| (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <update> |
| Update optional Checkstyle library to 6.6. (kkolinko) |
| </update> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.22 (markt)" rtext="2015-05-05"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| <bug>57736</bug>: Change the format of the Tomcat specific URLs for |
| resources inside JARs that are in turn packed in a WAR. The |
| <code>^/</code> sequence has been replaced by <code>*/</code> so that |
| the resulting URLs are compliant with RFC 2396 and do not trigger |
| exceptions when converted to URIs. The old format will continue to be |
| accepted. (markt) |
| </fix> |
| <fix> |
| <bug>57752</bug>: Exclude non-cached resources from the Cache statistics |
| for resource lookups. Patch provided by Adam Mlodzinski. (markt) |
| </fix> |
| <add> |
| Allow logging of the remote port in the access log using the format |
| pattern <code>%{remote}p</code>. (rjung) |
| </add> |
| <fix> |
| <bug>57556</bug>: Refine the previous fix for this issue so that the |
| real path returned only has a trailing separator if the requested path |
| ended with <code>/</code>. (markt) |
| </fix> |
| <fix> |
| <bug>57765</bug>: When checking last modified times as part of the |
| automatic deployment process, account for the fact that |
| <code>File.lastModified()</code> has a resolution of one second to |
| ensure that if a file has been modified within the last second, the |
| latest version of the file is always used. Note that a side-effect of |
| this change is that files with modification times in the future are |
| treated as if they are unmodified. (markt) |
| </fix> |
| <fix> |
| Align redeploy resource modification checking with reload modification |
| checking so that now, in both cases, a change in modification time |
| rather than an increase in modification time is used to determine if the |
| resource has changed. (markt) |
| </fix> |
| <fix> |
| Cleanup <code>o.a.tomcat.util.digester.Digester</code> from debug |
| messages that do not give any valuable information. Patch provided |
| by Polina Genova. (violetagg) |
| </fix> |
| <fix> |
| <bug>57772</bug>: When reloading a web application and a directory |
| representing an expanded WAR needs to be deleted, delete the directory |
| after the web application has been stopped rather than before to avoid |
| potential ClassNotFoundExceptions. (markt) |
| </fix> |
| <fix> |
| Fix wrong logger name of |
| <code>org.apache.catalina.webresources.StandardRoot</code>. (kfujino) |
| </fix> |
| <fix> |
| <bug>57801</bug>: Improve the error message in the start script in case |
| the PID read from the PID file is already owned by a process. (rjung) |
| </fix> |
| <fix> |
| <bug>57841</bug>: Improve error logging during web application start. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57856</bug>: Ensure that any scheme/port changes implemented by the |
| <code>RemoteIpFilter</code> also affect |
| <code>HttpServletResponse.sendRedirect()</code>. (markt) |
| </fix> |
| <fix> |
| <bug>57863</bug>: Fix the RewriteMap support in RewriteValve that did |
| not use the correct key value to look up entries. Based on a patch |
| provided by Tatsuya Bessho. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| <bug>57779</bug>: When an I/O error occurs on a non-container thread |
| only dispatch to a container thread to handle the error if using Servlet |
| 3+ asynchronous processing. This avoids potential deadlocks if an |
| application is performing I/O on a non-container thread without using |
| the Servlet 3+ asynchronous API. (markt) |
| </fix> |
| <scode> |
| Remove the experimental support for SPDY. No current user agent supports |
| the version of SPDY that the experiment targeted. Note: HTTP/2 support |
| is under development for Tomcat 9 and may be back-ported to Tomcat 8 |
| once complete. (markt) |
| </scode> |
| <fix> |
| Possible incomplete writes with SSL NIO2. (remm) |
| </fix> |
| <fix> |
| Incorrect reads with SSL NIO2 caused by a bad strategy for handling IO |
| differences between NIO and NIO2 that don't seem to be justified. |
| (remm) |
| </fix> |
| <fix> |
| After some errors, the pending flags could remain set when using SSL |
| NIO2. (remm) |
| </fix> |
| <fix> |
| <bug>57833</bug>: When using JKS based keystores for NIO or NIO2, ensure |
| that the key alias is always converted to lower case since that is what |
| JKS key stores expect. Based on a patch by Santosh Giri Govind M. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57837</bug>: Add <code>text/css</code> to the default list of |
| compressable MIME types. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>57845</bug>: Ensure that, if the same JSP is accessed directly and |
| via a <code><jsp-file></code> declaration in web.xml, updates to |
| the JSP are visible (subject to the normal rules on re-compilation) |
| regardless of how the JSP is accessed. (markt) |
| </fix> |
| <fix> |
| <bug>57855</bug>: Explicitly handle the case where a |
| <code>MethodExpression</code> is invoked with null or the wrong number |
| of parameters. Rather than failing with an |
| <code>ArrayIndexOutOfBoundsException</code> or a |
| <code>NullPointerException</code> throw an |
| <code>IllegalArgumentException</code> with a useful error message. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Avoid unnecessary call of <code>DeltaRequest.addSessionListener()</code> |
| in non-primary nodes. (kfujino) |
| </fix> |
| <add> |
| Add new attribute that send all actions for session across Tomcat |
| cluster nodes. (kfujino) |
| </add> |
| <fix> |
| Remove unused <code>pathname</code> attribute in mbean definition of |
| <code>BackupManager</code>. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>57761</bug>: Ensure that the opening HTTP request is correctly |
| formatted when the WebSocket client connects to a server root. (remm) |
| </fix> |
| <fix> |
| <bug>57762</bug>: Ensure that the WebSocket client correctly detects |
| when the connection to the server is dropped. (markt) |
| </fix> |
| <fix> |
| <bug>57776</bug>: Revert the 8.0.21 fix for the |
| <code>permessage-deflate</code> implementation and incorrect op-codes |
| since the fix was unnecessary (the bug only affected trunk) and the fix |
| broke rather than fixed <code>permessage-deflate</code> if an |
| uncompressed message was converted into more than one compressed |
| message. (markt) |
| </fix> |
| <fix> |
| Fix log name typo in <code>WsRemoteEndpointImplServer</code> class, |
| caused by a copy-paste. (markt/kkolinko) |
| </fix> |
| <fix> |
| <bug>57788</bug>: Avoid NPE when looking up a class hierarchy without |
| finding anything. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <add> |
| <bug>57759</bug>: Add information to the keyAlias documentation to make |
| it clear that the order keys are read from the keystore is |
| implementation dependent. (markt) |
| </add> |
| <fix> |
| <bug>57864</bug>: Update the documentation web application to make it |
| clearer that hex values are not valid for cluster send options. Based on |
| a patch by Kyohei Nakamura. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <fix> |
| Fix a concurrency issue when a backup message that has all session data |
| and a backup message that has diff data are processing at the same time. |
| This fix ensures that <code>MapOwner</code> is set to |
| <code>ReplicatedMapEntry</code>. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <fix> |
| Add missing pom for tomcat-storeconfig. (remm) |
| </fix> |
| <update> |
| Update optional Checkstyle library to 6.5. (kkolinko) |
| </update> |
| <fix> |
| <bug>57707</bug>: Improve error message when trying to run a release |
| build on a non-Windows platform and Wine is not available. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.21 (markt)" rtext="2015-03-26"> |
| <subsection name="Catalina"> |
| <changelog> |
| <add> |
| <bug>49785</bug>: Enable StartTLS connections for JNDIRealm. |
| (fschumacher) |
| </add> |
| <fix> |
| When docBase refers internal war and unpackWARs is set to false, avoid |
| registration of the invalid redeploy resource that has been added ".war" |
| extension in duplicate. (kfujino) |
| </fix> |
| <fix> |
| If WAR exists, it is not necessary to trigger a reload when adding a |
| Directory. (kfujino) |
| </fix> |
| <fix> |
| <bug>55988</bug>: Add support for Java 8 JSSE server-preferred TLS |
| cipher suite ordering. This feature requires Java 8 |
| and is controlled by <code>useServerCipherSuitesOrder</code> |
| attribute on an HTTP connector. |
| Based upon a patch provided by Ognjen Blagojevic. (schultz) |
| </fix> |
| <fix> |
| <bug>56608</bug>: When deploying an external WAR, add watched resources |
| in the expanded directory based on whether the expanded directory is |
| expected to exist rather than if it does exist. (markt) |
| </fix> |
| <fix> |
| When triggering a reload due to a modified watched resource, ensure |
| that multiple changed watched resources only trigger one reload rather |
| than a series of reloads. (markt) |
| </fix> |
| <fix> |
| <bug>57601</bug>: Ensure that HEAD requests return the correct content |
| length (i.e. the same as for a GET) when the requested resource includes |
| a resource served by the Default servlet. (jboynes/markt) |
| </fix> |
| <fix> |
| <bug>57602</bug>: Ensure that HEAD requests return the correct content |
| length (i.e. the same as for a GET) when the requested resource includes |
| a resource served by a servlet that extends <code>HttpServlet</code>. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57621</bug>: When an async request completes, ensure that any |
| remaining request body data is swallowed. (markt) |
| </fix> |
| <fix> |
| <bug>57637</bug>: Do not create unnecessary sessions when using |
| PersistentValve. (jboynes/fschumacher) |
| </fix> |
| <fix> |
| <bug>57645</bug>: Correct a regression in the fix for |
| <bug>57190</bug> that incorrectly required the path passed to |
| <code>ServletContext.getContext(String)</code> to be an exact match to a |
| path to an existing context. (markt) |
| </fix> |
| <fix> |
| Make sure that <code>unpackWAR</code> attribute of <code>Context</code> |
| is handled correctly in <code>HostConfig</code>. (kfujino) |
| </fix> |
| <fix> |
| When deploying a WAR file that contains a context.xml file and |
| <code>unpackWARs</code> is <code>false</code> ignore any context.xml |
| file that may exist in an expanded directory associated with the WAR. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57675</bug>: Correctly quote strings when using the extended |
| access log. (markt) |
| </fix> |
| <add> |
| Enable Tomcat to detect when a WAR file has been changed while Tomcat is |
| not running. Tomcat does this by adding a META-INF/war-tracking file to |
| the expanded directory and setting the last modified time of this file |
| to the last modified time of the WAR. If Tomcat detects a modified WAR |
| via this mechanism the web application will be redeployed (i.e. the |
| expanded directory will be removed and the modified WAR expanded in its |
| place). (markt) |
| </add> |
| <fix> |
| <bug>57704</bug>: Fix potential NPEs during web application start/stop |
| when <code>org.apache.tomcat.InstanceManager</code> is not initialized. |
| (violetagg) |
| </fix> |
| <add> |
| Use the simplified digest output for digest.bat|sh when generating |
| digests with no salt and a single iteration to make it easier to use |
| with DIGEST authentication. (markt) |
| </add> |
| <fix> |
| Add support for <code>LAST_ACCESS_AT_START</code> system property to |
| <code>SingleSignOn</code>. (kfujino) |
| </fix> |
| <scode> |
| Refactor Authenticator implementations to reduce code duplication. |
| (markt) |
| </scode> |
| <fix> |
| <bug>57724</bug>: Handle the case in the CORS filter where a user agent |
| includes an origin header for a non-CORS request. (markt) |
| </fix> |
| <fix> |
| When searching for SCIs |
| <code>o.a.catalina.Context.getParentClassLoader</code> will be used |
| instead of <code>java.lang.ClassLoader.getParent</code>. Thus one can |
| provide the correct parent class loader when running embedded Tomcat in |
| other environments such as OSGi. (violetagg) |
| </fix> |
| <fix> |
| <bug>57743</bug>: Fix a locked file / resource leak issue when a JAR is |
| accessed just before or during web application undeploy. Patch provided |
| by Pavel Avgustinov. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <add> |
| <bug>57540</bug>: Make TLS/SSL protocol available in a new request |
| attribute |
| (<code>org.apache.tomcat.util.net.secure_protocol_version</code>). |
| (Note that AJP connectors will require <tt>mod_jk</tt> 1.2.41 or later, |
| or an as-yet-unknown version of mod_proxy_ajp, or configure the proxy |
| to send the AJP_SSL_PROTOCOL request attribute to Tomcat. Please see |
| the bug comments for details.) |
| Based upon a patch provided by Ralf Hauser. (schultz) |
| </add> |
| <fix> |
| Fix a cipher ordering issue when using the OpenSSL syntax for JSSE |
| cipher configuration to ensure that ephemeral ECDH with AES is preferred |
| to ephemeral ECDH with anything else. (markt) |
| </fix> |
| <fix> |
| <bug>57570</bug>: Make the processing of trailer headers with chunked |
| input optional and disabled by default. (markt) |
| </fix> |
| <fix> |
| <bug>57592</bug>: Correctly handle the case where an |
| <code>AsyncContext</code> is used for non-blocking I/O and is completed |
| during a write operation. (markt) |
| </fix> |
| <fix> |
| <bug>57638</bug>: Avoid an IllegalArgumentException when an AJP request |
| body chunk larger than the socket read buffer is being read. This |
| typically requires a larger than default AJP packetSize. (markt) |
| </fix> |
| <fix> |
| <bug>57674</bug>: Avoid a BufferOverflowException when an AJP response |
| body chunk larger than the socket write buffer is being written. This |
| typically requires a larger than default AJP packetSize. (markt) |
| </fix> |
| <update> |
| Align the OpenSSL syntax cipher configuration with the OpenSSL 1.0.2 |
| branch. (markt) |
| </update> |
| <fix> |
| Numerous fixes to the APR/native connector to improve robustness. |
| (markt) |
| </fix> |
| <fix> |
| Stop caching and re-using SocketWrapper instances. With the introduction |
| of upgrade and non-blocking I/O, I/O can occur on non-container threads. |
| This makes it nearly impossible to track whether a SocketWrapper is |
| still being referenced or not, making re-use a risky proposition. |
| (markt) |
| </fix> |
| <scode> |
| Refactor Connector authentication (only used by AJP) into a separate |
| method. (markt) |
| </scode> |
| <add> |
| <bug>57708</bug>: Implement a new feature for AJP connectors - Tomcat |
| Authorization. If the new tomcatAuthorization attribute is set to |
| <code>true</code> (it is disabled by default) Tomcat will take an |
| authenticated user name from the AJP protocol and use the appropriate |
| Realm for the request to authorize (i.e. add roles) to that user. |
| (markt) |
| </add> |
| <fix> |
| Fix an issue that meant that any pipe-lined data read by Tomcat before |
| an asynchronous request completed was lost during the completion of the |
| asynchronous request. This mean that the pipe-lined request(s) would be |
| lost and/or corrupted. (markt) |
| </fix> |
| <update> |
| Update the minimum recommended version of the Tomcat Native library (if |
| used) to 1.1.33. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>57135</bug>: Package imports via |
| <code>javax.el.ImportHandler</code> should only import public, concrete |
| classes. (markt) |
| </fix> |
| <fix> |
| <bug>57583</bug>: Cache 'Not Found' results in |
| <code>javax.el.ImportHandler.resolveClass()</code> to save repeated |
| attempts to load classes that are known not to exist to improve |
| performance. (markt) |
| </fix> |
| <fix> |
| <bug>57626</bug>: Correct a regression introduced in the 8.0.16 fix for |
| ensuring Jars were closed after use, that broke recompilation of |
| modified JSPs that depended on a tag file packaged in a Jar. (markt) |
| </fix> |
| <fix> |
| <bug>57627</bug>: Correctly determine last modified times for |
| dependencies when a tag file packaged in a JAR depends on a tag file |
| packaged in a second JAR. (markt) |
| </fix> |
| <fix> |
| <bug>57647</bug>: Ensure INFO message is logged when scanning jars for |
| TLDs if the scan does not find a TLD in any jar. Previously a message |
| would only be logged if a TLD was not found in all scanned jars. (jboynes) |
| </fix> |
| <update> |
| <bug>57662</bug>: Update all references to the ECJ compiler to version |
| 4.4.2. (violetagg) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Remove unnecessary method that always returns true. The domain filtering |
| works on <code>DomainFilterInterceptor</code>. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| Correct a bug in the <code>permessage-deflate</code> implementation that |
| meant that the incorrect op-codes were used if an uncompressed message |
| was converted into more than one compressed message. (markt) |
| </fix> |
| <add> |
| <bug>57676</bug>: List conflicting WebSocket endpoint classes when |
| there is a path conflict. Based upon a patch proposed by yangkun. |
| (schultz) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| <bug>56058</bug>: Add links to the AccessLogValve documentation for |
| configuring reverse proxies and/or Tomcat to ensure that the desired |
| information is used entered in the access log when Tomcat is running |
| behind a reverse proxy. (markt) |
| </fix> |
| <fix> |
| <bug>57587</bug>: Update the JNDI Datasource HOWTO for DBCP2. Patch |
| provided by Phil Steitz. (markt) |
| </fix> |
| <fix> |
| Remove incorrect note from context configuration page in the |
| documentation web application that stated WAR files located outside the |
| appBase were never unpacked. (markt) |
| </fix> |
| <update> |
| <bug>57644</bug>: Update examples to use Apache Standard Taglib 1.2.5. |
| (jboynes) |
| </update> |
| <fix> |
| <bug>57683</bug>: Ensure that if a client aborts their connection to the |
| stock ticker example (the only way a client can disconnect), the example |
| continues to work for existing and new clients. (markt) |
| </fix> |
| <fix> |
| Make it clear that when using digested passwords with DIGEST |
| authentication that no salt and only a single iteration must be used |
| when generating the digest. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Extras"> |
| <changelog> |
| <fix> |
| <bug>57377</bug>: Remove the restriction that prevented the use of SSL |
| when specifying a bind address with the JMXRemoteLifecycleListener. Also |
| enable SSL to be configured for the registry as well as the server. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <fix> |
| When a map member has been added to <code>ReplicatedMap</code>, make |
| sure to add it to backup nodes list of all other members. (kfujino) |
| </fix> |
| <fix> |
| Make sure that refuse the messages from a different domain in |
| <code>DomainFilterInterceptor</code>. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <update> |
| Update optional Checkstyle library to 6.4.1. (kkolinko) |
| </update> |
| <fix> |
| <bug>57703</bug>: Update the <code>http-method</code> definition for |
| web applications using a Servlet 2.5 descriptor as per Servlet 2.5 MR 6. |
| (markt) |
| </fix> |
| <update> |
| Update to Tomcat Native Library version 1.1.33 to pick up the Windows |
| binaries that are based on OpenSSL 1.0.1m and APR 1.5.1. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.20 (markt)" rtext="2015-02-20"> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Fix a concurrency issue that meant that a change in socket timeout (e.g. |
| when switching to asynchronous I/O) did not always take effect |
| immediately. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.19 (markt)" rtext="not released"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| Clarify threaded usage of variables by removing volatile marker |
| in NonceInfo. Issue reported by Coverity Scan. (fschumacher) |
| </fix> |
| <fix> |
| <bug>57180</bug>: Further fixes to support the use of arbitrary HTTP |
| methods with the CORS filter. (markt) |
| </fix> |
| <fix> |
| <bug>57472</bug>: Fix performance regression in resources implementation |
| when signed JARs are used in a web application. (markt) |
| </fix> |
| <add> |
| Warn about problematic setting of appBase. (fschumacher) |
| </add> |
| <fix> |
| Fix exception while authentication in JDBCRealm. (fschumacher) |
| </fix> |
| <fix> |
| <bug>57534</bug>: CORS Filter should only look at media type component of |
| Content-Type request header. (markt) |
| </fix> |
| <fix> |
| <bug>57556</bug>: Align <code>getRealPath()</code> behaviour with that |
| of earlier versions and include a trailing separator if the real path |
| refers to a directory. (markt) |
| </fix> |
| <fix> |
| Ensure that Servlet 3.0 async requests where <code>startAsync()</code> |
| is called in one container thread and <code>dispatch()</code> is called |
| in a different container thread complete correctly. (markt) |
| </fix> |
| <fix> |
| Ensure that user name checking in the optional SecurityListener is |
| case-insensitive (as documented) and than the case-insensitive |
| comparison is performed using the system default Locale. (markt) |
| </fix> |
| <add> |
| <bug>57021</bug>: Improve logging in AprLifecycleListener and |
| jni.Library when Tomcat-Native DLL fails to load. Based on a patch by |
| Pravallika Peddi. (markt/kkolinko) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Fix several bugs that could cause multiple registrations for write |
| events for a single socket when using Servlet 3.0 async. Typically, the |
| side effects of these multiple registrations would be exceptions |
| appearing in the logs. (markt) |
| </fix> |
| <fix> |
| <bug>57432</bug>: Align <code>SSL_OP_NO_TLSv1_1</code> and |
| <code>SSL_OP_NO_TLSv1_2</code> constant values with OpenSSL (they had |
| been swapped). (markt) |
| </fix> |
| <fix> |
| <bug>57509</bug>: Improve length check when writing HTTP/1.1 |
| response headers: reserve space for 4 extra bytes. (kkolinko) |
| </fix> |
| <fix> |
| <bug>57544</bug>: Fix potential infinite loop when preparing a kept |
| alive HTTP connection for the next request. (markt) |
| </fix> |
| <fix> |
| <bug>57546</bug>: Ensure that a dropped network connection does not |
| leave references to the UpgradeProcessor associated with the connection |
| in memory. (markt) |
| </fix> |
| <fix> |
| When applying the <code>maxSwallowSize</code> limit to a connection read |
| that many bytes first before closing the connection to give the client a |
| chance to read the response. (markt) |
| </fix> |
| <fix> |
| Prevent an async timeout being processed multiple times for the same |
| socket when running on slow and/or heavily loaded systems. (markt) |
| </fix> |
| <fix> |
| <bug>57581</bug>: Change statistics byte counter in coyote Request |
| object to be long to allow values above 2Gb. (kkolinko) |
| </fix> |
| <update> |
| Use the data that supports cipher definition using OpenSSL syntax to |
| improve the quality of values provided for the |
| <code>javax.servlet.request.key_size</code> request attribute. (markt) |
| </update> |
| <fix> |
| Fix a concurrency issue in the APR Poller that meant it was possible |
| under low load for a socket queued to be added to the Poller not to be |
| added for 10 seconds. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <update> |
| <bug>57123</bug>: Update all references to the ECJ compiler to version |
| 4.4.1. With thanks to Ralph Schaer for uploading the 4.4.1 JAR to Maven |
| Central. (markt) |
| </update> |
| <add> |
| <bug>57564</bug>: Make JspC amenable to subclassing. Patch provided by |
| Jan Bartel. (markt) |
| </add> |
| <fix> |
| Simplify code in <code>ProtectedFunctionMapper</code> class of |
| Jasper runtime. (kkolinko) |
| </fix> |
| <fix> |
| <bug>57574</bug>: Do not check existence of a Java package in |
| <code>javax.el.ImportHandler.importPackage()</code>. (kkolinko) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>57490</bug>: Make it possible to use Tomcat's WebSocket client |
| within a web application when running under a SecurityManager. Based on |
| a patch by Mikael Sterner. (markt) |
| </fix> |
| <add> |
| Add some debug logging to the WebSocket session to track session |
| creation and session closure. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <update> |
| Clarify documentation for <code>useBodyEncodingForURI</code> |
| attribute of a connector. (kkolinko) |
| </update> |
| <fix> |
| Fix possible resource leaks by closing streams properly. Issues |
| reported by Coverity Scan. (fschumacher) |
| </fix> |
| <fix> |
| <bug>57503</bug>: Make clear that the JULI integration for log4j only |
| works with log4j 1.2.x. (markt) |
| </fix> |
| <fix> |
| <bug>57496</bug>: Remove hard-coded URL in JSP SVG example. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <fix> |
| Fix a possible deadlock when receiver thread invokes |
| <code>mapMemberAdded()</code> while ping thread invokes |
| <code>memberAlive()</code>. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <add> |
| Enhance bean factory used for JNDI resources. New attribute |
| <code>forceString</code> allows to support non-standard |
| string argument property setters. (rjung) |
| </add> |
| <fix> |
| Assign newly created stream to field instead of leaking it uselessly. |
| Issue reported by Coverity Scan. (fschumacher) |
| </fix> |
| <update> |
| Update optional Checkstyle library to 6.3. (kkolinko) |
| </update> |
| <fix> |
| Guard the digester from MbeansDescriptorsDigesterSource with its own |
| lock object. (fschumacher) |
| </fix> |
| <fix> |
| Refactor the unit tests and add some new test properties to make it |
| easier to exclude performance tests and relax timing tests. This is |
| primarily for the ASF CI system where these tests frequently fail. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57558</bug>: Add missing JAR in Ant task definition required by |
| the validate task. (markt) |
| </fix> |
| <add> |
| List names of Testsuites that have failed or skipped tests when |
| running the tests with Ant. (kkolinko) |
| </add> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.18 (markt)" rtext="2015-01-26"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| <bug>57178</bug>: The CORS filter now treats <code>null</code> as a |
| valid origin that matches <code>*</code>. Patch provided by Gregor |
| Zurowski. (markt) |
| </fix> |
| <fix> |
| <bug>57425</bug>: Don't add attributes with null value or name to the |
| replicated context. (fschumacher) |
| </fix> |
| <add> |
| <bug>57431</bug>: Enable usage of custom class for context creation when |
| using embedded tomcat. (fschumacher) |
| </add> |
| <fix> |
| <bug>57446</bug>: Ensure that <code>ServletContextListener</code>s that |
| have limited access to <code>ServletContext</code> methods are called |
| with the same <code>ServletContext</code> instance for both |
| <code>contextInitialized()</code> and <code>contextDestroyed()</code>. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57455</bug>: Explicitly block the use of the double-quote character |
| when configuring the common, server and shared class loaders since |
| double-quote is used to quote values that contain commas. (markt) |
| </fix> |
| <fix> |
| <bug>57461</bug>: When an instance of |
| <code>org.apache.catalina.startup.VersionLoggerListener</code> logs the |
| result of <code>System.getProperty("java.home")</code> don't report it |
| in a manner that makes it look like the <code>JAVA_HOME</code> |
| environment variable. (markt) |
| </fix> |
| <fix> |
| <bug>57476</bug>: Ensure the responses written as part of a forward are |
| fully written. This fixes a regression in 8.0.15 caused by the fix for |
| <bug>57252</bug>. (markt) |
| </fix> |
| <fix> |
| While closing streams for given resources ensure that if an exception |
| happens it will be handled properly. Issue is reported by Coverity Scan. |
| (violetagg) |
| </fix> |
| <fix> |
| <bug>57481</bug>: Fix <code>IllegalStateException</code> at the end of |
| the request when using non-blocking reads with the HTTP BIO connector. |
| (markt) |
| </fix> |
| <fix> |
| Change Response to use UEncoder instances with shared safeChars. |
| (fschumacher) |
| </fix> |
| <fix> |
| Ensure that when static resources are served from JARs, only static |
| resources are served. (markt) |
| </fix> |
| <add> |
| Allow <code>VersionLoggerListener</code> to log all system properties. |
| This feature is off by default. (kkolinko) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| Ensure that classes imported via the page directive are made available |
| to the EL environment via the ImportHandler. Issue is reported by |
| Coverity Scan. (violetagg) |
| </fix> |
| <fix> |
| <bug>57441</bug>: Do not trigger an error when using functions defined |
| by lambdas or imported via an ImportHandler in an EL expression in a |
| JSP. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Fix mbean descriptor of <code>ClusterSingleSignOn</code>. (kfujino) |
| </fix> |
| <fix> |
| <bug>57473</bug>: Add sanity check to FarmWebDeployer's WarWatcher to |
| detect suspected incorrect permissions on the watch directory. (schultz) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <fix> |
| Clarify the handling of Copy message and Copy nodes. (kfujino) |
| </fix> |
| <fix> |
| Copy node does not need to send the entry data. It is enough to send |
| only the node information of the entry. (kfujino) |
| </fix> |
| <fix> |
| ReplicatedMap should send the Copy message when replicating. (kfujino) |
| </fix> |
| <fix> |
| Fix behavior of ReplicatedMap when member has disappeared. If map entry |
| is primary, rebuild the backup members. If primary node of map entry has |
| disappeared, backup node is promoted to primary. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.17 (markt)" rtext="2015-01-16"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| Correct a regression in the previous fix for <bug>57252</bug> that broke |
| request listeners for non-async requests that triggered an error that |
| was handled by the ErrorReportingValve. (markt/violetagg) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Add flushing to send ack in the NIO2 connector. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.16 (markt)" rtext="not released"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| <bug>57172</bug>: Provide a better error message if something attempts to |
| access a resource through a web application class loader that has been |
| stopped. (markt/kkolinko) |
| </fix> |
| <fix> |
| <bug>57173</bug>: Revert the fix for <bug>56953</bug> that broke |
| annotation scanning in some cases. (markt) |
| </fix> |
| <fix> |
| <bug>57180</bug>: Do not limit the CORS filter to only accepting |
| requests that use an HTTP method defined in RFC 7231. (markt) |
| </fix> |
| <fix> |
| <bug>57190</bug>: Fix <code>ServletContext.getContext(String)</code> |
| when parallel deployment is used so that the correct ServletContext is |
| returned. (markt) |
| </fix> |
| <fix> |
| <bug>57208</bug>: Prevent NPE in JNDI Realm when no results are found |
| in a directory context for a user with specified user name. Based on |
| a patch provided by Jason McIntosh. (violetagg) |
| </fix> |
| <add> |
| <bug>57209</bug>: Add a new attribute, userSearchAsUser to the JNDI |
| Realm. (markt) |
| </add> |
| <fix> |
| <bug>57215</bug>: Ensure that the result of calling |
| <code>HttpServletRequest.getContextPath()</code> is neither decoded nor |
| normalized as required by the Servlet specification. (markt) |
| </fix> |
| <fix> |
| <bug>57216</bug>: Improve handling of invalid context paths. A context |
| path should either be an empty string or start with a |
| <code>'/'</code> and do not end with a |
| <code>'/'</code>. Invalid context path are automatically |
| corrected and a warning is logged. The <code>null</code> and |
| <code>"/"</code> values are now correctly changed to |
| <code>""</code>. (markt/kkolinko) |
| </fix> |
| <fix> |
| Update storeconfig with the CredentialHandler element. (remm) |
| </fix> |
| <fix> |
| Correct message that is logged when load-on-startup servlet fails |
| to load. It was logging a wrong name. (kkolinko) |
| </fix> |
| <fix> |
| <bug>57239</bug>: Correct several message typos. Includes patch by |
| vladk. (kkolinko) |
| </fix> |
| <fix> |
| Fix closing of Jars during annotation scanning. (schultz/kkolinko) |
| </fix> |
| <fix> |
| Fix a concurrency issue in async processing. Ensure that a non-container |
| thread can not change the async state until the container thread has |
| completed. (markt) |
| </fix> |
| <fix> |
| <bug>57252</bug>: Provide application configured error pages with a |
| chance to handle an async error before the built-in error reporting. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57281</bug>: Enable non-public Filter and Servlet classes to be |
| configured programmatically via the Servlet 3.0 API and then used |
| without error when running under a SecurityManager. (markt) |
| </fix> |
| <fix> |
| <bug>57308</bug>: Remove unnecessary calls to |
| <code>System.getProperty()</code> where more suitable API calls are |
| available. (markt) |
| </fix> |
| <add> |
| Add unit tests for RemoteAddrValve and RemoteHostValve. (rjung) |
| </add> |
| <add> |
| Allow to configure RemoteAddrValve and RemoteHostValve to |
| adopt behavior depending on the connector port. Implemented |
| by optionally adding the connector port to the string compared |
| with the patterns <code>allow</code> and <code>deny</code>. Configured |
| using <code>addConnectorPort</code> attribute on valve. (rjung) |
| </add> |
| <add> |
| Optionally trigger authentication instead of denial in |
| RemoteAddrValve and RemoteHostValve. This only works in |
| combination with <code>preemptiveAuthentication</code> |
| on the application context. Configured using |
| <code>invalidAuthenticationWhenDeny</code> attribute on valve. (rjung) |
| </add> |
| <fix> |
| Remove the obsolete <code>jndi</code> protocol usage from the scanning |
| process performed by StandardJarScanner. (violetagg) |
| </fix> |
| <fix> |
| Prevent file descriptors leak and ensure that files are closed after |
| retrieving the last modification time. (violetagg) |
| </fix> |
| <update> |
| Make <code>o.a.catalina.webresources.StandardRoot</code> easier for |
| extending. (violetagg) |
| </update> |
| <fix> |
| <bug>57326</bug>: Enable <code>AsyncListener</code> implementations to |
| re-register themselves during <code>AsyncListener.onStartAsync</code>. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57331</bug>: Allow ExpiresFilter to use "year" as synonym for |
| "years" in its configuration. (kkolinko) |
| </fix> |
| <fix> |
| Ensure that if the RewriteValve rewrites a request that subsequent calls |
| to <code>HttpServletRequest.getRequestURI()</code> return the undecoded |
| URI. (markt) |
| </fix> |
| <fix> |
| Ensure that if the RewriteValve rewrites a request to a non-normalized |
| URI that the URI is normalized before the URI is mapped to ensure that |
| the correct mapping is applied. (markt) |
| </fix> |
| <fix> |
| Prevent NPEs being logged during post-processing for requests that have |
| been re-written by the RewriteValve. (markt) |
| </fix> |
| <fix> |
| Various StoreConfig improvements including removing a dependency on the |
| <code>StandardServer</code> implementation, improve consistency of |
| behaviour when MBean is not registered and improve error messages when |
| accessed via the Manager application. (markt) |
| </fix> |
| <update> |
| Improve SnoopServlet in unit tests. (rjung) |
| </update> |
| <add> |
| Add RequestDescriptor class to unit tests. |
| Adjust TestRewriteValve to use RequestDescriptor. (rjung) |
| </add> |
| <update> |
| Add more AJP unit tests. (rjung) |
| </update> |
| <fix> |
| <bug>57363</bug>: Log to stderr if LogManager is unable to read |
| configuration files rather than swallowing the exception silently. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| Allow HTTP upgrade process to complete without data corruption when |
| additional content is sent along with the upgrade header. (remm) |
| </fix> |
| <fix> |
| <bug>57187</bug>: Regression handling the special * URL. (remm) |
| </fix> |
| <fix> |
| <bug>57234</bug>: Make SSL protocol filtering to remove insecure |
| protocols case insensitive. (markt) |
| </fix> |
| <fix> |
| <bug>57265</bug>: Fix some potential concurrency issues with sendFile |
| and the NIO connector. (markt) |
| </fix> |
| <fix> |
| <bug>57324</bug>: If the client uses <code>Expect: 100-continue</code> |
| and Tomcat responds with a non-2xx response code, Tomcat also closes the |
| connection. If Tomcat knows the connection is going to be closed when |
| committing the response, Tomcat will now also send the |
| <code>Connection: close</code> response header. (markt) |
| </fix> |
| <fix> |
| <bug>57340</bug>: When using Comet, ensure that Socket and SocketWrapper |
| are only returned to their respective caches once on socket close (it is |
| possible for multiple threads to call close concurrently). (markt) |
| </fix> |
| <fix> |
| <bug>57347</bug>: AJP response contains wrong status reason phrase |
| (rjung) |
| </fix> |
| <add> |
| <bug>57391</bug>: Allow TLS Session Tickets to be disabled when using |
| the APR/native HTTP connector. Patch provided by Josiah Purtlebaugh. |
| (markt) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>57142</bug>: As per the clarification from the JSP specification |
| maintenance lead, classes and packages imported via the page directive |
| must be made available to the EL environment via the ImportHandler. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57247</bug>: Correct the default Java source and target versions in |
| the JspC usage message to <code>1.7</code> for Java 7. (markt) |
| </fix> |
| <fix> |
| <bug>57309</bug>: Ensure that the current EL Resolver is given an |
| opportunity to perform type coercion before applying the default EL |
| coercion rules. (markt) |
| </fix> |
| <fix> |
| Improve the calculation of the resource's last-modified, performed by |
| JspCompilationContext, in a way to support URLs with protocol different |
| than <code>jar:file</code>. (violetagg) |
| </fix> |
| <fix> |
| Fix potential issue with BeanELResolver when running under a security |
| manager. Some classes may not be accessible but may have accessible |
| interfaces. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| In order to enable define in <code>Cluster</code> element, |
| <code>ClusterSingleSignOn</code> implements <code>ClusterValve</code>. |
| (kfujino) |
| </fix> |
| <fix> |
| <bug>57338</bug>: Improve the ability of the |
| <code>ClusterSingleSignOn</code> valve to handle nodes being added and |
| removed from the Cluster at run time. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| Correct multiple issues with the flushing of batched messages that could |
| lead to duplicate and/or corrupt messages. (markt) |
| </fix> |
| <fix> |
| Correctly implement headers case insensitivity. (markt/remm) |
| </fix> |
| <fix> |
| Allow optional use of user extensions. (remm) |
| </fix> |
| <fix> |
| Allow using partial binary message handlers. (remm) |
| </fix> |
| <fix> |
| Limit ping/pong message size. (remm) |
| </fix> |
| <fix> |
| Allow configuration of the time interval for the periodic event. (remm) |
| </fix> |
| <fix> |
| More accurate annotations processing. (remm) |
| </fix> |
| <fix> |
| Allow optional default for origin header in the client. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| Update documentation for CGI servlet. Recommend to copy the servlet |
| declaration into web application instead of enabling it globally. |
| Correct documentation for cgiPathPrefix. (kkolinko) |
| </fix> |
| <update> |
| Improve HTML version of build instructions and align with |
| BUILDING.txt. (kkolinko) |
| </update> |
| <update> |
| Improve Tomcat Manager documentation. Rearrange, add section on |
| HTML GUI, document /expire command and Server Status page. (kkolinko) |
| </update> |
| <update> |
| <bug>57238</bug>: Update information on SSL/TLS on Security and SSL |
| documentation pages. Patch by Glen Peterson. (kkolinko) |
| </update> |
| <fix> |
| <bug>57245</bug>: Correct the reference to <code>allowLinking</code> in |
| the security configuration guide since that attribute has moved from the |
| Context element to the nested Resources element. (markt) |
| </fix> |
| <fix> |
| Fix ambiguity of section links on Valves configuration reference page. |
| (kkolinko) |
| </fix> |
| <fix> |
| <bug>57261</bug>: Fix vminfo and threaddump Manager commands to start |
| their output with an "OK" line. Document them. Based on a patch by |
| Oleg Trokhov. (kkolinko) |
| </fix> |
| <fix> |
| <bug>57267</bug>: Document the <code>StoreConfigLifecycleListener</code> |
| and the <code>/save</code> command for the Manager application. (markt) |
| </fix> |
| <fix> |
| <bug>57323</bug>: Correct display of outdated sessions in sessions |
| count listing in Manager application. (kkolinko) |
| </fix> |
| <add> |
| Add document of <code>ClusterSingleSignOn</code>. (kfujino) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <update> |
| When downloading required libraries at build time, use random name |
| for temporary file and automatically create destination directory |
| (<code>base.path</code>). (kkolinko) |
| </update> |
| <update> |
| Update optional Checkstyle library to 6.2. (kkolinko) |
| </update> |
| <update> |
| Simplify <code>setproxy</code> task in <code>build.xml</code>. |
| Taskdef there is not needed since Ant 1.8.2. (kkolinko) |
| </update> |
| <fix> |
| Update "ide-eclipse" target in <code>build.xml</code> to create Eclipse |
| project that uses Java 7 compliance settings instead of workspace-wide |
| defaults. (kkolinko) |
| </fix> |
| <fix> |
| Update the package renamed copy of Apache Commons Pool 2 to the 2.3 |
| release to pick up various fixes since the 2.2 release including one for |
| a possible infinite loop. (markt) |
| </fix> |
| <fix> |
| <bug>57285</bug>: Restore the manifest entry that marks the Windows |
| uninstaller application as requiring elevated privileges. (markt) |
| </fix> |
| <add> |
| <bug>57344</bug>: Provide sha1 checksum files for Tomcat downloads. |
| Correct filename patterns for apache-tomcat-*-embed.tar.gz archive |
| to exclude an *.asc file. (kkolinko) |
| </add> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.15 (markt)" rtext="2014-11-07"> |
| <subsection name="Catalina"> |
| <changelog> |
| <add> |
| <bug>43548</bug>: Add an XML schema for the tomcat-users.xml file. |
| (markt) |
| </add> |
| <add> |
| <bug>43682</bug>: Add support for referring to the current context, host |
| and service name in per Context logging.properties files by using the |
| properties <code>${classloader.webappName}</code>, |
| <code>${classloader.hostName}</code> and |
| <code>${classloader.serviceName}</code>. (markt) |
| </add> |
| <add> |
| <bug>47919</bug>: Extend the information logged when Tomcat starts to |
| optionally log the values of command line arguments (enabled by |
| default) and environment variables (disabled by default). Note that |
| the values added to CATALINA_OPTS and JAVA_OPTS environment variables |
| will be logged, as they are used to build up the command line. (markt) |
| </add> |
| <add> |
| <bug>49939</bug>: Expose the method that clears the static resource |
| cache for a web application via JMX. (markt) |
| </add> |
| <fix> |
| <bug>55951</bug>: Allow cookies to use UTF-8 encoded values in HTTP |
| headers. This requires the use of the RFC6265 |
| <strong>CookieProcessor</strong>. (markt) |
| </fix> |
| <fix> |
| <bug>55984</bug>: Using the allow separators in version 0 cookies option |
| with the legacy cookie processor should only apply to version 0 cookies. |
| Version 1 cookies with values that contain separators should not be |
| affected and should continue to be quoted. (markt) |
| </fix> |
| <add> |
| <bug>56393</bug>: Add support for RFC6265 cookie parsing and generation. |
| This is currently disabled by default and may be enabled via the |
| <strong>CookieProcessor</strong> element of a <strong>Context</strong>. |
| (markt) |
| </add> |
| <add> |
| <bug>56394</bug>: Introduce new configuration element CookieProcessor in |
| Context to allow context-specific configuration of cookie processing |
| options. Attributes of Context element that were added in Tomcat 8.0.13 |
| to allow configuration of a new experimental RFC6265 based cookie parser |
| (<code>useRfc6265</code> and <code>cookieEncoding</code>) are |
| replaced by this new configuration element. (markt) |
| </add> |
| <fix> |
| Improve the previous fix for <bug>56401</bug>. Avoid logging version |
| information in the constructor since it then gets logged at undesirable |
| times such as when using <code>StoreConfig</code>. (markt) |
| </fix> |
| <fix> |
| <bug>56403</bug>: Add pluggable password derivation support to the |
| Realms via the new <code>CredentialHandler</code> interface. |
| (markt/schultz) |
| </fix> |
| <fix> |
| <bug>57016</bug>: When using the <code>PersistentValve</code> do not |
| remove sessions from the store when persisting them. (markt) |
| </fix> |
| <add> |
| Deprecate the use of system properties to control cookie parsing and |
| replace them with attributes on the new <code>CookieProcessor</code> |
| that may be configured on a per context basis. (markt) |
| </add> |
| <fix> |
| Correct an edge case and allow a cookie if the value starts with an |
| equals character and the <code>CookieProcessor</code> is not configured |
| to allow equals characters in cookie values but is configured to allow |
| name only cookies. (markt) |
| </fix> |
| <fix> |
| <bug>57022</bug>: Ensure SPNEGO authentication continues to work with |
| the JNDI Realm using delegated credentials with recent Oracle JREs. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57027</bug>: Add additional validation for stored credentials used |
| by Realms when the credential is stored using hex encoding. (markt) |
| </fix> |
| <fix> |
| <bug>57038</bug>: Add a <code>WebResource.getCodeBase()</code> method, |
| implement for all <code>WebResource</code> implementations and then use |
| it in the web application class loader to set the correct code base for |
| resources loaded from JARs and WARs. (markt) |
| </fix> |
| <fix> |
| Correct a couple of NPEs in the JNDI Realm that could be triggered with |
| when not specifying a roleBase and enabling roleSearchAsUser. (markt) |
| </fix> |
| <fix> |
| Correctly handle relative values for the docBase attribute of a Context. |
| (markt) |
| </fix> |
| <fix> |
| Ensure that log messages generated by the web application class loader |
| correctly identify the associated Context when multiple versions of a |
| Context with the same path are present. (markt) |
| </fix> |
| <fix> |
| Remove the unnecessary registration of context.xml as a redeploy |
| resource. The context.xml having an external docBase has already been |
| registered as a redeploy resource at first. (kfujino) |
| </fix> |
| <fix> |
| <bug>57089</bug>: Ensure that configuration of a session ID generator is |
| not lost when a web application is reloaded. (markt) |
| </fix> |
| <fix> |
| <bug>57105</bug>: When parsing web.xml do not limit the buffer element |
| of the jsp-property-group element to integer values as the allowed |
| values are <code><number>kb</code> or <code>none</code>. (markt) |
| </fix> |
| <update> |
| Update the minimum required version of the Tomcat Native library (if |
| used) to 1.1.32. (markt) |
| </update> |
| <fix> |
| Update storeconfig with newly introduced elements: SessionIdGenerator, |
| CookieProcessor, JarScanner and JarScanFilter. (remm) |
| </fix> |
| <fix> |
| Throw a <code>NullPointerException</code> if a null string is passed to |
| the <code>write(String,int,int)</code> method of the |
| <code>PrintWriter</code> obtained from the <code>ServletResponse</code>. |
| (markt) |
| </fix> |
| <fix> |
| Cookie rewrite flag abbreviation should be CO rather than C. (remm) |
| </fix> |
| <fix> |
| <bug>57153</bug>: When the StandardJarScanner is configured to scan the |
| full class path, ensure that class path entries added directly to the |
| web application class loader are scanned. (markt) |
| </fix> |
| <fix> |
| AsyncContext should remain usable until fireOnComplete is called. (remm) |
| </fix> |
| <fix> |
| AsyncContext createListener should wrap any instantiation exception |
| using a ServletException. (remm) |
| </fix> |
| <fix> |
| <bug>57155</bug>: Allow a web application to be configured that does not |
| have a docBase on the file system. This is primarily intended for use |
| when embedding. (markt) |
| </fix> |
| <fix> |
| Propagate header ordering from fileupload to the part implementation. |
| (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <add> |
| <bug>53952</bug>: Add support for TLSv1.1 and TLSv1.2 for APR connector. |
| Based upon a patch by Marcel Šebek. This feature requires |
| Tomcat Native library 1.1.32 or later. (schultz/jfclere) |
| </add> |
| <scode> |
| Cache the <code>Encoder</code> instances used to convert Strings to byte |
| arrays in the Connectors (e.g. when writing HTTP headers) to improve |
| throughput. (markt) |
| </scode> |
| <add> |
| Disable SSLv3 by default for JSSE based HTTPS connectors (BIO, NIO and |
| NIO2). The change also ensures that SSLv2 is disabled for these |
| connectors although SSLv2 should already be disabled by default by the |
| JRE. (markt) |
| </add> |
| <add> |
| Disable SSLv3 by default for the APR/native HTTPS connector. (markt) |
| </add> |
| <fix> |
| Do not increase remaining counter at end of stream in |
| IdentityInputFilter. (kkolinko) |
| </fix> |
| <fix> |
| Trigger an error if an invalid attempt is made to use non-blocking IO. |
| (markt) |
| </fix> |
| <fix> |
| <bug>57157</bug>: Allow calls to |
| <code>AsyncContext.start(Runnable)</code> during non-blocking IO reads |
| and writes. (markt) |
| </fix> |
| <fix> |
| Async state MUST_COMPLETE should still be started. (remm) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>57099</bug>: Ensure that semi-colons are not permitted in JSP |
| import page directives. (markt) |
| </fix> |
| <fix> |
| <bug>57113</bug>: Fix broken package imports in Expression Language when |
| more than one package was imported and the desired class was not in the |
| last package imported. (markt) |
| </fix> |
| <fix> |
| <bug>57132</bug>: Fix import conflicts reporting in Expression Language. |
| (kkolinko) |
| </fix> |
| <fix> |
| When coercing an object to a given type, only attempt coercion to an |
| array if both the object type and the target type are an array type. |
| (violetagg/markt) |
| </fix> |
| <fix> |
| Improve handling of invalid input to |
| <code>javax.el.ImportHandler.resolveClass()</code>. (markt) |
| </fix> |
| <fix> |
| Allow the same class to be added to an instance of |
| <code>javax.el.ImportHandler</code> more than once without triggering |
| an error. The second and subsequent calls for the same class will be |
| ignored. (markt) |
| </fix> |
| <fix> |
| <bug>57136</bug>: Ensure only <code>\${</code> and <code>\#{</code> are |
| treated as escapes for <code>${</code> and <code>#{</code> rather than |
| <code>\$</code> and <code>\#</code> being treated as escapes for |
| <code>$</code> and <code>#</code> when processing literal expressions in |
| expression language. (markt) |
| </fix> |
| <fix> |
| When coercing an object to an array type in Expression Language, handle |
| the case where the source object is an array of primitives. |
| (markt/kkolinko) |
| </fix> |
| <fix> |
| Do not throw an exception on missing JSP file servlet initialization. |
| (remm) |
| </fix> |
| <fix> |
| <bug>57148</bug>: When coercing an object to a given type and a |
| <code>PropertyEditor</code> has been registered for the type correctly |
| coerce the empty string to <code>null</code> if the |
| <code>PropertyEditor</code> throws an exception. (kkolinko/markt) |
| </fix> |
| <fix> |
| <bug>57153</bug>: Correctly scan for TLDs located in directories that |
| represent expanded JARs files that have been added to the web application |
| class loader's class path. (markt) |
| </fix> |
| <fix> |
| <bug>57141</bug>: Enable EL in JSPs to refer to static fields of |
| imported classes including the standard <code>java.lang.*</code> |
| imports. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Cluster"> |
| <changelog> |
| <fix> |
| Add support for the <code>SessionIdGenerator</code> to cluster manager |
| template. (kfujino) |
| </fix> |
| <fix> |
| Avoid possible integer overflows reported by Coverity Scan. (fschumacher) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>57054</bug>: Correctly handle the case in the WebSocket client |
| when the HTTP response to the upgrade request can not be read in a |
| single pass; either because the buffer is too small or the server sent |
| the response in multiple packets. (markt) |
| </fix> |
| <add> |
| Extend support for the <code>permessage-deflate</code> extension to the |
| client implementation. (markt) |
| </add> |
| <fix> |
| Fix client subprotocol handling. (remm) |
| </fix> |
| <fix> |
| Add null checks for arguments in remote endpoint. (remm/kkolinko) |
| </fix> |
| <fix> |
| <bug>57091</bug>: Work around the behaviour of the Oracle JRE when |
| creating new threads in an applet environment that breaks the WebSocket |
| client implementation. Patch provided by Niklas Hallqvist. (markt) |
| </fix> |
| <fix> |
| <bug>57118</bug>: Ensure that that an <code>EncodeException</code> is |
| thrown by <code>RemoteEndpoint.Basic.sendObject(Object)</code> rather |
| than an <code>IOException</code> when no suitable <code>Encoder</code> |
| is configured for the given Object. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <fix> |
| Correct a couple of broken links in the Javadoc. (markt) |
| </fix> |
| <fix> |
| Correct documentation for <code>ServerCookie.ALLOW_NAME_ONLY</code> |
| system property. (kkolinko) |
| </fix> |
| <fix> |
| <bug>57049</bug>: Clarified that <code>jvmRoute</code> can be set in |
| <code><Engine></code>'s <code>jvmRoute</code> or in a system |
| property. (schultz) |
| </fix> |
| <fix> |
| Correct version of Java WebSocket mentioned in documentation |
| (s/1.0/1.1/). (markt/kkolinko) |
| </fix> |
| <update> |
| Suppress timestamp comments in Javadoc. (kkolinko) |
| </update> |
| <fix> |
| <bug>57147</bug>: Various corrections to the JDBC Store section of the |
| session manager configuration page of the documentation web application. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Tribes"> |
| <changelog> |
| <fix> |
| <bug>45282</bug>: Improve shutdown of NIO receiver so that sockets are |
| closed cleanly. (fhanik/markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="jdbc-pool"> |
| <changelog> |
| <fix> |
| <bug>57005</bug>: Fix javadoc errors when building with Java 8. Patch |
| provided by Pierre Viret. (markt) |
| </fix> |
| <fix> |
| <bug>57079</bug>: Use Tomcat version number for jdbc-pool module when |
| building and shipping the module as part of Tomcat. (markt) |
| </fix> |
| <fix> |
| Fix broken overview page in javadoc generated via "javadoc" task in |
| jdbc-pool build.xml file. (kkolinko) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <fix> |
| <bug>56079</bug>: The uninstaller packaged with the Apache Tomcat |
| Windows installer is now digitally signed. (markt) |
| </fix> |
| <fix> |
| Fix timestamps in Tomcat build and jdbc-pool to use 24-hour format |
| instead of 12-hour one and use UTC timezone. (markt/kkolinko) |
| </fix> |
| <fix> |
| Update the package renamed copy of Apache Commons DBCP 2 to revision |
| 1631450 to pick up additional fixes since the 2.0.1 release including |
| Javadoc corrections to fix errors when compiling with Java 8. (markt) |
| </fix> |
| <update> |
| <bug>56596</bug>: Update to Tomcat Native Library version 1.1.32 to |
| pick up the Windows binaries that are based on OpenSSL 1.0.1j and APR |
| 1.5.1. (markt) |
| </update> |
| <scode> |
| In Tomcat tests: log name of the current test method at start time. |
| (kkolinko) |
| </scode> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.14 (markt)" rtext="2014-09-29"> |
| <subsection name="Other"> |
| <changelog> |
| <fix> |
| <bug>56079</bug>: The Apache Tomcat Windows installer, the Apache Tomcat |
| Windows service and the Apache Tomcat Windows service monitor |
| application are now digitally signed. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.13 (markt)" rtext="not released"> |
| <subsection name="Catalina"> |
| <changelog> |
| <fix> |
| <bug>55917</bug>: Allow bytes in the range 0x80 to 0xFF to appear in |
| cookie values if the cookie is a V1 (RFC2109) cookie and the value is |
| correctly quoted. The new RFC6265 based cookie parser must be enabled to |
| correctly handle these cookies. (markt) |
| </fix> |
| <fix> |
| <bug>55918</bug>: Do not permit control characters to appear in quoted |
| V1 (RFC2109) cookie values. The new RFC6265 based cookie parser must be |
| enabled to correctly handle these cookies. (markt) |
| </fix> |
| <fix> |
| <bug>55921</bug>: Correctly handle (ignore the cookie) unescaped JSON in |
| a cookie value. The new RFC6265 based cookie parser must be enabled to |
| correctly handle these cookies. (markt) |
| </fix> |
| <add> |
| <bug>56401</bug>: Log version information when Tomcat starts. |
| (markt/kkolinko) |
| </add> |
| <add> |
| <bug>56530</bug>: Add a web application class loader implementation that |
| supports the parallel loading of web application classes. (markt) |
| </add> |
| <fix> |
| <bug>56900</bug>: Fix some potential resource leaks when reading |
| property files reported by Coverity Scan. Based on patches provided by |
| Felix Schumacher. (markt) |
| </fix> |
| <fix> |
| <bug>56902</bug>: Fix a potential resource leak in the Default Servlet |
| reported by Coverity Scan. Based on a patch provided by Felix |
| Schumacher. (markt) |
| </fix> |
| <fix> |
| <bug>56903</bug>: Correct the return value for |
| <code>StandardContext.getResourceOnlyServlets()</code> so that multiple |
| names are separated by commas. Identified by Coverity Scan and fixed |
| based on a patch by Felix Schumacher. (markt) |
| </fix> |
| <add> |
| Add an additional implementation of a RFC6265 based cookie parser along |
| with new Context options to select and configure it. This parser is |
| currently considered experimental and is not used by default. (markt) |
| </add> |
| <fix> |
| Fixed the multipart elements merge operation performed during web |
| application deployment. Identified by Coverity Scan. (violetagg) |
| </fix> |
| <fix> |
| Correct the information written by |
| <code>ExtendedAccessLogValve</code> when a format token x-O(XXX) is |
| used so that multiple values for a header XXX are separated by commas. |
| Identified by Coverity Scan. (violetagg) |
| </fix> |
| <fix> |
| Fix a potential resource leak when reading MANIFEST.MF file for |
| extension dependencies reported by Coverity Scan. (violetagg) |
| </fix> |
| <fix> |
| Fix some potential resource leaks when reading properties, files and |
| other resources. Reported by Coverity Scan. (violetagg) |
| </fix> |
| <fix> |
| Correct the previous fix for <bug>56825</bug> that enabled pre-emptive |
| authentication to work with the SSL authenticator. (markt) |
| </fix> |
| <scode> |
| Refactor to reduce code duplication identified by Simian. (markt) |
| </scode> |
| <fix> |
| When using parallel deployment and <code>undeployOldVersions</code> |
| feature is enabled on a Host, correctly undeploy context of old |
| version. Make sure that Tomcat does not undeploy older Context if |
| current context is not running. (kfujino) |
| </fix> |
| <fix> |
| Fix a rare threading issue when locking resources via WebDAV. |
| (markt) |
| </fix> |
| <fix> |
| Fix a rare threading issue when using HTTP digest authentication. |
| (markt) |
| </fix> |
| <fix> |
| When deploying war, add XML file in the config base to the redeploy |
| resources if war does not have META-INF/context.xml or |
| <code>deployXML</code> is false. If XML file is created in the config |
| base, redeploy will occur. (kfujino) |
| </fix> |
| <scode> |
| Various changes to reduce unnecessary code in Tomcat's copy of |
| Apache Commons BCEL to reduce the time taken for annotation scanning |
| when web applications start. Includes contributions from kkolinko and |
| hzhang9. (markt) |
| </scode> |
| <fix> |
| <bug>56938</bug>: Ensure web applications that have mixed case context |
| paths and are deployed as directories are correctly removed on undeploy |
| when running on a case sensitive file system. (markt) |
| </fix> |
| <add> |
| <bug>57004</bug>: Add <code>stuckThreadCount</code> property to |
| <code>StuckThreadDetectionValve</code>'s JMX bean. Patch provided by |
| Jiří Pejchal. (schultz) |
| </add> |
| <fix> |
| <bug>57011</bug>: Ensure that the request and response are correctly |
| recycled when processing errors during async processing. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| <bug>56910</bug>: Prevent the invalid value of <code>-1</code> being |
| used for <code>maxConnections</code> with APR connectors. (markt) |
| </fix> |
| <fix> |
| Ensure that AJP connectors enable the <code>KeepAliveTimeout</code>. |
| (kfujino) |
| </fix> |
| <fix> |
| Reduce duplicated code. All AJP connectors use common method to |
| configuration of processor. (kfujino) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| <bug>43001</bug>: Enable the JspC Ant task to set the JspC option |
| <code>mappedFile</code>. (markt) |
| </fix> |
| <fix> |
| Ensure that the implementation of |
| <code>javax.servlet.jsp.PageContext.include(String)</code> |
| and |
| <code>javax.servlet.jsp.PageContext.include(String, boolean)</code> |
| will throw <code>IOException</code> when an I/O error occur during |
| the operation. (violetagg) |
| </fix> |
| <fix> |
| <bug>56908</bug>: Fix some potential resource leaks when reading |
| jar files. Reported by Coverity Scan. Patch provided by Felix |
| Schumacher. (violetagg) |
| </fix> |
| <fix> |
| Fix a potential resource leak in JDTCompiler when checking whether |
| a resource is a package. Reported by Coverity Scan. (fschumacher) |
| </fix> |
| <fix> |
| <bug>56991</bug>: Deprecate the use of a request attribute to pass a |
| <jsp-file> declaration to Jasper and prevent an infinite loop |
| if this technique is used in conjunction with an include. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <fix> |
| <bug>56905</bug>: Make destruction on web application stop of thread |
| group used for WebSocket connections more robust. (kkolinko/markt) |
| </fix> |
| <fix> |
| <bug>56907</bug>: Ensure that client IO threads are stopped if a secure |
| WebSocket client connection fails. (markt) |
| </fix> |
| <fix> |
| <bug>56982</bug>: Return the actual negotiated extensions rather than an |
| empty list for <code>Session.getNegotiatedExtensions()</code>. (markt) |
| </fix> |
| <update> |
| Update the WebSocket implementation to support the Java WebSocket |
| specification version 1.1. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Web applications"> |
| <changelog> |
| <add> |
| Add <code>JarScanner</code> to the nested components listed for a |
| Context. (markt) |
| </add> |
| <update> |
| Update the Windows authentication documentation after some additional |
| testing to answer the remaining questions. (markt) |
| </update> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
| <fix> |
| <bug>56895</bug>: Correctly compose <code>JAVA_OPTS</code> in |
| <code>catalina.bat</code> so that escape sequences are preserved. Patch |
| by Lucas Theisen. (markt) |
| </fix> |
| <update> |
| <bug>56988</bug>: Allow to use relative path in <code>base.path</code> |
| setting when building Tomcat. (kkolinko) |
| </update> |
| <fix> |
| <bug>56990</bug>: Ensure that the <code>ide-eclipse</code> build target |
| downloads all the libraries required by the default Eclipse |
| configuration files. (markt) |
| </fix> |
| <fix> |
| Update the package renamed copy of Apache Commons DBCP 2 to revision |
| 1626988 to pick up the fixes since the 2.0.1 release including support |
| for custom eviction policies. (markt) |
| </fix> |
| <fix> |
| Update the package renamed copy of Apache Commons Pool 2 to revision |
| 1627271 to pick up the fixes since the 2.2 release including some memory |
| leak fixes and support for application provided eviction policies. |
| (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| </section> |
| <section name="Tomcat 8.0.12 (markt)" rtext="2014-09-03"> |
| <subsection name="Catalina"> |
| <changelog> |
| <add> |
| Make the session id generator extensible by adding a |
| <code>SessionIdGenerator</code> interface, an abstract |
| base class and a standard implementation. (rjung) |
| </add> |
| <fix> |
| <bug>56882</bug>: Fix regression in processing of includes and forwards |
| when Context have been reloaded. Tomcat was responding with HTTP Status |
| 503 (Servlet xxx is currently unavailable). (kkolinko) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="Coyote"> |
| <changelog> |
| <fix> |
| When building a list of JSSE ciphers from an OpenSSL cipher definition, |
| ignore unknown criteria rather than throwing a |
| <code>NullPointerException</code>. (markt) |
| </fix> |
| <add> |
| Add support for the EECDH alias when using the OpenSSL cipher syntax to |
| define JSSE ciphers. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Jasper"> |
| <changelog> |
| <fix> |
| Correct a logic error in the <code>JasperElResolver</code>. There was no |
| functional impact but the code was less efficient as a result of the |
| error. Based on a patch by martinschaef. (markt) |
| </fix> |
| <fix> |
| <bug>56568</bug>: Enable any HTTP method to be used to request a JSP |
| page that has the <code>isErrorPage</code> page directive set to |
| <code>true</code>. (markt) |
| </fix> |
| </changelog> |
| </subsection> |
| <subsection name="WebSocket"> |
| <changelog> |
| <add> |
| Extend support for the <code>permessage-deflate</code> extension to |
| compression of outgoing messages on the server side. (markt) |
| </add> |
| </changelog> |
| </subsection> |
| <subsection name="Other"> |
| <changelog> |
|