================================================================================
  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.
================================================================================

$Id$

                         =================================
                         Apache Tomcat 5.5 Patch Proposals
                         =================================


PATCHES PROPOSED TO BACKPORT:
  [ New proposals should be added at the end of the list ]

* Remove JSSE13Factory, JSSE13SocketFactory classes,
  because
    - TC 5.5 runs on JRE 1.4+ and that comes bundled with JSSE 1.4,
      so these classes are no more needed.
    - JSSE13SocketFactory directly references com.sun.net.* classes in its
      source code without using reflection, and that causes compilation failure
      with my IDE/JRE settings.
  1)
    svn delete connectors/util/java/org/apache/tomcat/util/net/jsse/JSSE13Factory.java
    svn delete connectors/util/java/org/apache/tomcat/util/net/jsse/JSSE13SocketFactory.java
  2)
    http://people.apache.org/~kkolinko/patches/2010-03-06_tc55_remove_JSSE13Factory_v2.patch
  +1: kkolinko, markt
  -O: jim
  -1:

* Backport Windows installer improvements from Tomcat 7.0.5.
  (as applied to TC6 in http://svn.apache.org/viewvc?rev=1056426&view=rev )

  TC5.5 differences from TC6:
   1) The patch includes changes to build.xml, to implement filtering for @YEAR@
   2) The patch includes changes to tomcat-users_1.xml, to implement TC6/TC7
   installer feature that the character encoding that was used to write
   tomcat-users.xml is included in the XML signature at the top of the file.
   That is to support non-latin usernames.
   3) The patch uses the old roles "manager" and "admin", not the "-gui" ones.

  To apply:
  1. Run the following SVN commands:
   svn del build/resources/jvm.ini
   svn del build/resources/config.ini
   svn del build/resources/main.ico
   svn del build/resources/uninst.ico
   # copy icons from TC7, see r999976
   svn copy ../../trunk/res/main.ico build/resources/
   svn copy ../../trunk/res/uninst.ico build/resources/
  2. Apply patch:
   http://people.apache.org/~kkolinko/patches/2011-01-17_tc55_tomcat-nsi.patch
  +1: kkolinko, markt
  -1:

   For reference: here is the diff of tomcat.nsi of trunk @1059900 if I copy
   patched tomcat.nsi of tc5.5 on top of it:
   (  http://people.apache.org/~kkolinko/patches/2011-01-17_tc55_tomcat-nsi-of-tc7_vs_tc55.diff )

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50620
  Exceptions calling session.endAccess should not prevent recycle() from completing normally
  1) copy o.a.tomcat.util.ExceptionUtils from trunk
   svn copy ../../trunk/java/org/apache/tomcat/util/ExceptionUtils.java connectors/util/java/org/apache/tomcat/util/
  2) patches:
   http://svn.apache.org/viewvc?rev=1061442&view=rev
   http://svn.apache.org/viewvc?rev=1061446&view=rev
  (by markt)
  +1: kkolinko, markt
  -1:

  (For convenience, here is patch that applies the above:
   http://people.apache.org/~kkolinko/patches/2011-01-22_tc55_50620.patch
  )
