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

* Various DIGEST improvements ported from Tomcat 7
  http://people.apache.org/~markt/patches/2012-08-28-digest-tc5.patch
  +1: markt, kkolinko, kfujino
  -1:

* Remove unneeded handling of FORM authentication in RealmBase
  http://svn.apache.org/viewvc?rev=1377887&view=rev
  (r1377892 in 7.0)
  +1: kkolinko, markt, kfujino
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42181
  A. Better handling of edge conditions in chunk header processing (BZ 42181)
  B. Improve chunk header parsing. Properly ignore chunk-extension suffix,
  not trying to parse digits contained in it. Reject chunks whose header is
  incorrect. (backport of r423453)
  https://issues.apache.org/bugzilla/attachment.cgi?id=29295
  +1: kkolinko, markt, kfujino
  -1:

* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53830
  Better handling of Manager.randomFile default value on Windows
  https://issues.apache.org/bugzilla/attachment.cgi?id=29331
  +1: kkolinko, markt, kfujino
  -1:
