Mercurial > hg > nginx
annotate src/http/v3/ngx_http_v3.h @ 9054:6546c2ae1c7b quic
HTTP/3: unified hq code with regular HTTP/3 code.
The change removes hq-specific request handler. Now hq requests are handled
by the HTTP/3 request handler.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Wed, 19 Oct 2022 17:45:30 +0400 |
parents | efbcdb9b37dc |
children | 1192923be0aa |
rev | line source |
---|---|
8215 | 1 |
2 /* | |
3 * Copyright (C) Roman Arutyunyan | |
4 * Copyright (C) Nginx, Inc. | |
5 */ | |
6 | |
7 | |
8 #ifndef _NGX_HTTP_V3_H_INCLUDED_ | |
9 #define _NGX_HTTP_V3_H_INCLUDED_ | |
10 | |
11 | |
12 #include <ngx_config.h> | |
13 #include <ngx_core.h> | |
14 #include <ngx_http.h> | |
8773
b43e50f47b2e
HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
8772
diff
changeset
|
15 |
8226
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
16 #include <ngx_http_v3_parse.h> |
8773
b43e50f47b2e
HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
8772
diff
changeset
|
17 #include <ngx_http_v3_encode.h> |
8925 | 18 #include <ngx_http_v3_uni.h> |
19 #include <ngx_http_v3_table.h> | |
8215 | 20 |
21 | |
8918
606bf52888d2
HTTP/3: adjusted ALPN macro names to align with 61abb35bb8cf.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8903
diff
changeset
|
22 #define NGX_HTTP_V3_ALPN_PROTO "\x02h3" |
8922
be08b858086a
HTTP/3: http3_hq directive and NGX_HTTP_V3_HQ macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8921
diff
changeset
|
23 #define NGX_HTTP_V3_HQ_ALPN_PROTO "\x0Ahq-interop" |
8921
33226ac61076
HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.
Roman Arutyunyan <arut@nginx.com>
parents:
8918
diff
changeset
|
24 |
8226
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
25 #define NGX_HTTP_V3_VARLEN_INT_LEN 4 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
26 #define NGX_HTTP_V3_PREFIX_INT_LEN 11 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
27 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
28 #define NGX_HTTP_V3_STREAM_CONTROL 0x00 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
29 #define NGX_HTTP_V3_STREAM_PUSH 0x01 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
30 #define NGX_HTTP_V3_STREAM_ENCODER 0x02 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
31 #define NGX_HTTP_V3_STREAM_DECODER 0x03 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
32 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
33 #define NGX_HTTP_V3_FRAME_DATA 0x00 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
34 #define NGX_HTTP_V3_FRAME_HEADERS 0x01 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
35 #define NGX_HTTP_V3_FRAME_CANCEL_PUSH 0x03 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
36 #define NGX_HTTP_V3_FRAME_SETTINGS 0x04 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
37 #define NGX_HTTP_V3_FRAME_PUSH_PROMISE 0x05 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
38 #define NGX_HTTP_V3_FRAME_GOAWAY 0x07 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
39 #define NGX_HTTP_V3_FRAME_MAX_PUSH_ID 0x0d |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
40 |
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
41 #define NGX_HTTP_V3_PARAM_MAX_TABLE_CAPACITY 0x01 |
9020
efbcdb9b37dc
HTTP/3: updated SETTINGS_MAX_FIELD_SECTION_SIZE name.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8988
diff
changeset
|
42 #define NGX_HTTP_V3_PARAM_MAX_FIELD_SECTION_SIZE 0x06 |
8226
268f4389130d
Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8215
diff
changeset
|
43 #define NGX_HTTP_V3_PARAM_BLOCKED_STREAMS 0x07 |
8215 | 44 |
8924
d6ef13c5fd8e
QUIC: simplified configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8922
diff
changeset
|
45 #define NGX_HTTP_V3_MAX_TABLE_CAPACITY 4096 |
d6ef13c5fd8e
QUIC: simplified configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8922
diff
changeset
|
46 |
8283
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
47 #define NGX_HTTP_V3_STREAM_CLIENT_CONTROL 0 |
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
48 #define NGX_HTTP_V3_STREAM_SERVER_CONTROL 1 |
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
49 #define NGX_HTTP_V3_STREAM_CLIENT_ENCODER 2 |
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
50 #define NGX_HTTP_V3_STREAM_SERVER_ENCODER 3 |
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
51 #define NGX_HTTP_V3_STREAM_CLIENT_DECODER 4 |
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
52 #define NGX_HTTP_V3_STREAM_SERVER_DECODER 5 |
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
53 #define NGX_HTTP_V3_MAX_KNOWN_STREAM 6 |
8924
d6ef13c5fd8e
QUIC: simplified configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8922
diff
changeset
|
54 #define NGX_HTTP_V3_MAX_UNI_STREAMS 3 |
8283
dadbc66e9fca
Simplifed handling HTTP/3 streams.
Roman Arutyunyan <arut@nginx.com>
parents:
8269
diff
changeset
|
55 |
8459
1ed698947172
HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents:
8456
diff
changeset
|
56 /* HTTP/3 errors */ |
1ed698947172
HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents:
8456
diff
changeset
|
57 #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:
8456
diff
changeset
|
58 #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:
8456
diff
changeset
|
59 #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:
8456
diff
changeset
|
60 #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:
8456
diff
changeset
|
61 #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:
8456
diff
changeset
|
62 #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:
8456
diff
changeset
|
63 #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:
8456
diff
changeset
|
64 #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:
8456
diff
changeset
|
65 #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:
8456
diff
changeset
|
66 #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:
8456
diff
changeset
|
67 #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:
8456
diff
changeset
|
68 #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:
8456
diff
changeset
|
69 #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:
8456
diff
changeset
|
70 #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:
8456
diff
changeset
|
71 #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:
8456
diff
changeset
|
72 #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:
8456
diff
changeset
|
73 |
1ed698947172
HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents:
8456
diff
changeset
|
74 /* QPACK errors */ |
1ed698947172
HTTP/3: error code definitions for HTTP/3 and QPACK.
Roman Arutyunyan <arut@nginx.com>
parents:
8456
diff
changeset
|
75 #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:
8456
diff
changeset
|
76 #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:
8456
diff
changeset
|
77 #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:
8456
diff
changeset
|
78 |
8215 | 79 |
8921
33226ac61076
HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.
Roman Arutyunyan <arut@nginx.com>
parents:
8918
diff
changeset
|
80 #define ngx_http_quic_get_connection(c) \ |
8988
6434160b4b78
QUIC: allowed main QUIC connection for some operations.
Roman Arutyunyan <arut@nginx.com>
parents:
8979
diff
changeset
|
81 ((ngx_http_connection_t *) ((c)->quic ? (c)->quic->parent->data \ |
6434160b4b78
QUIC: allowed main QUIC connection for some operations.
Roman Arutyunyan <arut@nginx.com>
parents:
8979
diff
changeset
|
82 : (c)->data)) |
8921
33226ac61076
HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.
Roman Arutyunyan <arut@nginx.com>
parents:
8918
diff
changeset
|
83 |
8769
9ec3e71f8a61
HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents:
8768
diff
changeset
|
84 #define ngx_http_v3_get_session(c) ngx_http_quic_get_connection(c)->v3_session |
8768
40d710a66aef
HTTP/3: ngx_http_v3_get_session() macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8742
diff
changeset
|
85 |
8725
98c4020f1c9a
HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents:
8724
diff
changeset
|
86 #define ngx_http_v3_get_module_loc_conf(c, module) \ |
8769
9ec3e71f8a61
HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents:
8768
diff
changeset
|
87 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:
8768
diff
changeset
|
88 module) |
8725
98c4020f1c9a
HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents:
8724
diff
changeset
|
89 |
8453
c8cabb5d45f5
HTTP/3: introduced ngx_http_v3_get_module_srv_conf() macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8406
diff
changeset
|
90 #define ngx_http_v3_get_module_srv_conf(c, module) \ |
8769
9ec3e71f8a61
HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents:
8768
diff
changeset
|
91 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:
8768
diff
changeset
|
92 module) |
8453
c8cabb5d45f5
HTTP/3: introduced ngx_http_v3_get_module_srv_conf() macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8406
diff
changeset
|
93 |
8460
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
8459
diff
changeset
|
94 #define ngx_http_v3_finalize_connection(c, code, reason) \ |
8988
6434160b4b78
QUIC: allowed main QUIC connection for some operations.
Roman Arutyunyan <arut@nginx.com>
parents:
8979
diff
changeset
|
95 ngx_quic_finalize_connection((c)->quic ? (c)->quic->parent : (c), \ |
6434160b4b78
QUIC: allowed main QUIC connection for some operations.
Roman Arutyunyan <arut@nginx.com>
parents:
8979
diff
changeset
|
96 code, reason) |
8460
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
8459
diff
changeset
|
97 |
8724
fc64ab301bad
QUIC: connection shutdown.
Roman Arutyunyan <arut@nginx.com>
parents:
8723
diff
changeset
|
98 #define ngx_http_v3_shutdown_connection(c, code, reason) \ |
8988
6434160b4b78
QUIC: allowed main QUIC connection for some operations.
Roman Arutyunyan <arut@nginx.com>
parents:
8979
diff
changeset
|
99 ngx_quic_shutdown_connection((c)->quic ? (c)->quic->parent : (c), \ |
6434160b4b78
QUIC: allowed main QUIC connection for some operations.
Roman Arutyunyan <arut@nginx.com>
parents:
8979
diff
changeset
|
100 code, reason) |
8724
fc64ab301bad
QUIC: connection shutdown.
Roman Arutyunyan <arut@nginx.com>
parents:
8723
diff
changeset
|
101 |
8453
c8cabb5d45f5
HTTP/3: introduced ngx_http_v3_get_module_srv_conf() macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8406
diff
changeset
|
102 |
8215 | 103 typedef struct { |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
104 size_t max_table_capacity; |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
105 ngx_uint_t max_blocked_streams; |
8497 | 106 ngx_uint_t max_concurrent_pushes; |
8924
d6ef13c5fd8e
QUIC: simplified configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8922
diff
changeset
|
107 ngx_uint_t max_concurrent_streams; |
8922
be08b858086a
HTTP/3: http3_hq directive and NGX_HTTP_V3_HQ macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8921
diff
changeset
|
108 #if (NGX_HTTP_V3_HQ) |
be08b858086a
HTTP/3: http3_hq directive and NGX_HTTP_V3_HQ macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8921
diff
changeset
|
109 ngx_flag_t hq; |
be08b858086a
HTTP/3: http3_hq directive and NGX_HTTP_V3_HQ macro.
Roman Arutyunyan <arut@nginx.com>
parents:
8921
diff
changeset
|
110 #endif |
8921
33226ac61076
HTTP/3: merged ngx_http_quic_module into ngx_http_v3_module.
Roman Arutyunyan <arut@nginx.com>
parents:
8918
diff
changeset
|
111 ngx_quic_conf_t quic; |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
112 } ngx_http_v3_srv_conf_t; |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
113 |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
114 |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
115 typedef struct { |
8497 | 116 ngx_flag_t push_preload; |
117 ngx_flag_t push; | |
118 ngx_array_t *pushes; | |
119 } ngx_http_v3_loc_conf_t; | |
120 | |
121 | |
8706
3057bae4dba7
HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents:
8705
diff
changeset
|
122 struct ngx_http_v3_parse_s { |
8707
ffcaf0aad9f2
HTTP/3: limited client header size.
Roman Arutyunyan <arut@nginx.com>
parents:
8706
diff
changeset
|
123 size_t header_limit; |
8706
3057bae4dba7
HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents:
8705
diff
changeset
|
124 ngx_http_v3_parse_headers_t headers; |
3057bae4dba7
HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents:
8705
diff
changeset
|
125 ngx_http_v3_parse_data_t body; |
8958
10522e8dea41
HTTP/3: improved processing of multiple Cookie field lines.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8925
diff
changeset
|
126 ngx_array_t *cookies; |
8706
3057bae4dba7
HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents:
8705
diff
changeset
|
127 }; |
3057bae4dba7
HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents:
8705
diff
changeset
|
128 |
3057bae4dba7
HTTP/3: introduced ngx_http_v3_parse_t structure.
Roman Arutyunyan <arut@nginx.com>
parents:
8705
diff
changeset
|
129 |
8770
67f0eb150047
HTTP/3: renamed ngx_http_v3_connection_t to ngx_http_v3_session_t.
Roman Arutyunyan <arut@nginx.com>
parents:
8769
diff
changeset
|
130 struct ngx_http_v3_session_s { |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
131 ngx_http_v3_dynamic_table_t table; |
8497 | 132 |
8725
98c4020f1c9a
HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents:
8724
diff
changeset
|
133 ngx_event_t keepalive; |
98c4020f1c9a
HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents:
8724
diff
changeset
|
134 ngx_uint_t nrequests; |
98c4020f1c9a
HTTP/3: keepalive timeout.
Roman Arutyunyan <arut@nginx.com>
parents:
8724
diff
changeset
|
135 |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
136 ngx_queue_t blocked; |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
137 ngx_uint_t nblocked; |
8497 | 138 |
139 ngx_queue_t pushing; | |
140 ngx_uint_t npushing; | |
141 uint64_t next_push_id; | |
142 uint64_t max_push_id; | |
8796
1fec68e322d0
HTTP/3: client GOAWAY support.
Roman Arutyunyan <arut@nginx.com>
parents:
8773
diff
changeset
|
143 uint64_t goaway_push_id; |
8497 | 144 |
8881
72b304f6207c
HTTP/3: traffic-based flood detection.
Roman Arutyunyan <arut@nginx.com>
parents:
8829
diff
changeset
|
145 off_t total_bytes; |
72b304f6207c
HTTP/3: traffic-based flood detection.
Roman Arutyunyan <arut@nginx.com>
parents:
8829
diff
changeset
|
146 off_t payload_bytes; |
72b304f6207c
HTTP/3: traffic-based flood detection.
Roman Arutyunyan <arut@nginx.com>
parents:
8829
diff
changeset
|
147 |
9054
6546c2ae1c7b
HTTP/3: unified hq code with regular HTTP/3 code.
Roman Arutyunyan <arut@nginx.com>
parents:
9020
diff
changeset
|
148 unsigned goaway:1; |
6546c2ae1c7b
HTTP/3: unified hq code with regular HTTP/3 code.
Roman Arutyunyan <arut@nginx.com>
parents:
9020
diff
changeset
|
149 #if (NGX_HTTP_V3_HQ) |
6546c2ae1c7b
HTTP/3: unified hq code with regular HTTP/3 code.
Roman Arutyunyan <arut@nginx.com>
parents:
9020
diff
changeset
|
150 unsigned hq:1; |
6546c2ae1c7b
HTTP/3: unified hq code with regular HTTP/3 code.
Roman Arutyunyan <arut@nginx.com>
parents:
9020
diff
changeset
|
151 #endif |
8742
47a43b011dec
HTTP/3: keepalive_time support.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8740
diff
changeset
|
152 |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
153 ngx_connection_t *known_streams[NGX_HTTP_V3_MAX_KNOWN_STREAM]; |
8769
9ec3e71f8a61
HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents:
8768
diff
changeset
|
154 }; |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
155 |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
156 |
8679
e1eb7f4ca9f1
HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8653
diff
changeset
|
157 void ngx_http_v3_init(ngx_connection_t *c); |
8903
0d3bf08eaac0
HTTP/3: allowed QUIC stream connection reuse.
Roman Arutyunyan <arut@nginx.com>
parents:
8881
diff
changeset
|
158 void ngx_http_v3_reset_connection(ngx_connection_t *c); |
8773
b43e50f47b2e
HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
8772
diff
changeset
|
159 ngx_int_t ngx_http_v3_init_session(ngx_connection_t *c); |
8881
72b304f6207c
HTTP/3: traffic-based flood detection.
Roman Arutyunyan <arut@nginx.com>
parents:
8829
diff
changeset
|
160 ngx_int_t ngx_http_v3_check_flood(ngx_connection_t *c); |
8773
b43e50f47b2e
HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
8772
diff
changeset
|
161 |
8689
6bd8ed493b85
HTTP/3: refactored request body parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8681
diff
changeset
|
162 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:
8681
diff
changeset
|
163 ngx_int_t ngx_http_v3_read_unbuffered_request_body(ngx_http_request_t *r); |
8215 | 164 |
165 | |
166 extern ngx_module_t ngx_http_v3_module; | |
167 | |
168 | |
169 #endif /* _NGX_HTTP_V3_H_INCLUDED_ */ |