You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
PATH_CHALLENGE, PATH_RESPONSE, NEW_CONNECTION_ID, and PADDING frames are "probing frames", and all other frames are "non-probing frames". A packet containing only probing frames is a "probing packet", and a packet containing any other frame is a "non-probing packet".
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.
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.
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.
The text was updated successfully, but these errors were encountered: