Latest update - 9163

This commit is contained in:
2023-09-23 23:29:22 +09:00
parent b1551b25d1
commit 7389910b3e
10 changed files with 41 additions and 26 deletions
+5
View File
@@ -107,7 +107,12 @@
#endif
#define NGX_MODULE_SIGNATURE_17 "0"
#if (NGX_QUIC || NGX_COMPAT)
#define NGX_MODULE_SIGNATURE_18 "1"
#else
#define NGX_MODULE_SIGNATURE_18 "0"
#endif
#if (NGX_HAVE_OPENAT)
#define NGX_MODULE_SIGNATURE_19 "1"
+8 -2
View File
@@ -211,6 +211,8 @@ ngx_quic_run(ngx_connection_t *c, ngx_quic_conf_t *conf)
qc = ngx_quic_get_connection(c);
ngx_add_timer(c->read, qc->tp.max_idle_timeout);
ngx_add_timer(&qc->close, qc->conf->handshake_timeout);
ngx_quic_connstate_dbg(c);
c->read->handler = ngx_quic_input_handler;
@@ -418,7 +420,7 @@ ngx_quic_input_handler(ngx_event_t *rev)
if (c->close) {
c->close = 0;
if (!ngx_exiting) {
if (!ngx_exiting || !qc->streams.initialized) {
qc->error = NGX_QUIC_ERR_NO_ERROR;
qc->error_reason = "graceful shutdown";
ngx_quic_close_connection(c, NGX_ERROR);
@@ -485,6 +487,10 @@ ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc)
ngx_quic_free_frames(c, &qc->send_ctx[i].sent);
}
if (qc->close.timer_set) {
ngx_del_timer(&qc->close);
}
if (rc == NGX_DONE) {
/*
@@ -531,7 +537,7 @@ ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc)
qc->error_level = ctx->level;
(void) ngx_quic_send_cc(c);
if (rc == NGX_OK && !qc->close.timer_set) {
if (rc == NGX_OK) {
ngx_add_timer(&qc->close, 3 * ngx_quic_pto(c, ctx));
}
}
+2 -1
View File
@@ -67,7 +67,8 @@ typedef struct {
ngx_flag_t retry;
ngx_flag_t gso_enabled;
ngx_flag_t disable_active_migration;
ngx_msec_t timeout;
ngx_msec_t handshake_timeout;
ngx_msec_t idle_timeout;
ngx_str_t host_key;
size_t stream_buffer_size;
ngx_uint_t max_concurrent_streams_bidi;
+4
View File
@@ -630,6 +630,10 @@ ngx_quic_do_init_streams(ngx_connection_t *c)
qc->streams.initialized = 1;
if (!qc->closing && qc->close.timer_set) {
ngx_del_timer(&qc->close);
}
return NGX_OK;
}
+1 -1
View File
@@ -1985,7 +1985,7 @@ ngx_quic_init_transport_params(ngx_quic_tp_t *tp, ngx_quic_conf_t *qcf)
* tp->preferred_address = NULL
*/
tp->max_idle_timeout = qcf->timeout;
tp->max_idle_timeout = qcf->idle_timeout;
tp->max_udp_payload_size = NGX_QUIC_MAX_UDP_PAYLOAD_SIZE;
-4
View File
@@ -324,10 +324,6 @@ typedef struct {
#endif
#endif
#if (NGX_HTTP_V3 || NGX_COMPAT)
ngx_http_v3_session_t *v3_session;
#endif
ngx_chain_t *busy;
ngx_int_t nbusy;
+3 -1
View File
@@ -30,6 +30,8 @@ ngx_http_v3_init_session(ngx_connection_t *c)
goto failed;
}
h3c->http_connection = hc;
ngx_queue_init(&h3c->blocked);
h3c->keepalive.log = c->log;
@@ -48,7 +50,7 @@ ngx_http_v3_init_session(ngx_connection_t *c)
cln->handler = ngx_http_v3_cleanup_session;
cln->data = h3c;
hc->v3_session = h3c;
c->data = h3c;
return NGX_OK;
+6 -3
View File
@@ -78,11 +78,12 @@
#define NGX_HTTP_V3_ERR_DECODER_STREAM_ERROR 0x202
#define ngx_http_quic_get_connection(c) \
((ngx_http_connection_t *) ((c)->quic ? (c)->quic->parent->data \
#define ngx_http_v3_get_session(c) \
((ngx_http_v3_session_t *) ((c)->quic ? (c)->quic->parent->data \
: (c)->data))
#define ngx_http_v3_get_session(c) ngx_http_quic_get_connection(c)->v3_session
#define ngx_http_quic_get_connection(c) \
(ngx_http_v3_get_session(c)->http_connection)
#define ngx_http_v3_get_module_loc_conf(c, module) \
ngx_http_get_module_loc_conf(ngx_http_quic_get_connection(c)->conf_ctx, \
@@ -120,6 +121,8 @@ struct ngx_http_v3_parse_s {
struct ngx_http_v3_session_s {
ngx_http_connection_t *http_connection;
ngx_http_v3_dynamic_table_t table;
ngx_event_t keepalive;
+6 -2
View File
@@ -192,7 +192,7 @@ ngx_http_v3_create_srv_conf(ngx_conf_t *cf)
* h3scf->quic.host_key = { 0, NULL }
* h3scf->quic.stream_reject_code_uni = 0;
* h3scf->quic.disable_active_migration = 0;
* h3scf->quic.timeout = 0;
* h3scf->quic.idle_timeout = 0;
* h3scf->max_blocked_streams = 0;
*/
@@ -223,7 +223,8 @@ ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
ngx_http_v3_srv_conf_t *prev = parent;
ngx_http_v3_srv_conf_t *conf = child;
ngx_http_ssl_srv_conf_t *sscf;
ngx_http_ssl_srv_conf_t *sscf;
ngx_http_core_srv_conf_t *cscf;
ngx_conf_merge_value(conf->enable, prev->enable, 1);
@@ -281,6 +282,9 @@ ngx_http_v3_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
return NGX_CONF_ERROR;
}
cscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_core_module);
conf->quic.handshake_timeout = cscf->client_header_timeout;
sscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_ssl_module);
conf->quic.ssl = &sscf->ssl;
+6 -12
View File
@@ -58,30 +58,20 @@ static const struct {
void
ngx_http_v3_init_stream(ngx_connection_t *c)
{
ngx_http_v3_session_t *h3c;
ngx_http_connection_t *hc, *phc;
ngx_http_v3_srv_conf_t *h3scf;
ngx_http_core_loc_conf_t *clcf;
ngx_http_core_srv_conf_t *cscf;
hc = c->data;
hc->ssl = 1;
clcf = ngx_http_get_module_loc_conf(hc->conf_ctx, ngx_http_core_module);
cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_core_module);
h3scf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_v3_module);
if (c->quic == NULL) {
if (ngx_http_v3_init_session(c) != NGX_OK) {
ngx_http_close_connection(c);
return;
}
h3scf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_v3_module);
h3scf->quic.idle_timeout = clcf->keepalive_timeout;
h3c = hc->v3_session;
ngx_add_timer(&h3c->keepalive, cscf->client_header_timeout);
h3scf->quic.timeout = clcf->keepalive_timeout;
ngx_quic_run(c, &h3scf->quic);
return;
}
@@ -118,6 +108,10 @@ ngx_http_v3_init(ngx_connection_t *c)
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "http3 init");
if (ngx_http_v3_init_session(c) != NGX_OK) {
return NGX_ERROR;
}
h3c = ngx_http_v3_get_session(c);
clcf = ngx_http_v3_get_module_loc_conf(c, ngx_http_core_module);
ngx_add_timer(&h3c->keepalive, clcf->keepalive_timeout);