an error causing picoquic_retransmit_needed to return an empty packet with length = header_length instead of 0,
an error causing picoquic_is_ack_needed to return yes when in fact it is not needed.
The first cause was addressed by fixing picoquic_retransmit_needed in PR #1545, but we add more safety using "defense in depth", not adding acks to repeated packets if the packet length is at or below the header length.
The second cause is addressed by adding the ack_loop unit test, to check the behavior of the function picoquic_is_ack_needed.
Address the "ACK loop" reported in #1558.
ACK loop could have two causes:
picoquic_retransmit_needed
to return an empty packet withlength = header_length
instead of 0,picoquic_is_ack_needed
to return yes when in fact it is not needed.The first cause was addressed by fixing
picoquic_retransmit_needed
in PR #1545, but we add more safety using "defense in depth", not adding acks to repeated packets if the packet length is at or below the header length.The second cause is addressed by adding the
ack_loop
unit test, to check the behavior of the functionpicoquic_is_ack_needed
.