- :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.
- :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
- :pr:`149`: Make
SCRIPT_NAMEoptional per PEP 333.
- :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`
- :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.
- :cp-issue:`1001` via :pr:`52` and :pr:`108`: Add support for validating client certificates.
- :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>`
- Fix bug with returning empty result in :py:meth:`cheroot.ssl.builtin.BuiltinSSLAdapter.wrap`
- :issue:`100` via :pr:`101`: Respond with HTTP 400 to malicious
Content-Lengthin request headers.
- :cp-issue:`1618`: Ignore OpenSSL's 1.1+ Error 0 under Python 2 while wrapping a socket.
- :pr:`87`: Add
cherootcommand and runpy launcher to launch a WSGI app from the command-line.
- Fix missing
resolve_peer_credsargument 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.
- :pr:`85`: Skip installing dependencies from backports namespace under Python 3.
- :issue:`84` (:cp-issue:`1704`): Fix regression, causing :py:exc:`ModuleNotFoundError` under cygwin.
- :pr:`83`: Fix regression, caused by inverted check for Windows OS.
- Add more URLs to distribution metadata
- :pr:`37`: Implement PEERCRED lookup over UNIX-socket HTTP connection.
- Discover connected process' PID/UID/GID
- Respect server switches:
peercreds_enabledandpeercreds_resolve_enabled get_peer_credsandresolve_peer_credsmethods on connectionpeer_pid,peer_uid,peer_gid,peer_userandpeer_groupproperties on connectionX_REMOTE_PID,X_REMOTE_UID,X_REMOTE_GID,X_REMOTE_USER(REMOTE_USER) andX_REMOTE_GROUPWSGI environment variables when enabled and supported- Per-connection caching to reduce lookup cost
- :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`
- :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`
- :pr:`67`: Refactor testsuite to completely rely on pytest.
- Integrate pytest-testmon and pytest-watch
- Stabilise testing
- :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.
- 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.
- :cp-issue:`1621`: To support webtest applications that feed
absolute URIs to getPage but expect the scheme/host/port to
be ignored (as cheroot 5.8 and earlier did), provide a
strip_netlochelper and recipe for calling it in a subclass.
- Minor refactorings of cheroot/server.py to reduce redundancy of behavior.
- Delinting with fewer exceptions.
- Restored license to BSD.
- :issue:`61`: Re-release without spurious files in the distribution.
- :issue:`58`: Reverted encoding behavior in wsgi module to correct regression in CherryPy tests.
- :cp-issue:`1088` and :pr:`53`: Avoid using SO_REUSEADDR on Windows where it has different semantics.
cheroot.tests.webtestadopts the one method that was unique in CherryPy, now superseding the implementation there.- Substantial cleanup around compatibility functions (_compat module).
- License unintentionally changed to MIT. BSD still declared and intended.
- Improve HTTP request line validation:
- Improve HTTP version parsing
- Fix HTTP CONNECT method processing:
- Respond with
405 Method Not Allowedifproxy_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
- Fix :pr:`39` regression. Add HTTP request line check: absolute URI path must start with a forward slash ("/").
- 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
- 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:
- CI improvements:
- Don't run tests during deploy stage
- Use VM based build job env only for pyenv envs
- 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_sslerror handler calls - :issue:`21`: Fix
test_conntests:- 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_closetest - Fix
test_No_Message_Body - Clarify
test_598fail reason
- :issue:`36`: Add GitHub templates for PR, issue && contributing
- :issue:`27`: Default HTTP Server header to Cheroot version str
- Cleanup _compat functions from server module
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
:pr:`32`: Ignore "unknown error" and "https proxy request" SSL errors.
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
: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.
- :pr:`22`: Add "ciphers" parameter to SSLAdapter.
:pr:`8`: Updated style to better conform to PEP 8.
Refreshed project with jaraco skeleton.
Docs now built and deployed at RTD.
- :issue:`5`: Set
Server.versionto 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.
- 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.
- Fix error in
parse_request_uricreated in :commit:`68a5769`.
- Initial release based on :gh:`cherrypy.cherrypy.wsgiserver 8.8.0 <cherrypy/cherrypy/tree/v8.8.0/cherrypy/wsgiserver>`.