123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- Metadata-Version: 2.0
- Name: hpack
- Version: 3.0.0
- Summary: Pure-Python HPACK header compression
- Home-page: http://hyper.rtfd.org
- Author: Cory Benfield
- Author-email: cory@lukasa.co.uk
- License: MIT License
- Platform: UNKNOWN
- Classifier: Development Status :: 5 - Production/Stable
- Classifier: Intended Audience :: Developers
- Classifier: License :: OSI Approved :: MIT License
- Classifier: Programming Language :: Python
- Classifier: Programming Language :: Python :: 2
- Classifier: Programming Language :: Python :: 2.7
- Classifier: Programming Language :: Python :: 3
- Classifier: Programming Language :: Python :: 3.3
- Classifier: Programming Language :: Python :: 3.4
- Classifier: Programming Language :: Python :: 3.5
- Classifier: Programming Language :: Python :: 3.6
- Classifier: Programming Language :: Python :: Implementation :: CPython
- ========================================
- hpack: HTTP/2 Header Encoding for Python
- ========================================
- .. image:: https://raw.github.com/Lukasa/hyper/development/docs/source/images/hyper.png
- .. image:: https://travis-ci.org/python-hyper/hpack.png?branch=master
- :target: https://travis-ci.org/python-hyper/hpack
- This module contains a pure-Python HTTP/2 header encoding (HPACK) logic for use
- in Python programs that implement HTTP/2. It also contains a compatibility
- layer that automatically enables the use of ``nghttp2`` if it's available.
- Documentation
- =============
- Documentation is available at http://python-hyper.org/hpack/.
- Contributing
- ============
- ``hpack`` welcomes contributions from anyone! Unlike many other projects we are
- happy to accept cosmetic contributions and small contributions, in addition to
- large feature requests and changes.
- Before you contribute (either by opening an issue or filing a pull request),
- please `read the contribution guidelines`_.
- .. _read the contribution guidelines: http://hyper.readthedocs.org/en/development/contributing.html
- License
- =======
- ``hpack`` is made available under the MIT License. For more details, see the
- ``LICENSE`` file in the repository.
- Authors
- =======
- ``hpack`` is maintained by Cory Benfield, with contributions from others. For
- more details about the contributors, please see ``CONTRIBUTORS.rst``.
- Release History
- ===============
- 3.0.0 (2017-03-29)
- ------------------
- **API Changes (Backward Incompatible)**
- - Removed nghttp2 support. This support had rotted and was essentially
- non-functional, so it has now been removed until someone has time to re-add
- the support in a functional form.
- - Attempts by the encoder to exceed the maximum allowed header table size via
- dynamic table size updates (or the absence thereof) are now forbidden.
- **API Changes (Backward Compatible)**
- - Added a new ``InvalidTableSizeError`` thrown when the encoder does not
- respect the maximum table size set by the user.
- - Added a ``Decoder.max_allowed_table_size`` field that sets the maximum
- allowed size of the decoder header table. See the documentation for an
- indication of how this should be used.
- **Bugfixes**
- - Up to 25% performance improvement decoding HPACK-packed integers, depending
- on the platform.
- - HPACK now tolerates receiving multiple header table size changes in sequence,
- rather than only one.
- - HPACK now forbids header table size changes anywhere but first in a header
- block, as required by RFC 7541 § 4.2.
- - Other miscellaneous performance improvements.
- 2.3.0 (2016-08-04)
- ------------------
- **Security Fixes**
- - CVE-2016-6581: HPACK Bomb. This release now enforces a maximum value of the
- decompressed size of the header list. This is to avoid the so-called "HPACK
- Bomb" vulnerability, which is caused when a malicious peer sends a compressed
- HPACK body that decompresses to a gigantic header list size.
- This also adds a ``OversizedHeaderListError``, which is thrown by the
- ``decode`` method if the maximum header list size is being violated. This
- places the HPACK decoder into a broken state: it must not be used after this
- exception is thrown.
- This also adds a ``max_header_list_size`` to the ``Decoder`` object. This
- controls the maximum allowable decompressed size of the header list. By
- default this is set to 64kB.
- 2.2.0 (2016-04-20)
- ------------------
- **API Changes (Backward Compatible)**
- - Added ``HeaderTuple`` and ``NeverIndexedHeaderTuple`` classes that signal
- whether a given header field may ever be indexed in HTTP/2 header
- compression.
- - Changed ``Decoder.decode()`` to return the newly added ``HeaderTuple`` class
- and subclass. These objects behave like two-tuples, so this change does not
- break working code.
- **Bugfixes**
- - Improve Huffman decoding speed by 4x using an approach borrowed from nghttp2.
- - Improve HPACK decoding speed by 10% by caching header table sizes.
- 2.1.1 (2016-03-16)
- ------------------
- **Bugfixes**
- - When passing a dictionary or dictionary subclass to ``Encoder.encode``, HPACK
- now ensures that HTTP/2 special headers (headers whose names begin with
- ``:`` characters) appear first in the header block.
- 2.1.0 (2016-02-02)
- ------------------
- **API Changes (Backward Compatible)**
- - Added new ``InvalidTableIndex`` exception, a subclass of
- ``HPACKDecodingError``.
- - Instead of throwing ``IndexError`` when encountering invalid encoded integers
- HPACK now throws ``HPACKDecodingError``.
- - Instead of throwing ``UnicodeDecodeError`` when encountering headers that are
- not UTF-8 encoded, HPACK now throws ``HPACKDecodingError``.
- - Instead of throwing ``IndexError`` when encountering invalid table offsets,
- HPACK now throws ``InvalidTableIndex``.
- - Added ``raw`` flag to ``decode``, allowing ``decode`` to return bytes instead
- of attempting to decode the headers as UTF-8.
- **Bugfixes**
- - ``memoryview`` objects are now used when decoding HPACK, improving the
- performance by avoiding unnecessary data copies.
- 2.0.1 (2015-11-09)
- ------------------
- - Fixed a bug where the Python HPACK implementation would only emit header
- table size changes for the total change between one header block and another,
- rather than for the entire sequence of changes.
- 2.0.0 (2015-10-12)
- ------------------
- - Remove unused ``HPACKEncodingError``.
- - Add the shortcut ability to import the public API (``Encoder``, ``Decoder``,
- ``HPACKError``, ``HPACKDecodingError``) directly, rather than from
- ``hpack.hpack``.
- 1.1.0 (2015-07-07)
- ------------------
- - Add support for emitting 'never indexed' header fields, by using an optional
- third element in the header tuple. With thanks to @jimcarreer!
- 1.0.1 (2015-04-19)
- ------------------
- - Header fields that have names matching header table entries are now added to
- the header table. This improves compression efficiency at the cost of
- slightly more table operations. With thanks to `Tatsuhiro Tsujikawa`_.
- .. _Tatsuhiro Tsujikawa: https://github.com/tatsuhiro-t
- 1.0.0 (2015-04-13)
- ------------------
- - Initial fork of the code from `hyper`_.
- .. _hyper: https://hyper.readthedocs.org/
|