| # -*- coding: utf-8 -*- |
| """ |
| h2/errors |
| ~~~~~~~~~~~~~~~~~~~ |
| |
| Global error code registry containing the established HTTP/2 error codes. |
| |
| The current registry is available at: |
| https://tools.ietf.org/html/rfc7540#section-11.4 |
| """ |
| import enum |
| |
| |
| class ErrorCodes(enum.IntEnum): |
| """ |
| All known HTTP/2 error codes. |
| |
| .. versionadded:: 2.5.0 |
| """ |
| #: Graceful shutdown. |
| NO_ERROR = 0x0 |
| |
| #: Protocol error detected. |
| PROTOCOL_ERROR = 0x1 |
| |
| #: Implementation fault. |
| INTERNAL_ERROR = 0x2 |
| |
| #: Flow-control limits exceeded. |
| FLOW_CONTROL_ERROR = 0x3 |
| |
| #: Settings not acknowledged. |
| SETTINGS_TIMEOUT = 0x4 |
| |
| #: Frame received for closed stream. |
| STREAM_CLOSED = 0x5 |
| |
| #: Frame size incorrect. |
| FRAME_SIZE_ERROR = 0x6 |
| |
| #: Stream not processed. |
| REFUSED_STREAM = 0x7 |
| |
| #: Stream cancelled. |
| CANCEL = 0x8 |
| |
| #: Compression state not updated. |
| COMPRESSION_ERROR = 0x9 |
| |
| #: TCP connection error for CONNECT method. |
| CONNECT_ERROR = 0xa |
| |
| #: Processing capacity exceeded. |
| ENHANCE_YOUR_CALM = 0xb |
| |
| #: Negotiated TLS parameters not acceptable. |
| INADEQUATE_SECURITY = 0xc |
| |
| #: Use HTTP/1.1 for the request. |
| HTTP_1_1_REQUIRED = 0xd |
| |
| |
| def _error_code_from_int(code): |
| """ |
| Given an integer error code, returns either one of :class:`ErrorCodes |
| <h2.errors.ErrorCodes>` or, if not present in the known set of codes, |
| returns the integer directly. |
| """ |
| try: |
| return ErrorCodes(code) |
| except ValueError: |
| return code |
| |
| |
| __all__ = ['ErrorCodes'] |