annotate src/http/modules/ngx_http_quic_module.c @ 8895:4b2d259bdadd quic

QUIC: connections with wrong ALPN protocols are now rejected. Previously, it was not enforced in the stream module. Now, since b9e02e9b2f1d it is possible to specify protocols. Since ALPN is always required, the 'require_alpn' setting is now obsolete.
author Vladimir Homutov <vl@nginx.com>
date Wed, 03 Nov 2021 13:36:21 +0300
parents 74b43926b470
children 41caf5410110
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2 /*
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 * Copyright (C) Nginx, Inc.
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4 * Copyright (C) Roman Arutyunyan
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
8 #include <ngx_config.h>
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
9 #include <ngx_core.h>
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10 #include <ngx_http.h>
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13 static ngx_int_t ngx_http_variable_quic(ngx_http_request_t *r,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
14 ngx_http_variable_value_t *v, uintptr_t data);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
15 static ngx_int_t ngx_http_quic_add_variables(ngx_conf_t *cf);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
16 static void *ngx_http_quic_create_srv_conf(ngx_conf_t *cf);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
17 static char *ngx_http_quic_merge_srv_conf(ngx_conf_t *cf, void *parent,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
18 void *child);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
19 static char *ngx_http_quic_max_ack_delay(ngx_conf_t *cf, void *post,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
20 void *data);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
21 static char *ngx_http_quic_max_udp_payload_size(ngx_conf_t *cf, void *post,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
22 void *data);
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
23 static char *ngx_http_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
24 void *conf);
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
25
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
26 static ngx_conf_post_t ngx_http_quic_max_ack_delay_post =
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
27 { ngx_http_quic_max_ack_delay };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
28 static ngx_conf_post_t ngx_http_quic_max_udp_payload_size_post =
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
29 { ngx_http_quic_max_udp_payload_size };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
30 static ngx_conf_num_bounds_t ngx_http_quic_ack_delay_exponent_bounds =
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
31 { ngx_conf_check_num_bounds, 0, 20 };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
32 static ngx_conf_num_bounds_t ngx_http_quic_active_connection_id_limit_bounds =
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
33 { ngx_conf_check_num_bounds, 2, -1 };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
34
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
35
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
36 static ngx_command_t ngx_http_quic_commands[] = {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
37
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
38 { ngx_string("quic_max_idle_timeout"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
39 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
40 ngx_conf_set_msec_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
41 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
42 offsetof(ngx_quic_conf_t, tp.max_idle_timeout),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
43 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
44
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
45 { ngx_string("quic_max_ack_delay"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
46 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
47 ngx_conf_set_msec_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
48 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
49 offsetof(ngx_quic_conf_t, tp.max_ack_delay),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
50 &ngx_http_quic_max_ack_delay_post },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
51
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
52 { ngx_string("quic_max_udp_payload_size"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
53 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
54 ngx_conf_set_size_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
55 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
56 offsetof(ngx_quic_conf_t, tp.max_udp_payload_size),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
57 &ngx_http_quic_max_udp_payload_size_post },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
58
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
59 { ngx_string("quic_initial_max_data"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
60 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
61 ngx_conf_set_size_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
62 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
63 offsetof(ngx_quic_conf_t, tp.initial_max_data),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
64 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
65
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
66 { ngx_string("quic_initial_max_stream_data_bidi_local"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
67 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
68 ngx_conf_set_size_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
69 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
70 offsetof(ngx_quic_conf_t, tp.initial_max_stream_data_bidi_local),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
71 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
72
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
73 { ngx_string("quic_initial_max_stream_data_bidi_remote"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
74 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
75 ngx_conf_set_size_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
76 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
77 offsetof(ngx_quic_conf_t, tp.initial_max_stream_data_bidi_remote),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
78 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
79
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
80 { ngx_string("quic_initial_max_stream_data_uni"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
81 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
82 ngx_conf_set_size_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
83 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
84 offsetof(ngx_quic_conf_t, tp.initial_max_stream_data_uni),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
85 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
86
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
87 { ngx_string("quic_initial_max_streams_bidi"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
88 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
89 ngx_conf_set_num_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
90 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
91 offsetof(ngx_quic_conf_t, tp.initial_max_streams_bidi),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
92 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
93
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
94 { ngx_string("quic_initial_max_streams_uni"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
95 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
96 ngx_conf_set_num_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
97 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
98 offsetof(ngx_quic_conf_t, tp.initial_max_streams_uni),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
99 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
100
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
101 { ngx_string("quic_ack_delay_exponent"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
102 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
103 ngx_conf_set_num_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
104 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
105 offsetof(ngx_quic_conf_t, tp.ack_delay_exponent),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
106 &ngx_http_quic_ack_delay_exponent_bounds },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
107
8628
45db1b5c1706 QUIC: connection multiplexing per port.
Roman Arutyunyan <arut@nginx.com>
parents: 8563
diff changeset
108 { ngx_string("quic_disable_active_migration"),
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
109 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
8628
45db1b5c1706 QUIC: connection multiplexing per port.
Roman Arutyunyan <arut@nginx.com>
parents: 8563
diff changeset
110 ngx_conf_set_flag_slot,
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
111 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
112 offsetof(ngx_quic_conf_t, tp.disable_active_migration),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
113 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
114
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
115 { ngx_string("quic_active_connection_id_limit"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
116 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
117 ngx_conf_set_num_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
118 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
119 offsetof(ngx_quic_conf_t, tp.active_connection_id_limit),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
120 &ngx_http_quic_active_connection_id_limit_bounds },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
121
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
122 { ngx_string("quic_retry"),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
123 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
124 ngx_conf_set_flag_slot,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
125 NGX_HTTP_SRV_CONF_OFFSET,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
126 offsetof(ngx_quic_conf_t, retry),
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
127 NULL },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
128
8815
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
129 { ngx_string("quic_gso"),
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
130 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
131 ngx_conf_set_flag_slot,
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
132 NGX_HTTP_SRV_CONF_OFFSET,
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
133 offsetof(ngx_quic_conf_t, gso_enabled),
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
134 NULL },
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
135
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
136 { ngx_string("quic_host_key"),
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
137 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
138 ngx_http_quic_host_key,
8562
b31c02454539 QUIC: added stateless reset support.
Vladimir Homutov <vl@nginx.com>
parents: 8482
diff changeset
139 NGX_HTTP_SRV_CONF_OFFSET,
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
140 0,
8562
b31c02454539 QUIC: added stateless reset support.
Vladimir Homutov <vl@nginx.com>
parents: 8482
diff changeset
141 NULL },
b31c02454539 QUIC: added stateless reset support.
Vladimir Homutov <vl@nginx.com>
parents: 8482
diff changeset
142
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
143 ngx_null_command
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
144 };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
145
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
146
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
147 static ngx_http_module_t ngx_http_quic_module_ctx = {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
148 ngx_http_quic_add_variables, /* preconfiguration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
149 NULL, /* postconfiguration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
150
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
151 NULL, /* create main configuration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
152 NULL, /* init main configuration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
153
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
154 ngx_http_quic_create_srv_conf, /* create server configuration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
155 ngx_http_quic_merge_srv_conf, /* merge server configuration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
156
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
157 NULL, /* create location configuration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
158 NULL /* merge location configuration */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
159 };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
160
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
161
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
162 ngx_module_t ngx_http_quic_module = {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
163 NGX_MODULE_V1,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
164 &ngx_http_quic_module_ctx, /* module context */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
165 ngx_http_quic_commands, /* module directives */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
166 NGX_HTTP_MODULE, /* module type */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
167 NULL, /* init master */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
168 NULL, /* init module */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
169 NULL, /* init process */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
170 NULL, /* init thread */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
171 NULL, /* exit thread */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
172 NULL, /* exit process */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
173 NULL, /* exit master */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
174 NGX_MODULE_V1_PADDING
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
175 };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
176
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
177
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
178 static ngx_http_variable_t ngx_http_quic_vars[] = {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
179
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
180 { ngx_string("quic"), NULL, ngx_http_variable_quic, 0, 0, 0 },
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
181
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
182 ngx_http_null_variable
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
183 };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
184
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
185 static ngx_str_t ngx_http_quic_salt = ngx_string("ngx_quic");
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
186
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
187
8679
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
188 ngx_int_t
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
189 ngx_http_quic_init(ngx_connection_t *c)
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
190 {
8825
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
191 uint64_t n;
8679
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
192 ngx_quic_conf_t *qcf;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
193 ngx_http_connection_t *hc, *phc;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
194 ngx_http_core_loc_conf_t *clcf;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
195
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
196 hc = c->data;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
197
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
198 hc->ssl = 1;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
199
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
200 if (c->quic == NULL) {
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
201 qcf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_quic_module);
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
202
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
203 ngx_quic_run(c, qcf);
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
204
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
205 return NGX_DONE;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
206 }
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
207
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
208 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "http init quic stream");
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
209
8825
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
210 #if (NGX_HTTP_V3)
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
211 if (!hc->addr_conf->http3)
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
212 #endif
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
213 {
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
214 /* Use HTTP/3 General Protocol Error Code 0x101 for finalization */
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
215
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
216 if (c->quic->id & NGX_QUIC_STREAM_UNIDIRECTIONAL) {
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
217 ngx_quic_finalize_connection(c->quic->parent, 0x101,
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
218 "unexpected uni stream");
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
219 ngx_http_close_connection(c);
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
220 return NGX_DONE;
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
221 }
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
222
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
223 clcf = ngx_http_get_module_loc_conf(hc->conf_ctx, ngx_http_core_module);
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
224
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
225 n = c->quic->id >> 2;
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
226
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
227 if (n >= clcf->keepalive_requests) {
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
228 ngx_quic_finalize_connection(c->quic->parent, 0x101,
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
229 "reached maximum number of requests");
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
230 ngx_http_close_connection(c);
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
231 return NGX_DONE;
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
232 }
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
233
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
234 if (ngx_current_msec - c->quic->parent->start_time
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
235 > clcf->keepalive_time)
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
236 {
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
237 ngx_quic_finalize_connection(c->quic->parent, 0x101,
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
238 "reached maximum time for requests");
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
239 ngx_http_close_connection(c);
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
240 return NGX_DONE;
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
241 }
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
242 }
59d2d47ad3c6 QUIC: stream limits in "hq" mode.
Roman Arutyunyan <arut@nginx.com>
parents: 8815
diff changeset
243
8769
9ec3e71f8a61 HTTP/3: reference h3c directly from ngx_http_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 8755
diff changeset
244 phc = ngx_http_quic_get_connection(c);
8679
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
245
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
246 if (phc->ssl_servername) {
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
247 hc->ssl_servername = phc->ssl_servername;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
248 hc->conf_ctx = phc->conf_ctx;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
249
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
250 clcf = ngx_http_get_module_loc_conf(hc->conf_ctx, ngx_http_core_module);
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
251 ngx_set_connection_log(c, clcf->error_log);
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
252 }
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
253
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
254 return NGX_OK;
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
255 }
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
256
e1eb7f4ca9f1 HTTP/3: refactored request parser.
Roman Arutyunyan <arut@nginx.com>
parents: 8634
diff changeset
257
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
258 static ngx_int_t
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
259 ngx_http_variable_quic(ngx_http_request_t *r,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
260 ngx_http_variable_value_t *v, uintptr_t data)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
261 {
8630
279ad36f2f4b QUIC: renamed c->qs to c->quic.
Roman Arutyunyan <arut@nginx.com>
parents: 8628
diff changeset
262 if (r->connection->quic) {
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
263
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
264 v->len = 4;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
265 v->valid = 1;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
266 v->no_cacheable = 1;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
267 v->not_found = 0;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
268 v->data = (u_char *) "quic";
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
269 return NGX_OK;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
270 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
271
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
272 v->not_found = 1;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
273
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
274 return NGX_OK;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
275 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
276
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
277
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
278 static ngx_int_t
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
279 ngx_http_quic_add_variables(ngx_conf_t *cf)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
280 {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
281 ngx_http_variable_t *var, *v;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
282
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
283 for (v = ngx_http_quic_vars; v->name.len; v++) {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
284 var = ngx_http_add_variable(cf, &v->name, v->flags);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
285 if (var == NULL) {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
286 return NGX_ERROR;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
287 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
288
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
289 var->get_handler = v->get_handler;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
290 var->data = v->data;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
291 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
292
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
293 return NGX_OK;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
294 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
295
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
296
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
297 static void *
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
298 ngx_http_quic_create_srv_conf(ngx_conf_t *cf)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
299 {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
300 ngx_quic_conf_t *conf;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
301
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
302 conf = ngx_pcalloc(cf->pool, sizeof(ngx_quic_conf_t));
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
303 if (conf == NULL) {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
304 return NULL;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
305 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
306
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
307 /*
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
308 * set by ngx_pcalloc():
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
309 *
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
310 * conf->tp.original_dcid = { 0, NULL };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
311 * conf->tp.initial_scid = { 0, NULL };
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
312 * conf->tp.retry_scid = { 0, NULL };
8562
b31c02454539 QUIC: added stateless reset support.
Vladimir Homutov <vl@nginx.com>
parents: 8482
diff changeset
313 * conf->tp.sr_token = { 0 }
b31c02454539 QUIC: added stateless reset support.
Vladimir Homutov <vl@nginx.com>
parents: 8482
diff changeset
314 * conf->tp.sr_enabled = 0
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
315 * conf->tp.preferred_address = NULL
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
316 * conf->host_key = { 0, NULL }
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
317 */
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
318
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
319 conf->tp.max_idle_timeout = NGX_CONF_UNSET_MSEC;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
320 conf->tp.max_ack_delay = NGX_CONF_UNSET_MSEC;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
321 conf->tp.max_udp_payload_size = NGX_CONF_UNSET_SIZE;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
322 conf->tp.initial_max_data = NGX_CONF_UNSET_SIZE;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
323 conf->tp.initial_max_stream_data_bidi_local = NGX_CONF_UNSET_SIZE;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
324 conf->tp.initial_max_stream_data_bidi_remote = NGX_CONF_UNSET_SIZE;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
325 conf->tp.initial_max_stream_data_uni = NGX_CONF_UNSET_SIZE;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
326 conf->tp.initial_max_streams_bidi = NGX_CONF_UNSET_UINT;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
327 conf->tp.initial_max_streams_uni = NGX_CONF_UNSET_UINT;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
328 conf->tp.ack_delay_exponent = NGX_CONF_UNSET_UINT;
8628
45db1b5c1706 QUIC: connection multiplexing per port.
Roman Arutyunyan <arut@nginx.com>
parents: 8563
diff changeset
329 conf->tp.disable_active_migration = NGX_CONF_UNSET;
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
330 conf->tp.active_connection_id_limit = NGX_CONF_UNSET_UINT;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
331
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
332 conf->retry = NGX_CONF_UNSET;
8815
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
333 conf->gso_enabled = NGX_CONF_UNSET;
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
334
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
335 return conf;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
336 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
337
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
338
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
339 static char *
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
340 ngx_http_quic_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
341 {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
342 ngx_quic_conf_t *prev = parent;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
343 ngx_quic_conf_t *conf = child;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
344
8563
bed310672f39 QUIC: moved ssl configuration pointer to quic configuration.
Vladimir Homutov <vl@nginx.com>
parents: 8562
diff changeset
345 ngx_http_ssl_srv_conf_t *sscf;
bed310672f39 QUIC: moved ssl configuration pointer to quic configuration.
Vladimir Homutov <vl@nginx.com>
parents: 8562
diff changeset
346
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
347 ngx_conf_merge_msec_value(conf->tp.max_idle_timeout,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
348 prev->tp.max_idle_timeout, 60000);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
349
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
350 ngx_conf_merge_msec_value(conf->tp.max_ack_delay,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
351 prev->tp.max_ack_delay,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
352 NGX_QUIC_DEFAULT_MAX_ACK_DELAY);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
353
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
354 ngx_conf_merge_size_value(conf->tp.max_udp_payload_size,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
355 prev->tp.max_udp_payload_size,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
356 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
357
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
358 ngx_conf_merge_size_value(conf->tp.initial_max_data,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
359 prev->tp.initial_max_data,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
360 16 * NGX_QUIC_STREAM_BUFSIZE);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
361
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
362 ngx_conf_merge_size_value(conf->tp.initial_max_stream_data_bidi_local,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
363 prev->tp.initial_max_stream_data_bidi_local,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
364 NGX_QUIC_STREAM_BUFSIZE);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
365
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
366 ngx_conf_merge_size_value(conf->tp.initial_max_stream_data_bidi_remote,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
367 prev->tp.initial_max_stream_data_bidi_remote,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
368 NGX_QUIC_STREAM_BUFSIZE);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
369
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
370 ngx_conf_merge_size_value(conf->tp.initial_max_stream_data_uni,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
371 prev->tp.initial_max_stream_data_uni,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
372 NGX_QUIC_STREAM_BUFSIZE);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
373
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
374 ngx_conf_merge_uint_value(conf->tp.initial_max_streams_bidi,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
375 prev->tp.initial_max_streams_bidi, 16);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
376
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
377 ngx_conf_merge_uint_value(conf->tp.initial_max_streams_uni,
8726
55aabb7269e7 HTTP/3: set initial_max_streams_uni default value to 3.
Roman Arutyunyan <arut@nginx.com>
parents: 8694
diff changeset
378 prev->tp.initial_max_streams_uni, 3);
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
379
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
380 ngx_conf_merge_uint_value(conf->tp.ack_delay_exponent,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
381 prev->tp.ack_delay_exponent,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
382 NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
383
8628
45db1b5c1706 QUIC: connection multiplexing per port.
Roman Arutyunyan <arut@nginx.com>
parents: 8563
diff changeset
384 ngx_conf_merge_value(conf->tp.disable_active_migration,
45db1b5c1706 QUIC: connection multiplexing per port.
Roman Arutyunyan <arut@nginx.com>
parents: 8563
diff changeset
385 prev->tp.disable_active_migration, 0);
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
386
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
387 ngx_conf_merge_uint_value(conf->tp.active_connection_id_limit,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
388 prev->tp.active_connection_id_limit, 2);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
389
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
390 ngx_conf_merge_value(conf->retry, prev->retry, 0);
8815
8ab0d609af09 QUIC: the "quic_gso" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8806
diff changeset
391 ngx_conf_merge_value(conf->gso_enabled, prev->gso_enabled, 0);
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
392
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
393 ngx_conf_merge_str_value(conf->host_key, prev->host_key, "");
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
394
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
395 if (conf->host_key.len == 0) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
396
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
397 conf->host_key.len = NGX_QUIC_DEFAULT_HOST_KEY_LEN;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
398 conf->host_key.data = ngx_palloc(cf->pool, conf->host_key.len);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
399 if (conf->host_key.data == NULL) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
400 return NGX_CONF_ERROR;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
401 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
402
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
403 if (RAND_bytes(conf->host_key.data, NGX_QUIC_DEFAULT_HOST_KEY_LEN)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
404 <= 0)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
405 {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
406 return NGX_CONF_ERROR;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
407 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
408 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
409
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
410 if (ngx_quic_derive_key(cf->log, "av_token_key",
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
411 &conf->host_key, &ngx_http_quic_salt,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
412 conf->av_token_key, NGX_QUIC_AV_KEY_LEN)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
413 != NGX_OK)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
414 {
8686
dffb66fb783b QUIC: stateless retry.
Vladimir Homutov <vl@nginx.com>
parents: 8679
diff changeset
415 return NGX_CONF_ERROR;
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
416 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
417
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
418 if (ngx_quic_derive_key(cf->log, "sr_token_key",
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
419 &conf->host_key, &ngx_http_quic_salt,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
420 conf->sr_token_key, NGX_QUIC_SR_KEY_LEN)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
421 != NGX_OK)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
422 {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
423 return NGX_CONF_ERROR;
8634
831d1960826f QUIC: generate default stateless reset token key.
Roman Arutyunyan <arut@nginx.com>
parents: 8630
diff changeset
424 }
831d1960826f QUIC: generate default stateless reset token key.
Roman Arutyunyan <arut@nginx.com>
parents: 8630
diff changeset
425
8563
bed310672f39 QUIC: moved ssl configuration pointer to quic configuration.
Vladimir Homutov <vl@nginx.com>
parents: 8562
diff changeset
426 sscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_ssl_module);
bed310672f39 QUIC: moved ssl configuration pointer to quic configuration.
Vladimir Homutov <vl@nginx.com>
parents: 8562
diff changeset
427 conf->ssl = &sscf->ssl;
bed310672f39 QUIC: moved ssl configuration pointer to quic configuration.
Vladimir Homutov <vl@nginx.com>
parents: 8562
diff changeset
428
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
429 return NGX_CONF_OK;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
430 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
431
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
432
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
433 static char *
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
434 ngx_http_quic_max_ack_delay(ngx_conf_t *cf, void *post, void *data)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
435 {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
436 ngx_msec_t *sp = data;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
437
8806
f8ad3dd142ad QUIC: consider max_ack_delay=16384 invalid.
Roman Arutyunyan <arut@nginx.com>
parents: 8769
diff changeset
438 if (*sp >= 16384) {
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
439 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
440 "\"quic_max_ack_delay\" must be less than 16384");
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
441
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
442 return NGX_CONF_ERROR;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
443 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
444
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
445 return NGX_CONF_OK;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
446 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
447
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
448
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
449 static char *
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
450 ngx_http_quic_max_udp_payload_size(ngx_conf_t *cf, void *post, void *data)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
451 {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
452 size_t *sp = data;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
453
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
454 if (*sp < NGX_QUIC_MIN_INITIAL_SIZE
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
455 || *sp > NGX_QUIC_MAX_UDP_PAYLOAD_SIZE)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
456 {
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
457 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
458 "\"quic_max_udp_payload_size\" must be between "
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
459 "%d and %d",
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
460 NGX_QUIC_MIN_INITIAL_SIZE,
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
461 NGX_QUIC_MAX_UDP_PAYLOAD_SIZE);
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
462
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
463 return NGX_CONF_ERROR;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
464 }
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
465
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
466 return NGX_CONF_OK;
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
467 }
8694
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
468
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
469
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
470 static char *
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
471 ngx_http_quic_host_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
472 {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
473 ngx_quic_conf_t *qcf = conf;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
474
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
475 u_char *buf;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
476 size_t size;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
477 ssize_t n;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
478 ngx_str_t *value;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
479 ngx_file_t file;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
480 ngx_file_info_t fi;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
481
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
482 if (qcf->host_key.len) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
483 return "is duplicate";
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
484 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
485
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
486 buf = NULL;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
487 #if (NGX_SUPPRESS_WARN)
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
488 size = 0;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
489 #endif
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
490
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
491 value = cf->args->elts;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
492
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
493 if (ngx_conf_full_name(cf->cycle, &value[1], 1) != NGX_OK) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
494 return NGX_CONF_ERROR;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
495 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
496
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
497 ngx_memzero(&file, sizeof(ngx_file_t));
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
498 file.name = value[1];
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
499 file.log = cf->log;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
500
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
501 file.fd = ngx_open_file(file.name.data, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
502
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
503 if (file.fd == NGX_INVALID_FILE) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
504 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
505 ngx_open_file_n " \"%V\" failed", &file.name);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
506 return NGX_CONF_ERROR;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
507 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
508
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
509 if (ngx_fd_info(file.fd, &fi) == NGX_FILE_ERROR) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
510 ngx_conf_log_error(NGX_LOG_CRIT, cf, ngx_errno,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
511 ngx_fd_info_n " \"%V\" failed", &file.name);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
512 goto failed;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
513 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
514
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
515 size = ngx_file_size(&fi);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
516
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
517 if (size == 0) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
518 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
519 "\"%V\" zero key size", &file.name);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
520 goto failed;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
521 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
522
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
523 buf = ngx_pnalloc(cf->pool, size);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
524 if (buf == NULL) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
525 goto failed;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
526 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
527
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
528 n = ngx_read_file(&file, buf, size, 0);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
529
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
530 if (n == NGX_ERROR) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
531 ngx_conf_log_error(NGX_LOG_CRIT, cf, ngx_errno,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
532 ngx_read_file_n " \"%V\" failed", &file.name);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
533 goto failed;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
534 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
535
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
536 if ((size_t) n != size) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
537 ngx_conf_log_error(NGX_LOG_CRIT, cf, 0,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
538 ngx_read_file_n " \"%V\" returned only "
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
539 "%z bytes instead of %uz", &file.name, n, size);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
540 goto failed;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
541 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
542
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
543 qcf->host_key.data = buf;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
544 qcf->host_key.len = n;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
545
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
546 if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
547 ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
548 ngx_close_file_n " \"%V\" failed", &file.name);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
549 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
550
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
551 return NGX_CONF_OK;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
552
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
553 failed:
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
554
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
555 if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
556 ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
557 ngx_close_file_n " \"%V\" failed", &file.name);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
558 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
559
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
560 if (buf) {
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
561 ngx_explicit_memzero(buf, size);
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
562 }
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
563
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
564 return NGX_CONF_ERROR;
cef042935003 QUIC: the "quic_host_key" directive.
Vladimir Homutov <vl@nginx.com>
parents: 8686
diff changeset
565 }