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
fix: key update initiator must wait for ACK before confirming (RFC 9001 §6.1)
The key update initiator MUST NOT initiate a subsequent key update until
the peer ACKs a packet sent with the new key phase (RFC 9001 §6.1).
This enforcement is achieved via the existing first_sent_pktno <=
ctl_largest_acked check at the key update trigger site. The previous
approach of setting key_update_confirmed=FALSE was incorrect because
key_update_confirmed has dual semantics: it also gates the responder
path for incoming key phase changes. Setting it FALSE on the initiator
caused the initiator to erroneously enter the responder path when
receiving old-key-phase in-flight packets from the peer.
Changes:
- Remove xqc_tls_set_key_update_confirmed() (dead code after fix)
- Remove confirmed=FALSE override in packet_parser initiator path
- Simplify ACK confirmation in send_ctl to just clear initiator flag
- Add key_update_initiator field to key_update_ctx for logging
- Update unit test to validate new behavior
Closes: #756
Co-Authored-By: Claude (claude-opus-4-6) <noreply@anthropic.com>
0 commit comments