mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-24 20:31:00 +01:00
BUG/MINOR: quic: Stalled connections (missing I/O handler wakeup)
This was due to a missing I/O handler tasklet wakeup in process_timer() when detecting packet loss. As, qc_release_lost_pkts() could remove the lost packets from the in flight packets count, qc_set_timer() could cancel the timer used to wakeup the connection I/O handler. Then the connection could remain idle until it ends. Must be backported to 2.6.
This commit is contained in:
parent
277c4629e7
commit
15773f2101
@ -4545,6 +4545,8 @@ static struct task *process_timer(struct task *task, void *ctx, unsigned int sta
|
|||||||
struct list lost_pkts = LIST_HEAD_INIT(lost_pkts);
|
struct list lost_pkts = LIST_HEAD_INIT(lost_pkts);
|
||||||
|
|
||||||
qc_packet_loss_lookup(pktns, qc, &lost_pkts);
|
qc_packet_loss_lookup(pktns, qc, &lost_pkts);
|
||||||
|
if (!LIST_ISEMPTY(&lost_pkts))
|
||||||
|
tasklet_wakeup(conn_ctx->wait_event.tasklet);
|
||||||
qc_release_lost_pkts(qc, pktns, &lost_pkts, now_ms);
|
qc_release_lost_pkts(qc, pktns, &lost_pkts, now_ms);
|
||||||
qc_set_timer(qc);
|
qc_set_timer(qc);
|
||||||
goto out;
|
goto out;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user