comparison src/http/v3/ngx_http_v3_module.c @ 9158:ad3d34ddfdcc

QUIC: "handshake_timeout" configuration parameter. Previously QUIC did not have such parameter and handshake duration was controlled by HTTP/3. However that required creating and storing HTTP/3 session on first client datagram. Apparently there's no convenient way to store the session object until QUIC handshake is complete. In the followup patches session creation will be postponed to init() callback.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 13 Sep 2023 17:59:37 +0400
parents f742b1b46901
children
comparison
equal deleted inserted replaced
9157:daf8f5ba23d8 9158:ad3d34ddfdcc
190 * set by ngx_pcalloc(): 190 * set by ngx_pcalloc():
191 * 191 *
192 * h3scf->quic.host_key = { 0, NULL } 192 * h3scf->quic.host_key = { 0, NULL }
193 * h3scf->quic.stream_reject_code_uni = 0; 193 * h3scf->quic.stream_reject_code_uni = 0;
194 * h3scf->quic.disable_active_migration = 0; 194 * h3scf->quic.disable_active_migration = 0;
195 * h3scf->quic.timeout = 0; 195 * h3scf->quic.idle_timeout = 0;
196 * h3scf->max_blocked_streams = 0; 196 * h3scf->max_blocked_streams = 0;
197 */ 197 */
198 198
199 h3scf->enable = NGX_CONF_UNSET; 199 h3scf->enable = NGX_CONF_UNSET;
200 h3scf->enable_hq = NGX_CONF_UNSET; 200 h3scf->enable_hq = NGX_CONF_UNSET;
221 ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) 221 ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
222 { 222 {
223 ngx_http_v3_srv_conf_t *prev = parent; 223 ngx_http_v3_srv_conf_t *prev = parent;
224 ngx_http_v3_srv_conf_t *conf = child; 224 ngx_http_v3_srv_conf_t *conf = child;
225 225
226 ngx_http_ssl_srv_conf_t *sscf; 226 ngx_http_ssl_srv_conf_t *sscf;
227 ngx_http_core_srv_conf_t *cscf;
227 228
228 ngx_conf_merge_value(conf->enable, prev->enable, 1); 229 ngx_conf_merge_value(conf->enable, prev->enable, 1);
229 230
230 ngx_conf_merge_value(conf->enable_hq, prev->enable_hq, 0); 231 ngx_conf_merge_value(conf->enable_hq, prev->enable_hq, 0);
231 232
278 conf->quic.sr_token_key, NGX_QUIC_SR_KEY_LEN) 279 conf->quic.sr_token_key, NGX_QUIC_SR_KEY_LEN)
279 != NGX_OK) 280 != NGX_OK)
280 { 281 {
281 return NGX_CONF_ERROR; 282 return NGX_CONF_ERROR;
282 } 283 }
284
285 cscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_core_module);
286 conf->quic.handshake_timeout = cscf->client_header_timeout;
283 287
284 sscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_ssl_module); 288 sscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_ssl_module);
285 conf->quic.ssl = &sscf->ssl; 289 conf->quic.ssl = &sscf->ssl;
286 290
287 return NGX_CONF_OK; 291 return NGX_CONF_OK;