.. scm-version-title:: v8.4.5
- :issue:`312` via :pr:`313`: Fixed a regression introduced in the earlier refactoring in v8.4.4 via :pr:`309` that caused the connection manager to modify the selector map while looping over it -- by :user:`liamstask`.
- :issue:`312` via :pr:`316`: Added a regression test for the error handling in :py:meth:`~cheroot.connections.\ ConnectionManager.get_conn` to ensure more stability -- by :user:`cyraxjoe`.
.. scm-version-title:: v8.4.4
- :issue:`304` via :pr:`309`: Refactored :py:class:`~\ cheroot.connections.ConnectionManager` to use :py:meth:`~\ selectors.BaseSelector.get_map` and reorganized the readable connection tracking -- by :user:`liamstask`.
- :issue:`304` via :pr:`309`: Fixed the server shutdown sequence to avoid race condition resulting in accepting new connections while it is being terminated -- by :user:`liamstask`.
.. scm-version-title:: v8.4.3
:pr:`282`: Fixed a race condition happening when an HTTP client attempts to reuse a persistent HTTP connection after it's been discarded on the server in :py:class:`~cheroot.\ server.HTTPRequest` but no TCP FIN packet has been received yet over the wire -- by :user:`meaksh`.
This change populates the
Keep-Alive
header exposing the timeout value for persistent HTTP/1.1 connections which helps mitigate such race conditions by letting the client know not to reuse the connection after that time interval.
.. scm-version-title:: v8.4.2
Fixed a significant performance regression introduced in v8.1.0 (:issue:`305` via :pr:`308`) - by :user:`mar10`.
The issue turned out to add 0.1s delay on new incoming connection processing. We've lowered that delay to mitigate the problem short-term, better fix is yet to come.
.. scm-version-title:: v8.4.1
- Prevent :py:exc:`ConnectionAbortedError` traceback from being printed out to the terminal output during the app start-up on Windows when built-in TLS adapter is used (:issue:`302` via :pr:`306`) - by :user:`mxii-ca`.
.. scm-version-title:: v8.4.0
Converted management from low-level :py:func:`~select.select` to high-level :py:mod:`selectors` (:issue:`249` via :pr:`301`) - by :user:`tommilligan`.
This change also introduces a conditional dependency on
selectors2
as a fall-back for legacy Python interpreters.
.. scm-version-title:: v8.3.1
- Fixed TLS socket related unclosed resource warnings (:pr:`291` and :pr:`298`).
- Made terminating keep-alive connections more graceful (:issue:`263` via :pr:`277`).
.. scm-version-title:: v8.3.0
- :cp-issue:`910` via :pr:`243`: Provide TLS-related details via WSGI environment interface.
- :pr:`248`: Fix parsing of the
--bind
CLI option for abstract UNIX sockets.
.. scm-version-title:: v8.2.1
- :cp-issue:`1818`: Restore support for
None
default argument toWebCase.getPage()
.
.. scm-version-title:: v8.2.0
- Deprecated use of negative timeouts as alias for
infinite timeouts in
ThreadPool.stop
. - :cp-issue:`1662` via :pr:`74`: For OPTION requests, bypass URI as path if it does not appear absolute.
.. scm-version-title:: v8.1.0
- Workers are now request-based, addressing the long-standing issue with keep-alive connections (:issue:`91` via :pr:`199`).
.. scm-version-title:: v8.0.0
- :issue:`231` via :pr:`232`: Remove custom
setup.cfg
parser handling, allowing the project (includingsdist
) to build/run on setuptools 41.4. Now building cheroot requires setuptools 30.3 or later (for declarative config support) and preferably 34.4 or later (as indicated inpyproject.toml
).
.. scm-version-title:: v7.0.0
- :pr:`224`: Refactored "open URL" behavior in
:py:mod:`~cheroot.test.webtest` to rely on retry_call.
Callers can no longer pass
raise_subcls
orssl_context
positionally, but must pass them as keyword arguments.
.. scm-version-title:: v6.6.0
- Revisit :pr:`85` under :pr:`221`. Now
backports.functools_lru_cache
is only required on Python 3.2 and earlier. - :cp-issue:`1206` via :pr:`204`: Fix race condition in threadpool shrink code.
.. scm-version-title:: v6.5.8
- :issue:`222` via :commit:`621f4ee`: Fix :py:const:`socket.SO_PEERCRED` constant fallback value under PowerPC.
.. scm-version-title:: v6.5.7
- :issue:`198` via :commit:`9f7affe`: Fix race condition when toggling stats counting in the middle of request processing.
- Improve post Python 3.9 compatibility checks.
- Fix support of abstract namespace sockets.
.. scm-version-title:: v6.5.6
- :issue:`218` via :pr:`219`: Fix HTTP parser to return 400 on invalid major-only HTTP version in Request-Line.
.. scm-version-title:: v6.5.5
- :issue:`99` via :pr:`186`: Sockets now collect statistics (bytes read and written) on Python 3 same as Python 2.
- :cp-issue:`1618` via :pr:`180`: Ignore OpenSSL's 1.1+ Error 0 under any Python while wrapping a socket.
.. scm-version-title:: v6.5.4
- :issue:`113`: Fix :py:mod:`cheroot.ssl.pyopenssl` under Python 3.
- :issue:`154` via :pr:`159`: Remove custom license field from dist metadata.
- :issue:`95`: Fully integrate :py:mod:`trustme` into all TLS tests. Also remove all hardcoded TLS certificates.
- :issue:`42`: Remove traces of :py:mod:`unittest` and :py:mod:`ddt` usage.
- Fix invalid input processing in :py:func:`cheroot._compat.extract_bytes`.
- Fix returning error explanation over plain HTTP for PyOpenSSL.
- Add a fallback for :py:func:`os.lchmod` where it's missing.
- Avoid traceback for invalid client cert with builtin :py:mod:`ssl` adapter.
- Avoid deprecation warning with :py:class:`OpenSSL.SSL.Connection`.
- Fix socket wrapper in PyOpenSSL adapter.
- Improve tests coverage:
- Client TLS certificate tests
- :py:func:`cheroot._compat.extract_bytes`
PEERCREDS
lookup
.. scm-version-title:: v6.5.3
- :pr:`149`: Make
SCRIPT_NAME
optional per PEP 333.
.. scm-version-title:: v6.5.2
- :issue:`6` via :pr:`109`: Fix import of :py:mod:`cheroot.ssl.pyopenssl` by refactoring and separating :py:mod:`cheroot.makefile`'s stream wrappers.
- :issue:`95` via :pr:`109`: Add initial tests for SSL layer with use of :py:mod:`trustme`
.. scm-version-title:: v6.5.1
- :issue:`93` via :pr:`110`: Improve UNIX socket FS access mode in :py:meth:`cheroot.server.HTTPServer.prepare` on a file socket when starting to listen to it.
.. scm-version-title:: v6.5.0
- :cp-issue:`1001` via :pr:`52` and :pr:`108`: Add support for validating client certificates.
.. scm-version-title:: v6.4.0
- :issue:`68` via :pr:`98`: Factor out parts of :py:meth:`cheroot.server.HTTPServer.start` into :py:meth:`prepare() <cheroot.server.HTTPServer.prepare>` and :py:meth:`serve() <cheroot.server.HTTPServer.serve>`
.. scm-version-title:: v6.3.3
- Fix bug with returning empty result in :py:meth:`cheroot.ssl.builtin.BuiltinSSLAdapter.wrap`
.. scm-version-title:: v6.3.2
- :issue:`100` via :pr:`101`: Respond with HTTP 400 to malicious
Content-Length
in request headers.
.. scm-version-title:: v6.3.1
- :cp-issue:`1618`: Ignore OpenSSL's 1.1+ Error 0 under Python 2 while wrapping a socket.
.. scm-version-title:: v6.3.0
- :pr:`87`: Add
cheroot
command and runpy launcher to launch a WSGI app from the command-line.
.. scm-version-title:: v6.2.4
- Fix missing
resolve_peer_creds
argument in :py:class:`cheroot.wsgi.Server` being bypassed into :py:class:`cheroot.server.HTTPServer`. - :pr:`85`: Revert conditional dependencies. System packagers should honor the dependencies as declared by cheroot, which are defined intentionally.
.. scm-version-title:: v6.2.3
- :pr:`85`: Skip installing dependencies from backports namespace under Python 3.
.. scm-version-title:: v6.2.2
- :issue:`84` (:cp-issue:`1704`): Fix regression, causing
:py:exc:`ModuleNotFoundError` under
cygwin
.
.. scm-version-title:: v6.2.1
- :pr:`83`: Fix regression, caused by inverted check for Windows OS.
- Add more URLs to distribution metadata
.. scm-version-title:: v6.2.0
- :pr:`37`: Implement PEERCRED lookup over UNIX-socket HTTP connection.
- Discover connected process' PID/UID/GID
- Respect server switches:
peercreds_enabled
andpeercreds_resolve_enabled
get_peer_creds
andresolve_peer_creds
methods on connectionpeer_pid
,peer_uid
,peer_gid
,peer_user
andpeer_group
properties on connectionX_REMOTE_PID
,X_REMOTE_UID
,X_REMOTE_GID
,X_REMOTE_USER
(REMOTE_USER
) andX_REMOTE_GROUP
WSGI environment variables when enabled and supported- Per-connection caching to reduce lookup cost
.. scm-version-title:: v6.1.2
- :issue:`81`: Fix regression introduced by :pr:`80`.
- Restore :py:attr:`storing bound socket <cheroot.server.HTTPServer.bind_addr>` in Windows broken by use of :py:obj:`socket.AF_UNIX`
.. scm-version-title:: v6.1.1
- :pr:`80`: Fix regression introduced by :commit:`68a5769`.
- Get back support for :py:obj:`socket.AF_UNIX` in stored bound address in :py:attr:`cheroot.server.HTTPServer.bind_addr`
.. scm-version-title:: v6.1.0
- :pr:`67`: Refactor test suite to completely rely on pytest.
- Integrate
pytest-testmon
andpytest-watch
- Stabilize testing
- Integrate
- :cp-issue:`1664` via :pr:`66`: Implement input termination flag support as suggested by @mitsuhiko in his wsgi.input_terminated Proposal.
- :issue:`73`: Fix SSL error bypassing.
- :issue:`77` via :pr:`78`: Fix WSGI documentation example to support Python 3.
- :pr:`76`: Send correct conditional HTTP error in helper function.
- :cp-issue:`1404` via :pr:`75`: Fix headers being unsent before request closed. Now we double check that they've been sent.
- Minor docs improvements.
- Minor refactoring.
.. scm-version-title:: v6.0.0
- Drop support for Python 2.6, 3.1, 3.2, and 3.3.
- Also drop built-in SSL support for Python 2.7 earlier than 2.7.9.
.. scm-version-title:: v5.11.0
- :cp-issue:`1621`: To support :py:mod:`~cheroot.test.webtest`
applications that feed absolute URIs to
:py:meth:`~cheroot.test.webtest.WebCase.getPage`
but expect the scheme/host/port to be ignored (as cheroot 5.8
and earlier did), provide a
strip_netloc
helper and recipe for calling it in a subclass.
.. scm-version-title:: v5.10.0
- Minor refactorings of
cheroot/server.py
to reduce redundancy of behavior. - Delinting with fewer exceptions.
- Restored license to BSD.
.. scm-version-title:: v5.9.2
- :issue:`61`: Re-release without spurious files in the distribution.
.. scm-version-title:: v5.9.1
- :issue:`58`: Reverted encoding behavior in wsgi module to correct regression in CherryPy tests.
.. scm-version-title:: v5.9.0
- :cp-issue:`1088` and :pr:`53`: Avoid using SO_REUSEADDR on Windows where it has different semantics.
cheroot.tests.webtest
adopts the one method that was unique in CherryPy, now superseding the implementation there.- Substantial cleanup around compatibility functions (:py:mod:`~cheroot._compat` module).
- License unintentionally changed to MIT. BSD still declared and intended.
.. scm-version-title:: v5.8.3
- Improve HTTP request line validation:
- Improve HTTP version parsing
- Fix HTTP CONNECT method processing:
- Respond with
405 Method Not Allowed
ifproxy_mode is False
- Validate that request-target is in authority-form
- Respond with
- Improve tests in
test.test_core
- :pr:`44`: Fix EPROTOTYPE @ Mac OS
.. scm-version-title:: v5.8.2
- Fix :pr:`39` regression. Add HTTP request line check: absolute URI path must start with a forward slash ("/").
.. scm-version-title:: v5.8.1
- CI improvements:
- Add basic working Circle CI v2 config
- Fix URI encoding bug introduced in :pr:`39`
- Improve :py:class:`cheroot.test.helper.Controller` to properly match Unicode
.. scm-version-title:: v5.8.0
- CI improvements:
- Switch to native PyPy support in Travis CI
- Take into account PEP 257 compliant modules
- Build wheel in AppVeyor and store it as an artifact
- Improve urllib support in :py:mod:`cheroot._compat`
- :issue:`38` via :pr:`39`: Improve URI parsing:
.. scm-version-title:: v5.7.0
- CI improvements:
- Don't run tests during deploy stage
- Use VM based build job environments only for
pyenv
environments - Opt-in for beta trusty image @ Travis CI
- Be verbose when running tests (show test names)
- Show
xfail
/skip details during test run
- :issue:`34`: Fix
_handle_no_ssl
error handler calls - :issue:`21`: Fix
test_conn
tests:- Improve setup_server def in HTTP connection tests
- Fix HTTP streaming tests
- Fix HTTP/1.1 pipelining test under Python 3
- Fix
test_readall_or_close
test - Fix
test_No_Message_Body
- Clarify
test_598
fail reason
- :issue:`36`: Add GitHub templates for PR, issue && contributing
- :issue:`27`: Default HTTP Server header to Cheroot version str
- Cleanup :py:mod:`~cheroot._compat` functions from server module
.. scm-version-title:: v5.6.0
Fix all PEP 257 related errors in all non-test modules.
cheroot/test/*
folder is only one left allowed to fail with this linter.:cp-issue:`1602` and :pr:`30`: Optimize chunked body reader loop by returning empty data is the size is 0.
:cp-issue:`1486`: Reset buffer if the body size is unknown
:cp-issue:`1131`: Add missing size hint to SizeCheckWrapper
.. scm-version-title:: v5.5.2
:pr:`32`: Ignore
"unknown error"
and"https proxy request"
SSL errors.
.. scm-version-title:: v5.5.1
Make AppVeyor list separate tests in corresponding tab.
:pr:`29`: Configure Travis CI build stages.
Prioritize tests by stages.
Move deploy stage to be run very last after all other stages finish.
:pr:`31`: Ignore "Protocol wrong type for socket" (EPROTOTYPE) @ OSX for non-blocking sockets.
This was originally fixed for regular sockets in :cp-issue:`1392`.
Ref: https://forums.sabnzbd.org/viewtopic.php?f=2&t=22728&p=112251
.. scm-version-title:: v5.5.0
:issue:`17` via :pr:`25`: Instead of a read_headers function, cheroot now supplies a :py:class:`HeaderReader <cheroot.server.HeaderReader>` class to perform the same function.
Any :py:class:`HTTPRequest <cheroot.server.HTTPRequest>` object may override the header_reader attribute to customize the handling of incoming headers.
The server module also presents a provisional implementation of a :py:class:`DropUnderscoreHeaderReader <cheroot.server.DropUnderscoreHeaderReader>` that will exclude any headers containing an underscore. It remains an exercise for the implementer to demonstrate how this functionality might be employed in a server such as CherryPy.
:pr:`26`: Configured TravisCI to run tests under OS X.
.. scm-version-title:: v5.4.0
- :pr:`22`: Add "ciphers" parameter to SSLAdapter.
.. scm-version-title:: v5.3.0
:pr:`8`: Updated style to better conform to PEP 8.
Refreshed project with jaraco skeleton.
Docs now built and deployed at RTD.
.. scm-version-title:: v5.2.0
- :issue:`5`: Set
Server.version
to Cheroot version instead of CherryPy version. - :pr:`4`: Prevent tracebacks and drop bad HTTPS connections in the
BuiltinSSLAdapter
, similar topyOpenSSLAdapter
. - :issue:`3`: Test suite now runs and many tests pass. Some are still failing.
.. scm-version-title:: v5.1.0
- Removed the WSGI prefix from classes in :py:mod:`cheroot.wsgi`. Kept aliases for compatibility.
- :issue:`1`: Corrected docstrings in :py:mod:`cheroot.server` and :py:mod:`cheroot.wsgi`.
- :pr:`2`: Fixed :py:exc:`ImportError` when pkg_resources cannot find the cheroot distribution.
.. scm-version-title:: v5.0.1
- Fix error in
parse_request_uri
created in :commit:`68a5769`.
.. scm-version-title:: v5.0.0
- Initial release based on :gh:`cherrypy.cherrypy.wsgiserver 8.8.0 <cherrypy/cherrypy/tree/v8.8.0/cherrypy/wsgiserver>`.