mirror of
https://github.com/nginx/nginx.git
synced 2025-01-19 18:13:01 +08:00
QUIC: set idle timer when sending an ack-eliciting packet.
As per quic-transport-34: An endpoint also restarts its idle timer when sending an ack-eliciting packet if no other ack-eliciting packets have been sent since last receiving and processing a packet. Previously, the timer was set for any packet.
This commit is contained in:
parent
e0425791d4
commit
edc2c75c75
@ -4948,17 +4948,21 @@ static ngx_int_t
|
|||||||
ngx_quic_output(ngx_connection_t *c)
|
ngx_quic_output(ngx_connection_t *c)
|
||||||
{
|
{
|
||||||
off_t max;
|
off_t max;
|
||||||
size_t len, min;
|
size_t len, min, in_flight;
|
||||||
ssize_t n;
|
ssize_t n;
|
||||||
u_char *p;
|
u_char *p;
|
||||||
ngx_uint_t i, pad;
|
ngx_uint_t i, pad;
|
||||||
ngx_quic_send_ctx_t *ctx;
|
ngx_quic_send_ctx_t *ctx;
|
||||||
|
ngx_quic_congestion_t *cg;
|
||||||
ngx_quic_connection_t *qc;
|
ngx_quic_connection_t *qc;
|
||||||
static u_char dst[NGX_QUIC_MAX_UDP_PAYLOAD_SIZE];
|
static u_char dst[NGX_QUIC_MAX_UDP_PAYLOAD_SIZE];
|
||||||
|
|
||||||
c->log->action = "sending frames";
|
c->log->action = "sending frames";
|
||||||
|
|
||||||
qc = ngx_quic_get_connection(c);
|
qc = ngx_quic_get_connection(c);
|
||||||
|
cg = &qc->congestion;
|
||||||
|
|
||||||
|
in_flight = cg->in_flight;
|
||||||
|
|
||||||
for ( ;; ) {
|
for ( ;; ) {
|
||||||
p = dst;
|
p = dst;
|
||||||
@ -5003,11 +5007,11 @@ ngx_quic_output(ngx_connection_t *c)
|
|||||||
if (n == NGX_ERROR) {
|
if (n == NGX_ERROR) {
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!qc->send_timer_set && !qc->closing) {
|
if (in_flight != cg->in_flight && !qc->send_timer_set && !qc->closing) {
|
||||||
qc->send_timer_set = 1;
|
qc->send_timer_set = 1;
|
||||||
ngx_add_timer(c->read, qc->tp.max_idle_timeout);
|
ngx_add_timer(c->read, qc->tp.max_idle_timeout);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_quic_set_lost_timer(c);
|
ngx_quic_set_lost_timer(c);
|
||||||
|
Loading…
Reference in New Issue
Block a user