size_t stream_buffer_size;
ngx_uint_t max_concurrent_streams_bidi;
ngx_uint_t max_concurrent_streams_uni;
+ ngx_uint_t active_connection_id_limit;
ngx_int_t stream_close_code;
ngx_int_t stream_reject_code_uni;
ngx_int_t stream_reject_code_bidi;
tp->max_ack_delay = NGX_QUIC_DEFAULT_MAX_ACK_DELAY;
tp->ack_delay_exponent = NGX_QUIC_DEFAULT_ACK_DELAY_EXPONENT;
- tp->active_connection_id_limit = 2;
+ tp->active_connection_id_limit = qcf->active_connection_id_limit;
tp->disable_active_migration = qcf->disable_active_migration;
return NGX_OK;
0,
NULL },
+ { ngx_string("quic_active_connection_id_limit"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_num_slot,
+ NGX_HTTP_SRV_CONF_OFFSET,
+ offsetof(ngx_http_v3_srv_conf_t, quic.active_connection_id_limit),
+ NULL },
+
ngx_null_command
};
h3scf->quic.gso_enabled = NGX_CONF_UNSET;
h3scf->quic.stream_close_code = NGX_HTTP_V3_ERR_NO_ERROR;
h3scf->quic.stream_reject_code_bidi = NGX_HTTP_V3_ERR_REQUEST_REJECTED;
+ h3scf->quic.active_connection_id_limit = NGX_CONF_UNSET_UINT;
return h3scf;
}
ngx_conf_merge_str_value(conf->quic.host_key, prev->quic.host_key, "");
+ ngx_conf_merge_uint_value(conf->quic.active_connection_id_limit,
+ prev->quic.active_connection_id_limit,
+ 2);
+
if (conf->quic.host_key.len == 0) {
conf->quic.host_key.len = NGX_QUIC_DEFAULT_HOST_KEY_LEN;
0,
NULL },
+ { ngx_string("quic_active_connection_id_limit"),
+ NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_num_slot,
+ NGX_STREAM_SRV_CONF_OFFSET,
+ offsetof(ngx_quic_conf_t, active_connection_id_limit),
+ NULL },
+
ngx_null_command
};
conf->retry = NGX_CONF_UNSET;
conf->gso_enabled = NGX_CONF_UNSET;
+ conf->active_connection_id_limit = NGX_CONF_UNSET_UINT;
+
return conf;
}
ngx_conf_merge_str_value(conf->host_key, prev->host_key, "");
+ ngx_conf_merge_uint_value(conf->active_connection_id_limit,
+ conf->active_connection_id_limit,
+ 2);
+
if (conf->host_key.len == 0) {
conf->host_key.len = NGX_QUIC_DEFAULT_HOST_KEY_LEN;