Mercurial > hg > nginx-quic
annotate src/http/v3/ngx_http_v3_parse.h @ 8387:76f476ce4d31 quic
QUIC: distinct files for connection migration.
The connection migration-related code from quic.c with dependencies is moved
into separate file.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 31 Mar 2021 14:57:15 +0300 |
parents | ab6aaa8e86b0 |
children | 345370fdd32d |
rev | line source |
---|---|
7692 | 1 |
2 /* | |
3 * Copyright (C) Roman Arutyunyan | |
4 * Copyright (C) Nginx, Inc. | |
5 */ | |
6 | |
7 | |
8 #ifndef _NGX_HTTP_V3_PARSE_H_INCLUDED_ | |
9 #define _NGX_HTTP_V3_PARSE_H_INCLUDED_ | |
10 | |
11 | |
12 #include <ngx_config.h> | |
13 #include <ngx_core.h> | |
14 #include <ngx_http.h> | |
15 | |
16 | |
17 typedef struct { | |
18 ngx_uint_t state; | |
19 uint64_t value; | |
20 } ngx_http_v3_parse_varlen_int_t; | |
21 | |
22 | |
23 typedef struct { | |
24 ngx_uint_t state; | |
7950
b0e81f49d7c0
HTTP/3: fixed prefixed integer encoding and decoding.
Roman Arutyunyan <arut@nginx.com>
parents:
7761
diff
changeset
|
25 ngx_uint_t shift; |
7692 | 26 uint64_t value; |
27 } ngx_http_v3_parse_prefix_int_t; | |
28 | |
29 | |
30 typedef struct { | |
31 ngx_uint_t state; | |
32 uint64_t id; | |
33 ngx_http_v3_parse_varlen_int_t vlint; | |
34 } ngx_http_v3_parse_settings_t; | |
35 | |
36 | |
37 typedef struct { | |
38 ngx_uint_t state; | |
39 ngx_uint_t insert_count; | |
40 ngx_uint_t delta_base; | |
41 ngx_uint_t sign; | |
42 ngx_uint_t base; | |
43 ngx_http_v3_parse_prefix_int_t pint; | |
44 } ngx_http_v3_parse_header_block_prefix_t; | |
45 | |
46 | |
47 typedef struct { | |
48 ngx_uint_t state; | |
49 ngx_uint_t length; | |
50 ngx_uint_t huffman; | |
51 ngx_str_t value; | |
52 u_char *last; | |
53 u_char huffstate; | |
54 } ngx_http_v3_parse_literal_t; | |
55 | |
56 | |
57 typedef struct { | |
58 ngx_uint_t state; | |
59 ngx_uint_t index; | |
60 ngx_uint_t base; | |
61 ngx_uint_t dynamic; | |
62 | |
63 ngx_str_t name; | |
64 ngx_str_t value; | |
65 | |
66 ngx_http_v3_parse_prefix_int_t pint; | |
67 ngx_http_v3_parse_literal_t literal; | |
68 } ngx_http_v3_parse_header_t; | |
69 | |
70 | |
71 typedef struct { | |
72 ngx_uint_t state; | |
73 ngx_http_v3_parse_header_t header; | |
74 } ngx_http_v3_parse_header_rep_t; | |
75 | |
76 | |
77 typedef struct { | |
78 ngx_uint_t state; | |
8087
d70a38acaea0
HTTP/3: skip unknown frames on request stream.
Roman Arutyunyan <arut@nginx.com>
parents:
7955
diff
changeset
|
79 ngx_uint_t type; |
7692 | 80 ngx_uint_t length; |
81 ngx_http_v3_parse_varlen_int_t vlint; | |
82 ngx_http_v3_parse_header_block_prefix_t prefix; | |
83 ngx_http_v3_parse_header_rep_t header_rep; | |
84 } ngx_http_v3_parse_headers_t; | |
85 | |
86 | |
87 typedef struct { | |
88 ngx_uint_t state; | |
89 ngx_http_v3_parse_header_t header; | |
90 ngx_http_v3_parse_prefix_int_t pint; | |
91 } ngx_http_v3_parse_encoder_t; | |
92 | |
93 | |
94 typedef struct { | |
95 ngx_uint_t state; | |
96 ngx_http_v3_parse_prefix_int_t pint; | |
97 } ngx_http_v3_parse_decoder_t; | |
98 | |
99 | |
100 typedef struct { | |
101 ngx_uint_t state; | |
102 ngx_uint_t type; | |
103 ngx_uint_t length; | |
104 ngx_http_v3_parse_varlen_int_t vlint; | |
105 ngx_http_v3_parse_settings_t settings; | |
106 } ngx_http_v3_parse_control_t; | |
107 | |
108 | |
7761
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
109 typedef struct { |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
110 ngx_uint_t state; |
8087
d70a38acaea0
HTTP/3: skip unknown frames on request stream.
Roman Arutyunyan <arut@nginx.com>
parents:
7955
diff
changeset
|
111 ngx_uint_t type; |
7761
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
112 ngx_uint_t length; |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
113 ngx_http_v3_parse_varlen_int_t vlint; |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
114 } ngx_http_v3_parse_data_t; |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
115 |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
116 |
7955
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
117 /* |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
118 * Parse functions return codes: |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
119 * NGX_DONE - parsing done |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
120 * NGX_OK - sub-element done |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
121 * NGX_AGAIN - more data expected |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
122 * NGX_BUSY - waiting for external event |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
123 * NGX_ERROR - internal error |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
124 * NGX_HTTP_V3_ERROR_XXX - HTTP/3 or QPACK error |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
125 */ |
72f9ff4e0a88
HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents:
7950
diff
changeset
|
126 |
7692 | 127 ngx_int_t ngx_http_v3_parse_headers(ngx_connection_t *c, |
128 ngx_http_v3_parse_headers_t *st, u_char ch); | |
7761
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
129 ngx_int_t ngx_http_v3_parse_data(ngx_connection_t *c, |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
130 ngx_http_v3_parse_data_t *st, u_char ch); |
5649079a41f4
Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents:
7692
diff
changeset
|
131 |
8259
ab6aaa8e86b0
HTTP/3: staticize internal parsing functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8087
diff
changeset
|
132 ngx_int_t ngx_http_v3_parse_control(ngx_connection_t *c, void *data, u_char ch); |
ab6aaa8e86b0
HTTP/3: staticize internal parsing functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8087
diff
changeset
|
133 ngx_int_t ngx_http_v3_parse_encoder(ngx_connection_t *c, void *data, u_char ch); |
ab6aaa8e86b0
HTTP/3: staticize internal parsing functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8087
diff
changeset
|
134 ngx_int_t ngx_http_v3_parse_decoder(ngx_connection_t *c, void *data, u_char ch); |
ab6aaa8e86b0
HTTP/3: staticize internal parsing functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8087
diff
changeset
|
135 |
7692 | 136 |
137 #endif /* _NGX_HTTP_V3_PARSE_H_INCLUDED_ */ |