MEDIUM: quic: Ack delay implementation
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 24 Mar 2023 17:13:37 +0000 (18:13 +0100)
committerFrédéric Lécaille <flecaille@haproxy.com>
Fri, 31 Mar 2023 11:41:17 +0000 (13:41 +0200)
commitd721571d265cc07d0365448f97ccb6ab8423434f
tree29d702640c0a91b033c8ae78b027ece37fd40f57
parent8f991948f50a99ff223e48f7919cb4f144f88ba3
MEDIUM: quic: Ack delay implementation

Reuse the idle timeout task to delay the acknowledgments. The time of the
idle timer expiration is for now on stored in ->idle_expire. The one to
trigger the acknowledgements is stored in ->ack_expire.
Add QUIC_FL_CONN_ACK_TIMER_FIRED new connection flag to mark a connection
as having its acknowledgement timer been triggered.
Modify qc_may_build_pkt() to prevent the sending of "ack only" packets and
allows the connection to send packet when the ack timer has fired.
It is possible that acks are sent before the ack timer has triggered. In
this case it is cancelled only if ACK frames are really sent.
The idle timer expiration must be set again when the ack timer has been
triggered or when it is cancelled.

Must be backported to 2.7.
include/haproxy/quic_conn-t.h
src/quic_conn.c