annotate src/http/v3/ngx_http_v3.h @ 8546:d80365ca678d quic

HTTP/3: require mandatory uni streams before additional ones. As per quic-http-34: Endpoints SHOULD create the HTTP control stream as well as the unidirectional streams required by mandatory extensions (such as the QPACK encoder and decoder streams) first, and then create additional streams as allowed by their peer. Previously, client could create and destroy additional uni streams unlimited number of times before creating mandatory streams.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 29 Jul 2021 10:03:36 +0300
parents 1fec68e322d0
children 054f9be0aaf9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2 /*
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 * Copyright (C) Roman Arutyunyan
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4 * Copyright (C) Nginx, Inc.
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
8 #ifndef _NGX_HTTP_V3_H_INCLUDED_
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
9 #define _NGX_HTTP_V3_H_INCLUDED_
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12 #include <ngx_config.h>
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13 #include <ngx_core.h>
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
14 #include <ngx_http.h>
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents: 8432
diff changeset
15
7692
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
16 #include <ngx_http_v3_parse.h>
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents: 8432
diff changeset
17 #include <ngx_http_v3_encode.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents: 8432
diff changeset
18 #include <ngx_http_v3_streams.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents: 8432
diff changeset
19 #include <ngx_http_v3_tables.h>
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
20
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
21
8196
e0947c952d43 QUIC: multiple versions support in ALPN.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8015
diff changeset
22 #define NGX_HTTP_V3_ALPN_ADVERTISE "\x02h3"
e0947c952d43 QUIC: multiple versions support in ALPN.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8015
diff changeset
23 #define NGX_HTTP_V3_ALPN_DRAFT_FMT "\x05h3-%02uD"
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
24
7692
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
25 #define NGX_HTTP_V3_VARLEN_INT_LEN 4
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
26 #define NGX_HTTP_V3_PREFIX_INT_LEN 11
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
27
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
28 #define NGX_HTTP_V3_STREAM_CONTROL 0x00
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
29 #define NGX_HTTP_V3_STREAM_PUSH 0x01
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
30 #define NGX_HTTP_V3_STREAM_ENCODER 0x02
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
31 #define NGX_HTTP_V3_STREAM_DECODER 0x03
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
32
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
33 #define NGX_HTTP_V3_FRAME_DATA 0x00
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
34 #define NGX_HTTP_V3_FRAME_HEADERS 0x01
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
35 #define NGX_HTTP_V3_FRAME_CANCEL_PUSH 0x03
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
36 #define NGX_HTTP_V3_FRAME_SETTINGS 0x04
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
37 #define NGX_HTTP_V3_FRAME_PUSH_PROMISE 0x05
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
38 #define NGX_HTTP_V3_FRAME_GOAWAY 0x07
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
39 #define NGX_HTTP_V3_FRAME_MAX_PUSH_ID 0x0d
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
40
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
41 #define NGX_HTTP_V3_PARAM_MAX_TABLE_CAPACITY 0x01
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
42 #define NGX_HTTP_V3_PARAM_MAX_HEADER_LIST_SIZE 0x06
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents: 7681
diff changeset
43 #define NGX_HTTP_V3_PARAM_BLOCKED_STREAMS 0x07
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
44
7749
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
45 #define NGX_HTTP_V3_STREAM_CLIENT_CONTROL 0
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
46 #define NGX_HTTP_V3_STREAM_SERVER_CONTROL 1
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
47 #define NGX_HTTP_V3_STREAM_CLIENT_ENCODER 2
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
48 #define NGX_HTTP_V3_STREAM_SERVER_ENCODER 3
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
49 #define NGX_HTTP_V3_STREAM_CLIENT_DECODER 4
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
50 #define NGX_HTTP_V3_STREAM_SERVER_DECODER 5
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
51 #define NGX_HTTP_V3_MAX_KNOWN_STREAM 6
dadbc66e9fca Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7735
diff changeset
52
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
53 #define NGX_HTTP_V3_DEFAULT_MAX_TABLE_CAPACITY 16384
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
54 #define NGX_HTTP_V3_DEFAULT_MAX_BLOCKED_STREAMS 16
8015
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
55 #define NGX_HTTP_V3_DEFAULT_MAX_CONCURRENT_PUSHES 10
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
56
7954
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
57 /* HTTP/3 errors */
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
58 #define NGX_HTTP_V3_ERR_NO_ERROR 0x100
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
59 #define NGX_HTTP_V3_ERR_GENERAL_PROTOCOL_ERROR 0x101
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
60 #define NGX_HTTP_V3_ERR_INTERNAL_ERROR 0x102
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
61 #define NGX_HTTP_V3_ERR_STREAM_CREATION_ERROR 0x103
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
62 #define NGX_HTTP_V3_ERR_CLOSED_CRITICAL_STREAM 0x104
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
63 #define NGX_HTTP_V3_ERR_FRAME_UNEXPECTED 0x105
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
64 #define NGX_HTTP_V3_ERR_FRAME_ERROR 0x106
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
65 #define NGX_HTTP_V3_ERR_EXCESSIVE_LOAD 0x107
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
66 #define NGX_HTTP_V3_ERR_ID_ERROR 0x108
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
67 #define NGX_HTTP_V3_ERR_SETTINGS_ERROR 0x109
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
68 #define NGX_HTTP_V3_ERR_MISSING_SETTINGS 0x10a
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
69 #define NGX_HTTP_V3_ERR_REQUEST_REJECTED 0x10b
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
70 #define NGX_HTTP_V3_ERR_REQUEST_CANCELLED 0x10c
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
71 #define NGX_HTTP_V3_ERR_REQUEST_INCOMPLETE 0x10d
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
72 #define NGX_HTTP_V3_ERR_CONNECT_ERROR 0x10f
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
73 #define NGX_HTTP_V3_ERR_VERSION_FALLBACK 0x110
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
74
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
75 /* QPACK errors */
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
76 #define NGX_HTTP_V3_ERR_DECOMPRESSION_FAILED 0x200
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
77 #define NGX_HTTP_V3_ERR_ENCODER_STREAM_ERROR 0x201
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
78 #define NGX_HTTP_V3_ERR_DECODER_STREAM_ERROR 0x202
1ed698947172 HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents: 7951
diff changeset
79
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
80
8429
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8428
diff changeset
81 #define ngx_http_v3_get_session(c) ngx_http_quic_get_connection(c)->v3_session
8428
40d710a66aef HTTP/3: ngx_http_v3_get_session() macro.
Roman Arutyunyan <arut@nginx.com>
parents: 8402
diff changeset
82
8360
98c4020f1c9a HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents: 8359
diff changeset
83 #define ngx_http_v3_get_module_loc_conf(c, module) \
8429
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8428
diff changeset
84 ngx_http_get_module_loc_conf(ngx_http_quic_get_connection(c)->conf_ctx, \
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8428
diff changeset
85 module)
8360
98c4020f1c9a HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents: 8359
diff changeset
86
7948
c8cabb5d45f5 HTTP/3: introduced ngx_http_v3_get_module_srv_conf() macro.
Roman Arutyunyan <arut@nginx.com>
parents: 7883
diff changeset
87 #define ngx_http_v3_get_module_srv_conf(c, module) \
8429
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8428
diff changeset
88 ngx_http_get_module_srv_conf(ngx_http_quic_get_connection(c)->conf_ctx, \
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8428
diff changeset
89 module)
7948
c8cabb5d45f5 HTTP/3: introduced ngx_http_v3_get_module_srv_conf() macro.
Roman Arutyunyan <arut@nginx.com>
parents: 7883
diff changeset
90
7955
72f9ff4e0a88 HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents: 7954
diff changeset
91 #define ngx_http_v3_finalize_connection(c, code, reason) \
8200
279ad36f2f4b QUIC: renamed c->qs to c->quic.
Roman Arutyunyan <arut@nginx.com>
parents: 8196
diff changeset
92 ngx_quic_finalize_connection(c->quic->parent, code, reason)
7955
72f9ff4e0a88 HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents: 7954
diff changeset
93
8359
fc64ab301bad QUIC: connection shutdown.
Roman Arutyunyan <arut@nginx.com>
parents: 8358
diff changeset
94 #define ngx_http_v3_shutdown_connection(c, code, reason) \
fc64ab301bad QUIC: connection shutdown.
Roman Arutyunyan <arut@nginx.com>
parents: 8358
diff changeset
95 ngx_quic_shutdown_connection(c->quic->parent, code, reason)
fc64ab301bad QUIC: connection shutdown.
Roman Arutyunyan <arut@nginx.com>
parents: 8358
diff changeset
96
7948
c8cabb5d45f5 HTTP/3: introduced ngx_http_v3_get_module_srv_conf() macro.
Roman Arutyunyan <arut@nginx.com>
parents: 7883
diff changeset
97
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
98 typedef struct {
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
99 size_t max_table_capacity;
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
100 ngx_uint_t max_blocked_streams;
8015
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
101 ngx_uint_t max_concurrent_pushes;
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
102 } ngx_http_v3_srv_conf_t;
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
103
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
104
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
105 typedef struct {
8015
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
106 ngx_flag_t push_preload;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
107 ngx_flag_t push;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
108 ngx_array_t *pushes;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
109 } ngx_http_v3_loc_conf_t;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
110
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
111
8318
3057bae4dba7 HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents: 8317
diff changeset
112 struct ngx_http_v3_parse_s {
8319
ffcaf0aad9f2 HTTP/3: limited client header size.
Roman Arutyunyan <arut@nginx.com>
parents: 8318
diff changeset
113 size_t header_limit;
8318
3057bae4dba7 HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents: 8317
diff changeset
114 ngx_http_v3_parse_headers_t headers;
3057bae4dba7 HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents: 8317
diff changeset
115 ngx_http_v3_parse_data_t body;
3057bae4dba7 HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents: 8317
diff changeset
116 };
3057bae4dba7 HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents: 8317
diff changeset
117
3057bae4dba7 HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents: 8317
diff changeset
118
8430
67f0eb150047 HTTP/3: renamed ngx_http_v3_connection_t to ngx_http_v3_session_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8429
diff changeset
119 struct ngx_http_v3_session_s {
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
120 ngx_http_v3_dynamic_table_t table;
8015
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
121
8360
98c4020f1c9a HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents: 8359
diff changeset
122 ngx_event_t keepalive;
98c4020f1c9a HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents: 8359
diff changeset
123 ngx_uint_t nrequests;
98c4020f1c9a HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents: 8359
diff changeset
124
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
125 ngx_queue_t blocked;
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
126 ngx_uint_t nblocked;
8015
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
127
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
128 ngx_queue_t pushing;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
129 ngx_uint_t npushing;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
130 uint64_t next_push_id;
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
131 uint64_t max_push_id;
8497
1fec68e322d0 HTTP/3: client GOAWAY support.
Roman Arutyunyan <arut@nginx.com>
parents: 8433
diff changeset
132 uint64_t goaway_push_id;
8015
0596fe1aee16 HTTP/3: server pushes.
Roman Arutyunyan <arut@nginx.com>
parents: 8006
diff changeset
133
8402
47a43b011dec HTTP/3: keepalive_time support.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8390
diff changeset
134 ngx_uint_t goaway; /* unsigned goaway:1; */
47a43b011dec HTTP/3: keepalive_time support.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8390
diff changeset
135
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
136 ngx_connection_t *known_streams[NGX_HTTP_V3_MAX_KNOWN_STREAM];
8429
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8428
diff changeset
137 };
7951
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
138
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 7949
diff changeset
139
8272
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8237
diff changeset
140 void ngx_http_v3_init(ngx_connection_t *c);
8433
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents: 8432
diff changeset
141 ngx_int_t ngx_http_v3_init_session(ngx_connection_t *c);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents: 8432
diff changeset
142
8282
6bd8ed493b85 HTTP/3: refactored request body parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8274
diff changeset
143 ngx_int_t ngx_http_v3_read_request_body(ngx_http_request_t *r);
6bd8ed493b85 HTTP/3: refactored request body parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8274
diff changeset
144 ngx_int_t ngx_http_v3_read_unbuffered_request_body(ngx_http_request_t *r);
7681
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
145
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
146
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
147 extern ngx_module_t ngx_http_v3_module;
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
148
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
149
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
150 #endif /* _NGX_HTTP_V3_H_INCLUDED_ */