annotate src/http/v3/ngx_http_v3_parse.h @ 8549:d70a38acaea0 quic

HTTP/3: skip unknown frames on request stream. As per HTTP/3 draft 29, section 4.1: Frames of unknown types (Section 9), including reserved frames (Section 7.2.8) MAY be sent on a request or push stream before, after, or interleaved with other frames described in this section. Also, trailers frame is now used as an indication of the request body end.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 24 Aug 2020 09:56:36 +0300
parents 72f9ff4e0a88
children ab6aaa8e86b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8226
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2 /*
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 * Copyright (C) Roman Arutyunyan
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4 * Copyright (C) Nginx, Inc.
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 */
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
8 #ifndef _NGX_HTTP_V3_PARSE_H_INCLUDED_
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
9 #define _NGX_HTTP_V3_PARSE_H_INCLUDED_
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12 #include <ngx_config.h>
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13 #include <ngx_core.h>
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
14 #include <ngx_http.h>
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
15
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
16
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
17 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
18 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
19 uint64_t value;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
20 } ngx_http_v3_parse_varlen_int_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
21
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
22
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
23 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
24 ngx_uint_t state;
8455
b0e81f49d7c0 HTTP/3: fixed prefixed integer encoding and decoding.
Roman Arutyunyan <arut@nginx.com>
parents: 8295
diff changeset
25 ngx_uint_t shift;
8226
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
26 uint64_t value;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
27 } ngx_http_v3_parse_prefix_int_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
28
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
29
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
30 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
31 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
32 uint64_t id;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
33 ngx_http_v3_parse_varlen_int_t vlint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
34 } ngx_http_v3_parse_settings_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
35
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
36
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
37 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
38 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
39 ngx_uint_t insert_count;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
40 ngx_uint_t delta_base;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
41 ngx_uint_t sign;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
42 ngx_uint_t base;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
43 ngx_http_v3_parse_prefix_int_t pint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
44 } ngx_http_v3_parse_header_block_prefix_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
45
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
46
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
47 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
48 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
49 ngx_uint_t length;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
50 ngx_uint_t huffman;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
51 ngx_str_t value;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
52 u_char *last;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
53 u_char huffstate;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
54 } ngx_http_v3_parse_literal_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
55
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
56
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
57 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
58 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
59 ngx_uint_t index;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
60 ngx_uint_t base;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
61 ngx_uint_t dynamic;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
62
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
63 ngx_str_t name;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
64 ngx_str_t value;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
65
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
66 ngx_http_v3_parse_prefix_int_t pint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
67 ngx_http_v3_parse_literal_t literal;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
68 } ngx_http_v3_parse_header_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
69
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
70
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
71 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
72 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
73 ngx_http_v3_parse_header_t header;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
74 } ngx_http_v3_parse_header_rep_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
75
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
76
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
77 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
78 ngx_uint_t state;
8549
d70a38acaea0 HTTP/3: skip unknown frames on request stream.
Roman Arutyunyan <arut@nginx.com>
parents: 8460
diff changeset
79 ngx_uint_t type;
8226
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
80 ngx_uint_t length;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
81 ngx_http_v3_parse_varlen_int_t vlint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
82 ngx_http_v3_parse_header_block_prefix_t prefix;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
83 ngx_http_v3_parse_header_rep_t header_rep;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
84 } ngx_http_v3_parse_headers_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
85
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
86
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
87 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
88 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
89 ngx_http_v3_parse_header_t header;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
90 ngx_http_v3_parse_prefix_int_t pint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
91 } ngx_http_v3_parse_encoder_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
92
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
93
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
94 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
95 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
96 ngx_http_v3_parse_prefix_int_t pint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
97 } ngx_http_v3_parse_decoder_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
98
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
99
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
100 typedef struct {
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
101 ngx_uint_t state;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
102 ngx_uint_t type;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
103 ngx_uint_t length;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
104 ngx_http_v3_parse_varlen_int_t vlint;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
105 ngx_http_v3_parse_settings_t settings;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
106 } ngx_http_v3_parse_control_t;
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
107
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
108
8295
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
109 typedef struct {
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
110 ngx_uint_t state;
8549
d70a38acaea0 HTTP/3: skip unknown frames on request stream.
Roman Arutyunyan <arut@nginx.com>
parents: 8460
diff changeset
111 ngx_uint_t type;
8295
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
112 ngx_uint_t length;
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
113 ngx_http_v3_parse_varlen_int_t vlint;
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
114 } ngx_http_v3_parse_data_t;
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
115
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
116
8460
72f9ff4e0a88 HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents: 8455
diff changeset
117 /*
72f9ff4e0a88 HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents: 8455
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: 8455
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: 8455
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: 8455
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: 8455
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: 8455
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: 8455
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: 8455
diff changeset
125 */
72f9ff4e0a88 HTTP/3: close QUIC connection with HTTP/QPACK errors when needed.
Roman Arutyunyan <arut@nginx.com>
parents: 8455
diff changeset
126
8226
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
127 ngx_int_t ngx_http_v3_parse_varlen_int(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
128 ngx_http_v3_parse_varlen_int_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
129 ngx_int_t ngx_http_v3_parse_prefix_int(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
130 ngx_http_v3_parse_prefix_int_t *st, ngx_uint_t prefix, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
131
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
132 ngx_int_t ngx_http_v3_parse_headers(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
133 ngx_http_v3_parse_headers_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
134 ngx_int_t ngx_http_v3_parse_header_block_prefix(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
135 ngx_http_v3_parse_header_block_prefix_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
136 ngx_int_t ngx_http_v3_parse_header_rep(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
137 ngx_http_v3_parse_header_rep_t *st, ngx_uint_t base, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
138 ngx_int_t ngx_http_v3_parse_literal(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
139 ngx_http_v3_parse_literal_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
140 ngx_int_t ngx_http_v3_parse_header_ri(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
141 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
142 ngx_int_t ngx_http_v3_parse_header_lri(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
143 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
144 ngx_int_t ngx_http_v3_parse_header_l(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
145 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
146 ngx_int_t ngx_http_v3_parse_header_pbi(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
147 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
148 ngx_int_t ngx_http_v3_parse_header_lpbi(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
149 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
150
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
151 ngx_int_t ngx_http_v3_parse_control(ngx_connection_t *c, void *data, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
152 ngx_int_t ngx_http_v3_parse_settings(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
153 ngx_http_v3_parse_settings_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
154
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
155 ngx_int_t ngx_http_v3_parse_encoder(ngx_connection_t *c, void *data, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
156 ngx_int_t ngx_http_v3_parse_header_inr(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
157 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
158 ngx_int_t ngx_http_v3_parse_header_iwnr(ngx_connection_t *c,
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
159 ngx_http_v3_parse_header_t *st, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
160
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
161 ngx_int_t ngx_http_v3_parse_decoder(ngx_connection_t *c, void *data, u_char ch);
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
162
8295
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
163 ngx_int_t ngx_http_v3_parse_data(ngx_connection_t *c,
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
164 ngx_http_v3_parse_data_t *st, u_char ch);
5649079a41f4 Parsing HTTP/3 request body.
Roman Arutyunyan <arut@nginx.com>
parents: 8226
diff changeset
165
8226
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
166
268f4389130d Refactored HTTP/3 parser.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
167 #endif /* _NGX_HTTP_V3_PARSE_H_INCLUDED_ */