Mercurial > hg > nginx-quic
comparison src/http/v3/ngx_http_v3_module.c @ 8713:d6ef13c5fd8e quic
QUIC: simplified configuration.
Directives that set transport parameters are removed from the configuration.
Corresponding values are derived from the quic configuration or initialized
to default. Whenever possible, quic configuration parameters are taken from
higher-level protocol settings, i.e. HTTP/3.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 06 Dec 2021 15:19:54 +0300 |
parents | 651cc905b7c2 |
children | 7106a918a277 |
comparison
equal
deleted
inserted
replaced
8712:651cc905b7c2 | 8713:d6ef13c5fd8e |
---|---|
14 ngx_http_variable_value_t *v, uintptr_t data); | 14 ngx_http_variable_value_t *v, uintptr_t data); |
15 static ngx_int_t ngx_http_v3_add_variables(ngx_conf_t *cf); | 15 static ngx_int_t ngx_http_v3_add_variables(ngx_conf_t *cf); |
16 static void *ngx_http_v3_create_srv_conf(ngx_conf_t *cf); | 16 static void *ngx_http_v3_create_srv_conf(ngx_conf_t *cf); |
17 static char *ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, | 17 static char *ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, |
18 void *child); | 18 void *child); |
19 static char *ngx_http_quic_max_ack_delay(ngx_conf_t *cf, void *post, | 19 static char *ngx_http_quic_mtu(ngx_conf_t *cf, void *post, |
20 void *data); | |
21 static char *ngx_http_quic_max_udp_payload_size(ngx_conf_t *cf, void *post, | |
22 void *data); | 20 void *data); |
23 static char *ngx_http_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd, | 21 static char *ngx_http_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd, |
24 void *conf); | 22 void *conf); |
25 static void *ngx_http_v3_create_loc_conf(ngx_conf_t *cf); | 23 static void *ngx_http_v3_create_loc_conf(ngx_conf_t *cf); |
26 static char *ngx_http_v3_merge_loc_conf(ngx_conf_t *cf, void *parent, | 24 static char *ngx_http_v3_merge_loc_conf(ngx_conf_t *cf, void *parent, |
27 void *child); | 25 void *child); |
28 static char *ngx_http_v3_push(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); | 26 static char *ngx_http_v3_push(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
29 | 27 |
30 | 28 |
31 static ngx_conf_post_t ngx_http_quic_max_ack_delay_post = | 29 static ngx_conf_post_t ngx_http_quic_mtu_post = |
32 { ngx_http_quic_max_ack_delay }; | 30 { ngx_http_quic_mtu }; |
33 static ngx_conf_post_t ngx_http_quic_max_udp_payload_size_post = | |
34 { ngx_http_quic_max_udp_payload_size }; | |
35 static ngx_conf_num_bounds_t ngx_http_quic_ack_delay_exponent_bounds = | |
36 { ngx_conf_check_num_bounds, 0, 20 }; | |
37 static ngx_conf_num_bounds_t ngx_http_quic_active_connection_id_limit_bounds = | |
38 { ngx_conf_check_num_bounds, 2, -1 }; | |
39 | 31 |
40 | 32 |
41 static ngx_command_t ngx_http_v3_commands[] = { | 33 static ngx_command_t ngx_http_v3_commands[] = { |
42 | |
43 { ngx_string("http3_max_table_capacity"), | |
44 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
45 ngx_conf_set_size_slot, | |
46 NGX_HTTP_SRV_CONF_OFFSET, | |
47 offsetof(ngx_http_v3_srv_conf_t, max_table_capacity), | |
48 NULL }, | |
49 | |
50 { ngx_string("http3_max_blocked_streams"), | |
51 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
52 ngx_conf_set_num_slot, | |
53 NGX_HTTP_SRV_CONF_OFFSET, | |
54 offsetof(ngx_http_v3_srv_conf_t, max_blocked_streams), | |
55 NULL }, | |
56 | 34 |
57 { ngx_string("http3_max_concurrent_pushes"), | 35 { ngx_string("http3_max_concurrent_pushes"), |
58 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | 36 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
59 ngx_conf_set_num_slot, | 37 ngx_conf_set_num_slot, |
60 NGX_HTTP_SRV_CONF_OFFSET, | 38 NGX_HTTP_SRV_CONF_OFFSET, |
61 offsetof(ngx_http_v3_srv_conf_t, max_concurrent_pushes), | 39 offsetof(ngx_http_v3_srv_conf_t, max_concurrent_pushes), |
62 NULL }, | 40 NULL }, |
63 | 41 |
64 { ngx_string("http3_max_uni_streams"), | 42 { ngx_string("http3_max_concurrent_streams"), |
65 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | 43 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
66 ngx_conf_set_num_slot, | 44 ngx_conf_set_num_slot, |
67 NGX_HTTP_SRV_CONF_OFFSET, | 45 NGX_HTTP_SRV_CONF_OFFSET, |
68 offsetof(ngx_http_v3_srv_conf_t, max_uni_streams), | 46 offsetof(ngx_http_v3_srv_conf_t, max_concurrent_streams), |
69 NULL }, | 47 NULL }, |
70 | 48 |
71 #if (NGX_HTTP_V3_HQ) | 49 #if (NGX_HTTP_V3_HQ) |
72 { ngx_string("http3_hq"), | 50 { ngx_string("http3_hq"), |
73 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, | 51 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, |
89 ngx_conf_set_flag_slot, | 67 ngx_conf_set_flag_slot, |
90 NGX_HTTP_LOC_CONF_OFFSET, | 68 NGX_HTTP_LOC_CONF_OFFSET, |
91 offsetof(ngx_http_v3_loc_conf_t, push_preload), | 69 offsetof(ngx_http_v3_loc_conf_t, push_preload), |
92 NULL }, | 70 NULL }, |
93 | 71 |
94 { ngx_string("quic_max_idle_timeout"), | 72 { ngx_string("http3_stream_buffer_size"), |
95 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
96 ngx_conf_set_msec_slot, | |
97 NGX_HTTP_SRV_CONF_OFFSET, | |
98 offsetof(ngx_http_v3_srv_conf_t, quic.tp.max_idle_timeout), | |
99 NULL }, | |
100 | |
101 { ngx_string("quic_max_ack_delay"), | |
102 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
103 ngx_conf_set_msec_slot, | |
104 NGX_HTTP_SRV_CONF_OFFSET, | |
105 offsetof(ngx_http_v3_srv_conf_t, quic.tp.max_ack_delay), | |
106 &ngx_http_quic_max_ack_delay_post }, | |
107 | |
108 { ngx_string("quic_max_udp_payload_size"), | |
109 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | 73 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
110 ngx_conf_set_size_slot, | 74 ngx_conf_set_size_slot, |
111 NGX_HTTP_SRV_CONF_OFFSET, | 75 NGX_HTTP_SRV_CONF_OFFSET, |
112 offsetof(ngx_http_v3_srv_conf_t, quic.tp.max_udp_payload_size), | 76 offsetof(ngx_http_v3_srv_conf_t, quic.stream_buffer_size), |
113 &ngx_http_quic_max_udp_payload_size_post }, | 77 NULL }, |
114 | |
115 { ngx_string("quic_initial_max_data"), | |
116 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
117 ngx_conf_set_size_slot, | |
118 NGX_HTTP_SRV_CONF_OFFSET, | |
119 offsetof(ngx_http_v3_srv_conf_t, quic.tp.initial_max_data), | |
120 NULL }, | |
121 | |
122 { ngx_string("quic_initial_max_stream_data_bidi_local"), | |
123 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
124 ngx_conf_set_size_slot, | |
125 NGX_HTTP_SRV_CONF_OFFSET, | |
126 offsetof(ngx_http_v3_srv_conf_t, | |
127 quic.tp.initial_max_stream_data_bidi_local), | |
128 NULL }, | |
129 | |
130 { ngx_string("quic_initial_max_stream_data_bidi_remote"), | |
131 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
132 ngx_conf_set_size_slot, | |
133 NGX_HTTP_SRV_CONF_OFFSET, | |
134 offsetof(ngx_http_v3_srv_conf_t, | |
135 quic.tp.initial_max_stream_data_bidi_remote), | |
136 NULL }, | |
137 | |
138 { ngx_string("quic_initial_max_stream_data_uni"), | |
139 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
140 ngx_conf_set_size_slot, | |
141 NGX_HTTP_SRV_CONF_OFFSET, | |
142 offsetof(ngx_http_v3_srv_conf_t, quic.tp.initial_max_stream_data_uni), | |
143 NULL }, | |
144 | |
145 { ngx_string("quic_initial_max_streams_bidi"), | |
146 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
147 ngx_conf_set_num_slot, | |
148 NGX_HTTP_SRV_CONF_OFFSET, | |
149 offsetof(ngx_http_v3_srv_conf_t, quic.tp.initial_max_streams_bidi), | |
150 NULL }, | |
151 | |
152 { ngx_string("quic_initial_max_streams_uni"), | |
153 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
154 ngx_conf_set_num_slot, | |
155 NGX_HTTP_SRV_CONF_OFFSET, | |
156 offsetof(ngx_http_v3_srv_conf_t, quic.tp.initial_max_streams_uni), | |
157 NULL }, | |
158 | |
159 { ngx_string("quic_ack_delay_exponent"), | |
160 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
161 ngx_conf_set_num_slot, | |
162 NGX_HTTP_SRV_CONF_OFFSET, | |
163 offsetof(ngx_http_v3_srv_conf_t, quic.tp.ack_delay_exponent), | |
164 &ngx_http_quic_ack_delay_exponent_bounds }, | |
165 | |
166 { ngx_string("quic_disable_active_migration"), | |
167 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
168 ngx_conf_set_flag_slot, | |
169 NGX_HTTP_SRV_CONF_OFFSET, | |
170 offsetof(ngx_http_v3_srv_conf_t, quic.tp.disable_active_migration), | |
171 NULL }, | |
172 | |
173 { ngx_string("quic_active_connection_id_limit"), | |
174 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
175 ngx_conf_set_num_slot, | |
176 NGX_HTTP_SRV_CONF_OFFSET, | |
177 offsetof(ngx_http_v3_srv_conf_t, quic.tp.active_connection_id_limit), | |
178 &ngx_http_quic_active_connection_id_limit_bounds }, | |
179 | 78 |
180 { ngx_string("quic_retry"), | 79 { ngx_string("quic_retry"), |
181 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, | 80 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, |
182 ngx_conf_set_flag_slot, | 81 ngx_conf_set_flag_slot, |
183 NGX_HTTP_SRV_CONF_OFFSET, | 82 NGX_HTTP_SRV_CONF_OFFSET, |
188 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, | 87 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, |
189 ngx_conf_set_flag_slot, | 88 ngx_conf_set_flag_slot, |
190 NGX_HTTP_SRV_CONF_OFFSET, | 89 NGX_HTTP_SRV_CONF_OFFSET, |
191 offsetof(ngx_http_v3_srv_conf_t, quic.gso_enabled), | 90 offsetof(ngx_http_v3_srv_conf_t, quic.gso_enabled), |
192 NULL }, | 91 NULL }, |
92 | |
93 { ngx_string("quic_mtu"), | |
94 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
95 ngx_conf_set_size_slot, | |
96 NGX_HTTP_SRV_CONF_OFFSET, | |
97 offsetof(ngx_http_v3_srv_conf_t, quic.mtu), | |
98 &ngx_http_quic_mtu_post }, | |
193 | 99 |
194 { ngx_string("quic_host_key"), | 100 { ngx_string("quic_host_key"), |
195 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | 101 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
196 ngx_http_quic_host_key, | 102 ngx_http_quic_host_key, |
197 NGX_HTTP_SRV_CONF_OFFSET, | 103 NGX_HTTP_SRV_CONF_OFFSET, |
311 } | 217 } |
312 | 218 |
313 /* | 219 /* |
314 * set by ngx_pcalloc(): | 220 * set by ngx_pcalloc(): |
315 * | 221 * |
316 * h3scf->quic.tp.original_dcid = { 0, NULL }; | |
317 * h3scf->quic.tp.initial_scid = { 0, NULL }; | |
318 * h3scf->quic.tp.retry_scid = { 0, NULL }; | |
319 * h3scf->quic.tp.sr_token = { 0 } | |
320 * h3scf->quic.tp.sr_enabled = 0 | |
321 * h3scf->quic.tp.preferred_address = NULL | |
322 * h3scf->quic.host_key = { 0, NULL } | 222 * h3scf->quic.host_key = { 0, NULL } |
323 * h3scf->quic.stream_reject_code_uni = 0; | 223 * h3scf->quic.stream_reject_code_uni = 0; |
224 * h3scf->quic.disable_active_migration = 0; | |
225 * h3scf->quic.timeout = 0; | |
226 * h3scf->max_blocked_streams = 0; | |
324 */ | 227 */ |
325 | 228 h3scf->max_table_capacity = NGX_HTTP_V3_MAX_TABLE_CAPACITY; |
326 h3scf->max_table_capacity = NGX_CONF_UNSET_SIZE; | |
327 h3scf->max_blocked_streams = NGX_CONF_UNSET_UINT; | |
328 h3scf->max_concurrent_pushes = NGX_CONF_UNSET_UINT; | 229 h3scf->max_concurrent_pushes = NGX_CONF_UNSET_UINT; |
329 h3scf->max_uni_streams = NGX_CONF_UNSET_UINT; | 230 h3scf->max_concurrent_streams = NGX_CONF_UNSET_UINT; |
330 #if (NGX_HTTP_V3_HQ) | 231 #if (NGX_HTTP_V3_HQ) |
331 h3scf->hq = NGX_CONF_UNSET; | 232 h3scf->hq = NGX_CONF_UNSET; |
332 #endif | 233 #endif |
333 | 234 |
334 h3scf->quic.tp.max_idle_timeout = NGX_CONF_UNSET_MSEC; | 235 h3scf->quic.mtu = NGX_CONF_UNSET_SIZE; |
335 h3scf->quic.tp.max_ack_delay = NGX_CONF_UNSET_MSEC; | 236 h3scf->quic.stream_buffer_size = NGX_CONF_UNSET_SIZE; |
336 h3scf->quic.tp.max_udp_payload_size = NGX_CONF_UNSET_SIZE; | 237 h3scf->quic.max_concurrent_streams_bidi = NGX_CONF_UNSET_UINT; |
337 h3scf->quic.tp.initial_max_data = NGX_CONF_UNSET_SIZE; | 238 h3scf->quic.max_concurrent_streams_uni = NGX_HTTP_V3_MAX_UNI_STREAMS; |
338 h3scf->quic.tp.initial_max_stream_data_bidi_local = NGX_CONF_UNSET_SIZE; | |
339 h3scf->quic.tp.initial_max_stream_data_bidi_remote = NGX_CONF_UNSET_SIZE; | |
340 h3scf->quic.tp.initial_max_stream_data_uni = NGX_CONF_UNSET_SIZE; | |
341 h3scf->quic.tp.initial_max_streams_bidi = NGX_CONF_UNSET_UINT; | |
342 h3scf->quic.tp.initial_max_streams_uni = NGX_CONF_UNSET_UINT; | |
343 h3scf->quic.tp.ack_delay_exponent = NGX_CONF_UNSET_UINT; | |
344 h3scf->quic.tp.disable_active_migration = NGX_CONF_UNSET; | |
345 h3scf->quic.tp.active_connection_id_limit = NGX_CONF_UNSET_UINT; | |
346 | |
347 h3scf->quic.retry = NGX_CONF_UNSET; | 239 h3scf->quic.retry = NGX_CONF_UNSET; |
348 h3scf->quic.gso_enabled = NGX_CONF_UNSET; | 240 h3scf->quic.gso_enabled = NGX_CONF_UNSET; |
349 h3scf->quic.stream_close_code = NGX_HTTP_V3_ERR_NO_ERROR; | 241 h3scf->quic.stream_close_code = NGX_HTTP_V3_ERR_NO_ERROR; |
350 h3scf->quic.stream_reject_code_bidi = NGX_HTTP_V3_ERR_REQUEST_REJECTED; | 242 h3scf->quic.stream_reject_code_bidi = NGX_HTTP_V3_ERR_REQUEST_REJECTED; |
351 | 243 |
359 ngx_http_v3_srv_conf_t *prev = parent; | 251 ngx_http_v3_srv_conf_t *prev = parent; |
360 ngx_http_v3_srv_conf_t *conf = child; | 252 ngx_http_v3_srv_conf_t *conf = child; |
361 | 253 |
362 ngx_http_ssl_srv_conf_t *sscf; | 254 ngx_http_ssl_srv_conf_t *sscf; |
363 | 255 |
364 ngx_conf_merge_size_value(conf->max_table_capacity, | |
365 prev->max_table_capacity, 16384); | |
366 | |
367 ngx_conf_merge_uint_value(conf->max_blocked_streams, | |
368 prev->max_blocked_streams, 16); | |
369 | |
370 ngx_conf_merge_uint_value(conf->max_concurrent_pushes, | 256 ngx_conf_merge_uint_value(conf->max_concurrent_pushes, |
371 prev->max_concurrent_pushes, 10); | 257 prev->max_concurrent_pushes, 10); |
372 | 258 |
373 ngx_conf_merge_uint_value(conf->max_uni_streams, | 259 ngx_conf_merge_uint_value(conf->max_concurrent_streams, |
374 prev->max_uni_streams, 3); | 260 prev->max_concurrent_streams, 128); |
261 | |
262 conf->max_blocked_streams = conf->max_concurrent_streams; | |
375 | 263 |
376 #if (NGX_HTTP_V3_HQ) | 264 #if (NGX_HTTP_V3_HQ) |
377 ngx_conf_merge_value(conf->hq, prev->hq, 0); | 265 ngx_conf_merge_value(conf->hq, prev->hq, 0); |
378 #endif | 266 #endif |
379 | 267 |
380 ngx_conf_merge_msec_value(conf->quic.tp.max_idle_timeout, | 268 |
381 prev->quic.tp.max_idle_timeout, 60000); | 269 ngx_conf_merge_size_value(conf->quic.mtu, prev->quic.mtu, |
382 | |
383 ngx_conf_merge_msec_value(conf->quic.tp.max_ack_delay, | |
384 prev->quic.tp.max_ack_delay, | |
385 NGX_QUIC_DEFAULT_MAX_ACK_DELAY); | |
386 | |
387 ngx_conf_merge_size_value(conf->quic.tp.max_udp_payload_size, | |
388 prev->quic.tp.max_udp_payload_size, | |
389 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE); | 270 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE); |
390 | 271 |
391 ngx_conf_merge_size_value(conf->quic.tp.initial_max_data, | 272 ngx_conf_merge_size_value(conf->quic.stream_buffer_size, |
392 prev->quic.tp.initial_max_data, | 273 prev->quic.stream_buffer_size, |
393 16 * NGX_QUIC_STREAM_BUFSIZE); | 274 65536); |
394 | 275 |
395 ngx_conf_merge_size_value(conf->quic.tp.initial_max_stream_data_bidi_local, | 276 conf->quic.max_concurrent_streams_bidi = conf->max_concurrent_streams; |
396 prev->quic.tp.initial_max_stream_data_bidi_local, | |
397 NGX_QUIC_STREAM_BUFSIZE); | |
398 | |
399 ngx_conf_merge_size_value(conf->quic.tp.initial_max_stream_data_bidi_remote, | |
400 prev->quic.tp.initial_max_stream_data_bidi_remote, | |
401 NGX_QUIC_STREAM_BUFSIZE); | |
402 | |
403 ngx_conf_merge_size_value(conf->quic.tp.initial_max_stream_data_uni, | |
404 prev->quic.tp.initial_max_stream_data_uni, | |
405 NGX_QUIC_STREAM_BUFSIZE); | |
406 | |
407 ngx_conf_merge_uint_value(conf->quic.tp.initial_max_streams_bidi, | |
408 prev->quic.tp.initial_max_streams_bidi, 16); | |
409 | |
410 ngx_conf_merge_uint_value(conf->quic.tp.initial_max_streams_uni, | |
411 prev->quic.tp.initial_max_streams_uni, 3); | |
412 | |
413 ngx_conf_merge_uint_value(conf->quic.tp.ack_delay_exponent, | |
414 prev->quic.tp.ack_delay_exponent, | |
415 NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT); | |
416 | |
417 ngx_conf_merge_value(conf->quic.tp.disable_active_migration, | |
418 prev->quic.tp.disable_active_migration, 0); | |
419 | |
420 ngx_conf_merge_uint_value(conf->quic.tp.active_connection_id_limit, | |
421 prev->quic.tp.active_connection_id_limit, 2); | |
422 | 277 |
423 ngx_conf_merge_value(conf->quic.retry, prev->quic.retry, 0); | 278 ngx_conf_merge_value(conf->quic.retry, prev->quic.retry, 0); |
424 ngx_conf_merge_value(conf->quic.gso_enabled, prev->quic.gso_enabled, 0); | 279 ngx_conf_merge_value(conf->quic.gso_enabled, prev->quic.gso_enabled, 0); |
425 | 280 |
426 ngx_conf_merge_str_value(conf->quic.host_key, prev->quic.host_key, ""); | 281 ngx_conf_merge_str_value(conf->quic.host_key, prev->quic.host_key, ""); |
463 return NGX_CONF_OK; | 318 return NGX_CONF_OK; |
464 } | 319 } |
465 | 320 |
466 | 321 |
467 static char * | 322 static char * |
468 ngx_http_quic_max_ack_delay(ngx_conf_t *cf, void *post, void *data) | 323 ngx_http_quic_mtu(ngx_conf_t *cf, void *post, void *data) |
469 { | |
470 ngx_msec_t *sp = data; | |
471 | |
472 if (*sp >= 16384) { | |
473 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
474 "\"quic_max_ack_delay\" must be less than 16384"); | |
475 | |
476 return NGX_CONF_ERROR; | |
477 } | |
478 | |
479 return NGX_CONF_OK; | |
480 } | |
481 | |
482 | |
483 static char * | |
484 ngx_http_quic_max_udp_payload_size(ngx_conf_t *cf, void *post, void *data) | |
485 { | 324 { |
486 size_t *sp = data; | 325 size_t *sp = data; |
487 | 326 |
488 if (*sp < NGX_QUIC_MIN_INITIAL_SIZE | 327 if (*sp < NGX_QUIC_MIN_INITIAL_SIZE |
489 || *sp > NGX_QUIC_MAX_UDP_PAYLOAD_SIZE) | 328 || *sp > NGX_QUIC_MAX_UDP_PAYLOAD_SIZE) |
490 { | 329 { |
491 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | 330 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
492 "\"quic_max_udp_payload_size\" must be between " | 331 "\"quic_mtu\" must be between %d and %d", |
493 "%d and %d", | |
494 NGX_QUIC_MIN_INITIAL_SIZE, | 332 NGX_QUIC_MIN_INITIAL_SIZE, |
495 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE); | 333 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE); |
496 | 334 |
497 return NGX_CONF_ERROR; | 335 return NGX_CONF_ERROR; |
498 } | 336 } |