private-octopus / picoquic

Minimal implementation of the QUIC protocol
MIT License
523 stars 153 forks source link

Retransmissions should not reset the idle timer. #1559

Closed huitema closed 8 months ago

huitema commented 9 months ago

The current code resets the idle timer if a new packet is sent, for example for retransmission. This means the idle timer never fires if the local endpoint is sending packets, even if these packets are never acknowledged. The idle timer should only be reset if new data is received from the peer, or if acknowledgements from the peer show progress in the connection.

huitema commented 9 months ago

Fixing this issue would allow us to use the idle timeout to control how many times packets can be resent before giving up on the connection. This would be better than merely waiting for some number of retransmissions. The would still need to be a couple of different fixes: