Packages
hackney
3.0.1
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/lsquic_frame_common.h
/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_frame_common.h
*/
#ifndef LSQUIC_FRAME_COMMON_H
#define LSQUIC_FRAME_COMMON_H 1
enum http_frame_type
{
HTTP_FRAME_DATA = 0x00,
HTTP_FRAME_HEADERS = 0x01,
HTTP_FRAME_PRIORITY = 0x02,
HTTP_FRAME_RST_STREAM = 0x03,
HTTP_FRAME_SETTINGS = 0x04,
HTTP_FRAME_PUSH_PROMISE = 0x05,
HTTP_FRAME_PING = 0x06,
HTTP_FRAME_GOAWAY = 0x07,
HTTP_FRAME_WINDOW_UPDATE = 0x08,
HTTP_FRAME_CONTINUATION = 0x09,
N_HTTP_FRAME_TYPES
};
enum http_frame_header_flags /* RFC 7540, Section 6.2 */
{
HFHF_END_STREAM = 0x01,
HFHF_END_HEADERS = 0x04,
HFHF_PADDED = 0x08,
HFHF_PRIORITY = 0x20,
};
struct http_frame_header /* RFC 7540, Section 4.1 */
{
unsigned char hfh_length[3];
unsigned char hfh_type; /* enum http_frame_type */
unsigned char hfh_flags;
unsigned char hfh_stream_id[4];
};
#define hfh_get_length(hfh) ( ((hfh)->hfh_length[0] << 16) | \
((hfh)->hfh_length[1] << 8) | \
(hfh)->hfh_length[2] )
enum settings_param /* RFC 7540, Section 6.5.2 */
{
SETTINGS_HEADER_TABLE_SIZE = 0x0001,
SETTINGS_ENABLE_PUSH = 0x0002,
SETTINGS_MAX_CONCURRENT_STREAMS = 0x0003,
SETTINGS_INITIAL_WINDOW_SIZE = 0x0004,
SETTINGS_MAX_FRAME_SIZE = 0x0005,
SETTINGS_MAX_HEADER_LIST_SIZE = 0x0006,
};
/* This also doubles as HEADERS frame payload prefix: */
struct http_prio_frame /* RFC 7540, Section 6.3 */
{
unsigned char hpf_stream_id[4]; /* High bit is the exclusive flag */
unsigned char hpf_weight;
};
struct http_push_promise_frame /* RFC 7540, Section 6.6 */
{
unsigned char hppf_promised_id[4]; /* High bit is reserved */
};
struct lsquic_http2_setting
{
uint16_t id;
uint32_t value;
};
const char *
lsquic_http_setting_id2str (enum settings_param id);
#endif