MINOR: quic: Probe several packet number space upon timer expiration

When the loss detection timer expires, we SHOULD include new data in
our probing packets (RFC 9002 par 6.2.4. Sending Probe Packets).
This commit is contained in:
Frédéric Lécaille 2021-12-31 16:35:28 +01:00
parent db6a4727cf
commit a56054e438

View File

@ -3302,7 +3302,7 @@ static struct task *process_timer(struct task *task, void *ctx, unsigned int sta
struct ssl_sock_ctx *conn_ctx; struct ssl_sock_ctx *conn_ctx;
struct quic_conn *qc; struct quic_conn *qc;
struct quic_pktns *pktns; struct quic_pktns *pktns;
int st; int i, st;
conn_ctx = task->context; conn_ctx = task->context;
qc = conn_ctx->qc; qc = conn_ctx->qc;
@ -3338,6 +3338,17 @@ static struct task *process_timer(struct task *task, void *ctx, unsigned int sta
if (iel->tls_ctx.rx.flags == QUIC_FL_TLS_SECRETS_SET) if (iel->tls_ctx.rx.flags == QUIC_FL_TLS_SECRETS_SET)
iel->pktns->tx.pto_probe = 1; iel->pktns->tx.pto_probe = 1;
} }
for (i = QUIC_TLS_ENC_LEVEL_INITIAL; i < QUIC_TLS_ENC_LEVEL_MAX; i++) {
int j;
if (i == QUIC_TLS_ENC_LEVEL_APP && !quic_peer_validated_addr(qc))
continue;
for (j = 0; j < qc->els[i].pktns->tx.pto_probe; j++)
qc_prep_fast_retrans(&qc->els[i], qc);
}
tasklet_wakeup(conn_ctx->wait_event.tasklet); tasklet_wakeup(conn_ctx->wait_event.tasklet);
qc->path->loss.pto_count++; qc->path->loss.pto_count++;