Changes
=======

2.2 (2013-06-22)
----------------

- Improve logging with raven: the message used to contain the
  annotated traceback, that was too long.

- Fix HTTP status code 204 that was set even when a Content-Length was
  defined.

- Fixed paster startup crash when multiple mount points don't exists yet.

- ``wsgi_intercept`` support is now optional for testing. There is a
  simple test layer ``BrowserLayer`` that provides a test WSGI
  application without the feature. The layers and browser with the
  support have been prefixed with ``Zope``. In order to enable this
  feature you must depend on the feature ``[intercept]``.

2.1 (2012-12-10)
----------------

- In paster, the propagations of errors in the stack can be disabled
  with ``debug_exceptions``, if you set it to ``off``. This option
  only has an effect if ``debug_mode`` is activated.

- In paster, the list of default errors that are ignored in the log
  can be customized by both options ``show_errors`` and
  ``ignore_errors``.

- Add a plugin to log errors in Sentry (this requires raven to be
  installed).

2.0.1 (2012-09-19)
------------------

- Add an optional WSGI middleware that display the same debug
  information than ``debugzope.html`` does.

- Add an event that is triggered before an error page is rendered.

- If an error view implements ``IBrowserPublisher``, call
  ``browserDefault`` in order to retrieve the real view to render.

2.0 (2012-09-04)
----------------

- Refactor the virtual hosting, traversing and authentication code
  from Zope 2 BaseRequest into three different pieces of code, that
  can be customized. This makes possible to change how authentication,
  or virtual hosting is done.

- Add a ``TestRequest`` that can be used in tests. This is the same
  thing than a ``zope.publisher`` test request, except it is based on
  a Zope 2 request, and have all the same behavior than a Zope 2
  request.

- A configurable semaphore have been added to limit the number of
  concurrent threads that can access the Zope 2 application. This is
  usefull when you have middleware that handles requests on their own,
  so they are not limited to the restriction imposed by Zope 2 on the
  number of threads.

1.3 (2011-07-27)
----------------

- Improve logging.

- BadRequest and Forbidden exceptions are now ignored by default in
  the logs.

- Fix a bug the original CONTENT_LENGTH header is empty.

- When an error happens on an IBrowserPage, use the page's context
  when handling the error (to prevent falling back to the nearest Site)

1.2 (2011-02-02)
----------------

- Add a view ``debugzope.html`` that display a dump of the server
  threads. You need to be manager to access it.

- You can from the ``errorlog.html`` configure the error you wish to
  ignore (not log). This is a non persistent setting.

- Handle buggy PAS unauthorized plugins, by catching any error, and
  logging them. In case of problem, a basic 401 response is sent back.

- Add the ZPublisher *insertBase* functionality: if a base is set by
  the request, and we render HTML, with an HEAD tag and no BASE tag,
  insert a BASE tag with the value provided by the request. This fix
  broken ZMI screens.

1.1 (2010-10-07)
----------------

- Fix a bug where `Content-Length` is not set and cannot be set.

- Correctly encode payload when needed before sending it (if it was a
  unicode string).

- Error codes less when 500 triggers a commit now, this let you
  support login pages that uses a Zope session ID.

- Add some hooks in the testing code to be more extensible (used for
  `infrae.testbrowser`).

1.0 (2010-07-15)
----------------

- Initial release.
