# Enums

type nghttp2_error

  Error codes used in this library. The code range is [-999, -500], inclusive. The following values are defined:

  enum NGHTTP2_ERR_INVALID_ARGUMENT

    (`-501`) Invalid argument passed.

  enum NGHTTP2_ERR_BUFFER_ERROR

    (`-502`) Out of buffer space.

  enum NGHTTP2_ERR_UNSUPPORTED_VERSION

    (`-503`) The specified protocol version is not supported.

  enum NGHTTP2_ERR_WOULDBLOCK

    (`-504`) Used as a return value from `nghttp2_send_callback2`, `nghttp2_recv_callback` and `nghttp2_send_data_callback` to indicate that the operation would block.

  enum NGHTTP2_ERR_PROTO

    (`-505`) General protocol error

  enum NGHTTP2_ERR_INVALID_FRAME

    (`-506`) The frame is invalid.

  enum NGHTTP2_ERR_EOF

    (`-507`) The peer performed a shutdown on the connection.

  enum NGHTTP2_ERR_DEFERRED

    (`-508`) Used as a return value from `nghttp2_data_source_read_callback2()` to indicate that data transfer is postponed. See `nghttp2_data_source_read_callback2()` for details.

  enum NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE

    (`-509`) Stream ID has reached the maximum value. Therefore no stream ID is available.

  enum NGHTTP2_ERR_STREAM_CLOSED

    (`-510`) The stream is already closed; or the stream ID is invalid.

  enum NGHTTP2_ERR_STREAM_CLOSING

    (`-511`) RST_STREAM has been added to the outbound queue. The stream is in closing state.

  enum NGHTTP2_ERR_STREAM_SHUT_WR

    (`-512`) The transmission is not allowed for this stream (e.g., a frame with END_STREAM flag set has already sent).

  enum NGHTTP2_ERR_INVALID_STREAM_ID

    (`-513`) The stream ID is invalid.

  enum NGHTTP2_ERR_INVALID_STREAM_STATE

    (`-514`) The state of the stream is not valid (e.g., DATA cannot be sent to the stream if response HEADERS has not been sent).

  enum NGHTTP2_ERR_DEFERRED_DATA_EXIST

    (`-515`) Another DATA frame has already been deferred.

  enum NGHTTP2_ERR_START_STREAM_NOT_ALLOWED

    (`-516`) Starting new stream is not allowed (e.g., GOAWAY has been sent and/or received).

  enum NGHTTP2_ERR_GOAWAY_ALREADY_SENT

    (`-517`) GOAWAY has already been sent.

  enum NGHTTP2_ERR_INVALID_HEADER_BLOCK

    (`-518`) The received frame contains the invalid header block (e.g., There are duplicate header names; or the header names are not encoded in US-ASCII character set and not lower cased; or the header name is zero-length string; or the header value contains multiple in-sequence NUL bytes).

  enum NGHTTP2_ERR_INVALID_STATE

    (`-519`) Indicates that the context is not suitable to perform the requested operation.

  enum NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE

    (`-521`) The user callback function failed due to the temporal error.

  enum NGHTTP2_ERR_FRAME_SIZE_ERROR

    (`-522`) The length of the frame is invalid, either too large or too small.

  enum NGHTTP2_ERR_HEADER_COMP

    (`-523`) Header block inflate/deflate error.

  enum NGHTTP2_ERR_FLOW_CONTROL

    (`-524`) Flow control error

  enum NGHTTP2_ERR_INSUFF_BUFSIZE

    (`-525`) Insufficient buffer size given to function.

  enum NGHTTP2_ERR_PAUSE

    (`-526`) Callback was paused by the application

  enum NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS

    (`-527`) There are too many in-flight SETTING frame and no more transmission of SETTINGS is allowed.

  enum NGHTTP2_ERR_PUSH_DISABLED

    (`-528`) The server push is disabled.

  enum NGHTTP2_ERR_DATA_EXIST

    (`-529`) DATA or HEADERS frame for a given stream has been already submitted and has not been fully processed yet. Application should wait for the transmission of the previously submitted frame before submitting another.

  enum NGHTTP2_ERR_SESSION_CLOSING

    (`-530`) The current session is closing due to a connection error or `nghttp2_session_terminate_session()` is called.

  enum NGHTTP2_ERR_HTTP_HEADER

    (`-531`) Invalid HTTP header field was received and stream is going to be closed.

  enum NGHTTP2_ERR_HTTP_MESSAGING

    (`-532`) Violation in HTTP messaging rule.

  enum NGHTTP2_ERR_REFUSED_STREAM

    (`-533`) Stream was refused.

  enum NGHTTP2_ERR_INTERNAL

    (`-534`) Unexpected internal error, but recovered.

  enum NGHTTP2_ERR_CANCEL

    (`-535`) Indicates that a processing was canceled.

  enum NGHTTP2_ERR_SETTINGS_EXPECTED

    (`-536`) When a local endpoint expects to receive SETTINGS frame, it receives an other type of frame.

  enum NGHTTP2_ERR_TOO_MANY_SETTINGS

    (`-537`) When a local endpoint receives too many settings entries in a single SETTINGS frame.

  enum NGHTTP2_ERR_FATAL

    (`-900`) The errors < `nghttp2_error.NGHTTP2_ERR_FATAL` mean that the library is under unexpected condition and processing was terminated (e.g., out of memory). If application receives this error code, it must stop using that `nghttp2_session` object and only allowed operation for that object is deallocate it using `nghttp2_session_del()`.

  enum NGHTTP2_ERR_NOMEM

    (`-901`) Out of memory. This is a fatal error.

  enum NGHTTP2_ERR_CALLBACK_FAILURE

    (`-902`) The user callback function failed. This is a fatal error.

  enum NGHTTP2_ERR_BAD_CLIENT_MAGIC

    (`-903`) Invalid client magic (see `NGHTTP2_CLIENT_MAGIC`) was received and further processing is not possible.

  enum NGHTTP2_ERR_FLOODED

    (`-904`) Possible flooding by peer was detected in this HTTP/2 session. Flooding is measured by how many PING and SETTINGS frames with ACK flag set are queued for transmission. These frames are response for the peer initiated frames, and peer can cause memory exhaustion on server side to send these frames forever and does not read network.

  enum NGHTTP2_ERR_TOO_MANY_CONTINUATIONS

    (`-905`) When a local endpoint receives too many CONTINUATION frames following a HEADER frame.

type nghttp2_nv_flag

  The flags for header field name/value pair.

  enum NGHTTP2_NV_FLAG_NONE

    (`0`) No flag set.

  enum NGHTTP2_NV_FLAG_NO_INDEX

    (`0x01`) Indicates that this name/value pair must not be indexed (“Literal Header Field never Indexed” representation must be used in HPACK encoding). Other implementation calls this bit as “sensitive”.

  enum NGHTTP2_NV_FLAG_NO_COPY_NAME

    (`0x02`) This flag is set solely by application. If this flag is set, the library does not make a copy of header field name. This could improve performance.

  enum NGHTTP2_NV_FLAG_NO_COPY_VALUE

    (`0x04`) This flag is set solely by application. If this flag is set, the library does not make a copy of header field value. This could improve performance.

type nghttp2_frame_type

  The frame types in HTTP/2 specification.

  enum NGHTTP2_DATA

    (`0`) The DATA frame.

  enum NGHTTP2_HEADERS

    (`0x01`) The HEADERS frame.

  enum NGHTTP2_PRIORITY

    (`0x02`) The PRIORITY frame.

  enum NGHTTP2_RST_STREAM

    (`0x03`) The RST_STREAM frame.

  enum NGHTTP2_SETTINGS

    (`0x04`) The SETTINGS frame.

  enum NGHTTP2_PUSH_PROMISE

    (`0x05`) The PUSH_PROMISE frame.

  enum NGHTTP2_PING

    (`0x06`) The PING frame.

  enum NGHTTP2_GOAWAY

    (`0x07`) The GOAWAY frame.

  enum NGHTTP2_WINDOW_UPDATE

    (`0x08`) The WINDOW_UPDATE frame.

  enum NGHTTP2_CONTINUATION

    (`0x09`) The CONTINUATION frame. This frame type won’t be passed to any callbacks because the library processes this frame type and its preceding HEADERS/PUSH_PROMISE as a single frame.

  enum NGHTTP2_ALTSVC

    (`0x0A`) The ALTSVC frame, which is defined in RFC 7383.

  enum NGHTTP2_ORIGIN

    (`0x0C`) The ORIGIN frame, which is defined by RFC 8336.

  enum NGHTTP2_PRIORITY_UPDATE

    (`0x10`) The PRIORITY_UPDATE frame, which is defined by RFC 9218.

type nghttp2_flag

  The flags for HTTP/2 frames. This enum defines all flags for all frames.

  enum NGHTTP2_FLAG_NONE

    (`0`) No flag set.

  enum NGHTTP2_FLAG_END_STREAM

    (`0x01`) The END_STREAM flag.

  enum NGHTTP2_FLAG_END_HEADERS

    (`0x04`) The END_HEADERS flag.

  enum NGHTTP2_FLAG_ACK

    (`0x01`) The ACK flag.

  enum NGHTTP2_FLAG_PADDED

    (`0x08`) The PADDED flag.

  enum NGHTTP2_FLAG_PRIORITY

    (`0x20`) The PRIORITY flag.

type nghttp2_settings_id

  The SETTINGS ID.

  enum NGHTTP2_SETTINGS_HEADER_TABLE_SIZE

    (`0x01`) SETTINGS_HEADER_TABLE_SIZE

  enum NGHTTP2_SETTINGS_ENABLE_PUSH

    (`0x02`) SETTINGS_ENABLE_PUSH

  enum NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS

    (`0x03`) SETTINGS_MAX_CONCURRENT_STREAMS

  enum NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE

    (`0x04`) SETTINGS_INITIAL_WINDOW_SIZE

  enum NGHTTP2_SETTINGS_MAX_FRAME_SIZE

    (`0x05`) SETTINGS_MAX_FRAME_SIZE

  enum NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE

    (`0x06`) SETTINGS_MAX_HEADER_LIST_SIZE

  enum NGHTTP2_SETTINGS_ENABLE_CONNECT_PROTOCOL

    (`0x08`) SETTINGS_ENABLE_CONNECT_PROTOCOL (RFC 8441)

  enum NGHTTP2_SETTINGS_NO_RFC7540_PRIORITIES

    (`0x09`) SETTINGS_NO_RFC7540_PRIORITIES (RFC 9218)

type nghttp2_error_code

  The status codes for the RST_STREAM and GOAWAY frames.

  enum NGHTTP2_NO_ERROR

    (`0x00`) No errors.

  enum NGHTTP2_PROTOCOL_ERROR

    (`0x01`) PROTOCOL_ERROR

  enum NGHTTP2_INTERNAL_ERROR

    (`0x02`) INTERNAL_ERROR

  enum NGHTTP2_FLOW_CONTROL_ERROR

    (`0x03`) FLOW_CONTROL_ERROR

  enum NGHTTP2_SETTINGS_TIMEOUT

    (`0x04`) SETTINGS_TIMEOUT

  enum NGHTTP2_STREAM_CLOSED

    (`0x05`) STREAM_CLOSED

  enum NGHTTP2_FRAME_SIZE_ERROR

    (`0x06`) FRAME_SIZE_ERROR

  enum NGHTTP2_REFUSED_STREAM

    (`0x07`) REFUSED_STREAM

  enum NGHTTP2_CANCEL

    (`0x08`) CANCEL

  enum NGHTTP2_COMPRESSION_ERROR

    (`0x09`) COMPRESSION_ERROR

  enum NGHTTP2_CONNECT_ERROR

    (`0x0A`) CONNECT_ERROR

  enum NGHTTP2_ENHANCE_YOUR_CALM

    (`0x0B`) ENHANCE_YOUR_CALM

  enum NGHTTP2_INADEQUATE_SECURITY

    (`0x0C`) INADEQUATE_SECURITY

  enum NGHTTP2_HTTP_1_1_REQUIRED

    (`0x0D`) HTTP_1_1_REQUIRED

type nghttp2_data_flag

  The flags used to set in data_flags output parameter in `nghttp2_data_source_read_callback2`.

  enum NGHTTP2_DATA_FLAG_NONE

    (`0`) No flag set.

  enum NGHTTP2_DATA_FLAG_EOF

    (`0x01`) Indicates EOF was sensed.

  enum NGHTTP2_DATA_FLAG_NO_END_STREAM

    (`0x02`) Indicates that END_STREAM flag must not be set even if NGHTTP2_DATA_FLAG_EOF is set. Usually this flag is used to send trailer fields with `nghttp2_submit_request2()` or `nghttp2_submit_response2()`.

  enum NGHTTP2_DATA_FLAG_NO_COPY

    (`0x04`) Indicates that application will send complete DATA frame in `nghttp2_send_data_callback`.

type nghttp2_headers_category

  The category of HEADERS, which indicates the role of the frame. In HTTP/2 spec, request, response, push response and other arbitrary headers (e.g., trailer fields) are all called just HEADERS. To give the application the role of incoming HEADERS frame, we define several categories.

  enum NGHTTP2_HCAT_REQUEST

    (`0`) The HEADERS frame is opening new stream, which is analogous to SYN_STREAM in SPDY.

  enum NGHTTP2_HCAT_RESPONSE

    (`1`) The HEADERS frame is the first response headers, which is analogous to SYN_REPLY in SPDY.

  enum NGHTTP2_HCAT_PUSH_RESPONSE

    (`2`) The HEADERS frame is the first headers sent against reserved stream.

  enum NGHTTP2_HCAT_HEADERS

    (`3`) The HEADERS frame which does not apply for the above categories, which is analogous to HEADERS in SPDY. If non-final response (e.g., status 1xx) is used, final response HEADERS frame will be categorized here.

type nghttp2_hd_inflate_flag

  The flags for header inflation.

  enum NGHTTP2_HD_INFLATE_NONE

    (`0`) No flag set.

  enum NGHTTP2_HD_INFLATE_FINAL

    (`0x01`) Indicates all headers were inflated.

  enum NGHTTP2_HD_INFLATE_EMIT

    (`0x02`) Indicates a header was emitted.

type nghttp2_stream_proto_state

  State of stream as described in RFC 7540.

  enum NGHTTP2_STREAM_STATE_IDLE

    (`1`) idle state.

  enum NGHTTP2_STREAM_STATE_OPEN

    open state.

  enum NGHTTP2_STREAM_STATE_RESERVED_LOCAL

    reserved (local) state.

  enum NGHTTP2_STREAM_STATE_RESERVED_REMOTE

    reserved (remote) state.

  enum NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL

    half closed (local) state.

  enum NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE

    half closed (remote) state.

  enum NGHTTP2_STREAM_STATE_CLOSED

    closed state.