================================================================================
  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 ACCEPTED TO BACKPORT FROM TRUNK/OTHER:
  [ start all new proposals below, under PATCHES PROPOSED. ]


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=52579
  Propose new implementation of ByteChunk.toStringInternal().
  This fix does not reintroduce issue BZ51400.
  This fix avoids http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196991.
  https://issues.apache.org/bugzilla/attachment.cgi?id=28274 (remove generics )
  +1: kfujino
  -1:

* Upgrade to Commons Daemon 1.0.9
  http://svn.apache.org/viewvc?rev=1244511&view=rev
  +1: markt, kkolinko, kfujino
  -1:
