quiche
quiche copied to clipboard
Server stall if application close during handshake
I have created a couple test cases that shows what works and what breaks: 05e4618eb33c72f5912e26c0d851ad628452e0b7
From 10.2.3, I see that application errors must not be sent during the handshake due to that potentially leaking application information. Although the RFC seems to recommending dropping the application data and sending a 0x1c connection_close, I would prefer to pass that information back to the user.
Stepping through send_single, It looks like it stalls because is_closed causes no Handshake acks to be sent, and since the pkt_type is stays Handshake, an application close will not be sent.
What I expected was for the handshake to complete normally, and have the application close be sent with the first 1RTT short header packet ~along with HANDSHAKE_DONE~.
EDIT: I implemented a possible change for this behavior: ffdaeed1b35e1810210071be80153187d15b8d2f
Thanks for the report @kevinjohna6, the test cases are really helpful. We're taking a break over the holiday period so follow up will be a bit delayed.