- 
                Notifications
    
You must be signed in to change notification settings  - Fork 365
 
Open
Description
What happened?
When a client tries to establish a connection with CHLO like this one (summary from wireshark):
Initial, DCID=a79a3ca80b9a8a81, PKN: 1, PADDING, PING, PING, PADDING, PING, CRYPTO, CRYPTO, PADDING, CRYPTO, CRYPTO, PADDING, CRYPTO, CRYPTO, PADDING
The xquic server fails to process the connection and in the log you will find:
[error] |scid:_|xqc_process_ping_frame|xqc_process_ping_frame error: ping frame shoud not be the first frame|
[error] |scid:_|xqc_process_frames|process frame error|-1|
[error] |scid:_|xqc_packet_decrypt_single|xqc_process_frames error|-1|
[error] |scid:_|xqc_conn_process_packet|process packets err|ret:-1|pos:00007FFF93B9F017|buf:00007FFF93B9F5C0|buf_size:1350| 
[error] |xqc_engine_packet_process|fail to process packets|conn:_|ret:-1|
Note the frames in CHLO are deliberately randomised and out-of-order (this is known as "chaos protection" https://quiche.googlesource.com/quiche/+/cb6b51054274cb2c939264faf34a1776e0a5bab7) but they make a valid QUIC packet.
Note xquic has built in some assumptions which seem unnecessary:
xquic/src/transport/xqc_frame.c
Line 861 in aef684c
| "|xqc_process_ping_frame error: ping frame shoud not be the first frame|"); | 
Steps To Reproduce
Take a client with "chaos protection" enabled (for example Google Quiche) and run connections against xquic server. In some cases the connection fails as described here.
Relevant log output
Metadata
Metadata
Assignees
Labels
No labels