The http2 Reference Manual

This is the http2 Reference Manual, version 1.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 08 18:20:26 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 http2

HTTP2 protocol implementation

Author

Tomáš Zellerin <>

License

MIT

Version

1.1

Dependencies
  • trivial-gray-streams (system).
  • flexi-streams (system).
  • anaphora (system).
  • gzip-stream (system).
  • alexandria (system).
Source

http2.asd.

Child Components

3 Modules

Modules are listed depth-first from the system components tree.


3.1 http2/core

Dependency

package.lisp (file).

Source

http2.asd.

Parent Component

http2 (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 http2/http2.asd

Source

http2.asd.

Parent Component

http2 (system).

ASDF Systems

http2.


4.1.2 http2/package.lisp

Source

http2.asd.

Parent Component

http2 (system).

Packages

4.1.3 http2/core/utils.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.4 http2/core/errors.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.5 http2/core/frames.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.6 http2/core/classes.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.7 http2/core/hpack.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.8 http2/core/binary-payload.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.9 http2/core/payload-streams.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 http2/hpack

Source

package.lisp.

Use List
  • anaphora.
  • common-lisp.
Used By List

http2.

Public Interface
Internals

5.2 http2

HTTP2 API on several levels.

First, it has some high level interface to facilitate making HTTP2 client and
server with some vanilla behaviour. The communication is done mostly by writing to and reading from (Lisp) streams and sending/parsing/receiving headers.

Then, there is an object oriented interface that allows to customize details on
how the client or server acts in some situations. This allows things such as sending pushes on the server side.

Then there is a low level frame oriented interface to read and write frames.

Source

package.lisp.

Use List
Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Constants

Constant: +no-error+

graceful shutdown

Package

http2.

Source

utils.lisp.


6.1.2 Special variables

Special Variable: *do-print-log*

Set to true value to log to the *TRACE-OUTPUT*.

Package

http2.

Source

classes.lisp.


6.1.3 Ordinary functions

Function: compile-headers (headers context)
Package

http2/hpack.

Source

hpack.lisp.

Function: decode-huffman (bytes)
Package

http2/hpack.

Source

hpack.lisp.

Function: dynamic-table-value (context idx)

Header on position IDX in the dynamic table in CONTEXT.

This is factored out to be used in testing.

Package

http2/hpack.

Source

hpack.lisp.

Function: encode-header (name value &optional context huffman)

Encode header consisting of NAME and VALUE.

The ‘never-indexed‘ format is never generated,
use a separate function for this (and this function needs to be written).

When CONTEXT is provided, use incremental indexing with dynamic table in that CONTEXT.

Use Huffman when HUFFMAN is true.

Package

http2/hpack.

Source

hpack.lisp.

Function: extract-charset-from-content-type (content-type)

Guess charset from the content type. NIL for binary data.

Package

http2.

Source

payload-streams.lisp.

Function: get-integer-from-octet (stream initial-octet bit-size)

Decode an integer from starting OCTET and additional octets in STREAM as defined in RFC7541 sect. 5.1.

Package

http2/hpack.

Source

hpack.lisp.

Function: http-stream-to-vector (raw-stream)

Read HTTP2 stream payload data, do guessed conversions and return either
string or octets vector. You can expect the HTTP2 stream to be closed after calling this.

Package

http2.

Source

payload-streams.lisp.

Function: integer-to-array (integer bit-size mask)

Represent integer to a vector as defined in RFC7541 sect. 5.1.

Package

http2/hpack.

Source

hpack.lisp.

Function: make-transport-output-stream (raw-stream charset gzip)

An OUTPUT-STREAM built atop RAW STREAM with added text to binary encoding using charset (as understood by flexi-streams) and possibly gzip compression.

Package

http2.

Source

payload-streams.lisp.

Function: read-byte* (stream)
Package

http2/hpack.

Source

utils.lisp.

Function: read-frame (connection &optional stream)

All frames begin with a fixed 9-octet header followed by a variable- length payload.

#+begin_src artist +———————————————–+
| Length (24) | +—————+—————+—————+
| Type (8) | Flags (8) | +-+————-+—————+——————————-+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +—————————————————————+ #+end_src

Length: The length of the frame payload expressed as an unsigned 24-bit integer. Values greater than 2^14 (16,384) MUST NOT be sent unless the receiver has set a larger value for SETTINGS_MAX_FRAME_SIZE.

The 9 octets of the frame header are not included in this value.

Type: The 8-bit type of the frame. The frame type determines the format and semantics of the frame. Implementations MUST ignore and discard any frame that has a type that is unknown.

Flags: An 8-bit field reserved for boolean flags specific to the frame type.

Flags are assigned semantics specific to the indicated frame type. Flags that have no defined semantics for a particular frame type MUST be ignored and MUST be left unset (0x0) when sending.

R: A reserved 1-bit field. The semantics of this bit are undefined, and the bit MUST remain unset (0x0) when sending and MUST be ignored when receiving.

Stream Identifier: A stream identifier (see Section 5.1.1) expressed as an unsigned 31-bit integer. The value 0x0 is reserved for frames that are associated with the connection as a whole as opposed to an individual stream.

Package

http2.

Source

frames.lisp.

Function: read-http-header (stream context)

Read header field from network stream associated with the CONNECTION.

Note that we can get missing-header-octets on first octet if we have zero length continuation frame.

Package

http2/hpack.

Source

hpack.lisp.

Function: request-headers (method path authority &key scheme content-type gzip-content additional-headers)

Encode standard request headers that are obligatory.

Package

http2/hpack.

Source

hpack.lisp.

Function: send-headers (stream headers &key end-stream end-headers &allow-other-keys)

Send HEADERS to a HTTP2 stream. The stream is returned.

The END-HEADERS and END-STREAM allow to set the appropriate flags.

Package

http2.

Source

classes.lisp.

Function: update-dynamic-table-size (context new-size)

Update dynamic table for new size that is smaller than the previous one.

Zero size means evict completely; in this case the new vector can be cleaned

Package

http2/hpack.

Source

hpack.lisp.

Function: write-ack-setting-frame (stream)

Write ACK settings frame.

ACK (0x1): When set, bit 0 indicates that this frame acknowledges receipt and application of the peer’s SETTINGS frame. When this bit is set, the payload of the SETTINGS frame MUST be empty. Receipt of a SETTINGS frame with the ACK flag set and a length field value other than 0 MUST be treated as a connection error (Section 5.4.1) of type FRAME_SIZE_ERROR. For more information, see Section 6.5.3 ("Settings Synchronization").

Package

http2.

Source

frames.lisp.

Function: write-altsvc-frame (http-connection-or-stream origin alt-svc-field-value &rest keys &key)

See RFC 7838. The ALTSVC HTTP/2 frame advertises the availability of an alternative service to an HTTP/2 client.

#+begin_src artist +——————————-+——————————-+ | Origin-Len (16) | Origin? (*) ... +——————————-+——————————-+ | Alt-Svc-Field-Value (*) ... +—————————————————————+ #+end_src

Package

http2.

Source

frames.lisp.

Function: write-continuation-frame (http-connection-or-stream headers &rest keys &key end-headers)

#+begin_src artist

+—————————————————————+
| Header Block Fragment (*) ... +—————————————————————+ #+end_src

The CONTINUATION frame (type=0x9) is used to continue a sequence of header block fragments (Section 4.3). Any number of CONTINUATION frames can be sent, as long as the preceding frame is on the same stream and is a HEADERS, PUSH_PROMISE, or CONTINUATION frame without the END_HEADERS flag set.

Package

http2.

Source

frames.lisp.

Function: write-data-frame (http-connection-or-stream data &rest keys &key padded end-stream)

#+begin_src artist

+—————+———————————————–+ | Data (*) ... +—————————————————————+ #+end_src

DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a stream. One or more DATA frames are used, for instance, to carry HTTP request or response payloads.

Package

http2.

Source

frames.lisp.

Function: write-frame-header (stream length type flags http-stream r)

All frames begin with a fixed 9-octet header followed by a variable- length payload.

#+begin_src artist +———————————————–+
| Length (24) | +—————+—————+—————+
| Type (8) | Flags (8) | +-+————-+—————+——————————-+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +—————————————————————+ #+end_src

Length: The length of the frame payload expressed as an unsigned 24-bit integer. Values greater than 2^14 (16,384) MUST NOT be sent unless the receiver has set a larger value for SETTINGS_MAX_FRAME_SIZE.

The 9 octets of the frame header are not included in this value.

Type: The 8-bit type of the frame. The frame type determines the format and semantics of the frame.

Flags: An 8-bit field reserved for boolean flags specific to the frame type.

Flags are assigned semantics specific to the indicated frame type. Flags that have no defined semantics for a particular frame type MUST be ignored and MUST be left unset (0x0) when sending.

R: A reserved 1-bit field. The semantics of this bit are undefined, and the bit MUST remain unset (0x0) when sending and MUST be ignored when receiving.

Stream Identifier: A stream identifier (see Section 5.1.1) expressed as an unsigned 31-bit integer. The value 0x0 is reserved for frames that are associated with the connection as a whole as opposed to an individual stream.

Package

http2.

Source

frames.lisp.

Function: write-goaway-frame (http-connection-or-stream last-stream-id error-code debug-data &rest keys &key reserved)

#+begin_src artist +-+————————————————————-+ |R| Last-Stream-ID (31) | +-+————————————————————-+ | Error Code (32) | +—————————————————————+ | Additional Debug Data (*) | +—————————————————————+ #+end_src

The GOAWAY frame (type=0x7) is used to initiate shutdown of a connection or to signal serious error conditions. GOAWAY allows an endpoint to gracefully stop accepting new streams while still finishing processing of previously established streams. This enables administrative actions, like server maintenance.

Package

http2.

Source

frames.lisp.

Function: write-headers-frame (http-connection-or-stream headers &rest keys &key end-headers end-stream padded priority)

#+begin_src artist

+-+————-+———————————————–+ |E| Stream Dependency? (31) | +-+————-+———————————————–+ | Weight? (8) | +-+————-+———————————————–+ | Header Block Fragment (*) ... +—————————————————————+ #+end_src

The HEADERS frame (type=0x1) is used to open a stream (Section 5.1), and additionally carries a header block fragment. HEADERS frames can be sent on a stream in the "idle", "reserved (local)", "open", or "half-closed (remote)" state.

Package

http2.

Source

frames.lisp.

Function: write-ping-frame (http-connection-or-stream opaque-data &rest keys &key ack)

The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the sender, as well as determining whether an idle connection is still functional. PING frames can be sent from any endpoint.

#+begin_src artist +—————————————————————+ | | | Opaque Data (64) | | | +—————————————————————+ #+end_src

Figure 12: PING Payload Format

In addition to the frame header, PING frames MUST contain 8 octets of opaque data in the payload. A sender can include any value it chooses and use those octets in any fashion.

Receivers of a PING frame that does not include an ACK flag MUST send a PING frame with the ACK flag set in response, with an identical payload. PING responses SHOULD be given higher priority than any other frame.

The PING frame defines the following flags:

ACK (0x1): When set, bit 0 indicates that this PING frame is a PING response. An endpoint MUST set this flag in PING responses. An endpoint MUST NOT respond to PING frames containing this flag.

Package

http2.

Source

frames.lisp.

Function: write-priority-frame (http-connection-or-stream priority &rest keys &key)

The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream (Section 5.3).

#+begin_src artist +-+————————————————————-+ |E| Stream Dependency (31) | +-+————-+———————————————–+ | Weight (8) |
+-+————-+
#+end_src

The payload of a PRIORITY frame contains the following fields:

E: A single-bit flag indicating that the stream dependency is exclusive (see Section 5.3).

Stream Dependency: A 31-bit stream identifier for the stream that this stream depends on (see Section 5.3).

Weight: An unsigned 8-bit integer representing a priority weight for the stream (see Section 5.3). Add one to the value to obtain a weight between 1 and 256.

Package

http2.

Source

frames.lisp.

Function: write-push-promise-frame (http-connection-or-stream headers promised-stream-id &rest keys &key end-headers padded reserved)

The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the sender intends to initiate. The PUSH_PROMISE frame includes the unsigned 31-bit identifier of the stream the endpoint plans to create along with a set of headers that provide additional context for the stream. Section 8.2 contains a thorough description of the use of PUSH_PROMISE frames.

#+begin_src artist +-+————-+———————————————–+ |R| Promised Stream ID (31) | +-+—————————–+——————————-+ | Header Block Fragment (*) ... +—————————————————————+ #+end_src

The PUSH_PROMISE frame payload has the following fields:

R: A single reserved bit.

Promised Stream ID: An unsigned 31-bit integer that identifies the stream that is reserved by the PUSH_PROMISE. The promised stream identifier MUST be a valid choice for the next stream sent by the sender (see "new stream identifier" in Section 5.1.1).

Header Block Fragment: A header block fragment (Section 4.3) containing request header fields.

The PUSH_PROMISE frame defines the following flags:

END_HEADERS (0x4): When set, bit 2 indicates that this frame contains an entire header block (Section 4.3) and is not followed by any CONTINUATION frames.

A PUSH_PROMISE frame without the END_HEADERS flag set MUST be followed by a CONTINUATION frame for the same stream. A receiver MUST treat the receipt of any other type of frame or a frame on a different stream as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.

Package

http2.

Source

frames.lisp.

Function: write-rst-stream-frame (http-connection-or-stream error-code &rest keys &key)

The RST_STREAM frame (type=0x3) allows for immediate termination of a stream. RST_STREAM is sent to request cancellation of a stream or to indicate that an error condition has occurred.

#+begin_src artist +—————————————————————+ | Error Code (32) | +—————————————————————+ #+end_src

The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error code (Section 7). The error code indicates why the stream is being terminated.

The RST_STREAM frame does not define any flags.

Package

http2.

Source

frames.lisp.

Function: write-settings-frame (http-connection-or-stream settings &rest keys &key ack)

#+begin_src artist
+——————————-+
| Identifier (16) | +——————————-+——————————-+ | Value (32) | +—————————————————————+ #+end_src

The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints communicate, such as preferences and constraints on peer behavior. The SETTINGS frame is also used to acknowledge the receipt of those parameters. Individually, a SETTINGS parameter can also be referred to as a "setting".

Package

http2.

Source

frames.lisp.

Function: write-window-update-frame (http-connection-or-stream window-size-increment &rest keys &key reserved)

#+begin_src artist +-+————————————————————-+ |R| Window Size Increment (31) | +-+————————————————————-+ #+end_src

The WINDOW_UPDATE frame (type=0x8) is used to implement flow control; see Section 5.2 for an overview. Flow control operates at two levels: on each individual stream and on the entire connection.

Package

http2.

Source

frames.lisp.


6.1.4 Generic functions

Generic Function: add-header (connection stream name value)
Package

http2.

Source

classes.lisp.

Methods
Method: add-header :around (connection (stream http2-stream) name value)

Decode compressed headers

Method: add-header (connection stream name value)
Method: add-header (connection (stream server-stream) (name symbol) value)
Method: add-header (connection (stream client-stream) (name symbol) value)
Method: add-header :after (connection (stream log-headers-mixin) name value)
Method: add-header (connection (stream header-collecting-mixin) name value)
Method: add-header :before (connection (stream logging-object) name value)
Generic Function: apply-data-frame (stream payload)

Data frame is received by a stream.
By default does nothing; there are several mixins that implement reading the data.

Package

http2.

Source

classes.lisp.

Methods
Method: apply-data-frame ((stream http2-stream-with-input-stream) frame-data)
Source

payload-streams.lisp.

Method: apply-data-frame (stream payload)
Method: apply-data-frame ((stream body-collecting-mixin) data)
Method: apply-data-frame :before ((stream logging-object) payload)
Generic Function: apply-stream-priority (stream exclusive weight stream-dependency)

Called when priority frame - or other frame with priority settings set - arrives. Does nothing, as priorities are deprecated in RFC9113 anyway.

Package

http2.

Source

classes.lisp.

Methods
Method: apply-stream-priority (stream exclusive weight stream-dependency)
Method: apply-stream-priority :before ((stream logging-object) exclusive weight stream-dependency)
Generic Function: apply-window-size-increment (object increment)

Called on window update frame. By default, increases PEER-WINDOW-SIZE slot of the strem or connection.

Package

http2.

Source

classes.lisp.

Methods
Method: apply-window-size-increment ((object (eql :closed)) increment)
Method: apply-window-size-increment :before ((object logging-object) increment)
Method: apply-window-size-increment (object increment)
Generic Function: do-goaway (connection error-code last-stream-id debug-data)

Called when a go-away frame is received. By default throws GO-AWAY condition if error was reported.

Package

http2.

Source

classes.lisp.

Methods
Method: do-goaway ((connection logging-object) error-code last-stream-id debug-data)
Method: do-goaway ((connection client-http2-connection) error-code last-stream-id debug-data)
Method: do-goaway ((connection server-http2-connection) error-code last-stream-id debug-data)
Generic Function: do-pong (connection data)

Called when ping-frame with ACK is received. By default warns about unexpected ping response; see also TIMESHIFT-PINGING-CONNECTION mixin.

Package

http2.

Source

classes.lisp.

Methods
Method: do-pong :before ((connection logging-object) data)
Method: do-pong (connection data)
Method: do-pong ((connection timeshift-pinging-connection) data)
Generic Reader: get-body (object)
Package

http2.

Methods
Reader Method: get-body ((body-collecting-mixin body-collecting-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

body.

Generic Writer: (setf get-body) (object)
Package

http2.

Methods
Writer Method: (setf get-body) ((body-collecting-mixin body-collecting-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

body.

Generic Reader: get-bytes-left-in-table (object)
Package

http2/hpack.

Methods
Reader Method: get-bytes-left-in-table ((hpack-context hpack-context))

automatically generated reader method

Source

hpack.lisp.

Target Slot

bytes-left-in-table.

Generic Writer: (setf get-bytes-left-in-table) (object)
Package

http2/hpack.

Methods
Writer Method: (setf get-bytes-left-in-table) ((hpack-context hpack-context))

automatically generated writer method

Source

hpack.lisp.

Target Slot

bytes-left-in-table.

Generic Reader: get-connection (condition)
Package

http2.

Methods
Reader Method: get-connection ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

connection.

Reader Method: get-connection ((condition connection-error))
Source

errors.lisp.

Target Slot

connection.

Generic Writer: (setf get-connection) (condition)
Package

http2.

Methods
Writer Method: (setf get-connection) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

connection.

Writer Method: (setf get-connection) ((condition connection-error))
Source

errors.lisp.

Target Slot

connection.

Generic Reader: get-deleted-items (object)
Package

http2/hpack.

Methods
Reader Method: get-deleted-items ((hpack-context hpack-context))

automatically generated reader method

Source

hpack.lisp.

Target Slot

deleted-items.

Generic Writer: (setf get-deleted-items) (object)
Package

http2/hpack.

Methods
Writer Method: (setf get-deleted-items) ((hpack-context hpack-context))

automatically generated writer method

Source

hpack.lisp.

Target Slot

deleted-items.

Generic Reader: get-dynamic-table (object)
Package

http2/hpack.

Methods
Reader Method: get-dynamic-table ((hpack-context hpack-context))

automatically generated reader method

Source

hpack.lisp.

Target Slot

dynamic-table.

Generic Writer: (setf get-dynamic-table) (object)
Package

http2/hpack.

Methods
Writer Method: (setf get-dynamic-table) ((hpack-context hpack-context))

automatically generated writer method

Source

hpack.lisp.

Target Slot

dynamic-table.

Generic Reader: get-dynamic-table-size (object)
Package

http2/hpack.

Methods
Reader Method: get-dynamic-table-size ((hpack-context hpack-context))

automatically generated reader method

Source

hpack.lisp.

Target Slot

dynamic-table-size.

Generic Writer: (setf get-dynamic-table-size) (object)
Package

http2/hpack.

Methods
Writer Method: (setf get-dynamic-table-size) ((hpack-context hpack-context))

automatically generated writer method

Source

hpack.lisp.

Target Slot

dynamic-table-size.

Generic Reader: get-headers (object)
Package

http2.

Methods
Reader Method: get-headers ((header-collecting-mixin header-collecting-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

headers.

Generic Writer: (setf get-headers) (object)
Package

http2.

Methods
Writer Method: (setf get-headers) ((header-collecting-mixin header-collecting-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

headers.

Generic Reader: get-path (object)
Generic Writer: (setf get-path) (object)
Package

http2.

Methods
Reader Method: get-path ((server-stream server-stream))
Writer Method: (setf get-path) ((server-stream server-stream))

The path and query parts of the target URI

Source

classes.lisp.

Target Slot

path.

Generic Reader: get-status (object)
Generic Writer: (setf get-status) (object)
Package

http2.

Methods
Reader Method: get-status ((client-stream client-stream))
Writer Method: (setf get-status) ((client-stream client-stream))

HTTP status code field (see [RFC7231], Section 6)

Source

classes.lisp.

Target Slot

status.

Generic Reader: get-updates-needed (object)
Package

http2/hpack.

Methods
Reader Method: get-updates-needed ((hpack-context hpack-context))

automatically generated reader method

Source

hpack.lisp.

Target Slot

updates-needed.

Generic Writer: (setf get-updates-needed) (object)
Package

http2/hpack.

Methods
Writer Method: (setf get-updates-needed) ((hpack-context hpack-context))

automatically generated writer method

Source

hpack.lisp.

Target Slot

updates-needed.

Generic Function: handle-undefined-frame (type flags length)

Callback that is called when a frame of unknown type is received - see extensions.

Package

http2.

Source

classes.lisp.

Methods
Method: handle-undefined-frame (type flags length)
Generic Function: peer-acks-settings (connection)

Called when SETTINGS-FRAME with ACK flag is received. By default does nothing.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-acks-settings (connection)
Method: peer-acks-settings ((connection logging-object))
Generic Function: peer-ends-http-stream (stream)

Do relevant state changes when closing http stream (as part of received HEADERS or PAYLOAD).

Package

http2.

Source

classes.lisp.

Methods
Method: peer-ends-http-stream :after ((stream logging-object))
Method: peer-ends-http-stream (stream)
Generic Function: peer-expects-settings-ack (connection)

Called when settings-frame without ACK is received, after individual SET-PEER-SETTING calls. By default, send ACK frame.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-expects-settings-ack (connection)
Method: peer-expects-settings-ack :before ((connection logging-object))
Generic Function: peer-resets-stream (stream error-code)

The RST_STREAM frame fully terminates the referenced stream and causes it to enter the "closed" state. After receiving a RST_STREAM on a stream, the receiver MUST NOT send additional frames for that stream, with the exception of PRIORITY. However, after sending the RST_STREAM, the sending endpoint MUST be prepared to receive and process additional frames sent on the stream that might have been sent by the peer prior to the arrival of the RST_STREAM.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-resets-stream ((stram (eql :closed)) error-code)
Method: peer-resets-stream (stream error-code)
Method: peer-resets-stream :before ((stream logging-object) error-code)
Generic Function: peer-sends-push-promise (stream)

This should be called on push promise (FIXME: and maybe it is not, and maybe the parameters should be different anyway). By default throws an error.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-sends-push-promise (stream)
Generic Function: send-ping (connection &optional payload)

Send a ping request.

Package

http2.

Source

classes.lisp.

Methods
Method: send-ping (connection &optional payload)
Method: send-ping ((connection timeshift-pinging-connection) &optional payload)
Generic Function: set-peer-setting (connection name value)

Process received information about peers setting.

The setting relates to the CONNECTION. NAME is a keyword symbol (see *SETTINGS*, subject to possible change to 16bit number in future) and VALUE is 32bit number.

Package

http2.

Source

classes.lisp.

Methods
Method: set-peer-setting (connection name value)

Fallback.

Method: set-peer-setting :before ((connection logging-object) name value)
Method: set-peer-setting (connection (name (eql :header-table-size)) value)
Method: set-peer-setting (connection (name (eql :initial-window-size)) value)
Method: set-peer-setting (connection (name (eql :max-frame-size)) value)
Method: set-peer-setting (connection (name (eql :max-header-list-size)) value)
Method: set-peer-setting ((connection client-http2-connection) (name (eql :enable-push)) value)
Method: set-peer-setting ((connection server-http2-connection) (name (eql :enable-push)) value)
Method: set-peer-setting (connection (name (eql :max-concurrent-streams)) value)

6.1.5 Standalone methods

Method: close ((connection http2-connection) &key &allow-other-keys)
Source

classes.lisp.

Method: close ((stream payload-output-stream) &key &allow-other-keys)
Source

payload-streams.lisp.

Method: close ((stream payload-input-stream) &key &allow-other-keys)
Source

payload-streams.lisp.

Method: initialize-instance :after ((connection client-http2-connection) &key &allow-other-keys)

In HTTP/2, each endpoint is required to send a connection preface as a final confirmation of the protocol in use and to establish the initial settings for the HTTP/2 connection. The client and server each send a different connection preface.

The client connection preface starts with a sequence of 24 octets. This sequence MUST be followed by a SETTINGS frame (Section 6.5), which MAY be empty.

Source

classes.lisp.

Method: initialize-instance :after ((stream payload-output-stream) &key base-http2-stream connection window-size &allow-other-keys)
Source

payload-streams.lisp.

Method: initialize-instance :after ((stream payload-input-stream) &key base-http2-stream &allow-other-keys)
Source

payload-streams.lisp.

Method: initialize-instance :after ((stream http2-stream) &key connection)
Source

classes.lisp.

Method: initialize-instance :after ((stream constant-output-stream) &key &allow-other-keys)
Source

binary-payload.lisp.

Method: print-object ((stream server-stream) out)
Source

classes.lisp.

Method: print-object ((object frame-type) stream)
Source

frames.lisp.

Method: print-object ((err go-away) out)
Source

errors.lisp.

Method: print-object ((o http2-stream) out)
Source

classes.lisp.

Method: print-object ((err http-stream-error) out)
Source

errors.lisp.

Method: print-object ((ce connection-error) out)
Source

errors.lisp.

Method: stream-element-type ((stream binary-stream))
Source

payload-streams.lisp.

Method: stream-force-output ((stream payload-output-stream))
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-listen ((stream payload-input-stream))
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-read-byte ((stream payload-input-stream))
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-write-byte ((stream payload-output-stream) byte)
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-write-byte ((stream constant-output-stream) byte)
Package

sb-gray.

Source

binary-payload.lisp.

Method: stream-write-sequence ((stream payload-output-stream) sequence start end &key)
Package

trivial-gray-streams.

Source

payload-streams.lisp.


6.1.6 Classes

Class: client-http2-connection

Client connections have odd-numbered streams.

Package

http2.

Source

classes.lisp.

Direct superclasses

http2-connection.

Direct methods
Direct Default Initargs
InitargValue
:id-to-use1
Class: client-stream

HTTP2 stream that checks headers as required for clients (no psedoheader other than :status allowed, etc.

Package

http2.

Source

classes.lisp.

Direct superclasses

http2-stream.

Direct methods
Direct Default Initargs
InitargValue
:statusnil
Direct slots
Slot: status

HTTP status code field (see [RFC7231], Section 6)

Initargs

:status

Readers

get-status.

Writers

(setf get-status).

Class: header-collecting-mixin

Mixin to be used to collect all observed headers to a slot.

Package

http2.

Source

classes.lisp.

Direct methods
Direct Default Initargs
InitargValue
:headersnil
Direct slots
Slot: headers
Initargs

:headers

Readers

get-headers.

Writers

(setf get-headers).

Class: history-printing-object

A LOGGING-OBJECT that implements ADD-LOG to print all logs to *TRACE-OUTPUT* as soon as it receives them.

Package

http2.

Source

classes.lisp.

Direct superclasses

logging-object.

Direct methods

add-log.

Class: hpack-context

Dynamic tables implementation: they are stored in an adjustable array, with
[0] element storing first element initially (indexed by s+1), and (s+k)th element after k insertions.

After deletion of D elements, element s+k is stored on index D, element s+1
on index

<———- Index Address Space ———->
<– Static Table –> <– Dynamic Table –>
+—+———–+—+ +—–+———–+—–+
| 1 | ... | s | |s+1+D| ... |s+k+D| ...deleted... +—+———–+—+ +—–+———–+—–+
k D 0
<—– table aref index ————–>
^ |
| V
Insertion Point Dropping Point

Package

http2/hpack.

Source

hpack.lisp.

Direct methods
Direct Default Initargs
InitargValue
:dynamic-table(make-array 0 fill-pointer 0 adjustable t)
:dynamic-table-size4096
:deleted-items0
:updates-needednil
Direct slots
Slot: dynamic-table
Initargs

:dynamic-table

Readers

get-dynamic-table.

Writers

(setf get-dynamic-table).

Slot: bytes-left-in-table
Initargs

:dynamic-table-size

Readers

get-bytes-left-in-table.

Writers

(setf get-bytes-left-in-table).

Slot: dynamic-table-size
Initargs

:dynamic-table-size

Readers

get-dynamic-table-size.

Writers

(setf get-dynamic-table-size).

Slot: updates-needed
Initargs

:updates-needed

Readers

get-updates-needed.

Writers

(setf get-updates-needed).

Slot: deleted-items
Initargs

:deleted-items

Readers

get-deleted-items.

Writers

(setf get-deleted-items).

Class: logging-object

Objects with this mixin have ADD-LOG called in many situations so that the communication can be debugged or recorded.

Package

http2.

Source

classes.lisp.

Direct subclasses
Direct methods
Class: server-stream
Package

http2.

Source

classes.lisp.

Direct superclasses

http2-stream.

Direct methods
Direct Default Initargs
InitargValue
:methodnil
:schemenil
:authoritynil
:pathnil
Direct slots
Slot: method

The HTTP method ([RFC7231], Section 4)

Package

common-lisp.

Initargs

:method

Readers

get-method.

Writers

(setf get-method).

Slot: scheme

Scheme portion of the target URI ([RFC3986], Section 3.1).

Not restricted to "http" and "https" schemed URIs.
A proxy or gateway can translate requests for non-HTTP schemes, enabling the use of HTTP to interact with non-HTTP services

Initargs

:scheme

Readers

get-scheme.

Writers

(setf get-scheme).

Slot: authority

The authority portion of the target URI ([RFC3986], Section 3.2)

Initargs

:authority

Readers

get-authority.

Writers

(setf get-authority).

Slot: path

The path and query parts of the target URI

Initargs

:path

Readers

get-path.

Writers

(setf get-path).

Class: timeshift-pinging-connection

A mixin that implements specific DO-PING and DO-PONG so that the RTT is printed after DO-PING is send.

Package

http2.

Source

classes.lisp.

Direct methods

6.2 Internals


6.2.1 Constants

Constant: +altsvc-frame+
Package

http2.

Source

frames.lisp.

Constant: +cancel+

stream cancelled

Package

http2.

Source

utils.lisp.

Constant: +compression-error+

compression state not updated

Package

http2.

Source

utils.lisp.

Constant: +connect-error+

tcp connection error for connect method

Package

http2.

Source

utils.lisp.

Constant: +continuation-frame+
Package

http2.

Source

frames.lisp.

Constant: +data-frame+
Package

http2.

Source

frames.lisp.

Constant: +enhance-your-calm+

processing capacity exceeded

Package

http2.

Source

utils.lisp.

Constant: +flow-control-error+

flow-control limits exceeded

Package

http2.

Source

utils.lisp.

Constant: +frame-size-error+

frame size incorrect

Package

http2.

Source

utils.lisp.

Constant: +goaway-frame+
Package

http2.

Source

frames.lisp.

Constant: +headers-frame+
Package

http2.

Source

frames.lisp.

Constant: +http-1-1-required+

Use HTTP/1.1 for the request

Package

http2.

Source

utils.lisp.

Constant: +inadequate-security+

negotiated tls parameters not acceptable

Package

http2.

Source

utils.lisp.

Constant: +internal-error+

implementation fault

Package

http2.

Source

utils.lisp.

Constant: +known-frame-types-count+

Frame types are indexed by an octet.

Package

http2.

Source

frames.lisp.

Constant: +last-static-header-index+
Package

http2/hpack.

Source

hpack.lisp.

Constant: +last-static-header-pair+
Package

http2/hpack.

Source

hpack.lisp.

Constant: +literal-header-index+
Package

http2/hpack.

Source

hpack.lisp.

Constant: +literal-header-never-index+
Package

http2/hpack.

Source

hpack.lisp.

Constant: +literal-header-noindex+
Package

http2/hpack.

Source

hpack.lisp.

Constant: +ping-frame+
Package

http2.

Source

frames.lisp.

Constant: +priority-frame+
Package

http2.

Source

frames.lisp.

Constant: +protocol-error+

protocol error detected

Package

http2.

Source

utils.lisp.

Constant: +push-promise-frame+
Package

http2.

Source

frames.lisp.

Constant: +refused-stream+

stream not processed

Package

http2.

Source

utils.lisp.

Constant: +rst-stream-frame+
Package

http2.

Source

frames.lisp.

Constant: +settings-frame+
Package

http2.

Source

frames.lisp.

Constant: +settings-timeout+

settings not acknowledged

Package

http2.

Source

utils.lisp.

Constant: +stream-closed+

frame received for closed stream

Package

http2.

Source

utils.lisp.

Constant: +window-update-frame+
Package

http2.

Source

frames.lisp.


6.2.2 Special variables

Special Variable: *bytes-left*

Number of bytes left in frame

Package

http2.

Source

utils.lisp.

Special Variable: *bytes-to-possibly-reuse*
Package

http2.

Source

utils.lisp.

Special Variable: *bytes-to-reuse*
Package

http2.

Source

utils.lisp.

Special Variable: *charset-names*

Translation table from header charset names to FLEXI-STREAM keywords.

Package

http2.

Source

payload-streams.lisp.

Special Variable: *default-encoding*

Character encoding to be used when not recognized from headers. Default is nil - binary.

Package

http2.

Source

payload-streams.lisp.

Special Variable: *default-text-encoding*

Character encoding for text/ content to be used when not recognized from headers.

Package

http2.

Source

payload-streams.lisp.

Special Variable: *error-codes*

This table maps error codes to mnemonic names - symbols.

Error codes are 32-bit fields that are used in RST_STREAM and GOAWAY frames to convey the reasons for the stream or connection error.

Error codes share a common code space. Some error codes apply only to either streams or the entire connection and have no defined semantics in the other context.

Package

http2.

Source

utils.lisp.

Special Variable: *flag-codes-keywords*

Property list of flag names and their values..

This makes use of the fact that same flag name has same index in all headers where it is used.

Package

http2.

Source

frames.lisp.

Special Variable: *frame-types*

Array of frame types. It is populated later with DEFINE-FRAME-TYPE.

Package

http2.

Source

frames.lisp.

Special Variable: *huffman-code*

The code-and-code-size table from the RFC 7541 (hpack) appendix B

Package

http2/hpack.

Source

hpack.lisp.

Special Variable: *log-stream*

Stream for logging output send by LOGGER.

Package

http2.

Source

utils.lisp.

Special Variable: *settings*

See https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml

Package

http2.

Source

utils.lisp.

Special Variable: *use-huffman-coding-by-default*

Is set, the headers are by default huffman-encoded. Special value :maybe means whatever is shorter, plain encoding in case of draw.

Package

http2/hpack.

Source

hpack.lisp.

Special Variable: *when-no-bytes-left-fn*

Function to call when no bytes are left. Either errors or calls continuations.

Package

http2.

Source

utils.lisp.

Special Variable: +client-preface-start+

The client connection preface starts with a sequence of 24 octets, which in hex notation is this. That is, the connection preface starts with the string "PRI * HTTP/2.0rnrnSMrnrn").

Package

http2.

Source

classes.lisp.

Special Variable: static-headers-table

Static headers table. Each element is either list of header name and value, or just header name. The content is defined in the RFC7541, and is supposed to start at index 1, so leading nil.

Package

http2/hpack.

Source

hpack.lisp.


6.2.3 Macros

Macro: check-place-empty-and-set-it (new-value accessor)

All HTTP/2 requests MUST include exactly one valid value for the :method, :scheme, and :path pseudo-header fields, unless it is a CONNECT request (Section 8.3). An HTTP request that omits mandatory pseudo-header fields is malformed (Section 8.1.2.6).

Package

http2.

Source

classes.lisp.

Macro: compile-payload-from-stream ((stream-name charset gzip) &body body)
Package

http2.

Source

binary-payload.lisp.

Macro: define-frame-type (type-code frame-type-name documentation (&rest parameters) (&key flags length must-have-stream-in may-have-connection must-have-connection new-stream-state bad-state-error has-reserved) writer (&body reader))

Define:
- A frame type object that allows to read frame of given type,
- a constant named ‘+foo+‘ that translates to TYPE-CODE,
- a writer function WRITE-FOO that takes CONNECTION or HTTP-STREAM and possibly other PARAMETERS and FLAGSs and writes appropriate frame.

Each PARAMETER is a list of name, size in bits or type specifier and documentation.

Package

http2.

Source

frames.lisp.

Macro: with-output-payload-slots (stream &body body)
Package

http2.

Source

payload-streams.lisp.


6.2.4 Ordinary functions

Function: account-frame-window-contribution (connection stream length)
Package

http2.

Source

frames.lisp.

Function: change-state-on-write-end (http-stream)

Change state of the stream when STREAM-END is sent.

Package

http2.

Source

frames.lisp.

Function: check-stream-state-ok (connection http-stream ok-states bad-state-error)

Throw BAD-STATE-ERROR when the stream state is not appropriate for the frame type.

Return the HTTP-STREAM.

Package

http2.

Source

frames.lisp.

Function: close-http2-stream (stream)

Close the http2 stream.

It marks the stream as closed, which is maybe unnecessary, as the stream is immediately removed from the list of streams of its connection. This is consistent with the concept that any stream not in the connection streams explicitly is either idle (if above last-id-seen or id-to-use, depending on even/odd) or closed - see FIND-HTTP-STREAM-BY-ID.

The removal of unused streams is necessary to prevent leakage for big requests - other solution would be to send go-away after the number of streams is too high; however some clients (e.g., h2load) do not retry when they receive this.

This stream removal should be done with lock on the appropriate stream when in multiple threads. When this is called from the read-frame callbacks it is done automatically, otherwise caller must ensure it.

Package

http2.

Source

classes.lisp.

Function: compute-header-size (header)

Size of the header for dynamic cache purposes: 32 octets plus header and name sizes, including leading : at special header names.

Package

http2/hpack.

Source

hpack.lisp.

Function: compute-update-dynamic-size-codes (res updates)
Package

http2/hpack.

Source

hpack.lisp.

Function: connection-error (class connection &rest args)
Package

http2.

Source

errors.lisp.

Function: copy-frame-type (instance)
Package

http2.

Source

frames.lisp.

Function: copy-priority (instance)
Package

http2.

Source

utils.lisp.

Function: count-open-streams (connection)
Package

http2.

Source

classes.lisp.

Function: create-new-local-stream (connection &optional pars)

Create new local stream of default class on CONNECTION. Additional PARS are passed to the make-instance

Package

http2.

Source

frames.lisp.

Function: decode-huffman-to-stream (char-stream bytes &optional nr nr-size prefix)
Package

http2/hpack.

Source

hpack.lisp.

Function: decode-octet-fn (&optional codes)
Package

http2/hpack.

Source

hpack.lisp.

Function: dynamic-table-entry-size (name value)

The size of an entry is the sum of its name’s length in octets (as defined in Section 5.2), its value’s length in octets, and 32.

The size of an entry is calculated using the length of its name and value without any Huffman encoding applied.

Package

http2.

Source

classes.lisp.

Function: empty-data-p (data)
Package

http2.

Source

payload-streams.lisp.

Function: encode-dynamic-table-update (res new-size)

Encode table update to NEW-SIZE to an adjustable array RES.

Package

http2/hpack.

Source

hpack.lisp.

Function: encode-huffman (string res)

Convert string to huffman encoding.

Package

http2/hpack.

Source

hpack.lisp.

Function: find-header-in-tables (context name)

Find header NAME in static table and, if CONNECTION is not null, in its dynamic table. Return the index, or NIL if not found.

Package

http2/hpack.

Source

hpack.lisp.

Function: find-http-stream-by-id (connection id frame-type)

Find HTTP stream in the connection.

Returns either HTTP2-STREAM object (existing or new), CONNECTION or one of :IDLE :CLOSED for yet or already nonexistent streams.

Also do some checks on the stream id based on the frame type.

Package

http2.

Source

frames.lisp.

Function: find-in-tables (context item test key static-end)

Find something (pair or header name) in static and possibly dynamic table.

Package

http2/hpack.

Source

hpack.lisp.

Function: find-just-stream-by-id (streams id)

Find STREAM by ID in STREAMS, or :closed

The list of streams should already be sorted from high number to low number, so we caould stop as soon as we can see lower value. However, we assume the list needed to be searched is pretty short so we do not care.

Package

http2.

Source

frames.lisp.

Function: find-pair-in-tables (context pair)

Find header PAIR in static table and, if CONNECTION is not null, in its dynamic table. Return the index, or NIL if not found.

Package

http2/hpack.

Source

hpack.lisp.

Function: find-setting-by-id (id)
Package

http2.

Source

utils.lisp.

Function: find-setting-code (name)

Find setting name by code

Package

http2.

Source

utils.lisp.

Function: flags-to-code (pars)
Package

http2.

Source

frames.lisp.

Reader: frame-type-bad-state-error (instance)
Writer: (setf frame-type-bad-state-error) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

bad-state-error.

Reader: frame-type-connection-ok (instance)
Writer: (setf frame-type-connection-ok) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

connection-ok.

Reader: frame-type-documentation (instance)
Writer: (setf frame-type-documentation) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

documentation.

Reader: frame-type-flag-keywords (instance)
Writer: (setf frame-type-flag-keywords) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

flag-keywords.

Reader: frame-type-name (instance)
Writer: (setf frame-type-name) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

name.

Reader: frame-type-new-stream-state (instance)
Writer: (setf frame-type-new-stream-state) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

new-stream-state.

Reader: frame-type-old-stream-ok (instance)
Writer: (setf frame-type-old-stream-ok) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

old-stream-ok.

Function: frame-type-p (object)
Package

http2.

Source

frames.lisp.

Reader: frame-type-receive-fn (instance)
Writer: (setf frame-type-receive-fn) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

receive-fn.

Function: get-error-name (code)
Package

http2.

Source

utils.lisp.

Function: get-flag (flags flag-name)
Package

http2.

Source

frames.lisp.

Function: get-history (object)
Package

http2.

Source

classes.lisp.

Function: has-flag (flags flag-name allowed)
Package

http2.

Source

frames.lisp.

Function: header-writer (res name value &optional context huffman)

Encode header consisting of NAME and VALUE.

The ‘never-indexed‘ format is never generated, use a separate function for this (and this function needs to be written).

When CONTEXT is provided, use incremental indexing with dynamic table in that CONTEXT.

Use Huffman when HUFFMAN is true.

Package

http2/hpack.

Source

hpack.lisp.

Function: http-stream-error (e stream &rest args)

We detected an error on peer stream. So we send a RST frame, warn in case someone in interested, and go on.

Package

http2.

Source

errors.lisp.

Function: huffman-coded-size (string)

Size of huffman-coded text

Package

http2/hpack.

Source

hpack.lisp.

Function: logger (fmt &rest pars)

Send a format message to *LOG-STREAM*.

Package

http2.

Source

utils.lisp.

Function: make-cond-branch (i prefix code)

Return decoder code for I matching PREFIX among codes.

Package

http2/hpack.

Source

hpack.lisp.

Function: make-frame-type (&key documentation name receive-fn old-stream-ok new-stream-state connection-ok bad-state-error flag-keywords)
Package

http2.

Source

frames.lisp.

Function: make-priority (&key exclusive stream-dependency weight)
Package

http2.

Source

utils.lisp.

Function: make-transport-input-stream (raw-stream charset gzip)

INPUT-STREAM built atop RAW-STREAM.

Guess encoding and need to gunzip from headers: - apply zip decompression if gzip is set
- if charset is not null, use it to convert to text.

Package

http2.

Source

payload-streams.lisp.

Function: make-transport-input-stream-from-stream (raw-stream charset encoded)

INPUT-STREAM built atop RAW-STREAM.

Guess encoding and need to gunzip from headers:
- apply zip decompression content-encoding is gzip (FIXME: also compression) - use charset if understood in content-type
- otherwise guess whether text (use UTF-8) or binary.

Package

http2.

Source

payload-streams.lisp.

Function: make-transport-output-stream-from-stream (raw-stream charset gzip)

An OUTPUT-STREAM built atop RAW STREAM with added charset and possibly compression.

Package

http2.

Source

payload-streams.lisp.

Function: open-http2-stream (connection headers &key end-stream end-headers stream-pars)

Open http2 stream by sending headers.

Package

http2.

Source

classes.lisp.

Function: padded-length (length padding)

Length of the frame with added padding (incl. padding size).

Package

http2.

Source

frames.lisp.

Function: peer-opens-http-stream-really-open (connection stream-id state)
Package

http2.

Source

classes.lisp.

Function: pop-frame (data)
Package

http2.

Source

payload-streams.lisp.

Function: possibly-padded-body (stream fn padded pars)

Add padding code to BODY if needed.

Package

http2.

Source

frames.lisp.

Reader: priority-exclusive (instance)
Writer: (setf priority-exclusive) (instance)
Package

http2.

Source

utils.lisp.

Target Slot

exclusive.

Function: priority-p (object)
Package

http2.

Source

utils.lisp.

Reader: priority-stream-dependency (instance)
Writer: (setf priority-stream-dependency) (instance)
Package

http2.

Source

utils.lisp.

Target Slot

stream-dependency.

Reader: priority-weight (instance)
Writer: (setf priority-weight) (instance)
Package

http2.

Source

utils.lisp.

Target Slot

weight.

Function: push-frame (data frame)
Package

http2.

Source

payload-streams.lisp.

Function: read-and-add-headers (connection http-stream length end-headers)
Package

http2.

Source

frames.lisp.

Function: read-bytes (stream n)

Read N bytes from stream to an integer

Package

http2.

Source

utils.lisp.

Function: read-client-preface (connection)
Package

http2.

Source

classes.lisp.

Function: read-continuation-frame-on-demand (stream http2-stream-id)

Read continuation frame header when it is expected on STREAM.

Return two values, length of the payload and END-HEADERS flag.

Package

http2.

Source

frames.lisp.

Function: read-from-tables (index context)

Read item on INDEX in static table or dynamic table in CONNECTION.

Package

http2/hpack.

Source

hpack.lisp.

Function: read-huffman (stream len)

Read Huffman coded text of length LEN from STREAM.

Package

http2/hpack.

Source

hpack.lisp.

Function: read-literal-header-field-new-name (stream)

See 6.2.1 fig. 7, and 6.2.2. fig. 9 -
Neither name of the header nor value is in table, so read both as literals.

Package

http2/hpack.

Source

hpack.lisp.

Function: read-literal-header-indexed-name (stream octet0 context use-bits)

See Fig. 6 and Fig. 8 - Name of header is in tables, value is literal.

Use USE-BITS from the OCTET0 for name index

Package

http2/hpack.

Source

hpack.lisp.

Function: read-padding (stream padding-size)

Read the padding from the stream if padding-size is not NIL.

Padding is used by some frame types.

A receiver is not obligated to verify padding but MAY treat non-zero padding as a connection error (Section 5.4.1) of type PROTOCOL_ERROR. For now we ignore the padding.

Package

http2.

Source

frames.lisp.

Function: read-possibly-padded (stream connection http-stream length padded flags fn)
Package

http2.

Source

frames.lisp.

Function: read-priority (stream http-stream)
Package

http2.

Source

frames.lisp.

Function: read-string-from-stream (stream)

Read string literal from a STREAM as defined in RFC7541 sect 5.2.

Package

http2/hpack.

Source

hpack.lisp.

Function: send-data (stream sequence start size)

Send data in OUTPUT-BUFFER and SIZE data from SEQUENCE starting at START in one data frame; mark them as sent.

Return new START.

Package

http2.

Source

payload-streams.lisp.

Function: store-string (string res huffman)

Add STRING to fillable array RES in format defined by HPACK, possibly using huffman encoding.

Package

http2/hpack.

Source

hpack.lisp.

Function: vector-from-hex-text (text)
Package

http2.

Source

utils.lisp.

Function: vector-index-to-hpack-index (table idx)

Convert between hpack index and index in the vector. This works both ways.

Package

http2/hpack.

Source

hpack.lisp.

Function: write-31-bits (stream value flag)

Write 31 bits of VALUE to a STREAM. Set first bit if FLAG is set.

Package

http2.

Source

frames.lisp.

Function: write-32-bits (stream value)
Package

http2.

Source

frames.lisp.

Function: write-binary-payload (connection stream payload &key end-stream)

Write binary PAYLOAD to the http2 STREAM.

The payload is written in chunks of frame size, and if the available window is not big enough we wait for confirmation (note that other things may happen during waiting, such as receiving request for another data if we act as the server).

Package

http2.

Source

binary-payload.lisp.

Function: write-bytes (stream n value)

write VALUE as N octets to stream. Maximum length is 64 bits (used by ping).

Package

http2.

Source

utils.lisp.

Function: write-frame (http-connection-or-stream length type-code keys writer &rest pars)

Universal function to write a frame to a stream and account for it.

Package

http2.

Source

frames.lisp.

Function: write-indexed-header-pair (res index)
Package

http2/hpack.

Source

hpack.lisp.

Function: write-indexed-name (res code index value use-bits huffman)
Package

http2/hpack.

Source

hpack.lisp.

Function: write-integer-to-array (array integer bit-size mask)

Write integer to a fillable vector as defined in RFC7541 sect. 5.1.

Return the fillable vector.

Package

http2/hpack.

Source

hpack.lisp.

Function: write-literal-header-pair (res code name value huffman)
Package

http2/hpack.

Source

hpack.lisp.

Function: write-priority (stream priority)
Package

http2.

Source

frames.lisp.

Function: write-sequences (stream headers)

Write a list of sequences to stream.

Package

http2.

Source

frames.lisp.

Function: write-stream-id (stream value reserved)

Write STREAM-ID to the binary stream

Package

http2.

Source

frames.lisp.


6.2.5 Generic functions

Generic Function: add-dynamic-header (context header)
Package

http2/hpack.

Methods
Method: add-dynamic-header (context header)

Add dynamic header to a table. Return the header.

Source

hpack.lisp.

Generic Function: add-log (object log-pars)
Package

http2.

Source

classes.lisp.

Methods
Method: add-log ((object history-keeping-object) log-pars)
Method: add-log ((object history-printing-object) log-pars)
Generic Function: do-ping (connection data)

Called when ping-frame without ACK is received. By default send ping-frame with ACK and same data.

Package

http2.

Source

classes.lisp.

Methods
Method: do-ping (connection data)
Method: do-ping :before ((connection logging-object) data)
Generic Reader: get-acked-settings (object)
Package

http2.

Methods
Reader Method: get-acked-settings ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

acked-settings.

Generic Writer: (setf get-acked-settings) (object)
Package

http2.

Methods
Writer Method: (setf get-acked-settings) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

acked-settings.

Generic Reader: get-actual (condition)
Generic Writer: (setf get-actual) (condition)
Package

http2.

Methods
Reader Method: get-actual ((condition bad-stream-state))
Writer Method: (setf get-actual) ((condition bad-stream-state))
Source

errors.lisp.

Target Slot

actual.

Generic Reader: get-allowed (condition)
Generic Writer: (setf get-allowed) (condition)
Package

http2.

Methods
Reader Method: get-allowed ((condition bad-stream-state))
Writer Method: (setf get-allowed) ((condition bad-stream-state))
Source

errors.lisp.

Target Slot

allowed.

Generic Reader: get-authority (object)
Generic Writer: (setf get-authority) (object)
Package

http2.

Methods
Reader Method: get-authority ((server-stream server-stream))
Writer Method: (setf get-authority) ((server-stream server-stream))

The authority portion of the target URI ([RFC3986], Section 3.2)

Source

classes.lisp.

Target Slot

authority.

Generic Reader: get-base-http2-stream (object)
Package

http2.

Methods
Reader Method: get-base-http2-stream ((payload-stream payload-stream))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

base-http2-stream.

Generic Writer: (setf get-base-http2-stream) (object)
Package

http2.

Methods
Writer Method: (setf get-base-http2-stream) ((payload-stream payload-stream))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

base-http2-stream.

Generic Reader: get-charset (object)
Package

http2.

Methods
Reader Method: get-charset ((http2-stream-with-input-stream http2-stream-with-input-stream))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

charset.

Generic Writer: (setf get-charset) (object)
Package

http2.

Methods
Writer Method: (setf get-charset) ((http2-stream-with-input-stream http2-stream-with-input-stream))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

charset.

Generic Reader: get-code (condition)
Generic Writer: (setf get-code) (condition)
Package

http2.

Methods
Reader Method: get-code ((condition http-stream-error))
Writer Method: (setf get-code) ((condition http-stream-error))
Source

errors.lisp.

Target Slot

code.

Reader Method: get-code ((condition connection-error))
Writer Method: (setf get-code) ((condition connection-error))
Source

errors.lisp.

Target Slot

code.

Generic Reader: get-compression (object)
Package

http2.

Methods
Reader Method: get-compression ((http2-stream-with-input-stream http2-stream-with-input-stream))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

compression.

Generic Writer: (setf get-compression) (object)
Package

http2.

Methods
Writer Method: (setf get-compression) ((http2-stream-with-input-stream http2-stream-with-input-stream))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

compression.

Generic Reader: get-compression-context (object)
Package

http2.

Methods
Reader Method: get-compression-context ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

compression-context.

Generic Writer: (setf get-compression-context) (object)
Package

http2.

Methods
Writer Method: (setf get-compression-context) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

compression-context.

Generic Reader: get-data (object)
Package

http2.

Methods
Reader Method: get-data ((payload-input-stream payload-input-stream))

tlist that of accepted frames and cons of last frame and nil.

Source

payload-streams.lisp.

Target Slot

data.

Reader Method: get-data ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

data.

Generic Writer: (setf get-data) (object)
Package

http2.

Methods
Writer Method: (setf get-data) ((payload-input-stream payload-input-stream))

tlist that of accepted frames and cons of last frame and nil.

Source

payload-streams.lisp.

Target Slot

data.

Writer Method: (setf get-data) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

data.

Generic Reader: get-debug-data (condition)
Generic Writer: (setf get-debug-data) (condition)
Package

http2.

Methods
Reader Method: get-debug-data ((condition go-away))
Writer Method: (setf get-debug-data) ((condition go-away))
Source

errors.lisp.

Target Slot

debug-data.

Generic Reader: get-decompression-context (object)
Package

http2.

Methods
Reader Method: get-decompression-context ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

decompression-context.

Generic Writer: (setf get-decompression-context) (object)
Package

http2.

Methods
Writer Method: (setf get-decompression-context) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

decompression-context.

Generic Reader: get-depends-on (object)
Package

http2.

Methods
Reader Method: get-depends-on ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

depends-on.

Generic Writer: (setf get-depends-on) (object)
Package

http2.

Methods
Writer Method: (setf get-depends-on) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

depends-on.

Generic Reader: get-error-code (condition)
Generic Writer: (setf get-error-code) (condition)
Package

http2.

Methods
Reader Method: get-error-code ((condition go-away))
Writer Method: (setf get-error-code) ((condition go-away))
Source

errors.lisp.

Target Slot

error-code.

Generic Reader: get-frame-size (condition)
Generic Writer: (setf get-frame-size) (condition)
Package

http2.

Methods
Reader Method: get-frame-size ((condition too-big-frame))
Writer Method: (setf get-frame-size) ((condition too-big-frame))
Source

errors.lisp.

Target Slot

frame-size.

Generic Reader: get-id-to-use (object)
Package

http2.

Methods
Reader Method: get-id-to-use ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

id-to-use.

Generic Writer: (setf get-id-to-use) (object)
Package

http2.

Methods
Writer Method: (setf get-id-to-use) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

id-to-use.

Generic Reader: get-index (object)
Package

http2.

Methods
Reader Method: get-index ((payload-input-stream payload-input-stream))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

index.

Generic Writer: (setf get-index) (object)
Package

http2.

Methods
Writer Method: (setf get-index) ((payload-input-stream payload-input-stream))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

index.

Generic Reader: get-initial-peer-window-size (object)
Package

http2.

Methods
Reader Method: get-initial-peer-window-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

initial-peer-window-size.

Generic Writer: (setf get-initial-peer-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-initial-peer-window-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

initial-peer-window-size.

Generic Reader: get-initial-window-size (object)
Package

http2.

Methods
Reader Method: get-initial-window-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

initial-window-size.

Generic Writer: (setf get-initial-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-initial-window-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

initial-window-size.

Generic Reader: get-last-id-seen (object)
Package

http2.

Methods
Reader Method: get-last-id-seen ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

last-id-seen.

Generic Writer: (setf get-last-id-seen) (object)
Package

http2.

Methods
Writer Method: (setf get-last-id-seen) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

last-id-seen.

Generic Reader: get-last-stream-id (condition)
Generic Writer: (setf get-last-stream-id) (condition)
Package

http2.

Methods
Reader Method: get-last-stream-id ((condition go-away))
Writer Method: (setf get-last-stream-id) ((condition go-away))
Source

errors.lisp.

Target Slot

last-stream-id.

Generic Reader: get-max-frame-size (condition)
Package

http2.

Methods
Reader Method: get-max-frame-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

max-frame-size.

Reader Method: get-max-frame-size ((condition too-big-frame))
Source

errors.lisp.

Target Slot

max-frame-size.

Generic Writer: (setf get-max-frame-size) (condition)
Package

http2.

Methods
Writer Method: (setf get-max-frame-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

max-frame-size.

Writer Method: (setf get-max-frame-size) ((condition too-big-frame))
Source

errors.lisp.

Target Slot

max-frame-size.

Generic Reader: get-max-peer-frame-size (object)
Package

http2.

Methods
Reader Method: get-max-peer-frame-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

max-peer-frame-size.

Generic Writer: (setf get-max-peer-frame-size) (object)
Package

http2.

Methods
Writer Method: (setf get-max-peer-frame-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

max-peer-frame-size.

Generic Reader: get-max-seen-so-far (condition)
Generic Writer: (setf get-max-seen-so-far) (condition)
Package

http2.

Methods
Reader Method: get-max-seen-so-far ((condition new-stream-id-too-low))
Writer Method: (setf get-max-seen-so-far) ((condition new-stream-id-too-low))
Source

errors.lisp.

Target Slot

max-seen-so-far.

Generic Reader: get-method (object)
Generic Writer: (setf get-method) (object)
Package

http2.

Methods
Reader Method: get-method ((server-stream server-stream))
Writer Method: (setf get-method) ((server-stream server-stream))

The HTTP method ([RFC7231], Section 4)

Source

classes.lisp.

Target Slot

method.

Generic Reader: get-name (condition)
Generic Writer: (setf get-name) (condition)
Package

http2.

Methods
Reader Method: get-name ((condition header-error))
Writer Method: (setf get-name) ((condition header-error))
Source

errors.lisp.

Target Slot

name.

Generic Reader: get-network-stream (object)
Package

http2.

Methods
Reader Method: get-network-stream ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

network-stream.

Reader Method: get-network-stream ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

network-stream.

Generic Writer: (setf get-network-stream) (object)
Package

http2.

Methods
Writer Method: (setf get-network-stream) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

network-stream.

Writer Method: (setf get-network-stream) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

network-stream.

Generic Reader: get-output-buffer (object)
Package

http2.

Methods
Reader Method: get-output-buffer ((payload-output-stream payload-output-stream))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

output-buffer.

Reader Method: get-output-buffer ((constant-output-stream constant-output-stream))

automatically generated reader method

Source

binary-payload.lisp.

Target Slot

output-buffer.

Generic Writer: (setf get-output-buffer) (object)
Package

http2.

Methods
Writer Method: (setf get-output-buffer) ((payload-output-stream payload-output-stream))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

output-buffer.

Writer Method: (setf get-output-buffer) ((constant-output-stream constant-output-stream))

automatically generated writer method

Source

binary-payload.lisp.

Target Slot

output-buffer.

Generic Reader: get-payload-input-stream (object)
Package

http2.

Methods
Reader Method: get-payload-input-stream ((http2-stream-with-input-stream http2-stream-with-input-stream))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

payload-input-stream.

Generic Writer: (setf get-payload-input-stream) (object)
Package

http2.

Methods
Writer Method: (setf get-payload-input-stream) ((http2-stream-with-input-stream http2-stream-with-input-stream))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

payload-input-stream.

Generic Reader: get-peer-accepts-push (object)
Package

http2.

Methods
Reader Method: get-peer-accepts-push ((server-http2-connection server-http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

peer-accepts-push.

Generic Writer: (setf get-peer-accepts-push) (object)
Package

http2.

Methods
Writer Method: (setf get-peer-accepts-push) ((server-http2-connection server-http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

peer-accepts-push.

Generic Reader: get-peer-window-size (object)
Package

http2.

Methods
Reader Method: get-peer-window-size ((flow-control-mixin flow-control-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

peer-window-size.

Generic Writer: (setf get-peer-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-peer-window-size) ((flow-control-mixin flow-control-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

peer-window-size.

Generic Reader: get-reversed-history (object)
Package

http2.

Methods
Reader Method: get-reversed-history ((history-keeping-object history-keeping-object))

automatically generated reader method

Source

classes.lisp.

Target Slot

reversed-history.

Generic Writer: (setf get-reversed-history) (object)
Package

http2.

Methods
Writer Method: (setf get-reversed-history) ((history-keeping-object history-keeping-object))

automatically generated writer method

Source

classes.lisp.

Target Slot

reversed-history.

Generic Reader: get-scheme (object)
Generic Writer: (setf get-scheme) (object)
Package

http2.

Methods
Reader Method: get-scheme ((server-stream server-stream))
Writer Method: (setf get-scheme) ((server-stream server-stream))

Scheme portion of the target URI ([RFC3986], Section 3.1).

Not restricted to "http" and "https" schemed URIs.
A proxy or gateway can translate requests for non-HTTP schemes, enabling the use of HTTP to interact with non-HTTP services

Source

classes.lisp.

Target Slot

scheme.

Generic Reader: get-seen-text-header (object)
Generic Writer: (setf get-seen-text-header) (object)
Package

http2.

Methods
Reader Method: get-seen-text-header ((http2-stream http2-stream))
Writer Method: (setf get-seen-text-header) ((http2-stream http2-stream))

Set if in the header block a non-pseudo header was already seen.

Source

classes.lisp.

Target Slot

seen-text-header.

Generic Function: get-settings (connection)
Package

http2.

Source

classes.lisp.

Method Combination

append.

Options

:most-specific-first

Methods
Method: get-settings append (connection)
Method: get-settings append ((connection client-http2-connection))
Generic Function: get-state (state)
Package

http2.

Source

classes.lisp.

Methods
Reader Method: get-state ((http2-stream http2-stream))

automatically generated reader method

Target Slot

state.

Method: get-state ((state (eql :closed)))
Generic Function: (setf get-state) (object)
Package

http2.

Methods
Method: (setf get-state) :around ((stream logging-object))
Source

classes.lisp.

Writer Method: (setf get-state) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

state.

Generic Reader: get-stream (condition)
Generic Writer: (setf get-stream) (condition)
Package

http2.

Methods
Reader Method: get-stream ((condition http-stream-error))
Writer Method: (setf get-stream) ((condition http-stream-error))
Source

errors.lisp.

Target Slot

stream.

Generic Reader: get-stream-class (object)
Generic Writer: (setf get-stream-class) (object)
Package

http2.

Methods
Reader Method: get-stream-class ((http2-connection http2-connection))
Writer Method: (setf get-stream-class) ((http2-connection http2-connection))

Class for new streams

Source

classes.lisp.

Target Slot

stream-class.

Generic Reader: get-stream-id (condition)
Package

http2.

Methods
Reader Method: get-stream-id ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

stream-id.

Reader Method: get-stream-id ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

stream-id.

Reader Method: get-stream-id ((condition bad-stream-state))
Source

errors.lisp.

Target Slot

stream-id.

Reader Method: get-stream-id ((condition new-stream-id-too-low))
Source

errors.lisp.

Target Slot

stream-id.

Generic Writer: (setf get-stream-id) (condition)
Package

http2.

Methods
Writer Method: (setf get-stream-id) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

stream-id.

Writer Method: (setf get-stream-id) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

stream-id.

Writer Method: (setf get-stream-id) ((condition bad-stream-state))
Source

errors.lisp.

Target Slot

stream-id.

Writer Method: (setf get-stream-id) ((condition new-stream-id-too-low))
Source

errors.lisp.

Target Slot

stream-id.

Generic Reader: get-streams (object)
Generic Writer: (setf get-streams) (object)
Package

http2.

Methods
Reader Method: get-streams ((http2-connection http2-connection))
Writer Method: (setf get-streams) ((http2-connection http2-connection))

Sequence of HTTP2 streams

Source

classes.lisp.

Target Slot

streams.

Generic Reader: get-value (condition)
Generic Writer: (setf get-value) (condition)
Package

http2.

Methods
Reader Method: get-value ((condition header-error))
Writer Method: (setf get-value) ((condition header-error))
Source

errors.lisp.

Target Slot

value.

Reader Method: get-value ((condition incorrect-initial-window-size-value))
Writer Method: (setf get-value) ((condition incorrect-initial-window-size-value))
Source

errors.lisp.

Target Slot

value.

Reader Method: get-value ((condition incorrect-frame-size-value))
Writer Method: (setf get-value) ((condition incorrect-frame-size-value))
Source

errors.lisp.

Target Slot

value.

Reader Method: get-value ((condition incorrect-enable-push-value))
Writer Method: (setf get-value) ((condition incorrect-enable-push-value))
Source

errors.lisp.

Target Slot

value.

Generic Reader: get-weight (object)
Package

http2.

Methods
Reader Method: get-weight ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

weight.

Generic Writer: (setf get-weight) (object)
Package

http2.

Methods
Writer Method: (setf get-weight) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

weight.

Generic Reader: get-window-size (object)
Package

http2.

Methods
Reader Method: get-window-size ((flow-control-mixin flow-control-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

window-size.

Generic Writer: (setf get-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-window-size) ((flow-control-mixin flow-control-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

window-size.

Generic Function: handle-alt-svc (stream origin value)

An ALTSVC frame from a server to a client on a stream other than stream 0 indicates that the conveyed alternative service is associated with the origin of that stream.

An ALTSVC frame from a server to a client on stream 0 indicates that the conveyed alternative service is associated with the origin contained in the Origin field of the frame. An association with an origin that the client does not consider authoritative for the current connection MUST be ignored.

Package

http2.

Source

classes.lisp.

Methods
Method: handle-alt-svc (stream origin value)

Default method ignores alt-svc info.

Method: handle-alt-svc ((stream logging-object) origin value)
Generic Function: is-our-stream-id (connection stream-id)

Return true if the STREAM-ID should be initiated on our side. The ID is known not to be zero.

Package

http2.

Source

classes.lisp.

Methods
Method: is-our-stream-id ((connection client-http2-connection) stream-id)
Method: is-our-stream-id ((connection logging-connection) stream-id)
Method: is-our-stream-id ((connection server-http2-connection) stream-id)
Generic Function: maybe-lock-for-write (connection)

This is called when a new frame is ready

Package

http2.

Source

classes.lisp.

Methods
Method: maybe-lock-for-write (connection)
Generic Function: maybe-unlock-for-write (connection)

This is called when a new frame is ready

Package

http2.

Source

classes.lisp.

Methods
Method: maybe-unlock-for-write (connection)
Generic Function: process-end-headers (connection stream)
Package

http2.

Source

classes.lisp.

Methods
Method: process-end-headers :before (connection (stream logging-object))
Method: process-end-headers (connection stream)
Method: process-end-headers (connection (stream client-stream))
Method: process-end-headers (connection (stream server-stream))

6.2.6 Conditions

Condition: bad-stream-state

Frame cannot be applied to stream in particular state

Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct methods
Direct slots
Slot: allowed
Initargs

:allowed

Readers

get-allowed.

Writers

(setf get-allowed).

Slot: actual
Initargs

:actual

Readers

get-actual.

Writers

(setf get-actual).

Slot: stream-id
Initargs

:stream-id

Readers

get-stream-id.

Writers

(setf get-stream-id).

Condition: connection-error

A connection error is signalled when we detect an illegal frame content.

Typically it is signalled from CONNECTION-ERROR function that also sends appropriate GOAWAY frame. After that it should be handled by server or client as needed - server may close connection, client may retry the request.

Package

http2.

Source

errors.lisp.

Direct superclasses

error.

Direct subclasses
Direct methods
Direct slots
Slot: connection
Initargs

:connection

Readers

get-connection.

Writers

(setf get-connection).

Slot: code
Initargs

:code

Readers

get-code.

Writers

(setf get-code).

Condition: duplicate-request-header
Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: frame-type-needs-stream

Frame MUST be associated with a stream. If a frame is received whose stream identifier field is 0x0, the recipient MUST respond with a connection error (Section 5.4.1) of type PROTOCOL_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Condition: go-away

Signaleed when GO-AWAY frame received.

Package

http2.

Source

errors.lisp.

Direct superclasses

serious-condition.

Direct methods
Direct slots
Slot: error-code
Initargs

:error-code

Readers

get-error-code.

Writers

(setf get-error-code).

Slot: debug-data
Initargs

:debug-data

Readers

get-debug-data.

Writers

(setf get-debug-data).

Slot: last-stream-id
Initargs

:last-stream-id

Readers

get-last-stream-id.

Writers

(setf get-last-stream-id).

Condition: header-error
Package

http2.

Source

errors.lisp.

Direct superclasses

stream-protocol-error.

Direct subclasses
Direct methods
Direct slots
Slot: name
Initargs

:name

Readers

get-name.

Writers

(setf get-name).

Slot: value
Initargs

:value

Readers

get-value.

Writers

(setf get-value).

Condition: http-stream-error
Package

http2.

Source

errors.lisp.

Direct superclasses

warning.

Direct subclasses
Direct methods
Direct slots
Slot: code
Initargs

:code

Readers

get-code.

Writers

(setf get-code).

Slot: stream
Package

common-lisp.

Initargs

:stream

Readers

get-stream.

Writers

(setf get-stream).

Condition: incorrect-enable-push-value

Client must have ENABLE-PUSH 0 or 1. Server must have ENABLE-PUSH 0.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Direct methods
Direct slots
Slot: value
Initargs

:value

Readers

get-value.

Writers

(setf get-value).

Condition: incorrect-frame-size

A PRIORITY frame with a length other than 5 octets MUST be treated as a stream error (Section 5.4.2) of type FRAME_SIZE_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

http-stream-error.

Direct Default Initargs
InitargValue
:code+frame-size-error+
Condition: incorrect-frame-size-value

Frame size MUST be between the initial value 16384 and the maximum allowed frame size (2^24-1 or 16,777,215 octets), inclusive.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Direct methods
Direct slots
Slot: value
Initargs

:value

Readers

get-value.

Writers

(setf get-value).

Condition: incorrect-initial-window-size-value

SETTINGS_INITIAL_WINDOW_SIZE must be below 2^31.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Direct methods
Direct slots
Slot: value
Initargs

:value

Readers

get-value.

Writers

(setf get-value).

Condition: incorrect-ping-frame-size

Receipt of a PING frame with a length field value other than 8 MUST be treated as a connection error (Section 5.4.1) of type FRAME_SIZE_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct Default Initargs
InitargValue
:code+frame-size-error+
Condition: incorrect-pseudo-header
Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: incorrect-request-pseudo-header
Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: incorrect-response-pseudo-header
Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: incorrect-rst-frame-size

A RST_STREAM frame with a length other than 4 octets MUST be treated as a connection error (Section 5.4.1) of type FRAME_SIZE_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct Default Initargs
InitargValue
:code+frame-size-error+
Condition: incorrect-settings-frame-size

A SETTINGS frame with a length other than a multiple of 6 octets MUST be treated as a connection error (Section 5.4.1) of type FRAME_SIZE_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct Default Initargs
InitargValue
:code+frame-size-error+
Condition: incorrect-window-update-frame-size

Receipt of a PING frame with a length field value other than 8 MUST be treated as a connection error (Section 5.4.1) of type FRAME_SIZE_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct Default Initargs
InitargValue
:code+frame-size-error+
Condition: lowercase-header-field-name

A request or response containing uppercase header field names MUST be treated as malformed. (...) Malformed requests or responses that are detected MUST be treated as a stream error of type PROTOCOL_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: missing-header-octets

We try to process headers, but end up in a middle of one.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Condition: missing-pseudo-header

:status pseudo-header field MUST be included in all responses.

All HTTP/2 requests MUST include exactly one valid value for the :method, :scheme, and :path pseudo-header fields, unless it is a CONNECT request.

Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: new-stream-id-too-low

The identifier of a newly established stream MUST be numerically
greater than all streams that the initiating endpoint has opened or reserved (max was ~d). This governs streams that are opened using a HEADERS frame and streams that are reserved using PUSH_PROMISE. An endpoint that receives an unexpected stream identifier MUST respond with a connection error (Section 5.4.1) of type PROTOCOL_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Direct methods
Direct slots
Slot: stream-id
Initargs

:stream-id

Readers

get-stream-id.

Writers

(setf get-stream-id).

Slot: max-seen-so-far
Initargs

:max-seen-so-far

Readers

get-max-seen-so-far.

Writers

(setf get-max-seen-so-far).

Condition: null-connection-window-update

Errors on the connection flow-control window MUST be treated as a connection error.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Condition: null-stream-window-update

A receiver MUST treat the receipt of a WINDOW_UPDATE frame with a flow-control window increment of 0 as a stream error.

Package

http2.

Source

errors.lisp.

Direct superclasses

http-stream-error.

Direct Default Initargs
InitargValue
:code+protocol-error+
Condition: our-id-created-by-peer
Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Condition: protocol-error
Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct subclasses
Direct Default Initargs
InitargValue
:code+protocol-error+
Condition: pseudo-header-after-text-header

Pseudo header follows text header.

Package

http2.

Source

errors.lisp.

Direct superclasses

header-error.

Condition: stream-protocol-error
Package

http2.

Source

errors.lisp.

Direct superclasses

http-stream-error.

Direct subclasses

header-error.

Direct Default Initargs
InitargValue
:code+protocol-error+
Condition: too-big-frame

Frame exceeds the size defined in SETTINGS_MAX_FRAME_SIZE.

Package

http2.

Source

errors.lisp.

Direct superclasses

connection-error.

Direct methods
Direct Default Initargs
InitargValue
:code+frame-size-error+
Direct slots
Slot: max-frame-size
Initargs

:max-frame-size

Readers

get-max-frame-size.

Writers

(setf get-max-frame-size).

Slot: frame-size
Initargs

:frame-size

Readers

get-frame-size.

Writers

(setf get-frame-size).

Condition: too-big-padding

Length of the padding is the length of the frame payload or greater.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.

Condition: unexpected-continuation-frame

A CONTINUATION frame MUST be preceded by a HEADERS, PUSH_PROMISE or CONTINUATION frame without the END_HEADERS flag set. A recipient that observes violation of this rule MUST respond with a connection error (Section 5.4.1) of type PROTOCOL_ERROR.

Package

http2.

Source

errors.lisp.

Direct superclasses

protocol-error.


6.2.7 Structures

Structure: frame-type

Description of a frame type.

Apart from name and documentation, each frame type keeps this:
- RECEIVE-FN :: How to handle reading of received frames
- NEW-STREAM-STATE :: whether it can be used to create new streams (i.e., is allowed on streams in IDLE state) and if so what is new state of such stream
- OLD-STREAM-OK :: in what stream states the frame can be received
- CONNECTION-OK :: whether the frame can have STREAM-ID equal to zero, that is, act on connections.

Package

http2.

Source

frames.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: documentation
Package

common-lisp.

Type

(or null string)

Readers

frame-type-documentation.

Writers

(setf frame-type-documentation).

Slot: name
Type

symbol

Readers

frame-type-name.

Writers

(setf frame-type-name).

Slot: receive-fn
Type

function

Initform

(constantly nil)

Readers

frame-type-receive-fn.

Writers

(setf frame-type-receive-fn).

Slot: old-stream-ok
Readers

frame-type-old-stream-ok.

Writers

(setf frame-type-old-stream-ok).

Slot: new-stream-state
Readers

frame-type-new-stream-state.

Writers

(setf frame-type-new-stream-state).

Slot: connection-ok
Readers

frame-type-connection-ok.

Writers

(setf frame-type-connection-ok).

Slot: bad-state-error
Type

(or null (unsigned-byte 8))

Readers

frame-type-bad-state-error.

Writers

(setf frame-type-bad-state-error).

Slot: flag-keywords
Readers

frame-type-flag-keywords.

Writers

(setf frame-type-flag-keywords).

Structure: priority
Package

http2.

Source

utils.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: exclusive
Readers

priority-exclusive.

Writers

(setf priority-exclusive).

Slot: stream-dependency
Readers

priority-stream-dependency.

Writers

(setf priority-stream-dependency).

Slot: weight
Readers

priority-weight.

Writers

(setf priority-weight).


6.2.8 Classes

Class: binary-stream
Package

http2.

Source

payload-streams.lisp.

Direct subclasses
Direct methods

stream-element-type.

Class: body-collecting-mixin

Mixin to collect all payload parts to one string.

Package

http2.

Source

classes.lisp.

Direct methods
Direct Default Initargs
InitargValue
:body
Direct slots
Slot: body
Initargs

:body

Readers

get-body.

Writers

(setf get-body).

Class: constant-output-stream

Binary stream that accepts new octets to the output-buffer

Package

http2.

Source

binary-payload.lisp.

Direct superclasses
Direct methods
Direct Default Initargs
InitargValue
:to-write0
:to-store0
Direct slots
Slot: output-buffer
Readers

get-output-buffer.

Writers

(setf get-output-buffer).

Class: flow-control-mixin

The flow control parameters are used both for streams and connections.

Package

http2.

Source

classes.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: window-size
Initargs

:window-size

Readers

get-window-size.

Writers

(setf get-window-size).

Slot: peer-window-size
Initargs

:peer-window-size

Readers

get-peer-window-size.

Writers

(setf get-peer-window-size).

Class: history-keeping-object
Package

http2.

Source

classes.lisp.

Direct superclasses

logging-object.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:reversed-historynil
Direct slots
Slot: reversed-history
Initargs

:reversed-history

Readers

get-reversed-history.

Writers

(setf get-reversed-history).

Class: http2-connection

A simple connection: promise push not allowed, otherwise reasonable behaviour

Package

http2.

Source

classes.lisp.

Direct superclasses

flow-control-mixin.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:id-to-use1
:last-id-seen0
:streamsnil
:acked-settingsnil
:window-size0
:compression-context(make-instance (quote hpack-context))
:decompression-context(make-instance (quote hpack-context))
:stream-class(quote http2-stream)
:initial-peer-window-size65535
:initial-window-size65535
:max-frame-size16384
:max-peer-frame-size16384
:peer-window-size65535
Direct slots
Slot: network-stream
Initargs

:network-stream

Readers

get-network-stream.

Writers

(setf get-network-stream).

Slot: streams

Sequence of HTTP2 streams

Initargs

:streams

Readers

get-streams.

Writers

(setf get-streams).

Slot: acked-settings
Initargs

:acked-settings

Readers

get-acked-settings.

Writers

(setf get-acked-settings).

Slot: compression-context
Initargs

:compression-context

Readers

get-compression-context.

Writers

(setf get-compression-context).

Slot: decompression-context
Initargs

:decompression-context

Readers

get-decompression-context.

Writers

(setf get-decompression-context).

Slot: last-id-seen
Type

http2::stream-id

Initargs

:last-id-seen

Readers

get-last-id-seen.

Writers

(setf get-last-id-seen).

Slot: id-to-use
Type

http2::stream-id

Initargs

:id-to-use

Readers

get-id-to-use.

Writers

(setf get-id-to-use).

Slot: stream-class

Class for new streams

Initargs

:stream-class

Readers

get-stream-class.

Writers

(setf get-stream-class).

Slot: initial-window-size
Initargs

:initial-window-size

Readers

get-initial-window-size.

Writers

(setf get-initial-window-size).

Slot: initial-peer-window-size
Initargs

:initial-peer-window-size

Readers

get-initial-peer-window-size.

Writers

(setf get-initial-peer-window-size).

Slot: max-frame-size
Initargs

:max-frame-size

Readers

get-max-frame-size.

Writers

(setf get-max-frame-size).

Slot: max-peer-frame-size
Initargs

:max-peer-frame-size

Readers

get-max-peer-frame-size.

Writers

(setf get-max-peer-frame-size).

Slot: stream-id
Allocation

:class

Initform

0

Initargs

:stream-id

Readers

get-stream-id.

Writers

(setf get-stream-id).

Class: http2-stream

Representation of HTTP/2 stream. See RFC7540.

Package

http2.

Source

classes.lisp.

Direct superclasses

flow-control-mixin.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:state(quote idle)
:window-size0
:weight16
:depends-on(quote (non-exclusive 0))
:seen-text-headernil
Direct slots
Slot: connection
Initargs

:connection

Readers

get-connection.

Writers

(setf get-connection).

Slot: network-stream
Initargs

:network-stream

Readers

get-network-stream.

Writers

(setf get-network-stream).

Slot: stream-id
Type

http2::stream-id

Initargs

:stream-id

Readers

get-stream-id.

Writers

(setf get-stream-id).

Slot: state
Type

http2::http2-stream-state

Initargs

:state

Readers

get-state.

Writers

(setf get-state).

Slot: data
Initargs

:data

Readers

get-data.

Writers

(setf get-data).

Slot: weight
Initargs

:weight

Readers

get-weight.

Writers

(setf get-weight).

Slot: depends-on
Initargs

:depends-on

Readers

get-depends-on.

Writers

(setf get-depends-on).

Slot: seen-text-header

Set if in the header block a non-pseudo header was already seen.

Initargs

:seen-text-header

Readers

get-seen-text-header.

Writers

(setf get-seen-text-header).

Class: http2-stream-with-input-stream

HTTP2 stream that passes all its DATA frames to PAYLOAD-INPUT-STREAM.

Package

http2.

Source

payload-streams.lisp.

Direct methods
Direct slots
Slot: payload-input-stream
Initargs

:payload-input-stream

Readers

get-payload-input-stream.

Writers

(setf get-payload-input-stream).

Slot: charset
Initargs

:charset

Readers

get-charset.

Writers

(setf get-charset).

Slot: compression
Initargs

:compression

Readers

get-compression.

Writers

(setf get-compression).

Class: log-headers-mixin

Class that logs some activities and state changes.

Package

http2.

Source

classes.lisp.

Direct methods

add-header.

Class: logging-connection
Package

http2.

Source

classes.lisp.

Direct superclasses
Direct methods

is-our-stream-id.

Class: logging-stream
Package

http2.

Source

classes.lisp.

Direct superclasses
Class: payload-input-stream

Binary stream that reads data from the http stream.

It keeps data from last data frame in BUFFER, starting with INDEX.

Package

http2.

Source

payload-streams.lisp.

Direct superclasses
Direct methods
Direct Default Initargs
InitargValue
:index0
:data(cons nil nil)
Direct slots
Slot: index
Initargs

:index

Readers

get-index.

Writers

(setf get-index).

Slot: data

tlist that of accepted frames and cons of last frame and nil.

Initargs

:data

Readers

get-data.

Writers

(setf get-data).

Class: payload-output-stream

Binary stream that accepts new octets to the output-buffer, until it is big
enough to send the data as a data frame on BASE-HTTP2-STREAM (or forced to by close of force-output)

Package

http2.

Source

payload-streams.lisp.

Direct superclasses
Direct methods
Direct Default Initargs
InitargValue
:to-write0
:to-store0
Direct slots
Slot: output-buffer
Readers

get-output-buffer.

Writers

(setf get-output-buffer).

Class: payload-stream

Base class for a CL binary stream that is defined over http2 stream

Package

http2.

Source

payload-streams.lisp.

Direct superclasses

binary-stream.

Direct subclasses
Direct methods
Direct slots
Slot: base-http2-stream
Initargs

:base-http2-stream

Readers

get-base-http2-stream.

Writers

(setf get-base-http2-stream).

Class: server-http2-connection
Package

http2.

Source

classes.lisp.

Direct superclasses

http2-connection.

Direct methods
Direct Default Initargs
InitargValue
:id-to-use2
:peer-accepts-pusht
Direct slots
Slot: peer-accepts-push
Initargs

:peer-accepts-push

Readers

get-peer-accepts-push.

Writers

(setf get-peer-accepts-push).


6.2.9 Types

Type: context-table-element ()
Package

http2/hpack.

Source

hpack.lisp.

Type: http2-stream-state ()

HTTP2 state. Currently a list, might be a number in future.

Package

http2.

Source

utils.lisp.

Type: stream-id ()

Streams are identified with an unsigned 31-bit integer.

Package

http2.

Source

utils.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   (  
A   C   D   E   F   G   H   I   L   M   O   P   R   S   U   V   W  
Index Entry  Section

(
(setf frame-type-bad-state-error): Private ordinary functions
(setf frame-type-connection-ok): Private ordinary functions
(setf frame-type-documentation): Private ordinary functions
(setf frame-type-flag-keywords): Private ordinary functions
(setf frame-type-name): Private ordinary functions
(setf frame-type-new-stream-state): Private ordinary functions
(setf frame-type-old-stream-ok): Private ordinary functions
(setf frame-type-receive-fn): Private ordinary functions
(setf get-acked-settings): Private generic functions
(setf get-acked-settings): Private generic functions
(setf get-actual): Private generic functions
(setf get-actual): Private generic functions
(setf get-allowed): Private generic functions
(setf get-allowed): Private generic functions
(setf get-authority): Private generic functions
(setf get-authority): Private generic functions
(setf get-base-http2-stream): Private generic functions
(setf get-base-http2-stream): Private generic functions
(setf get-body): Public generic functions
(setf get-body): Public generic functions
(setf get-bytes-left-in-table): Public generic functions
(setf get-bytes-left-in-table): Public generic functions
(setf get-charset): Private generic functions
(setf get-charset): Private generic functions
(setf get-code): Private generic functions
(setf get-code): Private generic functions
(setf get-code): Private generic functions
(setf get-compression): Private generic functions
(setf get-compression): Private generic functions
(setf get-compression-context): Private generic functions
(setf get-compression-context): Private generic functions
(setf get-connection): Public generic functions
(setf get-connection): Public generic functions
(setf get-connection): Public generic functions
(setf get-data): Private generic functions
(setf get-data): Private generic functions
(setf get-data): Private generic functions
(setf get-debug-data): Private generic functions
(setf get-debug-data): Private generic functions
(setf get-decompression-context): Private generic functions
(setf get-decompression-context): Private generic functions
(setf get-deleted-items): Public generic functions
(setf get-deleted-items): Public generic functions
(setf get-depends-on): Private generic functions
(setf get-depends-on): Private generic functions
(setf get-dynamic-table): Public generic functions
(setf get-dynamic-table): Public generic functions
(setf get-dynamic-table-size): Public generic functions
(setf get-dynamic-table-size): Public generic functions
(setf get-error-code): Private generic functions
(setf get-error-code): Private generic functions
(setf get-frame-size): Private generic functions
(setf get-frame-size): Private generic functions
(setf get-headers): Public generic functions
(setf get-headers): Public generic functions
(setf get-id-to-use): Private generic functions
(setf get-id-to-use): Private generic functions
(setf get-index): Private generic functions
(setf get-index): Private generic functions
(setf get-initial-peer-window-size): Private generic functions
(setf get-initial-peer-window-size): Private generic functions
(setf get-initial-window-size): Private generic functions
(setf get-initial-window-size): Private generic functions
(setf get-last-id-seen): Private generic functions
(setf get-last-id-seen): Private generic functions
(setf get-last-stream-id): Private generic functions
(setf get-last-stream-id): Private generic functions
(setf get-max-frame-size): Private generic functions
(setf get-max-frame-size): Private generic functions
(setf get-max-frame-size): Private generic functions
(setf get-max-peer-frame-size): Private generic functions
(setf get-max-peer-frame-size): Private generic functions
(setf get-max-seen-so-far): Private generic functions
(setf get-max-seen-so-far): Private generic functions
(setf get-method): Private generic functions
(setf get-method): Private generic functions
(setf get-name): Private generic functions
(setf get-name): Private generic functions
(setf get-network-stream): Private generic functions
(setf get-network-stream): Private generic functions
(setf get-network-stream): Private generic functions
(setf get-output-buffer): Private generic functions
(setf get-output-buffer): Private generic functions
(setf get-output-buffer): Private generic functions
(setf get-path): Public generic functions
(setf get-path): Public generic functions
(setf get-payload-input-stream): Private generic functions
(setf get-payload-input-stream): Private generic functions
(setf get-peer-accepts-push): Private generic functions
(setf get-peer-accepts-push): Private generic functions
(setf get-peer-window-size): Private generic functions
(setf get-peer-window-size): Private generic functions
(setf get-reversed-history): Private generic functions
(setf get-reversed-history): Private generic functions
(setf get-scheme): Private generic functions
(setf get-scheme): Private generic functions
(setf get-seen-text-header): Private generic functions
(setf get-seen-text-header): Private generic functions
(setf get-state): Private generic functions
(setf get-state): Private generic functions
(setf get-state): Private generic functions
(setf get-status): Public generic functions
(setf get-status): Public generic functions
(setf get-stream): Private generic functions
(setf get-stream): Private generic functions
(setf get-stream-class): Private generic functions
(setf get-stream-class): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-streams): Private generic functions
(setf get-streams): Private generic functions
(setf get-updates-needed): Public generic functions
(setf get-updates-needed): Public generic functions
(setf get-value): Private generic functions
(setf get-value): Private generic functions
(setf get-value): Private generic functions
(setf get-value): Private generic functions
(setf get-value): Private generic functions
(setf get-weight): Private generic functions
(setf get-weight): Private generic functions
(setf get-window-size): Private generic functions
(setf get-window-size): Private generic functions
(setf priority-exclusive): Private ordinary functions
(setf priority-stream-dependency): Private ordinary functions
(setf priority-weight): Private ordinary functions

A
account-frame-window-contribution: Private ordinary functions
add-dynamic-header: Private generic functions
add-dynamic-header: Private generic functions
add-header: Public generic functions
add-header: Public generic functions
add-header: Public generic functions
add-header: Public generic functions
add-header: Public generic functions
add-header: Public generic functions
add-header: Public generic functions
add-header: Public generic functions
add-log: Private generic functions
add-log: Private generic functions
add-log: Private generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-stream-priority: Public generic functions
apply-stream-priority: Public generic functions
apply-stream-priority: Public generic functions
apply-window-size-increment: Public generic functions
apply-window-size-increment: Public generic functions
apply-window-size-increment: Public generic functions
apply-window-size-increment: Public generic functions

C
change-state-on-write-end: Private ordinary functions
check-place-empty-and-set-it: Private macros
check-stream-state-ok: Private ordinary functions
close: Public standalone methods
close: Public standalone methods
close: Public standalone methods
close-http2-stream: Private ordinary functions
compile-headers: Public ordinary functions
compile-payload-from-stream: Private macros
compute-header-size: Private ordinary functions
compute-update-dynamic-size-codes: Private ordinary functions
connection-error: Private ordinary functions
copy-frame-type: Private ordinary functions
copy-priority: Private ordinary functions
count-open-streams: Private ordinary functions
create-new-local-stream: Private ordinary functions

D
decode-huffman: Public ordinary functions
decode-huffman-to-stream: Private ordinary functions
decode-octet-fn: Private ordinary functions
define-frame-type: Private macros
do-goaway: Public generic functions
do-goaway: Public generic functions
do-goaway: Public generic functions
do-goaway: Public generic functions
do-ping: Private generic functions
do-ping: Private generic functions
do-ping: Private generic functions
do-pong: Public generic functions
do-pong: Public generic functions
do-pong: Public generic functions
do-pong: Public generic functions
dynamic-table-entry-size: Private ordinary functions
dynamic-table-value: Public ordinary functions

E
empty-data-p: Private ordinary functions
encode-dynamic-table-update: Private ordinary functions
encode-header: Public ordinary functions
encode-huffman: Private ordinary functions
extract-charset-from-content-type: Public ordinary functions

F
find-header-in-tables: Private ordinary functions
find-http-stream-by-id: Private ordinary functions
find-in-tables: Private ordinary functions
find-just-stream-by-id: Private ordinary functions
find-pair-in-tables: Private ordinary functions
find-setting-by-id: Private ordinary functions
find-setting-code: Private ordinary functions
flags-to-code: Private ordinary functions
frame-type-bad-state-error: Private ordinary functions
frame-type-connection-ok: Private ordinary functions
frame-type-documentation: Private ordinary functions
frame-type-flag-keywords: Private ordinary functions
frame-type-name: Private ordinary functions
frame-type-new-stream-state: Private ordinary functions
frame-type-old-stream-ok: Private ordinary functions
frame-type-p: Private ordinary functions
frame-type-receive-fn: Private ordinary functions
Function, (setf frame-type-bad-state-error): Private ordinary functions
Function, (setf frame-type-connection-ok): Private ordinary functions
Function, (setf frame-type-documentation): Private ordinary functions
Function, (setf frame-type-flag-keywords): Private ordinary functions
Function, (setf frame-type-name): Private ordinary functions
Function, (setf frame-type-new-stream-state): Private ordinary functions
Function, (setf frame-type-old-stream-ok): Private ordinary functions
Function, (setf frame-type-receive-fn): Private ordinary functions
Function, (setf priority-exclusive): Private ordinary functions
Function, (setf priority-stream-dependency): Private ordinary functions
Function, (setf priority-weight): Private ordinary functions
Function, account-frame-window-contribution: Private ordinary functions
Function, change-state-on-write-end: Private ordinary functions
Function, check-stream-state-ok: Private ordinary functions
Function, close-http2-stream: Private ordinary functions
Function, compile-headers: Public ordinary functions
Function, compute-header-size: Private ordinary functions
Function, compute-update-dynamic-size-codes: Private ordinary functions
Function, connection-error: Private ordinary functions
Function, copy-frame-type: Private ordinary functions
Function, copy-priority: Private ordinary functions
Function, count-open-streams: Private ordinary functions
Function, create-new-local-stream: Private ordinary functions
Function, decode-huffman: Public ordinary functions
Function, decode-huffman-to-stream: Private ordinary functions
Function, decode-octet-fn: Private ordinary functions
Function, dynamic-table-entry-size: Private ordinary functions
Function, dynamic-table-value: Public ordinary functions
Function, empty-data-p: Private ordinary functions
Function, encode-dynamic-table-update: Private ordinary functions
Function, encode-header: Public ordinary functions
Function, encode-huffman: Private ordinary functions
Function, extract-charset-from-content-type: Public ordinary functions
Function, find-header-in-tables: Private ordinary functions
Function, find-http-stream-by-id: Private ordinary functions
Function, find-in-tables: Private ordinary functions
Function, find-just-stream-by-id: Private ordinary functions
Function, find-pair-in-tables: Private ordinary functions
Function, find-setting-by-id: Private ordinary functions
Function, find-setting-code: Private ordinary functions
Function, flags-to-code: Private ordinary functions
Function, frame-type-bad-state-error: Private ordinary functions
Function, frame-type-connection-ok: Private ordinary functions
Function, frame-type-documentation: Private ordinary functions
Function, frame-type-flag-keywords: Private ordinary functions
Function, frame-type-name: Private ordinary functions
Function, frame-type-new-stream-state: Private ordinary functions
Function, frame-type-old-stream-ok: Private ordinary functions
Function, frame-type-p: Private ordinary functions
Function, frame-type-receive-fn: Private ordinary functions
Function, get-error-name: Private ordinary functions
Function, get-flag: Private ordinary functions
Function, get-history: Private ordinary functions
Function, get-integer-from-octet: Public ordinary functions
Function, has-flag: Private ordinary functions
Function, header-writer: Private ordinary functions
Function, http-stream-error: Private ordinary functions
Function, http-stream-to-vector: Public ordinary functions
Function, huffman-coded-size: Private ordinary functions
Function, integer-to-array: Public ordinary functions
Function, logger: Private ordinary functions
Function, make-cond-branch: Private ordinary functions
Function, make-frame-type: Private ordinary functions
Function, make-priority: Private ordinary functions
Function, make-transport-input-stream: Private ordinary functions
Function, make-transport-input-stream-from-stream: Private ordinary functions
Function, make-transport-output-stream: Public ordinary functions
Function, make-transport-output-stream-from-stream: Private ordinary functions
Function, open-http2-stream: Private ordinary functions
Function, padded-length: Private ordinary functions
Function, peer-opens-http-stream-really-open: Private ordinary functions
Function, pop-frame: Private ordinary functions
Function, possibly-padded-body: Private ordinary functions
Function, priority-exclusive: Private ordinary functions
Function, priority-p: Private ordinary functions
Function, priority-stream-dependency: Private ordinary functions
Function, priority-weight: Private ordinary functions
Function, push-frame: Private ordinary functions
Function, read-and-add-headers: Private ordinary functions
Function, read-byte*: Public ordinary functions
Function, read-bytes: Private ordinary functions
Function, read-client-preface: Private ordinary functions
Function, read-continuation-frame-on-demand: Private ordinary functions
Function, read-frame: Public ordinary functions
Function, read-from-tables: Private ordinary functions
Function, read-http-header: Public ordinary functions
Function, read-huffman: Private ordinary functions
Function, read-literal-header-field-new-name: Private ordinary functions
Function, read-literal-header-indexed-name: Private ordinary functions
Function, read-padding: Private ordinary functions
Function, read-possibly-padded: Private ordinary functions
Function, read-priority: Private ordinary functions
Function, read-string-from-stream: Private ordinary functions
Function, request-headers: Public ordinary functions
Function, send-data: Private ordinary functions
Function, send-headers: Public ordinary functions
Function, store-string: Private ordinary functions
Function, update-dynamic-table-size: Public ordinary functions
Function, vector-from-hex-text: Private ordinary functions
Function, vector-index-to-hpack-index: Private ordinary functions
Function, write-31-bits: Private ordinary functions
Function, write-32-bits: Private ordinary functions
Function, write-ack-setting-frame: Public ordinary functions
Function, write-altsvc-frame: Public ordinary functions
Function, write-binary-payload: Private ordinary functions
Function, write-bytes: Private ordinary functions
Function, write-continuation-frame: Public ordinary functions
Function, write-data-frame: Public ordinary functions
Function, write-frame: Private ordinary functions
Function, write-frame-header: Public ordinary functions
Function, write-goaway-frame: Public ordinary functions
Function, write-headers-frame: Public ordinary functions
Function, write-indexed-header-pair: Private ordinary functions
Function, write-indexed-name: Private ordinary functions
Function, write-integer-to-array: Private ordinary functions
Function, write-literal-header-pair: Private ordinary functions
Function, write-ping-frame: Public ordinary functions
Function, write-priority: Private ordinary functions
Function, write-priority-frame: Public ordinary functions
Function, write-push-promise-frame: Public ordinary functions
Function, write-rst-stream-frame: Public ordinary functions
Function, write-sequences: Private ordinary functions
Function, write-settings-frame: Public ordinary functions
Function, write-stream-id: Private ordinary functions
Function, write-window-update-frame: Public ordinary functions

G
Generic Function, (setf get-acked-settings): Private generic functions
Generic Function, (setf get-actual): Private generic functions
Generic Function, (setf get-allowed): Private generic functions
Generic Function, (setf get-authority): Private generic functions
Generic Function, (setf get-base-http2-stream): Private generic functions
Generic Function, (setf get-body): Public generic functions
Generic Function, (setf get-bytes-left-in-table): Public generic functions
Generic Function, (setf get-charset): Private generic functions
Generic Function, (setf get-code): Private generic functions
Generic Function, (setf get-compression): Private generic functions
Generic Function, (setf get-compression-context): Private generic functions
Generic Function, (setf get-connection): Public generic functions
Generic Function, (setf get-data): Private generic functions
Generic Function, (setf get-debug-data): Private generic functions
Generic Function, (setf get-decompression-context): Private generic functions
Generic Function, (setf get-deleted-items): Public generic functions
Generic Function, (setf get-depends-on): Private generic functions
Generic Function, (setf get-dynamic-table): Public generic functions
Generic Function, (setf get-dynamic-table-size): Public generic functions
Generic Function, (setf get-error-code): Private generic functions
Generic Function, (setf get-frame-size): Private generic functions
Generic Function, (setf get-headers): Public generic functions
Generic Function, (setf get-id-to-use): Private generic functions
Generic Function, (setf get-index): Private generic functions
Generic Function, (setf get-initial-peer-window-size): Private generic functions
Generic Function, (setf get-initial-window-size): Private generic functions
Generic Function, (setf get-last-id-seen): Private generic functions
Generic Function, (setf get-last-stream-id): Private generic functions
Generic Function, (setf get-max-frame-size): Private generic functions
Generic Function, (setf get-max-peer-frame-size): Private generic functions
Generic Function, (setf get-max-seen-so-far): Private generic functions
Generic Function, (setf get-method): Private generic functions
Generic Function, (setf get-name): Private generic functions
Generic Function, (setf get-network-stream): Private generic functions
Generic Function, (setf get-output-buffer): Private generic functions
Generic Function, (setf get-path): Public generic functions
Generic Function, (setf get-payload-input-stream): Private generic functions
Generic Function, (setf get-peer-accepts-push): Private generic functions
Generic Function, (setf get-peer-window-size): Private generic functions
Generic Function, (setf get-reversed-history): Private generic functions
Generic Function, (setf get-scheme): Private generic functions
Generic Function, (setf get-seen-text-header): Private generic functions
Generic Function, (setf get-state): Private generic functions
Generic Function, (setf get-status): Public generic functions
Generic Function, (setf get-stream): Private generic functions
Generic Function, (setf get-stream-class): Private generic functions
Generic Function, (setf get-stream-id): Private generic functions
Generic Function, (setf get-streams): Private generic functions
Generic Function, (setf get-updates-needed): Public generic functions
Generic Function, (setf get-value): Private generic functions
Generic Function, (setf get-weight): Private generic functions
Generic Function, (setf get-window-size): Private generic functions
Generic Function, add-dynamic-header: Private generic functions
Generic Function, add-header: Public generic functions
Generic Function, add-log: Private generic functions
Generic Function, apply-data-frame: Public generic functions
Generic Function, apply-stream-priority: Public generic functions
Generic Function, apply-window-size-increment: Public generic functions
Generic Function, do-goaway: Public generic functions
Generic Function, do-ping: Private generic functions
Generic Function, do-pong: Public generic functions
Generic Function, get-acked-settings: Private generic functions
Generic Function, get-actual: Private generic functions
Generic Function, get-allowed: Private generic functions
Generic Function, get-authority: Private generic functions
Generic Function, get-base-http2-stream: Private generic functions
Generic Function, get-body: Public generic functions
Generic Function, get-bytes-left-in-table: Public generic functions
Generic Function, get-charset: Private generic functions
Generic Function, get-code: Private generic functions
Generic Function, get-compression: Private generic functions
Generic Function, get-compression-context: Private generic functions
Generic Function, get-connection: Public generic functions
Generic Function, get-data: Private generic functions
Generic Function, get-debug-data: Private generic functions
Generic Function, get-decompression-context: Private generic functions
Generic Function, get-deleted-items: Public generic functions
Generic Function, get-depends-on: Private generic functions
Generic Function, get-dynamic-table: Public generic functions
Generic Function, get-dynamic-table-size: Public generic functions
Generic Function, get-error-code: Private generic functions
Generic Function, get-frame-size: Private generic functions
Generic Function, get-headers: Public generic functions
Generic Function, get-id-to-use: Private generic functions
Generic Function, get-index: Private generic functions
Generic Function, get-initial-peer-window-size: Private generic functions
Generic Function, get-initial-window-size: Private generic functions
Generic Function, get-last-id-seen: Private generic functions
Generic Function, get-last-stream-id: Private generic functions
Generic Function, get-max-frame-size: Private generic functions
Generic Function, get-max-peer-frame-size: Private generic functions
Generic Function, get-max-seen-so-far: Private generic functions
Generic Function, get-method: Private generic functions
Generic Function, get-name: Private generic functions
Generic Function, get-network-stream: Private generic functions
Generic Function, get-output-buffer: Private generic functions
Generic Function, get-path: Public generic functions
Generic Function, get-payload-input-stream: Private generic functions
Generic Function, get-peer-accepts-push: Private generic functions
Generic Function, get-peer-window-size: Private generic functions
Generic Function, get-reversed-history: Private generic functions
Generic Function, get-scheme: Private generic functions
Generic Function, get-seen-text-header: Private generic functions
Generic Function, get-settings: Private generic functions
Generic Function, get-state: Private generic functions
Generic Function, get-status: Public generic functions
Generic Function, get-stream: Private generic functions
Generic Function, get-stream-class: Private generic functions
Generic Function, get-stream-id: Private generic functions
Generic Function, get-streams: Private generic functions
Generic Function, get-updates-needed: Public generic functions
Generic Function, get-value: Private generic functions
Generic Function, get-weight: Private generic functions
Generic Function, get-window-size: Private generic functions
Generic Function, handle-alt-svc: Private generic functions
Generic Function, handle-undefined-frame: Public generic functions
Generic Function, is-our-stream-id: Private generic functions
Generic Function, maybe-lock-for-write: Private generic functions
Generic Function, maybe-unlock-for-write: Private generic functions
Generic Function, peer-acks-settings: Public generic functions
Generic Function, peer-ends-http-stream: Public generic functions
Generic Function, peer-expects-settings-ack: Public generic functions
Generic Function, peer-resets-stream: Public generic functions
Generic Function, peer-sends-push-promise: Public generic functions
Generic Function, process-end-headers: Private generic functions
Generic Function, send-ping: Public generic functions
Generic Function, set-peer-setting: Public generic functions
get-acked-settings: Private generic functions
get-acked-settings: Private generic functions
get-actual: Private generic functions
get-actual: Private generic functions
get-allowed: Private generic functions
get-allowed: Private generic functions
get-authority: Private generic functions
get-authority: Private generic functions
get-base-http2-stream: Private generic functions
get-base-http2-stream: Private generic functions
get-body: Public generic functions
get-body: Public generic functions
get-bytes-left-in-table: Public generic functions
get-bytes-left-in-table: Public generic functions
get-charset: Private generic functions
get-charset: Private generic functions
get-code: Private generic functions
get-code: Private generic functions
get-code: Private generic functions
get-compression: Private generic functions
get-compression: Private generic functions
get-compression-context: Private generic functions
get-compression-context: Private generic functions
get-connection: Public generic functions
get-connection: Public generic functions
get-connection: Public generic functions
get-data: Private generic functions
get-data: Private generic functions
get-data: Private generic functions
get-debug-data: Private generic functions
get-debug-data: Private generic functions
get-decompression-context: Private generic functions
get-decompression-context: Private generic functions
get-deleted-items: Public generic functions
get-deleted-items: Public generic functions
get-depends-on: Private generic functions
get-depends-on: Private generic functions
get-dynamic-table: Public generic functions
get-dynamic-table: Public generic functions
get-dynamic-table-size: Public generic functions
get-dynamic-table-size: Public generic functions
get-error-code: Private generic functions
get-error-code: Private generic functions
get-error-name: Private ordinary functions
get-flag: Private ordinary functions
get-frame-size: Private generic functions
get-frame-size: Private generic functions
get-headers: Public generic functions
get-headers: Public generic functions
get-history: Private ordinary functions
get-id-to-use: Private generic functions
get-id-to-use: Private generic functions
get-index: Private generic functions
get-index: Private generic functions
get-initial-peer-window-size: Private generic functions
get-initial-peer-window-size: Private generic functions
get-initial-window-size: Private generic functions
get-initial-window-size: Private generic functions
get-integer-from-octet: Public ordinary functions
get-last-id-seen: Private generic functions
get-last-id-seen: Private generic functions
get-last-stream-id: Private generic functions
get-last-stream-id: Private generic functions
get-max-frame-size: Private generic functions
get-max-frame-size: Private generic functions
get-max-frame-size: Private generic functions
get-max-peer-frame-size: Private generic functions
get-max-peer-frame-size: Private generic functions
get-max-seen-so-far: Private generic functions
get-max-seen-so-far: Private generic functions
get-method: Private generic functions
get-method: Private generic functions
get-name: Private generic functions
get-name: Private generic functions
get-network-stream: Private generic functions
get-network-stream: Private generic functions
get-network-stream: Private generic functions
get-output-buffer: Private generic functions
get-output-buffer: Private generic functions
get-output-buffer: Private generic functions
get-path: Public generic functions
get-path: Public generic functions
get-payload-input-stream: Private generic functions
get-payload-input-stream: Private generic functions
get-peer-accepts-push: Private generic functions
get-peer-accepts-push: Private generic functions
get-peer-window-size: Private generic functions
get-peer-window-size: Private generic functions
get-reversed-history: Private generic functions
get-reversed-history: Private generic functions
get-scheme: Private generic functions
get-scheme: Private generic functions
get-seen-text-header: Private generic functions
get-seen-text-header: Private generic functions
get-settings: Private generic functions
get-settings: Private generic functions
get-settings: Private generic functions
get-state: Private generic functions
get-state: Private generic functions
get-state: Private generic functions
get-status: Public generic functions
get-status: Public generic functions
get-stream: Private generic functions
get-stream: Private generic functions
get-stream-class: Private generic functions
get-stream-class: Private generic functions
get-stream-id: Private generic functions
get-stream-id: Private generic functions
get-stream-id: Private generic functions
get-stream-id: Private generic functions
get-stream-id: Private generic functions
get-streams: Private generic functions
get-streams: Private generic functions
get-updates-needed: Public generic functions
get-updates-needed: Public generic functions
get-value: Private generic functions
get-value: Private generic functions
get-value: Private generic functions
get-value: Private generic functions
get-value: Private generic functions
get-weight: Private generic functions
get-weight: Private generic functions
get-window-size: Private generic functions
get-window-size: Private generic functions

H
handle-alt-svc: Private generic functions
handle-alt-svc: Private generic functions
handle-alt-svc: Private generic functions
handle-undefined-frame: Public generic functions
handle-undefined-frame: Public generic functions
has-flag: Private ordinary functions
header-writer: Private ordinary functions
http-stream-error: Private ordinary functions
http-stream-to-vector: Public ordinary functions
huffman-coded-size: Private ordinary functions

I
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
integer-to-array: Public ordinary functions
is-our-stream-id: Private generic functions
is-our-stream-id: Private generic functions
is-our-stream-id: Private generic functions
is-our-stream-id: Private generic functions

L
logger: Private ordinary functions

M
Macro, check-place-empty-and-set-it: Private macros
Macro, compile-payload-from-stream: Private macros
Macro, define-frame-type: Private macros
Macro, with-output-payload-slots: Private macros
make-cond-branch: Private ordinary functions
make-frame-type: Private ordinary functions
make-priority: Private ordinary functions
make-transport-input-stream: Private ordinary functions
make-transport-input-stream-from-stream: Private ordinary functions
make-transport-output-stream: Public ordinary functions
make-transport-output-stream-from-stream: Private ordinary functions
maybe-lock-for-write: Private generic functions
maybe-lock-for-write: Private generic functions
maybe-unlock-for-write: Private generic functions
maybe-unlock-for-write: Private generic functions
Method, (setf get-acked-settings): Private generic functions
Method, (setf get-actual): Private generic functions
Method, (setf get-allowed): Private generic functions
Method, (setf get-authority): Private generic functions
Method, (setf get-base-http2-stream): Private generic functions
Method, (setf get-body): Public generic functions
Method, (setf get-bytes-left-in-table): Public generic functions
Method, (setf get-charset): Private generic functions
Method, (setf get-code): Private generic functions
Method, (setf get-code): Private generic functions
Method, (setf get-compression): Private generic functions
Method, (setf get-compression-context): Private generic functions
Method, (setf get-connection): Public generic functions
Method, (setf get-connection): Public generic functions
Method, (setf get-data): Private generic functions
Method, (setf get-data): Private generic functions
Method, (setf get-debug-data): Private generic functions
Method, (setf get-decompression-context): Private generic functions
Method, (setf get-deleted-items): Public generic functions
Method, (setf get-depends-on): Private generic functions
Method, (setf get-dynamic-table): Public generic functions
Method, (setf get-dynamic-table-size): Public generic functions
Method, (setf get-error-code): Private generic functions
Method, (setf get-frame-size): Private generic functions
Method, (setf get-headers): Public generic functions
Method, (setf get-id-to-use): Private generic functions
Method, (setf get-index): Private generic functions
Method, (setf get-initial-peer-window-size): Private generic functions
Method, (setf get-initial-window-size): Private generic functions
Method, (setf get-last-id-seen): Private generic functions
Method, (setf get-last-stream-id): Private generic functions
Method, (setf get-max-frame-size): Private generic functions
Method, (setf get-max-frame-size): Private generic functions
Method, (setf get-max-peer-frame-size): Private generic functions
Method, (setf get-max-seen-so-far): Private generic functions
Method, (setf get-method): Private generic functions
Method, (setf get-name): Private generic functions
Method, (setf get-network-stream): Private generic functions
Method, (setf get-network-stream): Private generic functions
Method, (setf get-output-buffer): Private generic functions
Method, (setf get-output-buffer): Private generic functions
Method, (setf get-path): Public generic functions
Method, (setf get-payload-input-stream): Private generic functions
Method, (setf get-peer-accepts-push): Private generic functions
Method, (setf get-peer-window-size): Private generic functions
Method, (setf get-reversed-history): Private generic functions
Method, (setf get-scheme): Private generic functions
Method, (setf get-seen-text-header): Private generic functions
Method, (setf get-state): Private generic functions
Method, (setf get-state): Private generic functions
Method, (setf get-status): Public generic functions
Method, (setf get-stream): Private generic functions
Method, (setf get-stream-class): Private generic functions
Method, (setf get-stream-id): Private generic functions
Method, (setf get-stream-id): Private generic functions
Method, (setf get-stream-id): Private generic functions
Method, (setf get-stream-id): Private generic functions
Method, (setf get-streams): Private generic functions
Method, (setf get-updates-needed): Public generic functions
Method, (setf get-value): Private generic functions
Method, (setf get-value): Private generic functions
Method, (setf get-value): Private generic functions
Method, (setf get-value): Private generic functions
Method, (setf get-weight): Private generic functions
Method, (setf get-window-size): Private generic functions
Method, add-dynamic-header: Private generic functions
Method, add-header: Public generic functions
Method, add-header: Public generic functions
Method, add-header: Public generic functions
Method, add-header: Public generic functions
Method, add-header: Public generic functions
Method, add-header: Public generic functions
Method, add-header: Public generic functions
Method, add-log: Private generic functions
Method, add-log: Private generic functions
Method, apply-data-frame: Public generic functions
Method, apply-data-frame: Public generic functions
Method, apply-data-frame: Public generic functions
Method, apply-data-frame: Public generic functions
Method, apply-stream-priority: Public generic functions
Method, apply-stream-priority: Public generic functions
Method, apply-window-size-increment: Public generic functions
Method, apply-window-size-increment: Public generic functions
Method, apply-window-size-increment: Public generic functions
Method, close: Public standalone methods
Method, close: Public standalone methods
Method, close: Public standalone methods
Method, do-goaway: Public generic functions
Method, do-goaway: Public generic functions
Method, do-goaway: Public generic functions
Method, do-ping: Private generic functions
Method, do-ping: Private generic functions
Method, do-pong: Public generic functions
Method, do-pong: Public generic functions
Method, do-pong: Public generic functions
Method, get-acked-settings: Private generic functions
Method, get-actual: Private generic functions
Method, get-allowed: Private generic functions
Method, get-authority: Private generic functions
Method, get-base-http2-stream: Private generic functions
Method, get-body: Public generic functions
Method, get-bytes-left-in-table: Public generic functions
Method, get-charset: Private generic functions
Method, get-code: Private generic functions
Method, get-code: Private generic functions
Method, get-compression: Private generic functions
Method, get-compression-context: Private generic functions
Method, get-connection: Public generic functions
Method, get-connection: Public generic functions
Method, get-data: Private generic functions
Method, get-data: Private generic functions
Method, get-debug-data: Private generic functions
Method, get-decompression-context: Private generic functions
Method, get-deleted-items: Public generic functions
Method, get-depends-on: Private generic functions
Method, get-dynamic-table: Public generic functions
Method, get-dynamic-table-size: Public generic functions
Method, get-error-code: Private generic functions
Method, get-frame-size: Private generic functions
Method, get-headers: Public generic functions
Method, get-id-to-use: Private generic functions
Method, get-index: Private generic functions
Method, get-initial-peer-window-size: Private generic functions
Method, get-initial-window-size: Private generic functions
Method, get-last-id-seen: Private generic functions
Method, get-last-stream-id: Private generic functions
Method, get-max-frame-size: Private generic functions
Method, get-max-frame-size: Private generic functions
Method, get-max-peer-frame-size: Private generic functions
Method, get-max-seen-so-far: Private generic functions
Method, get-method: Private generic functions
Method, get-name: Private generic functions
Method, get-network-stream: Private generic functions
Method, get-network-stream: Private generic functions
Method, get-output-buffer: Private generic functions
Method, get-output-buffer: Private generic functions
Method, get-path: Public generic functions
Method, get-payload-input-stream: Private generic functions
Method, get-peer-accepts-push: Private generic functions
Method, get-peer-window-size: Private generic functions
Method, get-reversed-history: Private generic functions
Method, get-scheme: Private generic functions
Method, get-seen-text-header: Private generic functions
Method, get-settings: Private generic functions
Method, get-settings: Private generic functions
Method, get-state: Private generic functions
Method, get-state: Private generic functions
Method, get-status: Public generic functions
Method, get-stream: Private generic functions
Method, get-stream-class: Private generic functions
Method, get-stream-id: Private generic functions
Method, get-stream-id: Private generic functions
Method, get-stream-id: Private generic functions
Method, get-stream-id: Private generic functions
Method, get-streams: Private generic functions
Method, get-updates-needed: Public generic functions
Method, get-value: Private generic functions
Method, get-value: Private generic functions
Method, get-value: Private generic functions
Method, get-value: Private generic functions
Method, get-weight: Private generic functions
Method, get-window-size: Private generic functions
Method, handle-alt-svc: Private generic functions
Method, handle-alt-svc: Private generic functions
Method, handle-undefined-frame: Public generic functions
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, is-our-stream-id: Private generic functions
Method, is-our-stream-id: Private generic functions
Method, is-our-stream-id: Private generic functions
Method, maybe-lock-for-write: Private generic functions
Method, maybe-unlock-for-write: Private generic functions
Method, peer-acks-settings: Public generic functions
Method, peer-acks-settings: Public generic functions
Method, peer-ends-http-stream: Public generic functions
Method, peer-ends-http-stream: Public generic functions
Method, peer-expects-settings-ack: Public generic functions
Method, peer-expects-settings-ack: Public generic functions
Method, peer-resets-stream: Public generic functions
Method, peer-resets-stream: Public generic functions
Method, peer-resets-stream: Public generic functions
Method, peer-sends-push-promise: Public generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, process-end-headers: Private generic functions
Method, process-end-headers: Private generic functions
Method, process-end-headers: Private generic functions
Method, process-end-headers: Private generic functions
Method, send-ping: Public generic functions
Method, send-ping: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, stream-element-type: Public standalone methods
Method, stream-force-output: Public standalone methods
Method, stream-listen: Public standalone methods
Method, stream-read-byte: Public standalone methods
Method, stream-write-byte: Public standalone methods
Method, stream-write-byte: Public standalone methods
Method, stream-write-sequence: Public standalone methods

O
open-http2-stream: Private ordinary functions

P
padded-length: Private ordinary functions
peer-acks-settings: Public generic functions
peer-acks-settings: Public generic functions
peer-acks-settings: Public generic functions
peer-ends-http-stream: Public generic functions
peer-ends-http-stream: Public generic functions
peer-ends-http-stream: Public generic functions
peer-expects-settings-ack: Public generic functions
peer-expects-settings-ack: Public generic functions
peer-expects-settings-ack: Public generic functions
peer-opens-http-stream-really-open: Private ordinary functions
peer-resets-stream: Public generic functions
peer-resets-stream: Public generic functions
peer-resets-stream: Public generic functions
peer-resets-stream: Public generic functions
peer-sends-push-promise: Public generic functions
peer-sends-push-promise: Public generic functions
pop-frame: Private ordinary functions
possibly-padded-body: Private ordinary functions
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
priority-exclusive: Private ordinary functions
priority-p: Private ordinary functions
priority-stream-dependency: Private ordinary functions
priority-weight: Private ordinary functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
push-frame: Private ordinary functions

R
read-and-add-headers: Private ordinary functions
read-byte*: Public ordinary functions
read-bytes: Private ordinary functions
read-client-preface: Private ordinary functions
read-continuation-frame-on-demand: Private ordinary functions
read-frame: Public ordinary functions
read-from-tables: Private ordinary functions
read-http-header: Public ordinary functions
read-huffman: Private ordinary functions
read-literal-header-field-new-name: Private ordinary functions
read-literal-header-indexed-name: Private ordinary functions
read-padding: Private ordinary functions
read-possibly-padded: Private ordinary functions
read-priority: Private ordinary functions
read-string-from-stream: Private ordinary functions
request-headers: Public ordinary functions

S
send-data: Private ordinary functions
send-headers: Public ordinary functions
send-ping: Public generic functions
send-ping: Public generic functions
send-ping: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
store-string: Private ordinary functions
stream-element-type: Public standalone methods
stream-force-output: Public standalone methods
stream-listen: Public standalone methods
stream-read-byte: Public standalone methods
stream-write-byte: Public standalone methods
stream-write-byte: Public standalone methods
stream-write-sequence: Public standalone methods

U
update-dynamic-table-size: Public ordinary functions

V
vector-from-hex-text: Private ordinary functions
vector-index-to-hpack-index: Private ordinary functions

W
with-output-payload-slots: Private macros
write-31-bits: Private ordinary functions
write-32-bits: Private ordinary functions
write-ack-setting-frame: Public ordinary functions
write-altsvc-frame: Public ordinary functions
write-binary-payload: Private ordinary functions
write-bytes: Private ordinary functions
write-continuation-frame: Public ordinary functions
write-data-frame: Public ordinary functions
write-frame: Private ordinary functions
write-frame-header: Public ordinary functions
write-goaway-frame: Public ordinary functions
write-headers-frame: Public ordinary functions
write-indexed-header-pair: Private ordinary functions
write-indexed-name: Private ordinary functions
write-integer-to-array: Private ordinary functions
write-literal-header-pair: Private ordinary functions
write-ping-frame: Public ordinary functions
write-priority: Private ordinary functions
write-priority-frame: Public ordinary functions
write-push-promise-frame: Public ordinary functions
write-rst-stream-frame: Public ordinary functions
write-sequences: Private ordinary functions
write-settings-frame: Public ordinary functions
write-stream-id: Private ordinary functions
write-window-update-frame: Public ordinary functions


A.3 Variables

Jump to:   *   +  
A   B   C   D   E   F   H   I   L   M   N   O   P   R   S   U   V   W  
Index Entry  Section

*
*bytes-left*: Private special variables
*bytes-to-possibly-reuse*: Private special variables
*bytes-to-reuse*: Private special variables
*charset-names*: Private special variables
*default-encoding*: Private special variables
*default-text-encoding*: Private special variables
*do-print-log*: Public special variables
*error-codes*: Private special variables
*flag-codes-keywords*: Private special variables
*frame-types*: Private special variables
*huffman-code*: Private special variables
*log-stream*: Private special variables
*settings*: Private special variables
*use-huffman-coding-by-default*: Private special variables
*when-no-bytes-left-fn*: Private special variables

+
+altsvc-frame+: Private constants
+cancel+: Private constants
+client-preface-start+: Private special variables
+compression-error+: Private constants
+connect-error+: Private constants
+continuation-frame+: Private constants
+data-frame+: Private constants
+enhance-your-calm+: Private constants
+flow-control-error+: Private constants
+frame-size-error+: Private constants
+goaway-frame+: Private constants
+headers-frame+: Private constants
+http-1-1-required+: Private constants
+inadequate-security+: Private constants
+internal-error+: Private constants
+known-frame-types-count+: Private constants
+last-static-header-index+: Private constants
+last-static-header-pair+: Private constants
+literal-header-index+: Private constants
+literal-header-never-index+: Private constants
+literal-header-noindex+: Private constants
+no-error+: Public constants
+ping-frame+: Private constants
+priority-frame+: Private constants
+protocol-error+: Private constants
+push-promise-frame+: Private constants
+refused-stream+: Private constants
+rst-stream-frame+: Private constants
+settings-frame+: Private constants
+settings-timeout+: Private constants
+stream-closed+: Private constants
+window-update-frame+: Private constants

A
acked-settings: Private classes
actual: Private conditions
allowed: Private conditions
authority: Public classes

B
bad-state-error: Private structures
base-http2-stream: Private classes
body: Private classes
bytes-left-in-table: Public classes

C
charset: Private classes
code: Private conditions
code: Private conditions
compression: Private classes
compression-context: Private classes
connection: Private conditions
connection: Private classes
connection-ok: Private structures
Constant, +altsvc-frame+: Private constants
Constant, +cancel+: Private constants
Constant, +compression-error+: Private constants
Constant, +connect-error+: Private constants
Constant, +continuation-frame+: Private constants
Constant, +data-frame+: Private constants
Constant, +enhance-your-calm+: Private constants
Constant, +flow-control-error+: Private constants
Constant, +frame-size-error+: Private constants
Constant, +goaway-frame+: Private constants
Constant, +headers-frame+: Private constants
Constant, +http-1-1-required+: Private constants
Constant, +inadequate-security+: Private constants
Constant, +internal-error+: Private constants
Constant, +known-frame-types-count+: Private constants
Constant, +last-static-header-index+: Private constants
Constant, +last-static-header-pair+: Private constants
Constant, +literal-header-index+: Private constants
Constant, +literal-header-never-index+: Private constants
Constant, +literal-header-noindex+: Private constants
Constant, +no-error+: Public constants
Constant, +ping-frame+: Private constants
Constant, +priority-frame+: Private constants
Constant, +protocol-error+: Private constants
Constant, +push-promise-frame+: Private constants
Constant, +refused-stream+: Private constants
Constant, +rst-stream-frame+: Private constants
Constant, +settings-frame+: Private constants
Constant, +settings-timeout+: Private constants
Constant, +stream-closed+: Private constants
Constant, +window-update-frame+: Private constants

D
data: Private classes
data: Private classes
debug-data: Private conditions
decompression-context: Private classes
deleted-items: Public classes
depends-on: Private classes
documentation: Private structures
dynamic-table: Public classes
dynamic-table-size: Public classes

E
error-code: Private conditions
exclusive: Private structures

F
flag-keywords: Private structures
frame-size: Private conditions

H
headers: Public classes

I
id-to-use: Private classes
index: Private classes
initial-peer-window-size: Private classes
initial-window-size: Private classes

L
last-id-seen: Private classes
last-stream-id: Private conditions

M
max-frame-size: Private conditions
max-frame-size: Private classes
max-peer-frame-size: Private classes
max-seen-so-far: Private conditions
method: Public classes

N
name: Private conditions
name: Private structures
network-stream: Private classes
network-stream: Private classes
new-stream-state: Private structures

O
old-stream-ok: Private structures
output-buffer: Private classes
output-buffer: Private classes

P
path: Public classes
payload-input-stream: Private classes
peer-accepts-push: Private classes
peer-window-size: Private classes

R
receive-fn: Private structures
reversed-history: Private classes

S
scheme: Public classes
seen-text-header: Private classes
Slot, acked-settings: Private classes
Slot, actual: Private conditions
Slot, allowed: Private conditions
Slot, authority: Public classes
Slot, bad-state-error: Private structures
Slot, base-http2-stream: Private classes
Slot, body: Private classes
Slot, bytes-left-in-table: Public classes
Slot, charset: Private classes
Slot, code: Private conditions
Slot, code: Private conditions
Slot, compression: Private classes
Slot, compression-context: Private classes
Slot, connection: Private conditions
Slot, connection: Private classes
Slot, connection-ok: Private structures
Slot, data: Private classes
Slot, data: Private classes
Slot, debug-data: Private conditions
Slot, decompression-context: Private classes
Slot, deleted-items: Public classes
Slot, depends-on: Private classes
Slot, documentation: Private structures
Slot, dynamic-table: Public classes
Slot, dynamic-table-size: Public classes
Slot, error-code: Private conditions
Slot, exclusive: Private structures
Slot, flag-keywords: Private structures
Slot, frame-size: Private conditions
Slot, headers: Public classes
Slot, id-to-use: Private classes
Slot, index: Private classes
Slot, initial-peer-window-size: Private classes
Slot, initial-window-size: Private classes
Slot, last-id-seen: Private classes
Slot, last-stream-id: Private conditions
Slot, max-frame-size: Private conditions
Slot, max-frame-size: Private classes
Slot, max-peer-frame-size: Private classes
Slot, max-seen-so-far: Private conditions
Slot, method: Public classes
Slot, name: Private conditions
Slot, name: Private structures
Slot, network-stream: Private classes
Slot, network-stream: Private classes
Slot, new-stream-state: Private structures
Slot, old-stream-ok: Private structures
Slot, output-buffer: Private classes
Slot, output-buffer: Private classes
Slot, path: Public classes
Slot, payload-input-stream: Private classes
Slot, peer-accepts-push: Private classes
Slot, peer-window-size: Private classes
Slot, receive-fn: Private structures
Slot, reversed-history: Private classes
Slot, scheme: Public classes
Slot, seen-text-header: Private classes
Slot, state: Private classes
Slot, status: Public classes
Slot, stream: Private conditions
Slot, stream-class: Private classes
Slot, stream-dependency: Private structures
Slot, stream-id: Private conditions
Slot, stream-id: Private conditions
Slot, stream-id: Private classes
Slot, stream-id: Private classes
Slot, streams: Private classes
Slot, updates-needed: Public classes
Slot, value: Private conditions
Slot, value: Private conditions
Slot, value: Private conditions
Slot, value: Private conditions
Slot, weight: Private structures
Slot, weight: Private classes
Slot, window-size: Private classes
Special Variable, *bytes-left*: Private special variables
Special Variable, *bytes-to-possibly-reuse*: Private special variables
Special Variable, *bytes-to-reuse*: Private special variables
Special Variable, *charset-names*: Private special variables
Special Variable, *default-encoding*: Private special variables
Special Variable, *default-text-encoding*: Private special variables
Special Variable, *do-print-log*: Public special variables
Special Variable, *error-codes*: Private special variables
Special Variable, *flag-codes-keywords*: Private special variables
Special Variable, *frame-types*: Private special variables
Special Variable, *huffman-code*: Private special variables
Special Variable, *log-stream*: Private special variables
Special Variable, *settings*: Private special variables
Special Variable, *use-huffman-coding-by-default*: Private special variables
Special Variable, *when-no-bytes-left-fn*: Private special variables
Special Variable, +client-preface-start+: Private special variables
Special Variable, static-headers-table: Private special variables
state: Private classes
static-headers-table: Private special variables
status: Public classes
stream: Private conditions
stream-class: Private classes
stream-dependency: Private structures
stream-id: Private conditions
stream-id: Private conditions
stream-id: Private classes