Mercurial > hg > nginx
annotate src/http/v3/ngx_http_v3_module.c @ 8454:032cb35ce758 quic
HTTP/3: http3_max_field_size directive to limit string size.
Client streams may send literal strings which are now limited in size by the
new directive. The default value is 4096.
The directive is similar to HTTP/2 directive http2_max_field_size.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Mon, 29 Jun 2020 15:56:14 +0300 |
parents | 6633f17044eb |
children | c9538aef3211 |
rev | line source |
---|---|
8215 | 1 |
2 /* | |
3 * Copyright (C) Nginx, Inc. | |
4 * Copyright (C) Roman Arutyunyan | |
5 */ | |
6 | |
7 | |
8 #include <ngx_config.h> | |
9 #include <ngx_core.h> | |
10 #include <ngx_http.h> | |
11 | |
12 | |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
13 static char *ngx_http_v3_max_ack_delay(ngx_conf_t *cf, void *post, void *data); |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
14 static char *ngx_http_v3_max_udp_payload_size(ngx_conf_t *cf, void *post, |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
15 void *data); |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
16 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
17 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
18 static ngx_conf_post_t ngx_http_v3_max_ack_delay_post = |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
19 { ngx_http_v3_max_ack_delay }; |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
20 static ngx_conf_post_t ngx_http_v3_max_udp_payload_size_post = |
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
21 { ngx_http_v3_max_udp_payload_size }; |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
22 static ngx_conf_num_bounds_t ngx_http_v3_ack_delay_exponent_bounds = |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
23 { ngx_conf_check_num_bounds, 0, 20 }; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
24 static ngx_conf_num_bounds_t ngx_http_v3_active_connection_id_limit_bounds = |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
25 { ngx_conf_check_num_bounds, 2, -1 }; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
26 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
27 |
8215 | 28 static ngx_command_t ngx_http_v3_commands[] = { |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
29 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
30 { ngx_string("quic_max_idle_timeout"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
31 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
32 ngx_conf_set_msec_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
33 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
34 offsetof(ngx_http_v3_srv_conf_t, quic.max_idle_timeout), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
35 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
36 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
37 { ngx_string("quic_max_ack_delay"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
38 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
39 ngx_conf_set_msec_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
40 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
41 offsetof(ngx_http_v3_srv_conf_t, quic.max_ack_delay), |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
42 &ngx_http_v3_max_ack_delay_post }, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
43 |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
44 { ngx_string("quic_max_udp_payload_size"), |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
45 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
46 ngx_conf_set_size_slot, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
47 NGX_HTTP_SRV_CONF_OFFSET, |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
48 offsetof(ngx_http_v3_srv_conf_t, quic.max_udp_payload_size), |
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
49 &ngx_http_v3_max_udp_payload_size_post }, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
50 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
51 { ngx_string("quic_initial_max_data"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
52 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
53 ngx_conf_set_size_slot, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
54 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
55 offsetof(ngx_http_v3_srv_conf_t, quic.initial_max_data), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
56 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
57 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
58 { ngx_string("quic_initial_max_stream_data_bidi_local"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
59 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
60 ngx_conf_set_size_slot, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
61 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
62 offsetof(ngx_http_v3_srv_conf_t, quic.initial_max_stream_data_bidi_local), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
63 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
64 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
65 { ngx_string("quic_initial_max_stream_data_bidi_remote"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
66 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
67 ngx_conf_set_size_slot, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
68 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
69 offsetof(ngx_http_v3_srv_conf_t, quic.initial_max_stream_data_bidi_remote), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
70 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
71 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
72 { ngx_string("quic_initial_max_stream_data_uni"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
73 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
74 ngx_conf_set_size_slot, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
75 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
76 offsetof(ngx_http_v3_srv_conf_t, quic.initial_max_stream_data_uni), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
77 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
78 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
79 { ngx_string("quic_initial_max_streams_bidi"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
80 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
81 ngx_conf_set_num_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
82 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
83 offsetof(ngx_http_v3_srv_conf_t, quic.initial_max_streams_bidi), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
84 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
85 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
86 { ngx_string("quic_initial_max_streams_uni"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
87 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
88 ngx_conf_set_num_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
89 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
90 offsetof(ngx_http_v3_srv_conf_t, quic.initial_max_streams_uni), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
91 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
92 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
93 { ngx_string("quic_ack_delay_exponent"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
94 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
95 ngx_conf_set_num_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
96 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
97 offsetof(ngx_http_v3_srv_conf_t, quic.ack_delay_exponent), |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
98 &ngx_http_v3_ack_delay_exponent_bounds }, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
99 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
100 { ngx_string("quic_active_migration"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
101 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
102 ngx_conf_set_num_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
103 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
104 offsetof(ngx_http_v3_srv_conf_t, quic.disable_active_migration), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
105 NULL }, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
106 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
107 { ngx_string("quic_active_connection_id_limit"), |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
108 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
109 ngx_conf_set_num_slot, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
110 NGX_HTTP_SRV_CONF_OFFSET, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
111 offsetof(ngx_http_v3_srv_conf_t, quic.active_connection_id_limit), |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
112 &ngx_http_v3_active_connection_id_limit_bounds }, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
113 |
8383
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
114 { ngx_string("quic_retry"), |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
115 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG, |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
116 ngx_conf_set_flag_slot, |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
117 NGX_HTTP_SRV_CONF_OFFSET, |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
118 offsetof(ngx_http_v3_srv_conf_t, quic.retry), |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
119 NULL }, |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
120 |
8454
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
121 { ngx_string("http3_max_field_size"), |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
122 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
123 ngx_conf_set_size_slot, |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
124 NGX_HTTP_SRV_CONF_OFFSET, |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
125 offsetof(ngx_http_v3_srv_conf_t, max_field_size), |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
126 NULL }, |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
127 |
8215 | 128 ngx_null_command |
129 }; | |
130 | |
131 | |
8248
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
132 static ngx_int_t ngx_http_variable_quic(ngx_http_request_t *r, |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
133 ngx_http_variable_value_t *v, uintptr_t data); |
8297
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
134 static ngx_int_t ngx_http_variable_http3(ngx_http_request_t *r, |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
135 ngx_http_variable_value_t *v, uintptr_t data); |
8248
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
136 static ngx_int_t ngx_http_v3_add_variables(ngx_conf_t *cf); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
137 static void *ngx_http_v3_create_srv_conf(ngx_conf_t *cf); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
138 static char *ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
139 void *parent, void *child); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
140 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
141 |
8215 | 142 static ngx_http_module_t ngx_http_v3_module_ctx = { |
8248
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
143 ngx_http_v3_add_variables, /* preconfiguration */ |
8215 | 144 NULL, /* postconfiguration */ |
145 | |
146 NULL, /* create main configuration */ | |
147 NULL, /* init main configuration */ | |
148 | |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
149 ngx_http_v3_create_srv_conf, /* create server configuration */ |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
150 ngx_http_v3_merge_srv_conf, /* merge server configuration */ |
8215 | 151 |
152 NULL, /* create location configuration */ | |
153 NULL /* merge location configuration */ | |
154 }; | |
155 | |
156 | |
157 ngx_module_t ngx_http_v3_module = { | |
158 NGX_MODULE_V1, | |
159 &ngx_http_v3_module_ctx, /* module context */ | |
160 ngx_http_v3_commands, /* module directives */ | |
161 NGX_HTTP_MODULE, /* module type */ | |
162 NULL, /* init master */ | |
163 NULL, /* init module */ | |
164 NULL, /* init process */ | |
165 NULL, /* init thread */ | |
166 NULL, /* exit thread */ | |
167 NULL, /* exit process */ | |
168 NULL, /* exit master */ | |
169 NGX_MODULE_V1_PADDING | |
170 }; | |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
171 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
172 |
8248
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
173 static ngx_http_variable_t ngx_http_v3_vars[] = { |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
174 { ngx_string("quic"), NULL, ngx_http_variable_quic, |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
175 0, 0, 0 }, |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
176 |
8297
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
177 { ngx_string("http3"), NULL, ngx_http_variable_http3, |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
178 0, 0, 0 }, |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
179 |
8248
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
180 ngx_http_null_variable |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
181 }; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
182 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
183 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
184 static ngx_int_t |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
185 ngx_http_variable_quic(ngx_http_request_t *r, |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
186 ngx_http_variable_value_t *v, uintptr_t data) |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
187 { |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
188 if (r->connection->qs) { |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
189 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
190 v->len = 4; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
191 v->valid = 1; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
192 v->no_cacheable = 1; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
193 v->not_found = 0; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
194 v->data = (u_char *) "quic"; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
195 return NGX_OK; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
196 } |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
197 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
198 v->not_found = 1; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
199 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
200 return NGX_OK; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
201 } |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
202 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
203 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
204 static ngx_int_t |
8297
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
205 ngx_http_variable_http3(ngx_http_request_t *r, |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
206 ngx_http_variable_value_t *v, uintptr_t data) |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
207 { |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
208 v->valid = 1; |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
209 v->no_cacheable = 1; |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
210 v->not_found = 0; |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
211 |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
212 v->data = ngx_pnalloc(r->pool, sizeof("h3-xx") - 1); |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
213 if (v->data == NULL) { |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
214 return NGX_ERROR; |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
215 } |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
216 |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
217 v->len = ngx_sprintf(v->data, "h3-%d", NGX_QUIC_DRAFT_VERSION) - v->data; |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
218 |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
219 return NGX_OK; |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
220 } |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
221 |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
222 |
0b95c2041887
HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8271
diff
changeset
|
223 static ngx_int_t |
8248
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
224 ngx_http_v3_add_variables(ngx_conf_t *cf) |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
225 { |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
226 ngx_http_variable_t *var, *v; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
227 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
228 for (v = ngx_http_v3_vars; v->name.len; v++) { |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
229 var = ngx_http_add_variable(cf, &v->name, v->flags); |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
230 if (var == NULL) { |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
231 return NGX_ERROR; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
232 } |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
233 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
234 var->get_handler = v->get_handler; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
235 var->data = v->data; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
236 } |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
237 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
238 return NGX_OK; |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
239 } |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
240 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
241 |
abb7c1a4c9d5
Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents:
8247
diff
changeset
|
242 |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
243 static void * |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
244 ngx_http_v3_create_srv_conf(ngx_conf_t *cf) |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
245 { |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
246 ngx_http_v3_srv_conf_t *v3cf; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
247 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
248 v3cf = ngx_pcalloc(cf->pool, sizeof(ngx_http_v3_srv_conf_t)); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
249 if (v3cf == NULL) { |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
250 return NULL; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
251 } |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
252 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
253 /* |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
254 * set by ngx_pcalloc(): |
8417
6633f17044eb
QUIC draft-28 transport parameters support.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8415
diff
changeset
|
255 * v3cf->quic.original_dcid = { 0, NULL }; |
6633f17044eb
QUIC draft-28 transport parameters support.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8415
diff
changeset
|
256 * v3cf->quic.initial_scid = { 0, NULL }; |
6633f17044eb
QUIC draft-28 transport parameters support.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8415
diff
changeset
|
257 * v3cf->quic.retry_scid = { 0, NULL }; |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
258 * v3cf->quic.stateless_reset_token = { 0 } |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
259 * conf->quic.preferred_address = NULL |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
260 */ |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
261 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
262 v3cf->quic.max_idle_timeout = NGX_CONF_UNSET_MSEC; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
263 v3cf->quic.max_ack_delay = NGX_CONF_UNSET_MSEC; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
264 |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
265 v3cf->quic.max_udp_payload_size = NGX_CONF_UNSET_SIZE; |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
266 v3cf->quic.initial_max_data = NGX_CONF_UNSET_SIZE; |
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
267 v3cf->quic.initial_max_stream_data_bidi_local = NGX_CONF_UNSET_SIZE; |
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
268 v3cf->quic.initial_max_stream_data_bidi_remote = NGX_CONF_UNSET_SIZE; |
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
269 v3cf->quic.initial_max_stream_data_uni = NGX_CONF_UNSET_SIZE; |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
270 v3cf->quic.initial_max_streams_bidi = NGX_CONF_UNSET_UINT; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
271 v3cf->quic.initial_max_streams_uni = NGX_CONF_UNSET_UINT; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
272 v3cf->quic.ack_delay_exponent = NGX_CONF_UNSET_UINT; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
273 v3cf->quic.disable_active_migration = NGX_CONF_UNSET_UINT; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
274 v3cf->quic.active_connection_id_limit = NGX_CONF_UNSET_UINT; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
275 |
8383
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
276 v3cf->quic.retry = NGX_CONF_UNSET; |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
277 |
8454
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
278 v3cf->max_field_size = NGX_CONF_UNSET_SIZE; |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
279 |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
280 return v3cf; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
281 } |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
282 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
283 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
284 static char * |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
285 ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
286 { |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
287 ngx_http_v3_srv_conf_t *prev = parent; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
288 ngx_http_v3_srv_conf_t *conf = child; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
289 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
290 ngx_conf_merge_msec_value(conf->quic.max_idle_timeout, |
8271
8e54a17dabee
Respect QUIC max_idle_timeout.
Roman Arutyunyan <arut@nginx.com>
parents:
8265
diff
changeset
|
291 prev->quic.max_idle_timeout, 60000); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
292 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
293 ngx_conf_merge_msec_value(conf->quic.max_ack_delay, |
8265
d45325e90221
Limit output QUIC packets with client max_packet_size.
Roman Arutyunyan <arut@nginx.com>
parents:
8248
diff
changeset
|
294 prev->quic.max_ack_delay, |
d45325e90221
Limit output QUIC packets with client max_packet_size.
Roman Arutyunyan <arut@nginx.com>
parents:
8248
diff
changeset
|
295 NGX_QUIC_DEFAULT_MAX_ACK_DELAY); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
296 |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
297 ngx_conf_merge_size_value(conf->quic.max_udp_payload_size, |
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
298 prev->quic.max_udp_payload_size, |
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
299 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
300 |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
301 ngx_conf_merge_size_value(conf->quic.initial_max_data, |
8338
0f9e9786b90d
Added primitive flow control mechanisms.
Vladimir Homutov <vl@nginx.com>
parents:
8297
diff
changeset
|
302 prev->quic.initial_max_data, |
0f9e9786b90d
Added primitive flow control mechanisms.
Vladimir Homutov <vl@nginx.com>
parents:
8297
diff
changeset
|
303 16 * NGX_QUIC_STREAM_BUFSIZE); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
304 |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
305 ngx_conf_merge_size_value(conf->quic.initial_max_stream_data_bidi_local, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
306 prev->quic.initial_max_stream_data_bidi_local, |
8338
0f9e9786b90d
Added primitive flow control mechanisms.
Vladimir Homutov <vl@nginx.com>
parents:
8297
diff
changeset
|
307 NGX_QUIC_STREAM_BUFSIZE); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
308 |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
309 ngx_conf_merge_size_value(conf->quic.initial_max_stream_data_bidi_remote, |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
310 prev->quic.initial_max_stream_data_bidi_remote, |
8338
0f9e9786b90d
Added primitive flow control mechanisms.
Vladimir Homutov <vl@nginx.com>
parents:
8297
diff
changeset
|
311 NGX_QUIC_STREAM_BUFSIZE); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
312 |
8352
d73516830236
HTTP/3: bytes holding directives changed to ngx_conf_set_size_slot.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8340
diff
changeset
|
313 ngx_conf_merge_size_value(conf->quic.initial_max_stream_data_uni, |
8338
0f9e9786b90d
Added primitive flow control mechanisms.
Vladimir Homutov <vl@nginx.com>
parents:
8297
diff
changeset
|
314 prev->quic.initial_max_stream_data_uni, |
0f9e9786b90d
Added primitive flow control mechanisms.
Vladimir Homutov <vl@nginx.com>
parents:
8297
diff
changeset
|
315 NGX_QUIC_STREAM_BUFSIZE); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
316 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
317 ngx_conf_merge_uint_value(conf->quic.initial_max_streams_bidi, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
318 prev->quic.initial_max_streams_bidi, 16); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
319 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
320 ngx_conf_merge_uint_value(conf->quic.initial_max_streams_uni, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
321 prev->quic.initial_max_streams_uni, 16); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
322 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
323 ngx_conf_merge_uint_value(conf->quic.ack_delay_exponent, |
8265
d45325e90221
Limit output QUIC packets with client max_packet_size.
Roman Arutyunyan <arut@nginx.com>
parents:
8248
diff
changeset
|
324 prev->quic.ack_delay_exponent, |
d45325e90221
Limit output QUIC packets with client max_packet_size.
Roman Arutyunyan <arut@nginx.com>
parents:
8248
diff
changeset
|
325 NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT); |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
326 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
327 ngx_conf_merge_uint_value(conf->quic.disable_active_migration, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
328 prev->quic.disable_active_migration, 1); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
329 |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
330 ngx_conf_merge_uint_value(conf->quic.active_connection_id_limit, |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
331 prev->quic.active_connection_id_limit, 2); |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
332 |
8383
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
333 ngx_conf_merge_value(conf->quic.retry, prev->quic.retry, 0); |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
334 |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
335 if (conf->quic.retry) { |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
336 if (RAND_bytes(conf->quic.token_key, sizeof(conf->quic.token_key)) <= 0) { |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
337 return NGX_CONF_ERROR; |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
338 } |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
339 } |
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
340 |
8454
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
341 ngx_conf_merge_size_value(conf->max_field_size, |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
342 prev->max_field_size, |
032cb35ce758
HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents:
8417
diff
changeset
|
343 NGX_HTTP_V3_DEFAULT_MAX_FIELD_SIZE); |
8383
7ea34e13937f
Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8353
diff
changeset
|
344 |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
345 return NGX_CONF_OK; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
346 } |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
347 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
348 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
349 static char * |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
350 ngx_http_v3_max_ack_delay(ngx_conf_t *cf, void *post, void *data) |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
351 { |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
352 ngx_msec_t *sp = data; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
353 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
354 if (*sp > 16384) { |
8340
a8fc0ab54cea
Added handling of incorrect values in TP configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8338
diff
changeset
|
355 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
356 "\"quic_max_ack_delay\" must be less than 16384"); |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
357 |
8340
a8fc0ab54cea
Added handling of incorrect values in TP configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8338
diff
changeset
|
358 return NGX_CONF_ERROR; |
a8fc0ab54cea
Added handling of incorrect values in TP configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8338
diff
changeset
|
359 } |
a8fc0ab54cea
Added handling of incorrect values in TP configuration.
Vladimir Homutov <vl@nginx.com>
parents:
8338
diff
changeset
|
360 |
8247
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
361 return NGX_CONF_OK; |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
362 } |
e9891e8ee975
Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents:
8215
diff
changeset
|
363 |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
364 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
365 static char * |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
366 ngx_http_v3_max_udp_payload_size(ngx_conf_t *cf, void *post, void *data) |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
367 { |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
368 size_t *sp = data; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
369 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
370 if (*sp < NGX_QUIC_MIN_INITIAL_SIZE |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
371 || *sp > NGX_QUIC_MAX_UDP_PAYLOAD_SIZE) |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
372 { |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
373 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
374 "\"quic_max_udp_payload_size\" must be between " |
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
375 "%d and %d", |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
376 NGX_QUIC_MIN_INITIAL_SIZE, |
8415
125cbfa77013
Renamed max_packet_size to max_udp_payload_size, from draft-28.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8383
diff
changeset
|
377 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE); |
8353
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
378 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
379 return NGX_CONF_ERROR; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
380 } |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
381 |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
382 return NGX_CONF_OK; |
036164360fa9
HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents:
8352
diff
changeset
|
383 } |