Mercurial > hg > nginx
annotate src/http/v3/ngx_http_v3.h @ 9052:2e51cf3ffd90 quic
QUIC: defer stream removal until all its data is acked.
Previously, stream was kept alive until all its data is sent. This resulted
in disabling retransmission of final part of stream when QUIC connection
was closed right after closing stream connection.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Mon, 22 Aug 2022 15:33:23 +0400 |
parents | efbcdb9b37dc |
children | 6546c2ae1c7b |
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 |
8742
47a43b011dec
HTTP/3: keepalive_time support.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8740
diff
changeset
|
148 ngx_uint_t goaway; /* unsigned goaway:1; */ |
47a43b011dec
HTTP/3: keepalive_time support.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8740
diff
changeset
|
149 |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
150 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
|
151 }; |
8456
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
152 |
c9538aef3211
HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents:
8454
diff
changeset
|
153 |
8679
e1eb7f4ca9f1
HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8653
diff
changeset
|
154 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
|
155 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
|
156 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
|
157 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
|
158 |
8689
6bd8ed493b85
HTTP/3: refactored request body parser.
Roman Arutyunyan <arut@nginx.com>
parents:
8681
diff
changeset
|
159 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
|
160 ngx_int_t ngx_http_v3_read_unbuffered_request_body(ngx_http_request_t *r); |
8215 | 161 |
162 | |
163 extern ngx_module_t ngx_http_v3_module; | |
164 | |
165 | |
166 #endif /* _NGX_HTTP_V3_H_INCLUDED_ */ |