Closed nemethf closed 7 months ago
Thanks for looking into this issue. ACK frames, and also Stream frames, are not "path probing" frames. Section 9.1 of RFC 9000, Probing a New Path, only lists PATH_CHALLENGE, PATH_RESPONSE, NEW_CONNECTION_ID, and PADDING frames.
The flag name is_path_validating_frame
is wrong. The correct name would be is_path_probing_frame
, to match the vocabulary of RFC 9000, and the cumulative would be is_path_probing_packet
. The flag in the path context should not be path_x->last_non_validating_pn
but path_x->last_non_path_probing_pn
. Aligning the vocabulary with RFC 9000 will ease future maintenance.
Thanks again, @nemethf. This is being fixed in PR #1588.
Currently, if a packet contains only an ACK_ENC frame, then picoquic_decode_frames treats it as a validating_packet. This behavior is not in line with the RFC, which says:
As a result, the server continues to send packets on an old path even if both parties have been validated a new path and the client only sends ACK_ENC frames.
I believe the following simple patch fixes the issue.
Thank you.