annotate src/http/v3/ngx_http_v3_module.c @ 8484:d41a0cafacff quic

HTTP/3: do not call shutdown() for QUIC streams. Previously, this triggered an alert "shutdown() failed" in error log.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 22 Jul 2020 11:03:42 +0300
parents 0d2b2664b41c
children 65c1fc5fae15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2 /*
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 * Copyright (C) Nginx, Inc.
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4 * Copyright (C) Roman Arutyunyan
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
8 #include <ngx_config.h>
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
9 #include <ngx_core.h>
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10 #include <ngx_http.h>
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13 static ngx_command_t ngx_http_v3_commands[] = {
8247
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
14
8454
032cb35ce758 HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents: 8417
diff changeset
15 { 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
16 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
17 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
18 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
19 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
20 NULL },
032cb35ce758 HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents: 8417
diff changeset
21
8456
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
22 { ngx_string("http3_max_table_capacity"),
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
23 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
24 ngx_conf_set_size_slot,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
25 NGX_HTTP_SRV_CONF_OFFSET,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
26 offsetof(ngx_http_v3_srv_conf_t, max_table_capacity),
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
27 NULL },
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
28
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
29 { ngx_string("http3_max_blocked_streams"),
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
30 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
31 ngx_conf_set_num_slot,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
32 NGX_HTTP_SRV_CONF_OFFSET,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
33 offsetof(ngx_http_v3_srv_conf_t, max_blocked_streams),
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
34 NULL },
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
35
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
36 ngx_null_command
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
37 };
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
38
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
39
8297
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
40 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
41 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
42 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
43 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
44 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
45 void *parent, void *child);
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
46
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
47
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
48 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
49 ngx_http_v3_add_variables, /* preconfiguration */
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
50 NULL, /* postconfiguration */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
51
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
52 NULL, /* create main configuration */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
53 NULL, /* init main configuration */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
54
8247
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
55 ngx_http_v3_create_srv_conf, /* create server configuration */
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
56 ngx_http_v3_merge_srv_conf, /* merge server configuration */
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
57
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
58 NULL, /* create location configuration */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
59 NULL /* merge location configuration */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
60 };
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
61
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
62
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
63 ngx_module_t ngx_http_v3_module = {
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
64 NGX_MODULE_V1,
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
65 &ngx_http_v3_module_ctx, /* module context */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
66 ngx_http_v3_commands, /* module directives */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
67 NGX_HTTP_MODULE, /* module type */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
68 NULL, /* init master */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
69 NULL, /* init module */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
70 NULL, /* init process */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
71 NULL, /* init thread */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
72 NULL, /* exit thread */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
73 NULL, /* exit process */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
74 NULL, /* exit master */
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
75 NGX_MODULE_V1_PADDING
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
76 };
8247
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
77
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
78
8248
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
79 static ngx_http_variable_t ngx_http_v3_vars[] = {
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
80
8297
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
81 { ngx_string("http3"), NULL, ngx_http_variable_http3,
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
82 0, 0, 0 },
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
83
8248
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
84 ngx_http_null_variable
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
85 };
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
86
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
87
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
88 static ngx_int_t
8297
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
89 ngx_http_variable_http3(ngx_http_request_t *r,
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
90 ngx_http_variable_value_t *v, uintptr_t data)
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
91 {
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
92 v->valid = 1;
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
93 v->no_cacheable = 1;
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
94 v->not_found = 0;
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
95
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
96 v->data = ngx_pnalloc(r->pool, sizeof("h3-xx") - 1);
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
97 if (v->data == NULL) {
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
98 return NGX_ERROR;
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
99 }
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
100
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
101 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
102
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
103 return NGX_OK;
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
104 }
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
105
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
106
0b95c2041887 HTTP/3: http3 variable.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8271
diff changeset
107 static ngx_int_t
8248
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
108 ngx_http_v3_add_variables(ngx_conf_t *cf)
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
109 {
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
110 ngx_http_variable_t *var, *v;
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
111
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
112 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
113 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
114 if (var == NULL) {
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
115 return NGX_ERROR;
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
116 }
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
117
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
118 var->get_handler = v->get_handler;
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
119 var->data = v->data;
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
120 }
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
121
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
122 return NGX_OK;
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
123 }
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
124
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
125
abb7c1a4c9d5 Adedd the http "quic" variable.
Vladimir Homutov <vl@nginx.com>
parents: 8247
diff changeset
126
8247
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
127 static void *
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
128 ngx_http_v3_create_srv_conf(ngx_conf_t *cf)
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
129 {
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
130 ngx_http_v3_srv_conf_t *v3cf;
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
131
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
132 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
133 if (v3cf == NULL) {
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
134 return NULL;
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
135 }
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
136
8454
032cb35ce758 HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents: 8417
diff changeset
137 v3cf->max_field_size = NGX_CONF_UNSET_SIZE;
8456
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
138 v3cf->max_table_capacity = NGX_CONF_UNSET_SIZE;
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
139 v3cf->max_blocked_streams = NGX_CONF_UNSET_UINT;
8454
032cb35ce758 HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents: 8417
diff changeset
140
8247
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
141 return v3cf;
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
142 }
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
143
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
144
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
145 static char *
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
146 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
147 {
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
148 ngx_http_v3_srv_conf_t *prev = parent;
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
149 ngx_http_v3_srv_conf_t *conf = child;
e9891e8ee975 Configurable transport parameters.
Vladimir Homutov <vl@nginx.com>
parents: 8215
diff changeset
150
8454
032cb35ce758 HTTP/3: http3_max_field_size directive to limit string size.
Roman Arutyunyan <arut@nginx.com>
parents: 8417
diff changeset
151 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
152 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
153 NGX_HTTP_V3_DEFAULT_MAX_FIELD_SIZE);
8383
7ea34e13937f Address validation using Retry packets.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8353
diff changeset
154
8456
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
155 ngx_conf_merge_size_value(conf->max_table_capacity,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
156 prev->max_table_capacity,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
157 NGX_HTTP_V3_DEFAULT_MAX_TABLE_CAPACITY);
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
158
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
159 ngx_conf_merge_uint_value(conf->max_blocked_streams,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
160 prev->max_blocked_streams,
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
161 NGX_HTTP_V3_DEFAULT_MAX_BLOCKED_STREAMS);
c9538aef3211 HTTP/3: refactored dynamic table implementation.
Roman Arutyunyan <arut@nginx.com>
parents: 8454
diff changeset
162
8353
036164360fa9 HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8352
diff changeset
163 return NGX_CONF_OK;
036164360fa9 HTTP/3: directives with limited values converted to post handler.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8352
diff changeset
164 }