After migration, the server may have unacknowledged packets on the old path carrying control frames that are never retransmitted.
Neither retransmission mechanism covers these frames:
ACK-based loss detection does not fire on the old path.
On the old path, newly_acked is always empty so on_ack_received returns early without calling detect_lost_packets.
PTO-based retransmission skips control frames.
The PTO filter only selects packets where has_data is true, so control frames are excluded.
Affected frames are: RESET_STREAM, STOP_SENDING, MAX_STREAM_DATA, MAX_DATA, MAX_STREAMS, RETIRE_CONNECTION_ID, NEW_CONNECTION_ID
This can lead to indefinite stalls.
I will share my unit tests soon.
After migration, the server may have unacknowledged packets on the old path carrying control frames that are never retransmitted.
Neither retransmission mechanism covers these frames:
ACK-based loss detection does not fire on the old path.
On the old path,
newly_ackedis always empty soon_ack_receivedreturns early without callingdetect_lost_packets.PTO-based retransmission skips control frames.
The PTO filter only selects packets where
has_datais true, so control frames are excluded.Affected frames are:
RESET_STREAM,STOP_SENDING,MAX_STREAM_DATA,MAX_DATA,MAX_STREAMS,RETIRE_CONNECTION_ID,NEW_CONNECTION_IDThis can lead to indefinite stalls.
I will share my unit tests soon.