MINOR: quic: notify connection layer on handshake completion

Wake up connection layer on QUIC handshake completion via
quic_conn_io_cb. Select SUB_RETRY_RECV as this was previously unused by
QUIC MUX layer.

For the moment, QUIC MUX never subscribes for handshake completion.
However, this will be necessary for features such as the delaying of
early data forwarding via wait-for-handshake.

This patch will be necessary to implement wait-for-handshake support for
QUIC. As such, it must be backported with next commits up to 2.6,
after a mandatory period of observation.
This commit is contained in:
Amaury Denoyelle 2024-10-16 11:05:51 +02:00
parent 5091f90479
commit 5a5950e42d
2 changed files with 10 additions and 1 deletions

View File

@ -2701,7 +2701,8 @@ struct task *qcc_io_cb(struct task *t, void *ctx, unsigned int status)
TRACE_ENTER(QMUX_EV_QCC_WAKE, qcc->conn); TRACE_ENTER(QMUX_EV_QCC_WAKE, qcc->conn);
qcc_io_send(qcc); if (!(qcc->wait_event.events & SUB_RETRY_SEND))
qcc_io_send(qcc);
qcc_io_recv(qcc); qcc_io_recv(qcc);

View File

@ -861,6 +861,14 @@ struct task *quic_conn_io_cb(struct task *t, void *context, unsigned int state)
* TODO implement discarding of 0-RTT keys * TODO implement discarding of 0-RTT keys
*/ */
} }
/* Wake up connection layer if on wait-for-handshake. */
if (qc->subs && qc->subs->events & SUB_RETRY_RECV) {
tasklet_wakeup(qc->subs->tasklet);
qc->subs->events &= ~SUB_RETRY_RECV;
if (!qc->subs->events)
qc->subs = NULL;
}
} }
/* Insert each QEL into sending list if needed. */ /* Insert each QEL into sending list if needed. */