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

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=38743
  Warn if the user tries to set an invalid property.
  Port of http://svn.apache.org/viewvc?view=rev&revision=565464
  http://people.apache.org/~markt/patches/2009-07-02-bug38743.patch
  +1: markt, kkolinko
   0: fhanik - big step for an old branch, could be risky, I'd wait until after next release if we consider it
  -1:

* Minor cleanups for AccessLogValve classes
  Reuses StringBuffer, uses char instead of single-char String, etc.
  http://people.apache.org/~kkolinko/patches/2009-07-15_tc55_ALV.patch
  http://people.apache.org/~kkolinko/patches/2009-07-15_tc55_FCALV.patch
  +1: kkolinko, rjung
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42390
  Fix compilation error with some nested tag files and simple tags
  https://issues.apache.org/bugzilla/show_bug.cgi?id=48616#c22
  (https://issues.apache.org/bugzilla/attachment.cgi?id=24993)
  +1: kkolinko, markt
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=44041
  Threading issue in class loading plus fix for
  https://issues.apache.org/bugzilla/show_bug.cgi?id=48694 a potential deadlock
  http://people.apache.org/~markt/patches/2010-03-25-bug44041.patch
  +1: markt, kkolinko
  -1: 

  Mark ResourceEntry.loadedClass as volatile.
  http://svn.apache.org/viewvc?rev=927877&view=rev
  +1: kkolinko
  -1:


* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47878
  Return 404's rather than a permanent 500 if a JSP is deleted
  Make sure first response post deletion is correct
  Port of r439565, r832102 & r904834
  http://people.apache.org/~markt/patches/2010-01-30-bug47878-tc5.patch
  +1: markt
  -1:
     kkolinko - Just a note: This issue won't affect configurations where Jasper
     runs with development=false.

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48179
  Improve processing of TLD cache file
  https://issues.apache.org/bugzilla/attachment.cgi?id=24918
  +1: kkolinko, markt
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48580
  Prevent AccessControlException if first access is to a JSP that uses a FunctionMapper
  https://issues.apache.org/bugzilla/attachment.cgi?id=25094
  (it is markt's r915070)
  +1: kkolinko, markt
  -1:

* 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
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48701
  Add system property to allow disabling enforcement of JSP.5.3
  The spec recommends, but does not require this enforcement.
  http://svn.apache.org/viewvc?rev=920880&view=rev
  +1: kkolinko, markt
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48701
  Tag account of TagVariableInfo when implementing the rules of JSP.5.3
  http://people.apache.org/~markt/patches/2010-03-09-bug48701.patch
  +1: markt, kkolinko
  -1: 

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48613
  Only attempt APR initialization if the <Listener> has been specified
  It is backport of r911300. (fix by fhanik)
  http://people.apache.org/~kkolinko/patches/2010-03-11_tc55_bug48613.patch
  +1: kkolinko, markt
  -1:

* Update to NSIS 2.46
  NSIS changelog: http://nsis.sourceforge.net/Docs/AppendixF.html#F.1.1
  http://svn.apache.org/viewvc?rev=921630&view=rev
  +1: kkolinko, markt
  -1:

* Update to Commons Daemon 1.0.2 and use procrun from upstream distribution
  1)
    svn delete connectors/procrun
  2)
    http://people.apache.org/~kkolinko/patches/2010-03-17_tc55_commons-daemon.patch
  +1: kkolinko, mturk, markt
  -1: 
      kkolinko - I updated the patch to do not delete "deploy.old" target.
              Regarding "deploy.old": Note, that the commons-daemon files that were
              copied in that target are already copied by "deploy-static", and that
              I see no reason why one of the files was copied to ${tomcat.dist},
              as that target updates ${tomcat.build} only.

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48717
  When a node joins a cluster and it receives all the current sessions, ensure
  the sessionCreated event is fired if the Manager is configured to replicate
  session events
  http://svn.apache.org/viewvc?rev=928482&view=rev
  (apply to both cluster implementations)
  +1: markt
  -1: 

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48840
  If CDPATH is set, cd may result in output to stdout.
  Swallow the output. This is safe since the script outputs the value used for
  CATALINA_HOME so any issues will be visible then.
  Patch provided by mdietze
  +1: markt
  -1: 
